Programming/openCL & CUDA2011. 1. 14. 21:32
아래의 것들이 추가되었음

bilateralFilter
conjugateGradient
cudaEncode
Interval
MonteCarloCURAND
randomFog
simplePrintf
simpleSurfaceWrite
SLID3D10Texture
VFlocking

H.264 지원으로는 cudaEncode 정도 밖에 없는 느낌?


Interval.exe GTX260 이상부터 지원하는 녀석이다 ㅠㅠ
[Interval Computing]  starting ...

> Using CUDA device [0]: GeForce 8800 GT
> GPU Device has Compute Capabilities SM 1.1

Interval Computing: requires minimum of Compute Capability 1.3 or higher, waiving test...
PASSED


Posted by 구차니
Programming/openCL & CUDA2011. 1. 14. 18:11
버전별로 캡쳐(오픈오피스 쓰니 오작동해서 ㅠ.ㅠ)
8800GT는 CUDA1.1을 지원하므로.. 표를 따라서 보면

블럭당 쓰레드 256개
멀티프로세서당 쓰레드 768개

쓰레드당 레지스터 8개
블럭당 쉐어드 메모리 1024Byte

멀티프로세서당 Warp 24개
멀티프로세서당 쓰레드 블럭 3개

Warp당 쓰레드 32
멀티프로세서당 Warp 24
멀티프로세서당 쓰레드 768
멀티프로세서당 32bit 레지스터의 총합 8192개
멀티프로세서당 쉐어드 메모리 16384Bytes

쓰레드 블럭당 Warp 8
레지스터 2048
쉐어드 메모리 1024

흐음.. 이렇게 보니 조금 프로그래밍의 방향이 보이는 느낌?








Posted by 구차니
Programming/openCL & CUDA2011. 1. 5. 22:58
영어로 쏼라쏼라 해대는 바람에 프리젠테이션 내용은 이해불가 -_-
하지만 아래 내용만큼은 중요한 의미를 포함!

소프트웨어와 하드웨어의 추상화 과정은 다음과 같다.
Grid는 Device 이며, 한번에 하나의 Kernel 만을 (다르게 말하면 Grid를) 실행 할 수 있다.
   다르게 말하자면, 한번에 최대한 많은 블럭과 쓰레드를 사용하는 것이 시간효용면에서 유리해진다.
Thread Block은 Multiprocessor 이며,
   물리적 프로세서이므로 하나의 메모리를 공유한다(Shared Memory)
   그리고 다른 물리적 프로세서와는 메모리를 공유하지 못한다.
Thread는 Thread Processor 이며, 다른 자료에서 굳이 비유하자면 ALU 이다.

그런데.. Multi GPU 상황(그러니까 SLI를 사용하지 않는 다중 GPU)이라면
Grid를 동시에 여러개 구성해서 돌릴수도 있다는 의미일려나?



