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. 11. 09:06
CUDA 문서를 읽다가 PTX라는 말이 자주 언급되는데
문제는 이 용어에 대한 내용은 영 다른 문서(PTXISA.pdf)에 짱박혀 있다는 것 -_-


아무튼 부랴부랴 검색을 해보니
일종의 CUDA 장치용 어셈블리 언어의 개념이고
대량의 레지스터를(아무래도 쓰레드별로 존재할테니) 매핑하기 위한
pseudo register 라는 개념을 사용하과 있다고 한다.

확장자이기도 하고, 언어이기도 하고..

굳이 비유하자면
*.c를 어셈블 해서 *.S가 나오고 그걸 컴파일 해서 *.o 가 나오듯
*.cu를 어셈블 해서 호스트 코드는 *.S로 Cuda 코드는 *.ptx로 나오는 식일려나?

[링크 : http://en.wikipedia.org/wiki/Parallel_Thread_Execution]

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

CUDA + Visual Studio 2005  (0) 2010.12.01
nvcc for windows 제약사항?  (0) 2010.11.14
ATI Stream / OpenCL 을 Nvidia에서 돌려보았더니!  (0) 2010.11.06
ATI STREAM - OpenCL 문서들  (0) 2010.11.04
ATI Stream SDK  (0) 2010.11.03
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 구차니
Programming/openCL & CUDA2010. 11. 4. 18:03

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

PTX - Parallel Thread Execution  (0) 2010.11.11
ATI Stream / OpenCL 을 Nvidia에서 돌려보았더니!  (0) 2010.11.06
ATI Stream SDK  (0) 2010.11.03
GPU Gems 3  (2) 2010.11.02
CUDA 예제파일 실행결과 + SLI  (0) 2010.11.02
Posted by 구차니
Programming/openCL & CUDA2010. 11. 3. 09:17

Nvidia CUDA와 비슷하게 GPU 컴퓨팅을 지원하는 ATI Stream이라는 녀석이 있다.
SDK는 아래의 링크에서 다운로드!
[링크 : http://developer.amd.com/gpu/ATIStreamSDK/Pages/default.aspx]


이녀석도 CUDA 처럼 드라이버 버전에 민감하다.
일단 Catalyst 10.9 이상의 버전인지 아래의 도표에서 확인을 해보고 고고싱
(2010.11.03일 기준 최신버전은 10.10 이다. 드라이버 업그레이드시 리부팅은 불필요)
[링크 : http://developer.amd.com/drivers/ccc/Pages/default.aspx]

그렇지 않으면 요런화면을 보게됨.


아무튼, ATI STREAM은 CUDA와는 다르게 SDK와 샘플코드가 같이 패키지로 되어있다.
하지만 일일이 Agree 해주고 몇번이고 해야 하는 귀찮은 4번의 과정이 조금 짜증난다.

패키지는 이렇게 4가지이고

아래와 같은 인스톨러 화면이 나온다.



설치하고 나서 추가된 프로그램목록


샘플코드중 nbody 프로그램


사족 : Express를 고속으로 번역하는 센스!
틀린건 아닌데 지적을 하고 싶은데 이 먼가 찜찜한 기분은 -_-!

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

ATI Stream / OpenCL 을 Nvidia에서 돌려보았더니!  (0) 2010.11.06
ATI STREAM - OpenCL 문서들  (0) 2010.11.04
GPU Gems 3  (2) 2010.11.02
CUDA 예제파일 실행결과 + SLI  (0) 2010.11.02
SLI mode - AFR, SFR, AA  (0) 2010.11.01
Posted by 구차니
Programming/openCL & CUDA2010. 11. 2. 00:31
Nvidia CUDA 홈페이지에 있는 GPU Gems 3의 링크이다.


[링크 : http://http.developer.nvidia.com/GPUGems3/gpugems3_part01.html]


어디서 많이 보던 빠박인데!? 라는 생각이들면 클릭!
근데.. 책 내용에 포함된 그림들은 참 끌리는데.. 나랑은 거리가 멀단 말이지 ㅠ.ㅠ



---
2011.03.02 추가

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

ATI STREAM - OpenCL 문서들  (0) 2010.11.04
ATI Stream SDK  (0) 2010.11.03
CUDA 예제파일 실행결과 + SLI  (0) 2010.11.02
SLI mode - AFR, SFR, AA  (0) 2010.11.01
CUDA 와 SLI  (0) 2010.10.30
Posted by 구차니
Programming/openCL & CUDA2010. 11. 2. 00:23
nvidia 제어판에서 SLI 옵션에 따른결과가 별로 차이가 나지 않아서 재미가 없음 -_-


nbody
SLI off <-> SLI on
151 FPS <-> 165 FPS
 

Fluid는 프로그램의 문제인지 SLI던 아니던 거의 75.7fps에 고정되어 있었다.
단, 버그인지 SLI를 켠 경우에는 초반에 1019.8 fps 라고 나오고 잠시후 75.7fps로 고정되었다.

SLI off
 

SLI on
 

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

ATI Stream SDK  (0) 2010.11.03
GPU Gems 3  (2) 2010.11.02
SLI mode - AFR, SFR, AA  (0) 2010.11.01
CUDA 와 SLI  (0) 2010.10.30
CUDA SDK 설치하기  (2) 2010.10.24
Posted by 구차니
Programming/openCL & CUDA2010. 11. 1. 23:03
CUDA 리눅스 쪽의 Readme 파일이다.
어찌된게... windows 용으로는 readme 파일이 부실한데, 리눅스는 이렇게나 빵빵할꼬?

아무튼, SLI로 돌리면 3가지 모드로 사용이 가능하다고 한다.
    첫째는 더블 버퍼링 처럼 교대로 렌더링을 하는 방식이고
    둘째는 화면을 수직 1/n 개로 나누어 서로 렌더링하는 방식이고(물론 성능에 따라 비율이 달라질 수 있음)
    셋째는 계단현상 제거이다(통칭 안티알리아싱)

25A. RENDERING MODES

In Linux, with two GPUs SLI and Multi-GPU can both operate in one of three
modes: Alternate Frame Rendering (AFR), Split Frame Rendering (SFR), and
Antialiasing (AA). When AFR mode is active, one GPU draws the next frame while
the other one works on the frame after that. In SFR mode, each frame is split
horizontally into two pieces, with one GPU rendering each piece. The split
line is adjusted to balance the load between the two GPUs. AA mode splits
antialiasing work between the two GPUs. Both GPUs work on the same scene and
the result is blended together to produce the final frame. This mode is useful
for applications that spend most of their time processing with the CPU and
cannot benefit from AFR.

With four GPUs, the same options are applicable. AFR mode cycles through all
four GPUs, each GPU rendering a frame in turn. SFR mode splits the frame
horizontally into four pieces. AA mode splits the work between the four GPUs,
allowing antialiasing up to 64x. With four GPUs SLI can also operate in an
additional mode
, Alternate Frame Rendering of Antialiasing. (AFR of AA). With
AFR of AA, pairs of GPUs render alternate frames, each GPU in a pair doing
half of the antialiasing work. Note that these scenarios apply whether you
have four separate cards or you have two cards, each with two GPUs.

With some GPU configurations, there is in addition a special SLI Mosaic Mode
to extend a single X screen transparently across all of the available display
outputs on each GPU. See below for the exact set of configurations which can
be used with SLI Mosaic Mode.

[링크 : http://developer.download.nvidia.com/compute/cuda/3_2/drivers/docs/README_Linux.txt]


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

GPU Gems 3  (2) 2010.11.02
CUDA 예제파일 실행결과 + SLI  (0) 2010.11.02
CUDA 와 SLI  (0) 2010.10.30
CUDA SDK 설치하기  (2) 2010.10.24
CUDA Toolkit 설치하기  (0) 2010.10.24
Posted by 구차니