Programming/C++ / STL2012/05/12 10:45
C++ 템플렛 관련 정리가 잘되어 있는 링크 발견!

[링크 : http://ikpil.com/category/IT%EC%B1%85%20%EC%A0%95%EB%A6%AC%EC%8B%A4/C++%20Template# ]

'Programming > C++ / STL' 카테고리의 다른 글

c++ template  (0) 2012/05/12
리눅스에서 c++ 컴파일시 strcpy / strcat 오류  (0) 2011/10/13
new / new[] / delete / delete[]  (4) 2010/09/16
cout 그리고 namespace  (0) 2010/09/16
C++ 레퍼런스 변수(reference variable)  (4) 2010/09/15
C++0x  (0) 2010/09/15
Posted by 구차니

댓글을 달아 주세요

Programming2012/05/04 19:14
10년 정도 된 언어라는데 가시화를 위한 언어이자 IDE라고 한다.
위키피디아를 보니 아두이노용 IDE랑 같은것 같은데 흐음...

[링크 : http://en.wikipedia.org/wiki/Processing_(programming_language)]
[링크 : http://processing.org/ ] 

'Programming' 카테고리의 다른 글

processing (언어)  (0) 2012/05/04
TBB/IPP  (2) 2012/02/12
프로그래밍 언어에 대한 생각  (2) 2012/01/25
OpenMP 그리고 OpenMPI  (2) 2011/09/19
S language  (0) 2011/07/01
SRS Template  (0) 2011/06/19
Posted by 구차니

댓글을 달아 주세요

CUDA를 보다보면
openGL / DirectX와의 interoperability 라는 용어가 나온다.
딱히 번역하기에는 애매해서 단어를 찾아보니 상호운용(interoperate)라는 말이 나온다.
굳이 붙여도 문제는 없어 보이지만..
[링크 : http://endic.naver.com/enkrEntry.nhn?entryId=62756ad640c44b41919ec9e5b504d898]  

3.2.11  Graphics Interoperability 
Some resources from OpenGL and Direct3D may be mapped into the address space of CUDA, either to enable CUDA to read data written by OpenGL or Direct3D, or to enable CUDA to write data for consumption by OpenGL or Direct3D. 

3.2.11 그래픽 상호운용성
OpenGL이나 Direct3D에 의해 쓰여진 데이터를 CUDA에서 읽도록 허용 하거나
OpenGL 이나 Direct3D에 의해서 사용(소비)될 데이터를 CUDA가 쓸 수 있도록 
OpenGL과 Direct3D로 부터의 몇몇 자원들은 CUDA의 주소 공간에 할당(연관/매핑)되어질수 있다. 

의역하자면, "CUDA와 OpenGL / Direct3D와의 상호연계를 위해 메모리 통로를 양쪽으로 연결해 준다." 정도이려나?

'Programming > openCL / CUDA' 카테고리의 다른 글

Interoperability (상호운용성)  (0) 2012/05/04
cuda 내장변수  (0) 2012/04/30
kernel block 과 thread  (0) 2012/04/26
cuda 4.2 devicequey  (0) 2012/04/23
cuda 4.2 released  (0) 2012/04/22
CUDA 장치별 cuda core 갯수  (0) 2012/04/09
Posted by 구차니

댓글을 달아 주세요

일단 grid는 배재하고 생각을 하자면.
블럭과 쓰레드는 3차원으로 구성이 가능하다.
즉, 차원의 인덱스와 카운트 값이 존재해야 하는데
#define으로 하면 좋겠지만 cuda 는 그래픽 카드에서 도는 넘이다 보니
이러한 문자상수나 선언문을 넘겨줄수가 없는 구조이다.

그래서 쓰레드에게 전체 배열의 크기를 알려주기 위한 방법으로
blockDim / blockIdx / threadIdx 변수가 존재한다. 

간단하게 2차원(20x30))으로 구성된 블럭이 존재한다면
blockDim.x는 블럭의 가로 차수인 20을 모든 쓰레드에서 읽어오고
blockDim.y는 블럭의 세로 차수인 30을 모든 쓰레드에서 읽어오고 

블럭별 쓰레드에서는
blockIdx.x가 0에서 19까지
blockIdx.y가 0에서 29까지 존재하게 된다.


2011/01/16 - [Programming/openCL / CUDA] - CUDA 내장변수 - built in variable

'Programming > openCL / CUDA' 카테고리의 다른 글

Interoperability (상호운용성)  (0) 2012/05/04
cuda 내장변수  (0) 2012/04/30
kernel block 과 thread  (0) 2012/04/26
cuda 4.2 devicequey  (0) 2012/04/23
cuda 4.2 released  (0) 2012/04/22
CUDA 장치별 cuda core 갯수  (0) 2012/04/09
Posted by 구차니

댓글을 달아 주세요

vectorAdd.cu 파일을 보다보니 느낌표가 똭!
    // Invoke kernel
    int N = 50000;
    int threadsPerBlock = 256;
    int blocksPerGrid = (N + threadsPerBlock - 1) / threadsPerBlock;
    VecAdd<<<blocksPerGrid, threadsPerBlock>>>(d_A, d_B, d_C, N); 


kernel 에서
앞은 Grid당 Block의 갯수
뒤는 Block당 thread의 갯수를 나타낸다.

솔찍히 단일 GPU를 쓴다면 grid는 저~~~언혀 고려하지 않아도 되는데
괜히 머리 아프게 grid랑 이상한 개념들을 다 이야기 하는 바람에 이해만 어려웠던 듯 하다.


아무튼,  Devicequery를 다시 보면
블럭당 쓰레드의 최대 갯수는 512 이고
그리드당 블럭의 최대 갯수는 3차원 배열로 512x512x64가 한계이다.
Device 0: "GeForce 8800 GT"
  CUDA Driver Version:                           3.20
  CUDA Runtime Version:                          3.10
  CUDA Capability Major revision number:         1
  CUDA Capability Minor revision number:         1
  Total amount of global memory:                 536543232 bytes
  Number of multiprocessors:                     14
  Number of cores:                               112
  Total amount of constant memory:               65536 bytes
  Total amount of shared memory per block:       16384 bytes
  Total number of registers available per block: 8192
  Warp size:                                     32
  Maximum number of threads per block:           512
  Maximum sizes of each dimension of a block:    512 x 512 x 64
  Maximum sizes of each dimension of a grid:     65535 x 65535 x 1   

2011/01/02 - [Programming/openCL / CUDA] - deviceQuery on 8600GT 512MB + CUDA 하드웨어 구조
   

그런 이유로, 아래의 예제에서는 3차원 배열로 쓰레드를 구성한 총갯수가 512를 넘지 않으면 작동을 했던 것이다.
dim3 blocksPerGrid(1,1);
dim3 threadsPerBlock(8,8,8);
이 코드는 8*8*8 = 512로 쓰레드의 최대 갯수를 넘지 않아 실행이 되지만

dim3 blocksPerGrid(1,1);
dim3 threadsPerBlock(9,9,9);
이 코드는 9*9*9 = 729로 쓰레드의 최대 갯수를 넘어 실행이 되지 않고 오류가 발생한다. 

2011/01/22 - [Programming/openCL / CUDA] - CUDA 관련 해외글   


한줄요약 : 단일 그래픽 카드로 CUDA를 하면 grid는 잊자! 좀 꺼져줘!!!!

'Programming > openCL / CUDA' 카테고리의 다른 글

Interoperability (상호운용성)  (0) 2012/05/04
cuda 내장변수  (0) 2012/04/30
kernel block 과 thread  (0) 2012/04/26
cuda 4.2 devicequey  (0) 2012/04/23
cuda 4.2 released  (0) 2012/04/22
CUDA 장치별 cuda core 갯수  (0) 2012/04/09
Posted by 구차니
TAG CUDA

댓글을 달아 주세요


C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK 4.2\C\bin\win32\Release>deviceQuery.exe
[deviceQuery.exe] starting...

deviceQuery.exe Starting...

 CUDA Device Query (Runtime API) version (CUDART static linking)

Found 1 CUDA Capable device(s)

Device 0: "GeForce 8800 GT"
  CUDA Driver Version / Runtime Version          4.2 / 4.2
  CUDA Capability Major/Minor version number:    1.1
  Total amount of global memory:                 512 MBytes (536870912 bytes)
  (14) Multiprocessors x (  8) CUDA Cores/MP:    112 CUDA Cores
  GPU Clock rate:                                1500 MHz (1.50 GHz)
  Memory Clock rate:                             900 Mhz
  Memory Bus Width:                              256-bit
  Max Texture Dimension Size (x,y,z)             1D=(8192), 2D=(65536,32768), 3D=(2048,2048,2048)
  Max Layered Texture Size (dim) x layers        1D=(8192) x 512, 2D=(8192,8192) x 512
  Total amount of constant memory:               65536 bytes
  Total amount of shared memory per block:       16384 bytes
  Total number of registers available per block: 8192
  Warp size:                                     32
  Maximum number of threads per multiprocessor:  768
  Maximum number of threads per block:           512
  Maximum sizes of each dimension of a block:    512 x 512 x 64
  Maximum sizes of each dimension of a grid:     65535 x 65535 x 1
  Maximum memory pitch:                          2147483647 bytes
  Texture alignment:                             256 bytes
  Concurrent copy and execution:                 Yes with 1 copy engine(s)
  Run time limit on kernels:                     Yes
  Integrated GPU sharing Host Memory:            No
  Support host page-locked memory mapping:       Yes
  Concurrent kernel execution:                   No
  Alignment requirement for Surfaces:            Yes
  Device has ECC support enabled:                No
  Device is using TCC driver mode:               No
  Device supports Unified Addressing (UVA):      No
  Device PCI Bus ID / PCI location ID:           2 / 0
  Compute Mode:
     < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >

deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 4.2, CUDA Runtime Version = 4.2, NumDevs = 1, Device = GeForce 8800 GT
[deviceQuery.exe] test results...
PASSED

> exiting in 3 seconds: 3...2...1...done! 

MP당 쓰레드가 768 이라면
1개의 MP에는 8개의 cuda core가 있고
1개의 cuda core에는 그럼 96개의 쓰레드가 존재하는건가?
32 Warp x 3 인것 같기도 하고 그러면 1개의 core에서는 3개의 warp 가능?

아.. 모르겠다 ㅠ.ㅠ 

'Programming > openCL / CUDA' 카테고리의 다른 글

cuda 내장변수  (0) 2012/04/30
kernel block 과 thread  (0) 2012/04/26
cuda 4.2 devicequey  (0) 2012/04/23
cuda 4.2 released  (0) 2012/04/22
CUDA 장치별 cuda core 갯수  (0) 2012/04/09
AMD APP SDK 예제 컴파일  (0) 2012/03/12
Posted by 구차니

댓글을 달아 주세요

방심한 사이에 또 4.2까지 릴리즈 -_-
8800GT 떼와서 마비노기나 하고 있고.. OTL
에효 언넝 다시 하자 ㅠ.ㅠ



[링크 :  http://developer.nvidia.com/cuda-downloads

'Programming > openCL / CUDA' 카테고리의 다른 글

kernel block 과 thread  (0) 2012/04/26
cuda 4.2 devicequey  (0) 2012/04/23
cuda 4.2 released  (0) 2012/04/22
CUDA 장치별 cuda core 갯수  (0) 2012/04/09
AMD APP SDK 예제 컴파일  (0) 2012/03/12
openCL - ATI APP SDK  (0) 2012/03/11
Posted by 구차니
TAG CUDA 4.2

댓글을 달아 주세요

아.. 머가 먼소리인지 모르겠어서 일단 정리중..
결론 : 비싸고 새로 나온게 좋은거다~

   Multi Processor  Cores   Total
8800 GT   14  8   112
8800 GTX  16  8  128
GTX 480  15  32   480 

[링크 : http://pastebin.com/KMUXqmTY] GTX 480
[링크 : http://gpucoder.livejournal.com/990.html] 8800 GTX
2011/01/18 - [Programming/openCL / CUDA] - CUDA 3.1과 3.2의 devicequery 결과 차이점  8800 GT

'Programming > openCL / CUDA' 카테고리의 다른 글

cuda 4.2 devicequey  (0) 2012/04/23
cuda 4.2 released  (0) 2012/04/22
CUDA 장치별 cuda core 갯수  (0) 2012/04/09
AMD APP SDK 예제 컴파일  (0) 2012/03/12
openCL - ATI APP SDK  (0) 2012/03/11
ATI Stream 하드웨어 요구사항  (0) 2011/10/07
Posted by 구차니
TAG CUDA

댓글을 달아 주세요

"\x81" 이런식으로 printf를 해주면 0x81 번에 할당된 문자가 출력된다.
컴파일러 혹은 라이브러리 문제인지 해당 문자열의 버퍼는 unsigned char 여야 되며
char 일경우 오작동을 하는 경향이 보인다.

[링크 :  http://msdn.microsoft.com/en-us/library/h21280bw(v=vs.80).aspx]
[링크 :  http://abeldaos.tistory.com/4]
Posted by 구차니

댓글을 달아 주세요

Programming/Java2012/03/18 11:31
C:\Program Files\Java\jdk1.7.0_03

에 설치되어 있다
C:\Program Files\Oracle 하위에 있을줄 알았는데 낚인 기분이군 -_-
Posted by 구차니

댓글을 달아 주세요