CUDAの環境設定 戻る
環境
MacBook
Mac OS X 10.6.4
プロセッサ:1.83HGz Intel Core 2 Duo
メモリ:2GB
チップセットモデル:GMA 950
CUDAを使いたいけど、CUDAが使えるGPUじゃなかった。 でもエミュレーションモードがあるらしく、それにかけてみることにした。
OpenGL de プログラミング
処理速度の向上じゃなくて、単にGPUを使ってなんかしたかったから別に気にしない レッツ環境設定
3.1以上はエミュレーションモードがない?
CUDA対応のビデオカードがない場合
みたいなことを言っているので、2.3をダウンロードした。
gpucomputingsdk_2.3a_macos_32.pkg
cudatoolkit_2.3a_macos_32.pkg
cudadriver_2.3.1a_macos.pkg
をダウンロード。 インストール手順がよくわからない。 ドライバ→ツールキッド→SDK か ツールキッド→ドライバ→SDK でできる。
そしたらDeveloperの下にGPUなんちゃらが作られてる。
/Developer/GPU Computing/Cで
makeできた。忘れてた。CUDA対応のGPUじゃないんだ。この先は進めない。進めないのか?よくわからんが... エミュレーションモードだっけ?
make emu=1でもう一回やった。 ここにサンプルプログラムができる。
/Developer/GPU Computing/C/bin/darwin/emurelease最初はとりあえず、
deviceQueryを実行
/Developer/GPU Computing/C/bin/darwin/emurelease# ./deviceQuery CUDA Device Query (Runtime API) version (CUDART static linking) There is no device supporting CUDA. Device 0: "Device Emulation (CPU)" CUDA Driver Version: 2.30 CUDA Runtime Version: 2.30 CUDA Capability Major revision number: 9999 CUDA Capability Minor revision number: 9999 Total amount of global memory: 4294967295 bytes Number of multiprocessors: 16 Number of cores: 128 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: 1 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: 262144 bytes Texture alignment: 256 bytes Clock rate: 1.35 GHz Concurrent copy and execution: No Run time limit on kernels: No Integrated: Yes Support host page-locked memory mapping: Yes Compute mode: Default (multiple host threads can use this device simultaneously) Test PASSED Press ENTER to exit...
動いた。CUDA環境の設定できたっぽい。
よーし。次はCUDAプログラミングや。
何もしないサンプルプログラム
#includeint main(int argc,char** argv){ cutilDeviceInit(argc,argv); cudaThreadExit(); cutilExit(argc,argv); return 0; }
を記述して試しにコンパイル,実行する。
# nvcc sample1.cu Undefined symbols: "_cutGetCmdLineArgumenti", referenced from: _main in tmpxft_0000560e_00000000-11_sample1.o "_cutCheckCmdLineFlag", referenced from: _main in tmpxft_0000560e_00000000-11_sample1.o _main in tmpxft_0000560e_00000000-11_sample1.o ld: symbol(s) not found collect2: ld はステータス 1 で終了しました
そう簡単にはできないということか。 コンパイルの仕方が悪いのか?どっかのページを参考に再コンパイル
# nvcc sample1.cu -lcutil32 -lkernel32 ld: library not found for -lcutil32 collect2: ld はステータス 1 で終了しました # nvcc sample1.cu -lcutil32D -lkernel32 ld: library not found for -lcutil32D collect2: ld はステータス 1 で終了しました
無理。意味わからん。なんなの-lcutil32とかlkernel32とか。Dがついてたりついていなかったり やっぱり地道に調べるしかない。 ここで救世主。
CUDA nvccコンパイラでエラーがでるとき
助かった。感謝。ちゃんとコンパイル通りました。
以前
# nvcc cuda001.cu Undefined symbols: "_cutGetCmdLineArgumenti", referenced from: cutilDeviceInit(int, char**) in tmpxft_000057ad_00000000-11_cuda001.o "_cutCheckCmdLineFlag", referenced from: cutilDeviceInit(int, char**) in tmpxft_000057ad_00000000-11_cuda001.o __cutilExit(int, char**) in tmpxft_000057ad_00000000-11_cuda001.o ld: symbol(s) not found collect2: ld はステータス 1 で終了しました
↓ 以後
# nvcc cuda001.cu -lcutil
これでCUDAプログラミングのできる環境がなんとかできたから、GPUを使ったサンプルプログラムを動かして遊んでみる。そして実行したら
GPU Computing/C/bin/darwin/emurelease# ./oceanFFT [CUDA FFT Ocean Simulation] Left mouse button - rotate Middle mouse button - pan Left + middle mouse button - zoom 'w' key - toggle wireframe [CUDA FFT Ocean Simulation] ERROR: Support for necessary OpenGL extensions missing. Press ENTER to exit...
だとさ。
>ERROR: Support for necessary OpenGL extensions missing.
OpenGLのバージョンが低い?と解釈。どんなOpenGLが必要とされてるのか示してちょうだいよ。
いろいろいじってて、どっかで見たけど、このサンプルを動かすにはおそらくOpenGL1.5以上が必要らしい。
混乱してきた。今思っていることを文章にしよう。
自分のGPUは元々CUDAが使えなく、さらにOpenGLもバージョンが低いと言われた。
今動かそうとしているプログラムはOpenGLが悪い
そういえばエミュレーションモードとか気にしないでやってたけど.....make時にemuって指定したからemureleaseに入っているやつはコンパイル方法は気にしなくていい...よね。
これ(↑)はもうコンパイル済みであとは実行待ちの実行ファイルなんだよな。
ということは、OpenGLのバージョンアップをすれば実行できるっていうことだよな。
よし。
自分のOpenGLのバーションは?
便利なプログラムを作ってくれた人がいて、それを実行すると
OpenGLのバージョンの確認 ←たぶん見れない。"OpenGLのバージョン確認 Numata Designed Factory"で検索してちょ。
# ./a.out version={1.4 APPLE-1.6.18} renderer={Intel GMA 950 OpenGL Engine} vendor={Intel Inc.}
ってでました。
>version={1.4 APPLE-1.6.18}
らしいです。OpenGLのアップデートってできるの?公式サイトにアクセスを試みるも、開かん........
あきらめた。今のとこ支障はない。でもサンプルは動かしたいから近いうちに解決しないと。
今はここまで。
メモ:
- arch:バージョン管理システム。よくmakeエラーでお目にかかるも解決したことは一回もない。強敵
- cc1plus:Cコンパイラ。gccとおんなじ感じのやつ
- i386:Intel社の32ビットマイクロプロセッサ。3種類あり、i386DX,i386SX,i386SLがある。ノートパソコンに適したCPU。CPUの機種名
参考: