このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
CUDA使いが優しくコメントを返しますが、
お礼はCUDAの布教と初心者の救済をお願いします。
CUDA・HomePage
ttp://developer.nvidia.com/category/zone/cuda-zone
関連スレ
GPGPU#5
http://peace.2ch.net/test/read.cgi/tech/1281876470/
前スレ
【GPGPU】くだすれCUDAスレ【NVIDIA】
ttp://pc12.2ch.net/test/read.cgi/tech/1206152032/
【GPGPU】くだすれCUDAスレ pert2【NVIDIA】
ttp://pc12.2ch.net/test/read.cgi/tech/1254997777/
【GPGPU】くだすれCUDAスレ pert3【NVIDIA】
ttp://hibari.2ch.net/test/read.cgi/tech/1271587710/
【GPGPU】くだすれCUDAスレ pert4【NVIDIA】
ttp://hibari.2ch.net/test/read.cgi/tech/1291467433/
【GPGPU】くだすれCUDAスレ part5【NVIDIA】
http://toro.2ch.net/test/read.cgi/tech/1314104886/
【GPGPU】くだすれCUDAスレ part6【NVIDIA】
ttp://peace.2ch.net/test/read.cgi/tech/1348409867/
【GPGPU】くだすれCUDAスレ part7【NVIDIA】
http://echo.2ch.net/test/read.cgi/tech/1416492886/
【GPGPU】くだすれCUDAスレ part8【NVIDIA】 [無断転載禁止]©2ch.net
2016/06/15(水) 14:41:15.11ID:d2Xou3GL
322デフォルトの名無しさん
2022/11/26(土) 23:52:01.01ID:HQ9nVBdA GPUがちゃんと刺さって無いとか、電源不足とかドライバがちゃんとインストールされてないとか。
323デフォルトの名無しさん
2022/11/28(月) 08:14:28.58ID:MM544pas ん〜、GPU自体は認識されてるみたいなんですよね。
GPU-Zで調べてみたらCUDAのところチェック外れてたので、やはりCUDAは認識されていないみたいです。
https://gpuz.techpowerup.com/22/11/27/e6p.png
現在の電源は550Wなのですが、もうちょっと大きい容量のに変えてみて、それでダメならやはりドライバが合っていないという事でしょうか・・・。
GPU-Zで調べてみたらCUDAのところチェック外れてたので、やはりCUDAは認識されていないみたいです。
https://gpuz.techpowerup.com/22/11/27/e6p.png
現在の電源は550Wなのですが、もうちょっと大きい容量のに変えてみて、それでダメならやはりドライバが合っていないという事でしょうか・・・。
324デフォルトの名無しさん
2022/11/28(月) 08:33:47.92ID:D2ZVp0By gpu-zはハードウェア情報なのでcudaのチェックが外れてるって
何かがかなりおかしい
20年前のgeforceなら分からんでもないがRTXなら
偽物をつかまされたか、ハードウェア故障を疑った方が良い気がする
何かがかなりおかしい
20年前のgeforceなら分からんでもないがRTXなら
偽物をつかまされたか、ハードウェア故障を疑った方が良い気がする
325デフォルトの名無しさん
2022/11/28(月) 08:52:47.95ID:FFe6eh0R まずはsystem32にnvcuda.dll があるかどうか確認するかな
326デフォルトの名無しさん
2022/11/28(月) 12:53:30.32ID:MM544pas 316です。
Sytem32にnvcuda.dll入ってました。
やはりハードウェアの故障でしょうか? (今のGPUは約2年前にドスパラで買いました)
とりあえず電源ユニット注文しちゃったんで、電源交換&GPUも付け直してみて、それでダメだったら新しいGPU購入ですかね(T_T)
Sytem32にnvcuda.dll入ってました。
やはりハードウェアの故障でしょうか? (今のGPUは約2年前にドスパラで買いました)
とりあえず電源ユニット注文しちゃったんで、電源交換&GPUも付け直してみて、それでダメだったら新しいGPU購入ですかね(T_T)
327デフォルトの名無しさん
2022/12/02(金) 20:33:45.27ID:2cIkFTzc グラボを3060TIに変えてみましたが、それでもGPU-ZでCUDAにチェックが入っていませんでした・・・。
328デフォルトの名無しさん
2022/12/02(金) 20:51:14.24ID:NwS5Fypu あとはマザボかね~???
329デフォルトの名無しさん
2022/12/02(金) 20:53:44.01ID:NwS5Fypu 差す穴変えてみた?
330デフォルトの名無しさん
2022/12/02(金) 21:26:41.40ID:xlTggD6P 12V繋いでないってことはないよな
331デフォルトの名無しさん
2022/12/02(金) 22:03:05.09ID:2B2OMrFT >>326
Linuxでも入れて確認してみたら?
Linuxでも入れて確認してみたら?
332デフォルトの名無しさん
2022/12/02(金) 22:11:35.41ID:2cIkFTzc 接続するPCIEスロットも変えてみましたが・・・ダメでした。
グラボ上部にある補助電源?用のケーブルはちゃんと繋いでるはずなのですが、他に必要な接続とかあるんでしょうか?
現状のGPU-Zでの結果
https://gpuz.techpowerup.com/22/12/02/pn6.png
グラボ上部にある補助電源?用のケーブルはちゃんと繋いでるはずなのですが、他に必要な接続とかあるんでしょうか?
現状のGPU-Zでの結果
https://gpuz.techpowerup.com/22/12/02/pn6.png
333デフォルトの名無しさん
2022/12/03(土) 06:08:21.14ID:9AvqKyUf OpenGL, DirectX, vulkanとかのグラフィッ関係のAPIを使ったプログラムやゲームも動かないの?
本当にハードウェア関係に問題があるんならそういうプログラムも動かないだろうけど。
本当にハードウェア関係に問題があるんならそういうプログラムも動かないだろうけど。
334デフォルトの名無しさん
2022/12/03(土) 12:15:17.56ID:s9fm/abx 他のGPU全部殺してドライバアンインストール
3060Tiのドライバ入れなおせ
3060Tiのドライバ入れなおせ
335デフォルトの名無しさん
2022/12/03(土) 12:19:52.15ID:Xj+KmoE3 別のドライブにOSクリーンインストールしてみれば
336デフォルトの名無しさん
2022/12/04(日) 11:39:28.03ID:2Pwe8xJ8337デフォルトの名無しさん
2022/12/06(火) 21:28:34.09ID:VA2y8qjn 316です。
思い切ってCドライブ初期化してみたらCUDA認識されました。
皆さんありがとうございました。
思い切ってCドライブ初期化してみたらCUDA認識されました。
皆さんありがとうございました。
338デフォルトの名無しさん
2022/12/06(火) 22:09:54.37ID:lBiSjHRF 経験上、一番難しいと感じたのはpython
listとかタプルとかデータ型が沢山あってこの変換がやたら発生
pandaとnumpyでも型が違うとか
torchは経験ないけどtensorflowは理屈が分かればそれほど難しくないと思う
listとかタプルとかデータ型が沢山あってこの変換がやたら発生
pandaとnumpyでも型が違うとか
torchは経験ないけどtensorflowは理屈が分かればそれほど難しくないと思う
339デフォルトの名無しさん
2022/12/07(水) 02:07:47.36ID:imjH6UhZ >>338
普通にC++の方が難しいと思うけど、どんな言語を試した経験上なの?
普通にC++の方が難しいと思うけど、どんな言語を試した経験上なの?
340デフォルトの名無しさん
2022/12/07(水) 06:20:47.46ID:YHin935u もしかしてCUDAでC++を覚えようとしてるの?
CUDAはCの知識でもできるけどCは?
CUDAはCの知識でもできるけどCは?
341デフォルトの名無しさん
2022/12/07(水) 13:28:40.27ID:wqy1K1SQ C++は変態過ぎて
経験豊富ならべつにC++かまわんが
経験無いならCからやった方が良い
経験豊富ならべつにC++かまわんが
経験無いならCからやった方が良い
342デフォルトの名無しさん
2022/12/07(水) 17:47:48.05ID:4gcyj4i9 >>341
Cは便利じゃないけど、確実だよね。マイコンとかでC++を使うのは、開発時間が十分に取れるなら(慣れてるなら)いいけど、処理系の変な制限にハマりそうで怖くて使えないわ。
Cは便利じゃないけど、確実だよね。マイコンとかでC++を使うのは、開発時間が十分に取れるなら(慣れてるなら)いいけど、処理系の変な制限にハマりそうで怖くて使えないわ。
343デフォルトの名無しさん
2022/12/23(金) 20:34:26.37ID:ovzWFFv+ 処理系の変な制限て何?
344デフォルトの名無しさん
2022/12/23(金) 20:38:43.13ID:ovzWFFv+ 小規模マイコンでもC++は便利だぞ
345デフォルトの名無しさん
2022/12/27(火) 00:37:40.45ID:szDr1TAR >>343
お気持ちC++実装でフル規格満たしてないとか普通にある。調べるのが手間すぎる。
お気持ちC++実装でフル規格満たしてないとか普通にある。調べるのが手間すぎる。
346デフォルトの名無しさん
2022/12/27(火) 04:54:17.83ID:Y8dS0LJm フル規格を満たしてない事が普通にあるのはCも同じ
恐くて使えないのは経験が少ないからだな
恐くて使えないのは経験が少ないからだな
347デフォルトの名無しさん
2022/12/27(火) 13:10:12.33ID:vQ4ixuph MSVCで作っておけば大体オッケー
g++依存は死ぬ
g++依存は死ぬ
348デフォルトの名無しさん
2022/12/28(水) 21:30:57.66ID:VGHawTJO 今時C++で開発してる会社あるのかな?
349デフォルトの名無しさん
2022/12/28(水) 21:33:16.19ID:IIYChppW 当然
高速処理が要求されるようなところはC/C++だよ
高速処理が要求されるようなところはC/C++だよ
350デフォルトの名無しさん
2023/01/14(土) 11:12:05.67ID:hF49Vv2k 質問です。
cudaの9.0バージョンで
nvcc -V
このようなことをうっても、一切反応しないです。
誰か教えてえらいひとーー!
cudaの9.0バージョンで
nvcc -V
このようなことをうっても、一切反応しないです。
誰か教えてえらいひとーー!
351デフォルトの名無しさん
2023/01/14(土) 11:36:54.44ID:ITBYYn4q >>一切反応しないです
もう少し具体的に
もう少し具体的に
352デフォルトの名無しさん
2023/01/14(土) 13:28:49.96ID:HwrORXYU 無修正を観ても、一切反応しないです。
誰か教えてえろいひとーー!
誰か教えてえろいひとーー!
353デフォルトの名無しさん
2023/01/23(月) 20:21:43.20ID:VfNttDi/ NVIDIA HPC SDK使ってる人いる?
windows版がないんだけどそのうちサポートされるんかね?
windows版がないんだけどそのうちサポートされるんかね?
354デフォルトの名無しさん
2023/01/23(月) 20:47:20.55ID:1CzktcoW HPC SDKになった2020年にはWindows版は翌年公開予定と言っていたけど,
その記載もなくなったし永遠に出ない可能性が高いと思われる
当時とは違ってCUDA on WSL2でHPC SDKも使えるようになったから
Windows需要もそこで解消されるし
その記載もなくなったし永遠に出ない可能性が高いと思われる
当時とは違ってCUDA on WSL2でHPC SDKも使えるようになったから
Windows需要もそこで解消されるし
355デフォルトの名無しさん
2023/01/25(水) 11:08:54.16ID:/YL2yMwg >>354
詳しい人降臨キター
旧PGIのユーザはほぼLinuxばっかだったようだしWindowsは見捨てられたのかと思ったけど必ずしもそうじゃないのかな
WSLで本当に性能出るの?ってのは気にはなるけど
ありがとうございました
詳しい人降臨キター
旧PGIのユーザはほぼLinuxばっかだったようだしWindowsは見捨てられたのかと思ったけど必ずしもそうじゃないのかな
WSLで本当に性能出るの?ってのは気にはなるけど
ありがとうございました
356デフォルトの名無しさん
2023/03/05(日) 20:30:51.25ID:skhIF3To てst
357デフォルトの名無しさん
2023/03/05(日) 21:06:34.13ID:skhIF3To 亀レス
>>348
あるっしょ
いくらでも,
このまえいびられて死んだ三菱電機の社員は電気系でも物性系の修士出てるのに
会社に入ってC++まともに書けなくて死んだ
物性選んだ時点でプログラム苦手なのにいきなりC売り物用のC++コード書け,
しかも,意地の悪い上司が適当なサンプルコードも見せてくれなきゃ死にたくなるかもな
>>348
あるっしょ
いくらでも,
このまえいびられて死んだ三菱電機の社員は電気系でも物性系の修士出てるのに
会社に入ってC++まともに書けなくて死んだ
物性選んだ時点でプログラム苦手なのにいきなりC売り物用のC++コード書け,
しかも,意地の悪い上司が適当なサンプルコードも見せてくれなきゃ死にたくなるかもな
358デフォルトの名無しさん
2023/05/14(日) 05:25:29.03ID:EUIAlyu+ test
359デフォルトの名無しさん
2023/05/14(日) 06:02:02.90ID:EUIAlyu+ おまえら教えろください
cudaDeviceSynchronizeが将来サポート打ち切りになることが決定し,
CUDA 12では既にオプションを指定しないとコンパイルできなくなっています.
これの代替APIは何でしょうか?
__global__関数内での待ち合わせ処理はどうすればいいのでしょう?
例
グローバルメモリに1M(1kx1k)の数値データがあります.そこから最大値を検索したい.
プログラムとしては
1Mデータを1kごとにグループ分割します.合計1k個のグループができます.
1つのグループを1つのスレッドに割り当て最大値を検索します. 当然スレッド数も1k個立ち上げます.
各スレッドは割り当てられたグループの1k個の中から最大値を検索し,見つけた値をシェアードメモリに書き込みます.
シェアードメモリもスレッド数と同じ1k個の配列から成リ, 各スレッドIDに紐づけされたアドレスに書き込みます.
例えばシェアードメモリを配列submaxとしたとき,
submax[threadIDx.x] = each_group_max;
みたいな感じです.
このとき各スレッドの書き込み完了を待ち合わせるのにcudaDeviceSynchronizeを使います.
書き込み完了後, 特定スレッドIDをもつスレッド(例えばthreadIDx.x==0)だけが1k個のsubmax中の最大値を検索することで
1M個データの最大値が決まります
これですとatomic関数を一切使わず高速処理が可能となります
cudaDeviceSynchronizeが将来サポート打ち切りになることが決定し,
CUDA 12では既にオプションを指定しないとコンパイルできなくなっています.
これの代替APIは何でしょうか?
__global__関数内での待ち合わせ処理はどうすればいいのでしょう?
例
グローバルメモリに1M(1kx1k)の数値データがあります.そこから最大値を検索したい.
プログラムとしては
1Mデータを1kごとにグループ分割します.合計1k個のグループができます.
1つのグループを1つのスレッドに割り当て最大値を検索します. 当然スレッド数も1k個立ち上げます.
各スレッドは割り当てられたグループの1k個の中から最大値を検索し,見つけた値をシェアードメモリに書き込みます.
シェアードメモリもスレッド数と同じ1k個の配列から成リ, 各スレッドIDに紐づけされたアドレスに書き込みます.
例えばシェアードメモリを配列submaxとしたとき,
submax[threadIDx.x] = each_group_max;
みたいな感じです.
このとき各スレッドの書き込み完了を待ち合わせるのにcudaDeviceSynchronizeを使います.
書き込み完了後, 特定スレッドIDをもつスレッド(例えばthreadIDx.x==0)だけが1k個のsubmax中の最大値を検索することで
1M個データの最大値が決まります
これですとatomic関数を一切使わず高速処理が可能となります
360デフォルトの名無しさん
2023/05/14(日) 06:21:14.34ID:EUIAlyu+ Dynamic parallelismでも使える実行時間測定関数でも
キャプチャ直前にcudaDeviceSynchronize();をコールしています
__device__
long long int
CaptureTimer() noexcept {
auto timer = (long long int)0; //コンパイラが文句いうので初期化しました
cudaDeviceSynchronize();
asm volatile("mov.u64 %0, %globaltimer;" : "=l"(timer));
return timer;
}
cudaStreamSynchronize()じゃ__global__でコールできないので駄目なんですよ
キャプチャ直前にcudaDeviceSynchronize();をコールしています
__device__
long long int
CaptureTimer() noexcept {
auto timer = (long long int)0; //コンパイラが文句いうので初期化しました
cudaDeviceSynchronize();
asm volatile("mov.u64 %0, %globaltimer;" : "=l"(timer));
return timer;
}
cudaStreamSynchronize()じゃ__global__でコールできないので駄目なんですよ
361デフォルトの名無しさん
2023/05/28(日) 07:37:34.81ID:rAN5cbTU 何もレスないけど
cudaDeviceSynchronize なくても困らないコード書いてるの?
shared memory使うときどーしても使うと思うんだがこのAPI
cudaDeviceSynchronize なくても困らないコード書いてるの?
shared memory使うときどーしても使うと思うんだがこのAPI
362デフォルトの名無しさん
2023/05/30(火) 17:45:24.83ID:GWh7Fu6m ふつうは __syncthreads() 使うなあ。
というかカーネル内から全スレッド同期出来たとは知らなかった。
やっぱりいろいろ無理があったから廃止になったんじゃね?
というかカーネル内から全スレッド同期出来たとは知らなかった。
やっぱりいろいろ無理があったから廃止になったんじゃね?
363デフォルトの名無しさん
2023/06/01(木) 19:34:35.47ID:woZHz0xe カーネルの実行完了を待つ関数をカーネル内から呼び出せるのはおかしいだろ
364デフォルトの名無しさん
2023/06/02(金) 21:14:34.84ID:GpIK8Zp9365デフォルトの名無しさん
2023/06/02(金) 21:16:18.40ID:GpIK8Zp9 >>363にいたってはCUDA Dynamic Parallelizmすら理解してない
366デフォルトの名無しさん
2023/06/02(金) 21:29:40.49ID:GpIK8Zp9367デフォルトの名無しさん
2023/06/02(金) 21:32:58.33ID:GpIK8Zp9368デフォルトの名無しさん
2023/06/02(金) 22:14:21.99ID:GpIK8Zp9 >>362
https://docs.nvidia.com/cuda/pdf/CUDA_Runtime_API.pdf
↑から最新のAPIマニュアルをダウソして検索したが __syncthreadsなんてものは存在しない
お前の書いたコードが最新のcuda 12.1.1コンパイラで使えるかどうか確認してみろ
とっくにサポートが打ち切られたAPIを使うと嘯吹いてただけじゃねーのか?
お前はとんでもなく長い間cudaコードを書いてなかったんじゃないのか?
https://docs.nvidia.com/cuda/pdf/CUDA_Runtime_API.pdf
↑から最新のAPIマニュアルをダウソして検索したが __syncthreadsなんてものは存在しない
お前の書いたコードが最新のcuda 12.1.1コンパイラで使えるかどうか確認してみろ
とっくにサポートが打ち切られたAPIを使うと嘯吹いてただけじゃねーのか?
お前はとんでもなく長い間cudaコードを書いてなかったんじゃないのか?
369デフォルトの名無しさん
2023/06/02(金) 23:26:41.73ID:zbQswG7U カーネルからRuntime API使うのがそもそも違和感あるんだがイマドキのCUDAはそういうものなんか?
370デフォルトの名無しさん
2023/06/02(金) 23:38:04.08ID:44SgMOSU >>366
同期する範囲がぜんぜん違ぇだろうが
同期する範囲がぜんぜん違ぇだろうが
371デフォルトの名無しさん
2023/06/03(土) 01:32:33.61ID:f1mb9frl submit済みカーネルが2並列同じキューで動いていて、両方が完了待ちしたらデッドロック起こすなwww
372デフォルトの名無しさん
2023/06/03(土) 10:34:44.84ID:hgrjzBME プログラムわかってないやつがいきなりの攻撃性を発揮するのガイジっぽくていいね
373デフォルトの名無しさん
2023/06/03(土) 16:01:42.94ID:f1mb9frl374デフォルトの名無しさん
2023/06/10(土) 08:16:47.35ID:gJM3u8Zc cudaDeviceSynchronizeはこんなときに使う. Ki=1024, Mi = Ki*Ki, Gi = Ki*Miとでもして
__global__ void
cuda_main(){
double *idata = new [Mi]; double *odata1 = new [Mi]; double *odata2 = new [Mi];
body1<<< Ki, Ki >>> ( idata, odata1 ); //マルチスレッド実体
cudaDeviceSynchronize();
body2<<< Ki, Ki >>> ( odata1, odara2 ); //マルチスレッド実体
cudaDeviceSynchronize();
for( int i = 0; i < Mi; i++ ){
cudaDeviceSynchronize(); // *** こいつは毎回要ったと思う
printf(" %d %e\n", i, odata2[i]); //計算結果表示
}
cudaDeviceSynchronize(); // 上の***だけで こいつはなくても構わなかったと思う
delete[] odata2; delete[] odata1; delete[] idata;
}
main(){
//cuda 内newで確保するメモリが8MBを超える場合は設定要
cudaDeviceSetLimit(cudaLimitMallocHeapSize, size_t(Gi + Gi));
//printf fifoを16Miにしてみた
cudaDeviceSetLimit(cudaLimitPrintfFifoSize, 16 * Mi);
cuda_main<<<1、1>>>();
}
__global__ void
cuda_main(){
double *idata = new [Mi]; double *odata1 = new [Mi]; double *odata2 = new [Mi];
body1<<< Ki, Ki >>> ( idata, odata1 ); //マルチスレッド実体
cudaDeviceSynchronize();
body2<<< Ki, Ki >>> ( odata1, odara2 ); //マルチスレッド実体
cudaDeviceSynchronize();
for( int i = 0; i < Mi; i++ ){
cudaDeviceSynchronize(); // *** こいつは毎回要ったと思う
printf(" %d %e\n", i, odata2[i]); //計算結果表示
}
cudaDeviceSynchronize(); // 上の***だけで こいつはなくても構わなかったと思う
delete[] odata2; delete[] odata1; delete[] idata;
}
main(){
//cuda 内newで確保するメモリが8MBを超える場合は設定要
cudaDeviceSetLimit(cudaLimitMallocHeapSize, size_t(Gi + Gi));
//printf fifoを16Miにしてみた
cudaDeviceSetLimit(cudaLimitPrintfFifoSize, 16 * Mi);
cuda_main<<<1、1>>>();
}
375デフォルトの名無しさん
2023/06/10(土) 08:17:55.93ID:gJM3u8Zc つづき
ホスト側からcuda用のエントリポイント cuda_main()を一つ起動して
そこで計算に必要なgpuメモリをnew/mallocで確保
delete/freeもしくはデストラクタでメモリ解放してほとんどふつーのC++プログラム作成
エントリポイントとなるcuda_mainスレッドを一つ起動するだけでほぼgpu側だけで閉じたふつーのc++コードになる
gpuが計算した結果をどー出力するか?ってのはあるんだが、
__global__関数内のprintfが標準出力にちゃーんと出力してくれる
つまり、 リダイレクトでファイルに落とせる
コマンドラインから
> cuda_program.exe >> file.dat
て感じ
ホスト側からcuda用のエントリポイント cuda_main()を一つ起動して
そこで計算に必要なgpuメモリをnew/mallocで確保
delete/freeもしくはデストラクタでメモリ解放してほとんどふつーのC++プログラム作成
エントリポイントとなるcuda_mainスレッドを一つ起動するだけでほぼgpu側だけで閉じたふつーのc++コードになる
gpuが計算した結果をどー出力するか?ってのはあるんだが、
__global__関数内のprintfが標準出力にちゃーんと出力してくれる
つまり、 リダイレクトでファイルに落とせる
コマンドラインから
> cuda_program.exe >> file.dat
て感じ
376デフォルトの名無しさん
2023/06/10(土) 08:20:34.56ID:gJM3u8Zc つづき
こういうコードスタイルにすることでcudamallocで確保するgpuメモリはホスト<->gpuのインターフェースに使う最低限のメモリに限定することができて
コーディングが格段に楽になる ほぼふつーのC++プログラムと変わらん
この書き方で問題なのは__global__内でunique_ptrが使えないことなんだが、
数値計算でunique_ptr使えなくて困る場合ってどんな場合か逆に聞きたいわ.
それより
ホスト側でgpu内部処理にしか使わないメモリまで確保して、そいつをcuda::unique_ptrなんか作って管理するよりよほど楽だと思うが?
こういうのはディレクトリの外からディレクトリ操作するのに似た感覚でとても耐えられんし、
cuda Dynamic Parallelismと__global__関数内でnew/deleteを書けるようになってるお陰でふつーのC++コードが書けるようになってるんだわ.
んで肝心の cudaDeviceSynchronize() だが
マルチスレッド実態は body1、 body2だがbody2の実行と計算結果odata2の表示はbody1とbody2の計算完了が前提としてる
それらの待ち合わせ処理としてを使うんだが、
ここで cudaDeviceSynchronize() がないと dynamic Parallelismがあっても上のようなコードは書けない
こういうコードスタイルにすることでcudamallocで確保するgpuメモリはホスト<->gpuのインターフェースに使う最低限のメモリに限定することができて
コーディングが格段に楽になる ほぼふつーのC++プログラムと変わらん
この書き方で問題なのは__global__内でunique_ptrが使えないことなんだが、
数値計算でunique_ptr使えなくて困る場合ってどんな場合か逆に聞きたいわ.
それより
ホスト側でgpu内部処理にしか使わないメモリまで確保して、そいつをcuda::unique_ptrなんか作って管理するよりよほど楽だと思うが?
こういうのはディレクトリの外からディレクトリ操作するのに似た感覚でとても耐えられんし、
cuda Dynamic Parallelismと__global__関数内でnew/deleteを書けるようになってるお陰でふつーのC++コードが書けるようになってるんだわ.
んで肝心の cudaDeviceSynchronize() だが
マルチスレッド実態は body1、 body2だがbody2の実行と計算結果odata2の表示はbody1とbody2の計算完了が前提としてる
それらの待ち合わせ処理としてを使うんだが、
ここで cudaDeviceSynchronize() がないと dynamic Parallelismがあっても上のようなコードは書けない
377デフォルトの名無しさん
2023/06/10(土) 10:12:15.01ID:5lxShvGN >>374
同じstream使ってんのにいちいちそんなところで同期してたら効率悪くね?
同じstream使ってんのにいちいちそんなところで同期してたら効率悪くね?
378デフォルトの名無しさん
2023/06/10(土) 11:53:19.12ID:Y9DL3tjK まだやってたのかよw>>359
379デフォルトの名無しさん
2023/06/16(金) 10:37:03.14ID:VMczRTMU >>377
いちいちも何も
body1<<< Ki, Ki >>> ( idata, odata1 ); //マルチスレッド実体
cudaDeviceSynchronize();
body2<<< Ki, Ki >>> ( odata1, odara2 ); //マルチスレッド実体
cudaDeviceSynchronize();
body2の処理開始はbody1の計算終了が前提としたプログラムのつもりで書いてるのでこの場合は必ず必要なわけで
この2つのの同期は
マルチスレッド起動箇所がホスト側ならホストで
マルチスレッド起動箇所がgpu側ならgpuでやることが必須なんだが
gpuの側でやる意味はふつーに_global__関数の中で, ローカルメモリの管理にnew/delete使えること
cpuのアクセラレータとしてGPUを使うんじゃなくGPUだけで完結するならこう書くでしょーよ
わざわざcpu側に制御戻す必要なく処理速度が落ちるわけじゃない.
それどころかはるかにプログラムの見通しもよくなるんだから
いちいちも何も
body1<<< Ki, Ki >>> ( idata, odata1 ); //マルチスレッド実体
cudaDeviceSynchronize();
body2<<< Ki, Ki >>> ( odata1, odara2 ); //マルチスレッド実体
cudaDeviceSynchronize();
body2の処理開始はbody1の計算終了が前提としたプログラムのつもりで書いてるのでこの場合は必ず必要なわけで
この2つのの同期は
マルチスレッド起動箇所がホスト側ならホストで
マルチスレッド起動箇所がgpu側ならgpuでやることが必須なんだが
gpuの側でやる意味はふつーに_global__関数の中で, ローカルメモリの管理にnew/delete使えること
cpuのアクセラレータとしてGPUを使うんじゃなくGPUだけで完結するならこう書くでしょーよ
わざわざcpu側に制御戻す必要なく処理速度が落ちるわけじゃない.
それどころかはるかにプログラムの見通しもよくなるんだから
380デフォルトの名無しさん
2023/06/16(金) 20:00:03.41ID:duxPCvpi 丸々一ヶ月経ってもまだ躓いてるのかw
せっかくアドバイス貰っても理解する気がないならしょうがないな。
せっかくアドバイス貰っても理解する気がないならしょうがないな。
381デフォルトの名無しさん
2023/06/16(金) 23:41:50.06ID:T6+41XgS >>379
dynamic parallelismがどうたらイキってた輩が実はstreamすらろくに理解していなかったという
dynamic parallelismがどうたらイキってた輩が実はstreamすらろくに理解していなかったという
382デフォルトの名無しさん
2023/06/17(土) 09:32:02.85ID:6mG7lpSl そもそもShared Memoryが云々の話とこれ全く関係ないし、unique_ptrがどうとか誰も聞いてないし、ただイキってクソコード書いてるnoobにしか見えん
383デフォルトの名無しさん
2023/06/30(金) 06:45:59.93ID:HGq0NS3h >>381
streamてCPUとGPUの協調のこと言ってるの?
協調はこの際,まったく関係ないんだが,
CPUからGPUに制御を移して完全にCPUとは分離する話をしてんの
そのほうが遥かにプログラムが楽に簡潔に書けるからそれを言ってる.
GPUのほうが8倍から1桁速度が速いので実験的な計算ならこれで十分な速度が得られる
CPUとの協調とか難しいプログラムを書くんじゃなく
GPUだけで計算を完結させるためにDynamic Parallelismを使う
Dynamicに並列化したいわけじゃなくGPUのプロセスを一つ立ち上げたいためにそれを使う
streamてCPUとGPUの協調のこと言ってるの?
協調はこの際,まったく関係ないんだが,
CPUからGPUに制御を移して完全にCPUとは分離する話をしてんの
そのほうが遥かにプログラムが楽に簡潔に書けるからそれを言ってる.
GPUのほうが8倍から1桁速度が速いので実験的な計算ならこれで十分な速度が得られる
CPUとの協調とか難しいプログラムを書くんじゃなく
GPUだけで計算を完結させるためにDynamic Parallelismを使う
Dynamicに並列化したいわけじゃなくGPUのプロセスを一つ立ち上げたいためにそれを使う
384デフォルトの名無しさん
2023/06/30(金) 06:53:13.13ID:HGq0NS3h >>380
何のアドバイス?ww
GPUプロセスの中で全プロセスどうやってwaitするのさw
ま, cudaのユーザサイトには代替案とか書いてる人いるよ
cudaDeviceSynchronize()と比較して速度は期待できないが一応使える.
せめてそれぐらいのアドバイスできるようになってから言いな.
俺のようなコード書いてGPUプロセスの中からcudaDeviceSynchronize()コールしてるユーザは一定数いるってこった
どーせ__global__でnew/deleteふつーに使えること知らんかったんだろお前ww
何のアドバイス?ww
GPUプロセスの中で全プロセスどうやってwaitするのさw
ま, cudaのユーザサイトには代替案とか書いてる人いるよ
cudaDeviceSynchronize()と比較して速度は期待できないが一応使える.
せめてそれぐらいのアドバイスできるようになってから言いな.
俺のようなコード書いてGPUプロセスの中からcudaDeviceSynchronize()コールしてるユーザは一定数いるってこった
どーせ__global__でnew/deleteふつーに使えること知らんかったんだろお前ww
385デフォルトの名無しさん
2023/06/30(金) 07:16:01.83ID:HGq0NS3h >>382
誰も聞いてないunique_ptrて
CPU側でGPUのマルチスレッド実体を起動しようとすると,
GPU内部でしか利用しないローカルメモリまでCPUから管理する羽目になる
そのときcudamalloc/cudafreeなんか使ってたんじゃメモリ管理が大変で,
gpu::unique_ptrでも作らないとCコード書いてるのと変わらんことになるから言ってる
そんなことせずとも__global__でnew/deleteがデフォで使えるんだからメモリ管理はC++03並には書ける
__global__でnew/deleteを使ってGPUだけで完結処理するには
親スレッドの__global__内で子スレッドの待ち合わせ処理がどうしても必要になる場合があるから言ってる
できるもんなら>>374のcudaDeviceSynchronize(); を同等処理に置き換えてみ
あ, すでに cudaのユーザーサイトに投稿してる人が居るんで探せばしまいだけどねww
誰も聞いてないunique_ptrて
CPU側でGPUのマルチスレッド実体を起動しようとすると,
GPU内部でしか利用しないローカルメモリまでCPUから管理する羽目になる
そのときcudamalloc/cudafreeなんか使ってたんじゃメモリ管理が大変で,
gpu::unique_ptrでも作らないとCコード書いてるのと変わらんことになるから言ってる
そんなことせずとも__global__でnew/deleteがデフォで使えるんだからメモリ管理はC++03並には書ける
__global__でnew/deleteを使ってGPUだけで完結処理するには
親スレッドの__global__内で子スレッドの待ち合わせ処理がどうしても必要になる場合があるから言ってる
できるもんなら>>374のcudaDeviceSynchronize(); を同等処理に置き換えてみ
あ, すでに cudaのユーザーサイトに投稿してる人が居るんで探せばしまいだけどねww
386デフォルトの名無しさん
2023/06/30(金) 08:24:20.23ID:pBAX8tCp 俺はCUDA使ったこと無いんだけど
>__global__でnew/deleteを使ってGPUだけで完結処理
これって思い込みじゃねえかなあ
>__global__でnew/deleteを使ってGPUだけで完結処理
これって思い込みじゃねえかなあ
387デフォルトの名無しさん
2023/06/30(金) 11:03:40.92ID:HGq0NS3h >>386
作ったことないんだろww
こっちは書いてるから言ってる.
>>374を見ろ
この構成の場合がそれに該当する
CPUはgpu内でnew/deleteに使う最大値のみ設定する.デフォルトは小さいんでな
例えば
1.GPUで用意してる数学関数だけでできる数値計算
2.信号もノイズも乱数から作るモンテカルロ・シミュレーション
要はファイルやなんらかのデバイス,ネットから読み込んでその処理をGPUに転送する場合は
CPUは無関係じゃいられないが, 上のような場合はGPUだけで計算可能だ.
具体例として
1. f(x) = ∫_0^x sin(t)/t dt 0<= x <= 10 を計算して計算結果をファイルにセーブする
2. ある変調方式のエラーレートをシミュレーションで計算し. ファイルにセーブする.
これらならCPUとほぼ無関係に計算できる ファイルや外部デバイスからデータを読み込んでくる必要がないんでね.
あと__global__でのprintfはふつーにリダイレクトが有効. GPU内でファイルオープンとかの必要もなくファイルに落とせる
ま,これらは極端な例だが, 最低限, 初期値とか処理データ, GPUで計算終了後の
GPU-CPU間のインターフェース用メモリのみcudamalloc/dudafreeで管理してやればよくて
GPU内部だけで使うようなメモリはCPU側で一切管理する必要がなくなる.
gpu内ではC++03レベルのnew/deleteしか使えないけどな.
作ったことないんだろww
こっちは書いてるから言ってる.
>>374を見ろ
この構成の場合がそれに該当する
CPUはgpu内でnew/deleteに使う最大値のみ設定する.デフォルトは小さいんでな
例えば
1.GPUで用意してる数学関数だけでできる数値計算
2.信号もノイズも乱数から作るモンテカルロ・シミュレーション
要はファイルやなんらかのデバイス,ネットから読み込んでその処理をGPUに転送する場合は
CPUは無関係じゃいられないが, 上のような場合はGPUだけで計算可能だ.
具体例として
1. f(x) = ∫_0^x sin(t)/t dt 0<= x <= 10 を計算して計算結果をファイルにセーブする
2. ある変調方式のエラーレートをシミュレーションで計算し. ファイルにセーブする.
これらならCPUとほぼ無関係に計算できる ファイルや外部デバイスからデータを読み込んでくる必要がないんでね.
あと__global__でのprintfはふつーにリダイレクトが有効. GPU内でファイルオープンとかの必要もなくファイルに落とせる
ま,これらは極端な例だが, 最低限, 初期値とか処理データ, GPUで計算終了後の
GPU-CPU間のインターフェース用メモリのみcudamalloc/dudafreeで管理してやればよくて
GPU内部だけで使うようなメモリはCPU側で一切管理する必要がなくなる.
gpu内ではC++03レベルのnew/deleteしか使えないけどな.
388デフォルトの名無しさん
2023/06/30(金) 11:07:50.35ID:HGq0NS3h389デフォルトの名無しさん
2023/06/30(金) 11:38:34.15ID:HGq0NS3h >>386
new/deleteが__global__内でふつーに使えるってことなら
cuda c programming guide 最新版の
7.34. Dynamic Global Memory Allocation and Operations
どっちが思い込みかね?ww
new/deleteが__global__内でふつーに使えるってことなら
cuda c programming guide 最新版の
7.34. Dynamic Global Memory Allocation and Operations
どっちが思い込みかね?ww
390デフォルトの名無しさん
2023/06/30(金) 18:28:44.41ID:h/tbEWPQ もしかしてNVIDIAのフォーラムでモデレータに I’m confused とか言われてんのコイツ?
391デフォルトの名無しさん
2023/06/30(金) 22:03:38.67ID:nvcNe2IT 炎上学習法かとも思ったが全然学習してる素振りもないのよなあ
>streamてCPUとGPUの協調のこと言ってるの?
ちょっとはググるなりしたらどうかね
> body1<<< Ki, Ki >>> ( idata, odata1 ); //マルチスレッド実体
> cudaDeviceSynchronize();
> body2<<< Ki, Ki >>> ( odata1, odara2 ); //マルチスレッド実体
body1とbody2は同じstreamだから基本的にそんなところにsynchronizeはいらんのよ
>streamてCPUとGPUの協調のこと言ってるの?
ちょっとはググるなりしたらどうかね
> body1<<< Ki, Ki >>> ( idata, odata1 ); //マルチスレッド実体
> cudaDeviceSynchronize();
> body2<<< Ki, Ki >>> ( odata1, odara2 ); //マルチスレッド実体
body1とbody2は同じstreamだから基本的にそんなところにsynchronizeはいらんのよ
392デフォルトの名無しさん
2023/06/30(金) 22:07:49.01ID:nvcNe2IT >そのときcudamalloc/cudafreeなんか使ってたんじゃメモリ管理が大変で,
これも意味不明だなあ
malloc/freeと比べてどう大変だと言うんだろう
これも意味不明だなあ
malloc/freeと比べてどう大変だと言うんだろう
393デフォルトの名無しさん
2023/06/30(金) 23:46:28.63ID:lTu2cFop 病気の人に関わってもいいことないですよ
394デフォルトの名無しさん
2023/07/02(日) 11:33:55.45ID:ZzvN3CPt 同期オブジェクトが出てないんだから、そりゃシリアルに動くやろうなあ
CUDA知らん
CUDA知らん
395デフォルトの名無しさん
2023/07/02(日) 14:47:53.06ID:tUgy2gS2 >>390
ゲラゲラ
それどこだよww
お前のプロファイル推定正しいかどうか見てから発表してやるよ
さらせよソコをよww
>>391
12.2 プログラムガイド pp47
For code that is compiled using the --default-stream legacy compilation flag, the default stream
is a special stream called the NULL stream and each device has a single NULL stream used for all
host threads. The NULL stream is special as it causes implicit synchronization as described in Implicit
Synchronization.
For code that is compiled without specifying a --default-stream compilation flag,
--default-stream legacy is assumed as the default.
11.4以降 --default-streamは非推奨. 当然このオプションはデフォルトでなくなり,
暗黙の同期ストリームであるNull streamはデフォルトではなくなった.
つまり, ストリームは何も指定しなければ非同期ストリームとなった
同期ストリームとなることを保証したい場合, 当然cudaStreamSynchronize()で挟むだろうが
そのすぐ下の6.2.8.5.3 Explicit Synchronizationも読んどけよ
コロコロ変わるデフォのコンパイルオプションに頼るお前
>>392
freeが毎回書いてられないといってるわけ. それとcudafreeが同じなのは当たり前な
だからホスト側ではgpu用のgpu::unique_ptrとかユーザ側でこさえてるんだろが.
これを書いてるサイトはいくらでもある.
__global__内ではこういうmake_uniqueは動かないのでc++11レベルでは書けないが,
普通にnew/deleteやC++03レベルのデストラクタが動作するので,
ホスト側でgpuのローカルメモリの解放を手でやらかすよりよほど楽だと言ってるのだよ.
ゲラゲラ
それどこだよww
お前のプロファイル推定正しいかどうか見てから発表してやるよ
さらせよソコをよww
>>391
12.2 プログラムガイド pp47
For code that is compiled using the --default-stream legacy compilation flag, the default stream
is a special stream called the NULL stream and each device has a single NULL stream used for all
host threads. The NULL stream is special as it causes implicit synchronization as described in Implicit
Synchronization.
For code that is compiled without specifying a --default-stream compilation flag,
--default-stream legacy is assumed as the default.
11.4以降 --default-streamは非推奨. 当然このオプションはデフォルトでなくなり,
暗黙の同期ストリームであるNull streamはデフォルトではなくなった.
つまり, ストリームは何も指定しなければ非同期ストリームとなった
同期ストリームとなることを保証したい場合, 当然cudaStreamSynchronize()で挟むだろうが
そのすぐ下の6.2.8.5.3 Explicit Synchronizationも読んどけよ
コロコロ変わるデフォのコンパイルオプションに頼るお前
>>392
freeが毎回書いてられないといってるわけ. それとcudafreeが同じなのは当たり前な
だからホスト側ではgpu用のgpu::unique_ptrとかユーザ側でこさえてるんだろが.
これを書いてるサイトはいくらでもある.
__global__内ではこういうmake_uniqueは動かないのでc++11レベルでは書けないが,
普通にnew/deleteやC++03レベルのデストラクタが動作するので,
ホスト側でgpuのローカルメモリの解放を手でやらかすよりよほど楽だと言ってるのだよ.
396デフォルトの名無しさん
2023/07/02(日) 19:20:21.21ID:nj7sKJew >>395
いや、それストリーム間の同期の話であって同じストリームに投入したカーネルの実行の話とは関係ないんだが。
いろいろ検索したりしたんだろうけどここ勘違いするようなレベルでイキりまくられても。
もともとは cudaDeviceSynchronize がデバイス上で非推奨になるんで代替策をどうするかって話だったと思うけど、
「自分は間違ってない」と強弁するだけならそりゃ2ヶ月近く解決しないわけだわ。
いや、それストリーム間の同期の話であって同じストリームに投入したカーネルの実行の話とは関係ないんだが。
いろいろ検索したりしたんだろうけどここ勘違いするようなレベルでイキりまくられても。
もともとは cudaDeviceSynchronize がデバイス上で非推奨になるんで代替策をどうするかって話だったと思うけど、
「自分は間違ってない」と強弁するだけならそりゃ2ヶ月近く解決しないわけだわ。
397デフォルトの名無しさん
2023/10/20(金) 12:42:50.23ID:/M3RKJCH NVIDIA中國から撤退
398デフォルトの名無しさん
2023/12/07(木) 06:26:05.21ID:R1AO2r8W PCくそど初心者で、オーディオをやっている者です。
現在PC(linux)でHQplayerというソフトで音楽ききてます。
そのPCにグラボ刺したら音質上がるなんてガセネタつかまされたんで、騙されてみようと思うのですが、その際CUDAの設定しないとGPUが使われないということのようなのです。
調べたら、ドライバー、ツールキット、cuDNNの3つをインストールするみたいなのですが、最後のcuDNNの意味がわかりません。
有識者の方、どうかご教授下さい!
現在PC(linux)でHQplayerというソフトで音楽ききてます。
そのPCにグラボ刺したら音質上がるなんてガセネタつかまされたんで、騙されてみようと思うのですが、その際CUDAの設定しないとGPUが使われないということのようなのです。
調べたら、ドライバー、ツールキット、cuDNNの3つをインストールするみたいなのですが、最後のcuDNNの意味がわかりません。
有識者の方、どうかご教授下さい!
399デフォルトの名無しさん
2023/12/10(日) 12:43:06.09ID:9z8kD1aM >>398
他人の作った何をやっているかわからないプログラムを使うより
音とプログラミングとCUDAについて勉強して
自分で音質を上げるプログラムを作ったほうがよいと思うよ。
本屋とかアマゾンでそういう専門書も探せば見つかるでしょ。
他人の作った何をやっているかわからないプログラムを使うより
音とプログラミングとCUDAについて勉強して
自分で音質を上げるプログラムを作ったほうがよいと思うよ。
本屋とかアマゾンでそういう専門書も探せば見つかるでしょ。
400デフォルトの名無しさん
2023/12/13(水) 06:47:58.97ID:YKWD9gfa >>399
398です。
なるほど、そういう方法もあるのですね。
自分で勉強してプログラムのことまで理解するなんて大変そうですが、根本を理解していないと使う意味ないですもんね。
大変そうですが、チャレンジしてみます。
ありがとうございました。
398です。
なるほど、そういう方法もあるのですね。
自分で勉強してプログラムのことまで理解するなんて大変そうですが、根本を理解していないと使う意味ないですもんね。
大変そうですが、チャレンジしてみます。
ありがとうございました。
401デフォルトの名無しさん
2024/01/13(土) 07:53:38.21ID:Ce28ohDx RTX4090よりA4000をおすすめしてる所がありますが、これは長期稼働の安定性と低消費電力が理由でしょうか。
lstmで出来るだけ早く学習させたいのですが4090の方が早そうですがいかがですか。
lstmで出来るだけ早く学習させたいのですが4090の方が早そうですがいかがですか。
402デフォルトの名無しさん
2024/03/14(木) 19:33:05.60ID:LpPl9eeZ 自己解決
webページ作成者に聞いた
4090の方が速いが、例えば3時間が4時間になったところでたいした違いはないでしょうとか
いくつものパターンを試したいので少しでも早いものをってことで4090を買った
webページ作成者に聞いた
4090の方が速いが、例えば3時間が4時間になったところでたいした違いはないでしょうとか
いくつものパターンを試したいので少しでも早いものをってことで4090を買った
403デフォルトの名無しさん
2024/10/12(土) 23:57:12.31ID:g42aTpjG faster_whisperがGTX1660で6.8倍に高速化した
動画のハードエンコードみたいなことしてる訳でもないのに、なんでこんなに効くんだろう
動画のハードエンコードみたいなことしてる訳でもないのに、なんでこんなに効くんだろう
404デフォルトの名無しさん
2025/05/03(土) 21:22:39.00ID:GOrfAv9r CUDAを使うにはH100が必要なの?
405デフォルトの名無しさん
2025/05/03(土) 21:57:53.32ID:DmXNLEJI406デフォルトの名無しさん
2025/05/12(月) 20:36:49.62ID:QasGmRud clvkってなんか普通に記事あるけど魔境なやつ?
407デフォルトの名無しさん
2025/06/05(木) 17:19:33.94ID:O3mofczY wayland対応はよう
レスを投稿する
ニュース
- 【速報】中国外務省報道官 高市首相発言撤回なければ「断固たる対抗措置」 ★2 [蚤の市★]
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★4 [ぐれ★]
- 【次の一手】台湾問題で小林よしのり氏が私見「まさに戦争前夜」「ただちに徴兵制を敷いて、高市支持者を最前線へ」… ★3 [BFU★]
- 中国、日本行き“50万人”キャンセル 渡航自粛でコロナ禍以来最大 [お断り★]
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★5 [ぐれ★]
- 【次の一手】台湾問題で小林よしのり氏が私見「まさに戦争前夜」「ただちに徴兵制を敷いて、高市支持者を最前線へ」… ★4 [BFU★]
- 大竹まこと「高市早苗のせいで倒産する企業が出てくる。ババア、何がしたかったの?」 [592058334]
- 【速報】中国政府、ゲームを禁輸。原神やブルアカ、荒野行動が日本で影響 [347751896]
- 中国「私達が怒ってるのは日本の政治家に対してで、日本の観光客や日本企業はこれまで通り歓迎する。これこそが大国としての余裕」 [377482965]
- 高市コイン、ガチで156円突入へwwwwwwwwww [246620176]
- 貧民アニオタ向けdアニメ、値上げへ [175344491]
- 【👊専】ロケット🚀👊😅👊🚀パーンチww🏡
