- 1 名前:デフォルトの名無しさん mailto:sage [2009/10/08(木) 19:29:37 ]
- このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。 CUDA使いが優しくコメントを返しますが、 お礼はCUDAの布教と初心者の救済をお願いします。 CUDA・HomePage www.nvidia.com/cuda 関連スレ GPUで汎用コンピューティングを行うスレ pc11.2ch.net/test/read.cgi/tech/1167989627/ GPGPU#3 pc12.2ch.net/test/read.cgi/tech/1237630694/
- 405 名前:デフォルトの名無しさん mailto:sage [2009/12/21(月) 00:30:00 ]
- 個人的には285の2GBメモリ版がお薦めなのです。
- 406 名前:デフォルトの名無しさん [2009/12/21(月) 06:47:28 ]
- 【SIGGRAPH Asia 2009レポート】
東工大、スクウェアエニックスがCUDA実装事例を紹介 ttp://pc.watch.impress.co.jp/docs/news/event/20091221_338290.html
- 407 名前:デフォルトの名無しさん [2009/12/21(月) 07:04:05 ]
- 【SIGGRAPH Asia 2009レポート】
NVIDIAがGPUによるグラフィックスワークスタイルの変革をアピール ttp://pc.watch.impress.co.jp/docs/news/event/20091218_336837.html
- 408 名前:デフォルトの名無しさん mailto:sage [2009/12/21(月) 07:14:00 ]
- >>405
どっか、285の4GB版とか安く出してくれないもんかね。
- 409 名前:デフォルトの名無しさん mailto:sage [2009/12/21(月) 07:15:58 ]
- ...| ̄ ̄ | < Fermiはまだかね?
/:::| ___| ∧∧ ∧∧ /::::_|___|_ ( 。_。). ( 。_。) ||:::::::( ・∀・) /<▽> /<▽> ||::/ <ヽ∞/>\ |::::::;;;;::/ |::::::;;;;::/ ||::| <ヽ/>.- | |:と),__」 |:と),__」 _..||::| o o ...|_ξ|:::::::::| .|::::::::| \ \__(久)__/_\::::::| |:::::::| .||.i\ 、__ノフ \| |:::::::| .||ヽ .i\ _ __ ____ __ _.\ |::::::| .|| ゙ヽ i ハ i ハ i ハ i ハ | し'_つ .|| ゙|i〜^~^〜^~^〜^~^〜
- 410 名前:デフォルトの名無しさん mailto:sage [2009/12/21(月) 11:01:34 ]
- めるせんぬついすた、GPU版の使い方@Windowsがやっとわかったわー
- 411 名前:デフォルトの名無しさん mailto:sage [2009/12/21(月) 15:33:23 ]
- |┃三 /::::::::ハ、\、::::::::\\::::::::::::',
|┃ i:::::::イ `> ー─--ミ::::::::::::| |┃ {::::::::| ::\:::/:::: \:::リ-} ガラッ. |┃ ',::r、:| <●> <●> !> イ |┃ ノ// |:、`{ `> .:: 、 __ノ |┃三 |::∧ヘ /、__r)\ |:::::| |┃ |::::::`~', 〈 ,_ィェァ 〉 l::::::》 <フェニミストはまだかね 辛抱たまらん |┃ |:::::::::::::'、 `=='´ ,,イ::ノノ从 |┃三 ノ从、:::::::::`i、,, ... ..,,/ |::::://:从
- 412 名前:デフォルトの名無しさん mailto:sage [2009/12/21(月) 16:19:40 ]
- おれの物欲も辛抱たまらん、Core i7+GTX260Mノートが欲しくて。
でもFermiのモバイル版が乗ったノートが出るのを松
- 413 名前:デフォルトの名無しさん mailto:sage [2009/12/21(月) 21:07:30 ]
- 故あってCUDAを使うことになったのですが自宅にはRadeonを積んだものしかありません。
コンパイルオプションでCPUでのエミュレーションができると何かで読んだのですが これを利用すればRadeonの環境でも一応の動作はするのでしょうか?
- 414 名前:デフォルトの名無しさん mailto:sage [2009/12/21(月) 21:24:33 ]
- CPUでのエミュレーションなので
radeon関係なくCPU上で動くよ
- 415 名前:デフォルトの名無しさん mailto:sage [2009/12/21(月) 21:44:22 ]
- 即レスどうもです。学校には設備があるので問題ないのですが自宅でもやりたかったので
あともう一つ質問よろしいでしょうか。VineLinuxでの動作は可能でしょうか? 気になったのですがどうもサポートしてないようなので
- 416 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 05:22:26 ]
- >>412
悪魔:「単精度なら大して変わらないんだから、買っちゃえよ!Fermi出たらまた買えよ!」
- 417 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 06:31:17 ]
- >>415
Linuxでサポート期待しちゃいかんだろう あとエミュレーションはテクスチャ周りなど微妙に?おかしい模様なんで、あんまり期待しないほうがいい。 5000円くらいで適当なカード買うのが一番無難かもよ。
- 418 名前:デフォルトの名無しさん mailto:sage [2009/12/23(水) 09:13:22 ]
- なんか、GeForceの在庫がどんどん無くなっていってない?
まもなくFermi出るな!これは!
- 419 名前:デフォルトの名無しさん mailto:sage [2009/12/23(水) 11:06:25 ]
- C2050/2070よりも先にFermi搭載のGeForceが出ると発表しているしね
NVIDIA、“Fermi”採用第1弾GPU「Tesla 20」シリーズ発表 - ITmedia +D PC USER ttp://plusd.itmedia.co.jp/pcuser/articles/0911/17/news039.html まあ、実際に2010Q1に出るかは怪しいわけだが C2050が2499ドルってのは自宅用で用意するには結構きつい値段なので、 Fermi搭載のGeForceがどの程度の値段なのかが今から気になっている
- 420 名前:デフォルトの名無しさん mailto:sage [2009/12/23(水) 11:07:45 ]
- >>415
とりあえず玄人思考のGTX260でも買ってみよう でかいからPCケースに入るか確認してからね
- 421 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 03:28:46 ]
- Device 0: "GeForce 8600 GTS"
Total number of registers available per block: 8192 CUDAやろうと思ってますが、レジスタの領域が少なすぎませんか? __device__ void swap(float *d1, float *d2); 例えばこのような関数呼び出すのに引数とtempで計12byte、他にもthIDや作業用でローカル変数使うから、 最大のパフォーマンス求めようとすると実質スレッドは300個くらいになるんだけど… こんなんだと何万、何千のスレッドとか無理じゃね? みんなカーネル以外の関数は作らずにカーネルの中に処理を直書きしてるのですか?
- 422 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 04:01:38 ]
- >>421
レジスタとスタックとかバイトとレジスタ個数とかごっちゃになってないか色々と
- 423 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 11:11:36 ]
- 4Gamer.net ― Fermi時代の製品展開が分かってきたNVIDIAのGPUロードマップ。DX11世代が出揃うのは2010年Q2以降に(Fermi(開発コードネーム))
www.4gamer.net/games/099/G009929/20091012001/ Fermi搭載のGeForceは3月くらいかなあ…? この記事自体が2ヶ月前だからなんともだけどね
- 424 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 17:54:34 ]
- あんどうさん更新
ttp://www.geocities.jp/andosprocinfo/wadai09/20091226.htm
- 425 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 18:03:48 ]
- >>421
>Device 0: "GeForce 8600 GTS" >Total number of registers available per block: 8192 直訳すると、「ブロックあたり使用可能なレジスター数:8192」 ブロックあたりのスレッド数は数千・数万もいらない。 128〜256程度でだいたいパフォーマンスは出る。(それを複数コアで何セットも同時に動かす) あとカーネル1個でなんでもかんでもするもんでもない。(直列的な)処理ごとに分割すればいい。
- 426 名前:421 mailto:sage [2009/12/27(日) 23:15:38 ]
- >>422 >>425
うん…見直すと自分とても恥ずかしい事言いましたね(´・ω・`) 当初の疑問は理解して解決しました。 で、また別の話のGPGPUに関して質問です。 今DirectX使ってゲームを作っていて処理の重い部分(当たり判定とか)をGPUにやらせようと思っているんだけど、 ゲームって元々グラフィック描画でGPU使うので、それに加えてCUDAやプログラマブルシェーダーでGPGPUしたら相当パフォーマンス落ちますか? 目的はCPU使用率を抑えたいんだけど、ゲームのような1フレーム毎にGPGPUをするのは実用で使えうるものなんでしょうか。
- 427 名前:デフォルトの名無しさん mailto:sage [2009/12/27(日) 23:28:32 ]
- 当たり前の話だけど、GPUをフルに使うようなレンダリングをしていたら遅くなる
フレーム枚にGPGPUの処理を入れるのはそんなに問題ない ただし処理の重い部分ってのが上手く並列化できるアルゴリズムであることや、そこそこの量あることが求められる 分岐ばっかだったり、処理よりメインメモリ-VRAM間の転送のほうが時間かかると逆に遅くなる ようは、本当にGPGPUを使ったほうがいい処理なのかを吟味する必要がある
- 428 名前:デフォルトの名無しさん mailto:sage [2009/12/27(日) 23:54:43 ]
- 質問です。
C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK\C\src\template\template_vc90.vcproj を開き、ビルドした所、「入力ファイル 'cutil32D.lib' を開けません。」というエラーが出ました。「x64」では、スキップされてしまいます。 >>34 とほぼ同じ状況なので、このスレに書かれている事をしてみたのですが、変化ありません。 また、リンカの設定でcutil32D.libをcutil64D.libに変えた所、x64でビルド出来るようになったのですが、 「モジュールのコンピュータの種類 'x64' は対象コンピュータの種類 'X86' と競合しています。」と別のエラーが発生しました。 環境は windows7 64bit Visual C++ 2008 Express Edition GTS250 CUDAのドライバ、toolkit、sdkは2.3でwin7 64bitの物を入れました。 改善策がありましたら、ぜひお願いします。
- 429 名前:デフォルトの名無しさん mailto:sage [2009/12/28(月) 00:17:23 ]
- >>428
Expressは64bitでコンパイルできないかも? www.microsoft.com/japan/msdn/vstudio/2008/product/compare.aspx
- 430 名前:デフォルトの名無しさん mailto:sage [2009/12/28(月) 00:25:04 ]
- >>429
みたいです。やはりproを買うしかないのでしょうか… レスありがとうございました。
- 431 名前:デフォルトの名無しさん mailto:sage [2009/12/28(月) 00:48:50 ]
- >>428 >>430
答えるのに十分な情報量を持った質問を久しぶりに見たような気がしたw proが良いけどねぇ。 今は最適化コンパイラもついてるし、standardで良い気もする。 (standard使ったことはないので参考まで)
- 432 名前:デフォルトの名無しさん mailto:sage [2009/12/28(月) 02:01:56 ]
- PlatformSDKにx64コンパイラあったような
- 433 名前:デフォルトの名無しさん mailto:sage [2009/12/28(月) 20:43:04 ]
- 落ち着いて、なぜこういうエラーがでるのか?
と、考えるしかないよ。
- 434 名前:デフォルトの名無しさん mailto:sage [2009/12/29(火) 11:29:33 ]
- CUDAが使えるGPUが載ってるか否かの判断をプログラム上で行うには
どうするといいのでしょう?
- 435 名前:デフォルトの名無しさん mailto:sage [2009/12/29(火) 11:57:15 ]
- OpenCL入門 - マルチコアCPU・GPUのための並列プログラミング
が出版されるそうな アスキードットテクノロジーズの記事書いた人たちらしいが GPGPUでもっともメジャーなのはCUDAだと思うけど OpenCLがこの本の売り文句通りスタンダードになるんだろうか…? よくわからないけど、無関心でいるわけにも行かないのでとりあえずポチってみる 感想あったらアマゾンのレビューに書く >>434 プログラム上でその判断をやる必要というのがよくわからない コマンドラインでやるのでは駄目なのか
- 436 名前:デフォルトの名無しさん mailto:sage [2009/12/29(火) 11:57:22 ]
- >>434
それはやはり cudaGetDeviceCountして、CUDAデバイス個数調べ cudaGetDevicePropertyをDeviceCountまわして、 .major、.minorでバージョンチェック .multiProcessorCountでコアの個数調べ して使うしかないんじゃ。
- 437 名前:434 mailto:sage [2009/12/29(火) 12:21:50 ]
- >>436
どうも >>435 CUDA依存部分を共有ライブラリの形でプログラム本体から切り出しておいて、 実行時に動的にリンク出来たらとか考えてます。 …CUDA版バイナリと、CUDA無し版バイナリを用意して、インストール時に 選ばせればいいのか。
- 438 名前:デフォルトの名無しさん mailto:sage [2009/12/29(火) 13:05:23 ]
- >>435
スタンダードはどう考えてもDirectComputeだろ。 いまのWindowsのシェアとDirectXの普及率から考えてCUDAがスタンダードになるにはポテンシャルが違いすぎる。
- 439 名前:438 mailto:sage [2009/12/29(火) 13:06:36 ]
- CUDAはスタンダードになれる可能性はあるけど、OpenCLはたぶん廃れる。
OpenCLって所詮はCUDAのラッパでしょ? ラッパライブラリがスタンダードになった事例ってあんまり知らないんだけどさぁ。
- 440 名前:デフォルトの名無しさん mailto:sage [2009/12/29(火) 13:16:26 ]
- Appleはラッパ好きだよな。
ObjCもラッパではないにしろマクロ駆使してるだけで、骨はCに変わりはないでしょ? Appleは声は大きいけど技術が無いから、OpenCLもあんまり期待してないよ。 所詮ラッパライブラリだから、コンパイルしたらどのGPUでも使えるってわけではないし。 OpenCLのDLLロードしたらどのGPUでも同じバイナリでおkみたいになったら使いやすいけどね。
- 441 名前:デフォルトの名無しさん mailto:sage [2009/12/29(火) 13:19:23 ]
- てか俺が作っちゃう?www
- 442 名前:デフォルトの名無しさん mailto:sage [2009/12/29(火) 13:27:41 ]
- >>437
436でCUDA使えるかどうか確認して、 プログラムとしてはCPU用ルーチンとGPU用ルーチンを両方持っておく でいいんじゃね?(やはり、動作確認用にCPU/GPU双方で試すのは必要と思うし)
- 443 名前:デフォルトの名無しさん mailto:sage [2009/12/29(火) 13:30:38 ]
- >>438
おれ、 ttp://openvidia.sourceforge.net/index.php/DirectCompute 見て「うざっ!!」と思って挫折した。 ダメな俺
- 444 名前:デフォルトの名無しさん mailto:sage [2009/12/31(木) 03:50:21 ]
- pyCUDAってどうかな
DriverAPIを使ってモジュールを実行時に作成、ロードするみたいですね。
- 445 名前:デフォルトの名無しさん mailto:sage [2010/01/03(日) 16:34:54 ]
- 3次元のデータをデバイス側に送って計算したいんですけど、
>>328の >固めてまとめて渡しちゃったほうがオーバーヘッドが少ないと思います。 >トータル何列あるよ、は別にパラメータで渡す。 というのはどこにどのように記述すればいいのでしょう?
- 446 名前:デフォルトの名無しさん mailto:sage [2010/01/03(日) 16:57:35 ]
- >>445
もちろん、少ないならデバイス関数の引数として渡す。パラメータ複数個まとめた配列で渡しても良いし。 計算の対象、計算の結果、に加えて、計算のパラメータ、も同様にホスト側で確保→cudaMemCopyするわけ。
- 447 名前:デフォルトの名無しさん mailto:sage [2010/01/03(日) 17:38:23 ]
- >>446
ありがとうございます。 物分かりが悪くて申し訳ないのですが、 cudamemcpyは確保した領域にデータをコピーする使い方しか思いつかないので、 >計算の対象、計算の結果、に加えて、計算のパラメータ、も同様にホスト側で確保→cudaMemCopyするわけ。 を簡単に例で説明していただけないでしょうか?
- 448 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 00:23:45 ]
- えっ なぜ分からないんだ? たとえばこんな感じだよ
__device__ calculate(float * input, float * output, int * params){ : if (params[i] == 0) output[i] = func_A(input[i]); if (params[i] == 1) output[i] = func_B(input[i]); __syncthreads();
- 449 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 11:06:25 ]
- >>448
ありがとうございます。 なんだか変な方向に考えすぎていました。
- 450 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 12:52:14 ]
- CUDAってGPUカーネルの中で関数読んで値をreturnさせることできたっけ?
あと__global__にしないとホストから関数呼べなくね?
- 451 名前:448 mailto:sage [2010/01/04(月) 13:31:34 ]
- calculateが__global__で、func_A()、func_B()が__device__ですたorz
- 452 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 14:00:48 ]
- Fermi搭載GeForceの発売がまた不透明になったとか
- 453 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 16:05:01 ]
- ⇒を何らかの演算として 0⇒256 256⇒512 512⇒0 といった感じにしたいのですが
a = (a+256)%513; とする以外思いつきません。けど剰余は遅いので違う計算にしたいんです。 いっそのことテーブル作ったりif文にしたほうが早いのでしょうか? 馬鹿すぎてわかりません。誰か助けて
- 454 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 16:10:45 ]
- >>453
Cudaだと四則演算はほとんど処理時間には影響しないし、その式をつかうといいんじゃない? っていおうとおもったけど、a=512のとき0にならなくね?
- 455 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 16:13:31 ]
- 257⇒0 258⇒1 … でいいの?
でもそうすると512⇒0がヘンだけどな。 int val; val = a + 256; if (val > 512) val = val - 513; でいいんじゃないの? というかC言語の疑問をCUDAスレで聞くのはまちがっとる、ここは人口が少ないぞ
- 456 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 16:26:48 ]
- じゃあCUDAっぽく
const int TABLE[512] = { 256, ... , 512, ... , 0 } __device__ int f(int a){ return TABLE[a]; }
- 457 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 17:09:36 ]
- レスありがとうございます
わけわかんないこと書いてすみません テーブルとif文試して出直してきます
- 458 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 17:37:31 ]
- >>453
b⇒aとして、 a = (b+256)%768; でいいのかな? 0⇒256 256⇒512 511⇒767 512⇒0
- 459 名前:デフォルトの名無しさん mailto:sage [2010/01/04(月) 21:45:29 ]
- 釣りだよな?
- 460 名前:デフォルトの名無しさん mailto:sage [2010/01/05(火) 01:06:37 ]
- 申し訳ないっす
- 461 名前:デフォルトの名無しさん mailto:sage [2010/01/07(木) 00:21:36 ]
- ランダム関数の作成で悩んでます。
・CPUで作成した乱数リストをGPUに転送しない ・1スレッドの中で何度も呼ばれる ・グローバルメモリは使わない。スレッドIDやclock()をseedとして使う この制約で良い乱数生成アルゴリズムを教えて下さい。 MTGPっていうのを参考にしようとしましたがムズ過ぎて挫折…まずコンパイルが通らず(´・ω・`)
- 462 名前:デフォルトの名無しさん mailto:sage [2010/01/07(木) 01:01:35 ]
- おれMTGPコンパイルできたよ。GPU側で作成してそのままGPUで使えるし。
(シンボルコピー)
- 463 名前:デフォルトの名無しさん mailto:sage [2010/01/07(木) 08:15:53 ]
- 使ったファイルはこれだけ
mtgp32-fast.h mtgp32-cuda.cu mtgp32-fast.c mtgp32-param-fast.c make_single_random()とかの末尾を適当に書き換える。
- 464 名前:デフォルトの名無しさん [2010/01/07(木) 12:09:10 ]
- 誰かOptiXやってる人いませんかー?
- 465 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 09:15:11 ]
- CES 2010: NVIDIA Shows GeForce GF100 Fermi Video Card - Legit Reviews
www.legitreviews.com/news/7122/ 3/2に本当に出るのかしらん
- 466 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 09:22:19 ]
- 気にするな、出たら買う、出るまではCUDAの修行をする。
単純でイイじゃないか。
- 467 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 09:41:48 ]
- >>461
Perlinノイズやってみてよ ttp://mrl.nyu.edu/~perlin/doc/oscar.html Cのソースが有る
- 468 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 11:02:05 ]
- Fermiもダメそうってどこかのブログで見た
NVIDIAまじやばい
- 469 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 11:05:40 ]
- ようやくCUDAに慣れてきたところなのに、StreamSDKとかOpenCLとか
DirectComputeとかまた勉強しないといけないの? 辛いのうwwプログラマは辛いのうwww orz
- 470 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 13:36:24 ]
- windows7 64bit、Visual C++ 2008 Pro環境に、CUDA toolkit、sdk 2.3をインストールして、
C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK\C\srcにある、 _vc90.slnファイルを開いて、問題なくビルドできます。 exeファイルの出力先は、デフォルトでC:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK\C\bin\win64\ですが、 これ以外の出力先に変更する方法を教えてください。
- 471 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 13:42:23 ]
- プロジェクトのプロパティで変更できるよ
$(OutDir)\$(ProjectName).exe これを丸ごとフルパスで指定してしまいなさい。
- 472 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 17:14:12 ]
- XP,32bitでコンパイルしたプログラムを7,64bitで動かそうとしたら動かなかった・・・
こういうものなのか
- 473 名前:デフォルトの名無しさん [2010/01/08(金) 17:23:41 ]
- 32/64ビットのcudart.dllが必要
- 474 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 19:20:38 ]
- >>471
thanks
- 475 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 12:33:02 ]
- 現在CUDA SDKを導入しVisual C++ 2005 Express Editionを使用しCPUでのエミュレーションを行っています。
いくつかのサンプルは動かせたのですがparticlesなど複数のサンプルでコンパイルはできているようですが実行すると以下のようなエラーが出ます device emulation mode and device execution mode cannot be mixed. エラーが出ている行は cutilCheckMsg("cudaMalloc failed"); cutilSafeCall(cudaGLRegisterBufferObject(vbo)); cutilSafeCall( cudaMalloc3DArray(&noiseArray, &channelDesc, size) ); のように「cutil〜」になってます。オプションから設定しているのでデバイスエミュレーション自体はうまく行ってるようなのですが エミュレーションを行う際はソースを書き換える必要があるのでしょうか?
- 476 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 12:55:52 ]
- メッセージのとおりエミュONOFFまぜてる
またはリビルドしてないんじゃ? プロジェクト設定じゃなくてビルド構成のほうでエミュレーションにかえられないっけ?
- 477 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 13:05:00 ]
- メッセージの内容は把握できています。
リビルドも多分できてると思います。 エミュレーションの設定は プロジェクトのプロパティ→CUDA Build Rule→Emulation Mode はい にしてます。ほかの方法はよくわからないのですがほかの方法があるのでしょうか?
- 478 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 22:13:13 ]
- ビルド構成のほうからエミュレーションの設定ができました。問題なくビルド&実行できました。ありがとうございます。
ただFPSが0.1なんでほぼ無意味でした。
- 479 名前:デフォルトの名無しさん [2010/01/10(日) 23:24:17 ]
- エミュレーションなんてHello world以上のことをやるもんじゃないな
- 480 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 00:20:59 ]
- 処理する画面領域を1000分の1ぐらいに限定して、バグを調査するくらいのことはできる。
- 481 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 01:26:19 ]
- なんだっけ、エミュじゃなくて実機で実デバッグできるやつ
早く来てほしいな
- 482 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 14:25:34 ]
- CPU版アプリの移植の際に、エミュはデータ検証に使える。
- 483 名前:デフォルトの名無しさん [2010/01/12(火) 20:21:38 ]
- -G オプションって使える?WinXPで
「'assembler' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」 と出てビルドできないけど。 --deviceemuもつけないとだめなの?
- 484 名前:デフォルトの名無しさん [2010/01/13(水) 09:38:31 ]
- CUDAのバージョンを書き出しておきたいのですが、
CUDAのバージョンを調べる関数か何かありませんか?
- 485 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 09:41:29 ]
- >>484
>>436 でどう?
- 486 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 09:50:27 ]
- こっちを要求している気がする。
cudaRuntimeGetVersion() cudaDriverGetVersion()
- 487 名前:デフォルトの名無しさん [2010/01/13(水) 09:56:08 ]
- WindowsでCUDAを使っています。
ループが一定回数超える度に、coutで経過を表示しています。 Linuxに比べて遅かったので、いろいろ試してみたところ、 DOSウインドウの前で、マウスを動かすと、速くなります。 垂直同期か何かで引っかかっているのかと思い、設定で切ってみましたが 状況が変わりません。 どなたか似たような状況になって解決された方はいないでしょうか?
- 488 名前:487 [2010/01/13(水) 11:05:28 ]
- 追加報告です。
cudaMemcpyでcudaMemcpyDeviceToHostでコピーするところで異常に時間がかかっているようです。 この1行を消すだけで、100秒ほどかかっていたのが2秒にまでなりました。 逆方向のcudaMemcpyHostToDeviceは問題ありません。
- 489 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 11:13:17 ]
- CUDAプログラムがGPUで計算等をしている間は画面表示の更新が遅くなります。
1回のループにどれくらいの時間がかかるのか、一定回数がどれくらいかによりますが、 経過の表示される間隔が短いとその影響を受ける可能性があります。 あるいは、マウスを動かすことでCPUに負荷をかけないとパワーセーブモードに入ってしまうとか・・・・。
- 490 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 11:17:06 ]
- >>488
転送に100秒かかるのは現実的にありえないので、恐らくcudaThreadSynchronize()等でカーネルの実行完了待ちを していないのではないかと思います。カーネル呼び出しそのものは一瞬で終わりますが、 後続のcudaMemcpy(.....,...,...., cudaMemcpyDeviceToHost)時に暗黙的にそれまでに呼び出したカーネルの実行完了を待っています。 ・・・・・ということかどうかは分かりませんが。
- 491 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 11:29:27 ]
- >>489,490さん
早速の返信ありがとうございます。 cudaMemcpyでcudaMemcpyDeviceToHostを消したプログラムで、 プログラムの一番最後にだけ結果を取り出してみたところ、 正しく計算されていました。 次に、カーネルの実行部分のみをコメントアウトした場合、 やはり非常に時間がかかってしまいました。 やはり、GPUからCPUへのデータ転送に(というよりなにか同期の部分の様な気もしますが) 時間がかかっているようです。 計算用マシンなので省電力の設定はしていません。
- 492 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 11:48:15 ]
- >>491
> cudaMemcpyでcudaMemcpyDeviceToHostを消したプログラムで、 > プログラムの一番最後にだけ結果を取り出してみたところ、 > 正しく計算されていました。 これを読むと、そもそも何度もDeviceToHostの転送をする必要がない処理という解釈で よいのでしょうか? DeviceToHostが遅くなる理由はハードウェア的なものから色々あります。 マザーボードを交換したという人もいました。 SDKに含まれているbandwidthTestの結果はどうなっていますか? "--memory=pinned" を付けた場合と付けなかった場合をそれぞれ調べてみてください。
- 493 名前:デフォルトの名無しさん [2010/01/13(水) 11:59:12 ]
- Device 0: GeForce GTX 285
Quick Mode Host to Device Bandwidth, 1 Device(s), Paged memory Transfer Size (Bytes) Bandwidth(MB/s) 33554432 4340.2 Device to Host Bandwidth, 1 Device(s), Paged memory Transfer Size (Bytes) Bandwidth(MB/s) 33554432 4193.7 Device to Device Bandwidth, 1 Device(s) Transfer Size (Bytes) Bandwidth(MB/s) 33554432 119962.3 --memory=pinned Device 0: GeForce GTX 285 Quick Mode Host to Device Bandwidth, 1 Device(s), Pinned memory, Write-Combined Memory Enabled Transfer Size (Bytes) Bandwidth(MB/s) 33554432 5758.1 Device to Host Bandwidth, 1 Device(s), Pinned memory, Write-Combined Memory Enabled Transfer Size (Bytes) Bandwidth(MB/s) 33554432 5471.9 Device to Device Bandwidth, 1 Device(s) Transfer Size (Bytes) Bandwidth(MB/s) 33554432 119852.3
- 494 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 12:00:32 ]
- 結果はこんな感じです。
特に片方だけ遅いというわけでもないようです。 Linuxで起動した場合、遅くなるという問題は起きませんでした。 DeviceToHostが必要なのは結果を取り出すときだけで、 計算自体には必要ありません。
- 495 名前:デフォルトの名無しさん [2010/01/13(水) 12:03:47 ]
- 似たような話をnvidiaのforumで見つけました
forums.nvidia.com/lofiversion/index.php?t68705.html forums.nvidia.com/lofiversion/index.php?t73047.html 返信は結構あるのですが、解決策はよくわかりません。
- 496 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 14:46:26 ]
- ・CUDA内での計算処理、ループ数とループ内のステップ数、スレッド数ブロック数、だいたいどんなもんすか
・HostToDevice、DeviceToHostで転送するメモリのサイズはどのくらいですか
- 497 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 15:02:38 ]
- とりあえず
タイマー1,2作成 cudaMemCopy(HostToDevice) タイマー1,2起動 <<<>>>カーネル呼ぶ cudaThreadSyncronize() タイマー1停止 cudaMemCopy(DeviceToHost) タイマー2停止 してほんとにMemCopyなのかカーネルなのか確かめてみる必要は。
- 498 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 19:23:55 ]
- コピーが細切れでforループでやたら回数呼んで転送してたりしない?
1発で全部転送するのと1/1000ずつ1000回コピーするのとでは、 かかる時間に雲泥の差があるけど。
- 499 名前:487 mailto:sage [2010/01/14(木) 04:10:12 ]
- PCを再起動したら、上記の問題は出なくなりました。
お騒がせしました。
- 500 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 09:16:24 ]
- おいww 終わりかよww
- 501 名前:デフォルトの名無しさん [2010/01/14(木) 11:44:30 ]
- cutil64.dllってどこに置けばいいの?
- 502 名前:デフォルトの名無しさん [2010/01/15(金) 05:05:43 ]
- GPU側で配列の合計を求める方法を教えてください
- 503 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 07:59:04 ]
- サンプルのreduction見れ
- 504 名前:デフォルトの名無しさん [2010/01/15(金) 09:52:56 ]
- syncthreadsって異なるブロック間のスレッドも同期されるのでありましょうか?
- 505 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 20:54:27 ]
- >>504
programing guide よめ
|

|