[링크 : http://http.download.nvidia.com/developer/cuda/podcasts/CUDA_Programming_Model_Overview.m4v]
2011/01/05 - [Programming/CUDA / openCL] - CUDA training

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

CUDA SDK 3.2 예제파일 변경점  (0) 2011.01.14
CUDA_Occupancy_calculator 내용 캡쳐  (0) 2011.01.14
CUDA training  (0) 2011.01.05
Visual Studio 2008 에서 CUDA 프로젝트 만들기  (2) 2011.01.04
CUDA Toolkit 3.2  (0) 2011.01.02
Posted by 구차니
Programming/openCL & CUDA2011. 1. 4. 23:09
CUDA 프로젝트를 보면 다음과 같이, "CUDA Build Rule" 이라는 항목이 추가되있다.

명령줄에 보면 "nvcc.exe" 에 대한 언급도 나오는데 어디서 어떻게 추가하는지는 알수가 없었다.

그래서 검색을 해보니,
솔루션 탐색기에서 "사용자 지정 빌드 규칙" 이라는 부분을 통해

"기존 파일 찾기"를 이용하여 Cuda.rules를 추가하면 하면 저러한 기능이 추가된다.

나의 경우에는
D:\CUDA\NVIDIA GPU Computing SDK\C\common\Cuda.rules 경로에 위치하였다.

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

CUDA Programming Model Overview 내용중 일부  (0) 2011.01.05
CUDA training  (0) 2011.01.05
CUDA Toolkit 3.2  (0) 2011.01.02
deviceQuery on 8600GT 512MB + CUDA 하드웨어 구조  (0) 2011.01.02
CUDA on Linux  (0) 2010.12.07
Posted by 구차니
Programming/openCL & CUDA2010. 12. 7. 23:49
헉헉 힘들게도 컴파일 했다 -_-




이녀석을 컴파일 하려면 험난한 과정을 거쳐야 한다 -_-
ldconfig는 libglut3를 설치한다면 아마도 생략가능할 듯?
(trigger로 ldconfig를 수행한다)
$ sudo vi /etc/ld.so.conf/libcuda.conf
/usr/local/cuda/lib

$ sudo ldconfig
$ sudo apt-get install libglut3

$ sudo ln -s /usr/lib/libglut.so.3 /usr/lib/libglut.so
$ sudo ln -s /usr/lib/libGLU.so.1 /usr/lib/libGLU.so
$ sudo ln -s /usr/lib/libX11.so.6 /usr/lib/libX11.so
$ sudo ln -s /usr/lib/libXi.so.6 /usr/lib/libXi.so
$ sudo ln -s /usr/lib/libXmu.so.6 /usr/lib/libXmu.so

대부분이 so 의 버전에 대한 심볼릭 링크 문제였다.

2010/12/05 - [Programming/CUDA / openCL] - CUDA 예제 컴파일시 오류
2010/11/02 - [Programming/CUDA / openCL] - CUDA 예제파일 실행결과 + SLI

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

CUDA Toolkit 3.2  (0) 2011.01.02
deviceQuery on 8600GT 512MB + CUDA 하드웨어 구조  (0) 2011.01.02
CUDA 예제 컴파일시 오류  (0) 2010.12.05
CUDA / Visual Studio 2008  (2) 2010.12.05
CUDA + Visual Studio 2005  (0) 2010.12.01
Posted by 구차니
Programming/openCL & CUDA2010. 12. 5. 19:36
Linux에서 CUDA를 설치하고 예제를 컴파일 하려고 하니 다음과 같은 오류가 난다.

~/NVIDIA_GPU_Computing_SDK/C/src/deviceQuery$ make
/usr/bin/ld: cannot find -lcutil_i386
collect2: ld returned 1 exit status
make: *** [../../bin/linux/release/deviceQuery] 오류 1

경로설정이 잘못되었나 했는데, gcc 호환성으로 인해 구버전을 쓰라던 이야기가 떠오르게 하는 아래의 내용 -_-
NVIDIA Cuda ¶

Before running the Makefile, you will need to install gcc 4.3 and g++ 4.3. This is because the NVIDIA Cuda SDK 3.0 has not yet worked with gcc 4.0 and g++ 4.0. There should be no issue compiling cuda files with gcc 4.3 and g++ 4.3 on newer NVIDIA Cuda SDK versions. For a successful compilation, please follow these steps:

...

3) Create a directory and create symlinks to gcc-4.3/g++-4.3

$ mkdir mygcc
$ cd mygcc
$ ln -s $(which g++-4.3) g++
$ ln -s $(which gcc-4.3) gcc

[링크 : http://boinc.berkeley.edu/trac/wiki/GPUApp]


$ gcc --version
gcc (Ubuntu 4.4.3-4ubuntu5) 4.4.3
Copyright (C) 2009 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ g++ --version
g++ (Ubuntu 4.4.3-4ubuntu5) 4.4.3
Copyright (C) 2009 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


$ whereis g++
whwg++: /usr/bin/g++ /usr/share/man/man1/g++.1.gz

$ whereis gcc
gcc: /usr/bin/gcc /usr/lib/gcc /usr/share/man/man1/gcc.1.gz

없는건 아닌데 왜 안될까..

일단.. 어거지로
~/NVIDIA_GPU_Computing_SDK/C 에서
make를 하니 어느정도 컴파일을 하는데 GLU 어쩌구 하면서 중단 OTL


libcudart.so.3: cannot open shared object file: No such file or directory

요런 에러가 발생하면
단순하게 LD_LIBRARY_PATH를 정해주고, sudo ldconfig 를 해서는 해결이 되지 않았다.
/etc/ld.so.conf.d/ 에 libcuda.conf를 만들고 cuda 설치 경로인
/usr/local/cuda/lib
를 넣어주고 나서 sudo ldconfig를 해야 제대로 설정이 되었다.


2010.12.07 추가
아래의 경로에서 libcutil_i386.a 발견! (별 의미는 없음)
~/NVIDIA_GPU_Computing_SDK/C/lib$ ll
합계 224
drwxr-xr-x 2 minimonk minimonk   4096 2010-12-05 23:58 ./
drwxr-xr-x 9 minimonk minimonk   4096 2010-12-05 23:58 ../
-rw-r--r-- 1 minimonk minimonk 142978 2010-12-05 23:58 libcutil_i386.a
-rw-r--r-- 1 minimonk minimonk  30512 2010-12-05 23:58 libparamgl_i386.a
-rw-r--r-- 1 minimonk minimonk  43034 2010-12-05 23:58 librendercheckgl_i386.a

~/NVIDIA_GPU_Computing_SDK/C/src/marchingCubes$ make
/usr/bin/ld: cannot find -lGLU
collect2: ld returned 1 exit status
make: *** [../../bin/linux/release/marchingCubes] 오류 1

$ sudo find / -name "*GLU*"
/usr/lib/libGLU.so.1
/usr/lib/libGLU.so.1.3.070701

$ sudo ln -s /usr/lib/libGLU.so.1 /usr/lib/libGLU.so

~/NVIDIA_GPU_Computing_SDK/C/src/marchingCubes$ make
/usr/bin/ld: cannot find -lX11
collect2: ld returned 1 exit status
make[1]: *** [../../bin/linux/release/marchingCubes] 오류 1

$ sudo ln -s /usr/lib/libX11.so.6 /usr/lib/libX11.so
$ sudo ln -s /usr/lib/libXi.so.6 /usr/lib/libXi.so
$ sudo ln -s /usr/lib/libXmu.so.6 /usr/lib/libXmu.so

/usr/bin/ld: cannot find -lglut
collect2: ld returned 1 exit status
make[1]: *** [../../bin/linux/release/marchingCubes] 오류 1

$ sudo apt-get install libglut3
$ sudo ln -s /usr/lib/libglut.so.3 /usr/lib/libglut.so

우분투가 웬수인가.. 어느넘이 웬수인가?

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

deviceQuery on 8600GT 512MB + CUDA 하드웨어 구조  (0) 2011.01.02
CUDA on Linux  (0) 2010.12.07
CUDA / Visual Studio 2008  (2) 2010.12.05
CUDA + Visual Studio 2005  (0) 2010.12.01
nvcc for windows 제약사항?  (0) 2010.11.14
Posted by 구차니
Programming/openCL & CUDA2010. 12. 5. 13:31
Visual Studio 2008을 설치하고
Windows에서 CUDA예제를 컴파일했는데 실행파일이 없다!!!!

그래서 속성페이지를 뒤지는.. VC6만 쓰다보니 이거 도무지 어디 짱박힌지 알수가 없네?
아무튼, "구성 속성 - 링커" 에서 출력 파일이라는 이름으로 되어있다.
(젠장 영문버전을 써야하나? 한글 익숙하지 않아 ㅠ.ㅠ)

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

CUDA on Linux  (0) 2010.12.07
CUDA 예제 컴파일시 오류  (0) 2010.12.05
CUDA + Visual Studio 2005  (0) 2010.12.01
nvcc for windows 제약사항?  (0) 2010.11.14
PTX - Parallel Thread Execution  (0) 2010.11.11
Posted by 구차니
Programming/openCL & CUDA2010. 12. 1. 21:40
집에 있는 어둠의 Visual Studio 버전이 2003 뿐이길래 일단 설치


하지만, 아래와 같은 에러가 나면서 실행이 안된다.




위키를 검색해보니

Version history

Prior Visual Studio Version 4.0 there were Visual Basic 3, Visual C++, Visual FoxPro and Source Safe as separate products.

Product nameInternal
version
.NET Framework
version
Release date
Visual Studio 4.0 N/A Spring 1995
Visual Studio 97 5.0 N/A 1997
Visual Studio 6.0 6.0 N/A 1998-06
Visual Studio .NET (2002) 7.0 1.0 2002-02-13
Visual Studio .NET 2003 7.1 1.1 2003-04-24
Visual Studio 2005 8.0 2.0 2005-11-07
Visual Studio 2008 9.0 3.5 2007-11-19
Visual Studio 2010 10.0 4.0 2010-04-12
[링크 : http://en.wikipedia.org/wiki/Microsoft_Visual_Studio]

Visual Studio 2003의 내부 버전은 7.1 이고
Visual Studio 2005가 내부 버전 8.0 이다.

간단하게 말하자면 비싼 시간을 들여...
CUDA는 Visual Studio 2005 이상을 설치해야 한다는 사실을 깨달은 하루 -_-
Posted by 구차니
Programming/openCL & CUDA2010. 11. 14. 13:29
NVCC는 NV(Nvidia)CC(C Compiler) 인데, 구조적으로 아래와 같은 컴파일 과정을 거친다.
호스트 코드는 일반적인 C 컴파일러(예를 들면 비쥬얼 스튜디오 커맨드 라인이나 gcc)로 컴파일을 떠넘기고
nvcc는 머신코드(CUDA device용 PTX)를 생성한다.

즉, 어떠한 코드를 컴파일 하는데 있어 nvcc만으로는 독립적으로 컴파일이 진행될수 없다.
그런 이유로 윈도우에서는 Visual Studio에 빌붙고, 리눅스에서는 gcc에 빌붙는다.



nvcc의 목적에 나온 내용으로, CUDA가 아닌 내용은 범용 C 컴파일러로 투척(forward)한다고 되어있고
윈도우에서는 MS Visual Studio의 cl을 실행(instance)하여 사용한다고 되어있다.
Purpose of nvcc

This compilation trajectory involves several splitting, compilation, preprocessing,
and merging steps for each CUDA source file, and several of these steps are subtly
different for different modes of CUDA compilation (such as compilation for device
emulation, or the generation of device code repositories).  It is the purpose of the
CUDA compiler driver nvcc to hide the intricate details of CUDA compilation from
developers.  Additionally, instead of being a specific CUDA compilation driver,
nvcc mimics the behavior of the GNU compiler gcc: it accepts a range of
conventional compiler options, such as for defining macros and include/library
paths, and for steering the compilation process. All non-CUDA compilation steps
are forwarded to a general purpose C compiler that is supported by nvcc, and on
Windos platforms, where this compiler is an instance of the Microsoft Visual Studio
compiler, nvcc will translate its options into appropriate ‘cl’ command syntax. This
extended behavior plus ‘cl’ option translation is intended for  support of portable
application build and make scripts across Linux and Windows platforms.

그리고 내 컴퓨터에는 일단..
Visual Studio 6.0이 설치되어 있고, 개인적인 .net 거부반응으로 인해 2002나 2008 이런 녀석들은 설치되어 있지 않다.

아무튼, host compiler에서 Windows platform은
           "Microsoft Visual Studio compiler, cl" 이라고 되어 있는디..
           VS2002 부터 지원하는지는 모르겠지만 아무튼, cl은 command line이라고
           clcc.exe 같은 녀석으로 지원하는 커맨드 라인 MSVS 컴파일러 이다.
           혹시나 openCL인줄 알았더니 그것도 아니네 -_-

그리고 Supported build enviroment 에서는 Windows + MinGW shell이 존재한다.
gcc가 아니다 shell 이다 -_- 즉, 죽어도 컴파일러는 Visual Studio를 설치할 수 밖에 없다(윈도우에서는)

아래 13페이지와

14페이지의 내용을 둘러보고

옵션들을 조정해 보아도, VS가 없으면 안된다.(VS6.0도 안된다)

[링크 : http://moss.csc.ncsu.edu/~mueller/cluster/nvidia/2.0/nvcc_2.0.pdf]

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

CUDA / Visual Studio 2008  (2) 2010.12.05
CUDA + Visual Studio 2005  (0) 2010.12.01
PTX - Parallel Thread Execution  (0) 2010.11.11
ATI Stream / OpenCL 을 Nvidia에서 돌려보았더니!  (0) 2010.11.06
ATI STREAM - OpenCL 문서들  (0) 2010.11.04
Posted by 구차니
Programming/openCL & CUDA2010. 11. 6. 22:42
소쿨한 에러
C:\> ConstantBandwidth.exe
Error: clCreateContextFromType failed. Error code : CL_DEVICE_NOT_FOUND

컴파일러가 ATI 쪽만 인식하도록 되어있는지, nVidia의 GPU를 제대로 활용하지는 못한다.
아니면 예제 프로그램들이 openCL을 이용하기는 하지만, nVidia의 openCL과는 달라서 그럴려나?





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

nvcc for windows 제약사항?  (0) 2010.11.14
PTX - Parallel Thread Execution  (0) 2010.11.11
ATI STREAM - OpenCL 문서들  (0) 2010.11.04
ATI Stream SDK  (0) 2010.11.03
GPU Gems 3  (2) 2010.11.02
Posted by 구차니