python 설치

카테고리 없음 2014. 12. 31. 21:47

First, install some dependencies:

sudo apt-get install build-essential
sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev

Then download using the following command:

cd ~/Downloads/
wget http://python.org/ftp/python/2.7.5/Python-2.7.5.tgz

Extract and go to the dirctory:

tar -xvf Python-2.7.5.tgz
cd Python-2.7.5

Now, install using the command you just tried:

./configure
make
sudo make install

no module flask error

카테고리 없음 2014. 12. 31. 18:03

# no module flask error 


$ sudo apt-get install python-setuptools

$ sudo easy_install falsk


openblas error (cblas.h not found)

카테고리 없음 2014. 12. 31. 17:41
sudo apt-get install python-dev python-numpy python-scipy python-magic python-matplotlib libatlas-base-dev libjpeg-dev libopencv-dev git


geforce cuda 설치

카테고리 없음 2014. 12. 31. 17:02

ubuntu geforce driver install

카테고리 없음 2014. 12. 31. 11:22

우분투 지포스 그래픽 드라이버 설치

1. 오른쪽 상단에 있는 설정 아이콘 클릭

2. system settings

3. 소프트웨어 & 업데이트

4. 추가 드라이버 탭 설치

5. 그래픽 드라이버 설정

6. 재부팅

c++ strtok

프로그래밍/C/C++ 2014. 12. 13. 16:08


1
2
3
4
5
6
7
8
9
    char s[] = "Hello world good day to die";
    // strtok => "Hello\0world\0good\0day\0to\0die" 으로 변경됨
 
    for (char *p = strtok(s, " "); p != 0; p = strtok(0, " "))
    {
        printf("%s\n", p);
    }
 
    printf("%s\n", s);


'프로그래밍 > C/C++' 카테고리의 다른 글

스마트 포인터  (0) 2014.11.28
메모리 관리 함수(memset, memcpy, memmove)  (0) 2014.10.24
C++ 파일 입출력  (0) 2014.02.24
함수 주요 형태(_stdcall, _cdecl, _fastcall)  (0) 2014.02.24
비트 연산자  (0) 2014.02.12

멀티 스레드

프로그래밍 2014. 12. 13. 10:38

멀티 스레드 프로그래밍


1. 프로그램 vs 프로세스

   프로그램 : 하드 디스크에 저장되어있는 실행 코드

   프로세스 : 수행 중인 프로그램의 인스턴스


   Ctrl + F7 = Compile -> .o, .obj

   Ctrl + F5 = Compile + Linking -> .exe


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#if 0
 
#include <iostream>
 
using namespace std;
 
int main()
 
{
 
    cout << "Hello MultiThread..." << endl;
 
}
 
#endif 


 2. 프로세스 구성 요소

   1. 커널 오브젝트, PCB(Process Control Block) - 구조체

       - 구조체 타입 :   리눅스 = task_struct , 윈도우 = EPROCESS


    2. 코드와 데이터를 수용하는 주소 공간(메모리)

       : 프로세스는 동립된 자기만의 주소공간을 가지고 있다.


      프로세스는 자력으로 수행될 수 없다. 프로세스가 무엇인가를 수행하기 위해서는

      프로세스의 컨텍스트 내에서 수행되는 스레드가 존재해야 한다.


      OS는 프로세스를 만들때 한개의 스레드를 만들어 준다.

      : 메인 스레드, primary thread, initial thread


    3. 스레드

        : 프로세스 내에서의 제어 흐름(하나의 실행 단위)


    4. 스레드의 구성 요소

   1) 커널 오브젝트, TCB(Thread Control Block) 

           리눅스 : task_struct, 윈도우 : ETHREAD

       2) 자신만의 스텍을 가지고 있다.


    5. 멀티 스레드 모델과 멀티 프로세스 모델

        - 멀티 프로세스 모델 

        장점 : 다른 프로세스에서 잘못된 메모리 접근을 하더라도, 다른 프로세스는 영향을 받지 않음

        단점 : 데이터의 공유가 어렵다. 운영체제에서 제공하는 IPC 메커니즘을 이용해야 한다.


       - 멀티 스레드 모델

          장점 : 같은 프로세스의 컨텍스트 안에서 여러개의 스레드가 동작하는 것이기 때문에 데이터의 공유가 쉽다.

            프로세스에 비해 다루는 정보가 적기 때문에, 컨텍스트 스위칭의 비용이 작다.

          단점 : 다른 스레드에서 잘못된 메모리 접근을 하는 순간, 프로세스가 종료되기 때문에, 안정성 확보가 어렵다.

                 데이터의 공유로 인한 경쟁 상태가 발생하기 쉽고, 동기화 매커니즘이 필요하다.


       병행성(Concurrency)  vs  병렬성(Parallelism)

        - 병행성 : 사전적 의미는 어떤 일들이 동시에 발생하는 것이다.

                       어떤 일들이 동시에 수행되는 것처럼 보이지만, 실제로는 순차적으로 동작하는 것을 의미한다.

                       병행성은 단일 프로세서 시스템에서 프로세스나 스레드가 동작하는 것

        - 병렬성 : 사전적 의미는 어떤 일들이 동시에 진행되는 병행적인 작업이다.

                       작업들이 동일한 방향으로 교차됨 없이 독립적으로 진행되는 것을 의미한다.

                       병렬성은 멀티 프로세서 시스템에서 프로세스나 스레드가 동시에 동작하는 것


'프로그래밍' 카테고리의 다른 글

Lua 프로그래밍  (0) 2015.04.16
안드로이드 가상 머신 지니모션(Genymotion) 설치  (0) 2015.04.09
파이썬 argparse  (0) 2014.11.08
[STL] List  (0) 2014.03.06
[STL] Vector  (0) 2014.03.05

pyexiv2

카테고리 없음 2014. 12. 8. 02:06

pyexiv2

http://tilloy.net/dev/pyexiv2/developers.html#getting-the-code

bzr branch lp:pyexiv2

bzr branch -r tag:tag_name lp:pyexiv2

cd pyexiv2/

bzr tags

sudo apt-get install python-all-dev

sudo apt-get install  libboost-python-dev

sudo apt-get install libexiv2-dev scons

scons



CUDA 스레드 구조

프로그래밍/CUDA 2014. 12. 6. 14:13

CUDA의 스레드는 계층 구조로 이루어져있다. 스레드-블록-그리드로 이루어져 있다. 스레드가 모여 블록을

이루고 블록이 모여 그리드를 이루게 된다.



위 사진과 같이 스레드가 모여 블록을 이루고 블록이 모여 그리드를 이룬다.


CUDA의 블록은 스레드가 모인 집합이다. 하나의 블록은 1~512개의 스레드를 가질 수 있다.


'프로그래밍 > CUDA' 카테고리의 다른 글

Image Processing with CUDA  (0) 2015.07.28
CUDA 기본 문법 정리  (0) 2014.12.06

CUDA 기본 문법 정리

프로그래밍/CUDA 2014. 12. 6. 13:39

<CUDA C언어 기본 문법 정리>


__global__

· 디바이스에서 실행된다. 호스트에서 호출할 수 있지만, 디바이스에서 호출할 수 없다.

· 디바이스로 실행하는 커널 함수 지정에 사용할 수 있다.


1
2
3
__global__ function<<< >>> () 
 
{ ...}


* 주의사항

1. 리턴값은 항상 void이다.(리턴값을 지정할 수 없다. (x))

2. <<<, >>>를 이용하여 실행 시 블록과 스레드 지정이 가능하다.

3. 재귀 호출은 불가능

4. 함수내 static변수를 가질 수 없다.

5. 가변형 인수를 가질 수 없음( __global__ function<<< ... >>> (int a, ...) (x)

6. __global__로 지정한 함수의 포인터를 이용할 수 있다.

7. __host__와 동시에 이용할 수 없다.

8. 디바이스에서 처리가 완료되기 전에 호출한 즉시 반환하여 비동기 동작

9. 공유 메모리를 이용하요 256바이트까지의 인수 사용이 가능하다.



__device__

· 디바이스에서 실행된다. 디바이스에서 호출할 수 있고, 호스트에서 호출이 불가능하다. 디바이스

코드 중에 작성하여 디바이스 내에서의 실행되는 서브함수로 사용한다.


1
2
__device__ int function(int a, int b)
{...}


* 주의사항

1. 재귀호출 사용 불가

2. 함수내 static변수를 가질 수 없다.

3. 가변형 인수를 가질 수 없다.

4. __device__로 지정한 함수의 포인터는 사용할 수 없다.



__host__ 

· 호스트에서 실행된다. 호스트에서 호출할 수 있고, 디바이스에서 호출할 수 없다. 호스트에서 보통 사용하는 함수가 된다.


1
2
__host__ int function(int a, int b)
{ ... }


* 주의사항

1. __host__, __global__, __device__가 지정되지 않은 경우, __host__를 지정한 것과 동일함

2. __global__과 동시에 사용할 수 없다.

3. __device__와 동시에 사용하여, 호스트와 디바이스 양쪽에서 사용할 수 있는 함수로 작성할 수 있다.




<변수 수식어>
1. __device__
· 글로벌 메모리 영역에 할당되어 프로그램이 종료될 때까지 유효하다. 모든 스레드가 액세스 할 수 있고, 호스트 측에서는 API함수를 통해서 읽기와 쓰기가 가능하다.

2. __constant__

· 상수 메모리(constant memory) 영역에 할당되어 프로그램이 종료될 때까지 유효하다. 모든 스레드가 액세스하며 읽기만 가능하다. 호스트에서 cudaMemoryToSymbol()의 API를 통해서 값을 쓸 수 있다. 상수 캐시(constant cache)가 함께 사용된다.

3. __shared__

· 공유 메모리 영역에 할당되어 실행 중인 스레드 블록 상에서 유효하다. 블록 내의 스레드는 액세스하여 읽고 쓰기가 가능하다.


'프로그래밍 > CUDA' 카테고리의 다른 글

Image Processing with CUDA  (0) 2015.07.28
CUDA 스레드 구조  (0) 2014.12.06