【GPGPU】くだすれCUDAスレ part8【NVIDIA】 [無断転載禁止]©2ch.net (407レス)
1-

1
(1): 2016/06/15(水)14:41 ID:d2Xou3GL(1/3) AAS
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
CUDA使いが優しくコメントを返しますが、
お礼はCUDAの布教と初心者の救済をお願いします。

CUDA・HomePage
外部リンク:developer.nvidia.com

関連スレ
GPGPU#5
2chスレ:tech

前スレ
【GPGPU】くだすれCUDAスレ【NVIDIA】
2chスレ:tech
【GPGPU】くだすれCUDAスレ pert2【NVIDIA】
2chスレ:tech
【GPGPU】くだすれCUDAスレ pert3【NVIDIA】
2chスレ:tech
【GPGPU】くだすれCUDAスレ pert4【NVIDIA】
2chスレ:tech
【GPGPU】くだすれCUDAスレ part5【NVIDIA】
2chスレ:tech
【GPGPU】くだすれCUDAスレ part6【NVIDIA】
2chスレ:tech
【GPGPU】くだすれCUDAスレ part7【NVIDIA】
2chスレ:tech
281: 2022/09/01(木)20:37 ID:Tzt57hSP(2/2) AAS
予算オーバーですw
282
(1): 2022/09/01(木)23:54 ID:xm6voT2o(1) AAS
>>279
VRAM48Gもあれば、相当の大きさのモデルでも、バッチサイズある程度取れると思う。
2枚にするなら、NVLINKやったかのボード間通信できるやつやらないと、
同時に使ってバッチサイズ倍にするぜってやつが遅い。
一枚でもいいんでない?って気はする。
何と比較して速くしたいのか分からんけど、3090ti(24GBメモリ)1枚でも普通のモデルなら
ちゃんと学習できる。長いと数日学習に時間がかかるけど。
爆速学習したいなら、クラウドで大富豪するしかないぞ。
具体的に動かしたいモデルとかあるの?
283: 2022/09/02(金)05:25 ID:gNiGWU4j(1) AAS
>>282
返信サンキュー!情報ありがとさん!!
気象予測がしたくて(とある記事に20万倍の高速化と書いてあった)
クラウドいいですね〜!
どうしてもpythonのnumbaがやりたくて!
ちなみにpycharmかgoogle coalb pro plusはどちらが良いのでしょうか?
284: 2022/09/04(日)06:32 ID:Z3ORh9R5(1) AAS
>>254
cudaつかっても1週間もかかるんですか?
285
(1): 2022/09/04(日)22:01 ID:z+JpWVLU(1) AAS
気象予測て流体力学だろ
学習とかの前に基礎方程式がわかってるものは
粒子フィルタで検討したほうがいいんじゃないの?
もっぱら線形微分方程式に使われるカルマンフィルタを拡張した
アンサンブルカルマンフィルタで見たことあるけど
今だと線形非線形にかかわらず利用可能な粒子フィルタに頼るほうが簡単だと思うけど
286: 2022/09/05(月)05:17 ID:xy0LK1q6(1) AAS
>>285
おすすめのサイトとかありますか?
287: 2022/09/06(火)12:58 ID:c2oYpxoe(1) AAS
外部リンク:www.sice.jp
外部リンク:www.nagare.or.jp
外部リンク:www.saiensu.co.jp
288: 2022/09/06(火)18:55 ID:iU1ybZ8L(1) AAS
外部リンク:www.cradle.co.jp
289
(1): 2022/09/16(金)13:59 ID:cImVlNrb(1) AAS
RTX 4090 Ti
48GB
GDDR6X
これ買う人いますか?
290: 2022/09/16(金)20:06 ID:fjE4y/uE(1) AAS
消費電力によります。
291: 2022/09/22(木)11:24 ID:RnuCJ+18(1) AAS
>>289
その辺のが一般化してきたら
albertを使った実装例とかがもっと増えるか
ま、もっと高性能なのがクラウドに多数デプロイされそうだけど
292: 2022/09/23(金)21:15 ID:Qf6uDb81(1/2) AAS
RTX 4090 Tiを複数差せばおもしろそうやん?
293: 2022/09/23(金)21:24 ID:Qf6uDb81(2/2) AAS
600WのTBPで動作すると予想されます。
だそう。つまり3枚差せば1800wですね。
つまり電源ユニットを2枚で4000ワット以上必要ですね。
電源ユニットが3000wとか4000wとかでないのかな?
困るよね。
294
(2): 2022/10/08(土)13:36 ID:d409kTqm(1) AAS
.cuファイルで何とか普通のメモリと
GPUのVRAMを同居させて使えるなら
容量の大き過ぎる計算でもスピードは落ちるが
普通のCPUだけの時より速く計算できる、

とか出来たらいいんだけど、まず無理なんだろうなあ
(沖電気はそういうのを上手くやったらしいが詳細が分からない)
295: 2022/10/08(土)13:53 ID:XEAL3BhY(1) AAS
何を問題視してるのかよくわからんけど
例えばmkl入れるとかじゃ駄目なのか?
296
(1): 2022/10/08(土)14:37 ID:TKlSmRLn(1) AAS
>>294
LinuxならUnifiedMemoryでできるな。
297: 2022/10/08(土)16:09 ID:j9nJcF5K(1) AAS
>>296
それは凄い!!!
298: 2022/10/09(日)00:49 ID:KNQys/Sq(1) AAS
ホスト側のメモリをピンして使うことはできるけど多分そういう用途ではないよなあ
299: 2022/10/09(日)08:33 ID:DpFtFESu(1) AAS
>>294が言ってるのはOversubscriptionだろ。
300
(1): 2022/10/26(水)02:06 ID:XY9sqarF(1/6) AAS
C#でCUDAを使おうとして悪戦苦闘してようやくこのスレにたどり着いたのだが・・・
GPUで計算した結果をCPUに取り出すには結局どうやったらいいんだ?
検索してもサンプルプログラムはほとんど出てこないし、GPU動かして終わりでその結果を使うやり方が示されてない。
教えろくださいお願いしますだ
301: 2022/10/26(水)05:14 ID:2ajidUUz(1/4) AAS
CUDAでdll作成してC#に読み込ませる
こんだけ
302
(1): 2022/10/26(水)10:08 ID:Gl6HUSuY(1/3) AAS
>>268
C言語で普通にCuda使うときだったら、GPU側にメモリ確保してGPUで計算した結果をそこに書き込む。
GPUでの計算が終わったらGPU側のメモリをCPU側のメモリにコピーするみたいな感じだ。
後unified memoryとかいうのでGPUから直接CPU側のメモリに書き込めるらしい。
C言語だったらCUDA sdkにサンプルコードがたくさん入ってるだけどね。
どういう関数使えばいいかはCUDAのドキュメントをちゃんと読めば見つけられるでしょう。
303: 2022/10/26(水)10:09 ID:Gl6HUSuY(2/3) AAS
↑のは>>300への返信です。
304
(1): 2022/10/26(水)10:49 ID:XY9sqarF(2/6) AAS
ありがとうございます。
昨日はとりあえず↓を参考にして以下のように書き換えてみたんですが、これじゃダメってことですよね?
(textBox1の結果は0のままです)

double temp = 0;
var gpu = Gpu.Default; // GPUインスタンス取得
gpu.For(0, 10, i =>
{
temp = 10;
});
gpu.Synchronize(); // ここで同期する
textBox1.Text = temp.ToString();

Alea GPUライブラリを使ってC#で簡単GPU並列プログラミング ? Crow's eye
外部リンク:kzmmtmt.pgw.jp

Alea GPUで簡単C# GPUプログラミング - Qiita
外部リンク:qiita.com
305: 2022/10/26(水)11:05 ID:2ajidUUz(2/4) AAS
Alea GPUなんて知らなかったな
で、もう使われてなくね?
それでやる必要ある?
306: 2022/10/26(水)11:15 ID:XY9sqarF(3/6) AAS
GPU使って並列計算できるってのを昨日知った初心者なんで、すいません。
「gpu 並列計算 C#」で検索してもこれしか出てこないんです。
307: 2022/10/26(水)11:21 ID:2ajidUUz(3/4) AAS
で、あればGPUの使い方、CUDAの使い方を、まず勉強した方が良いのでは?
まだGPUとホストのメモリ間のデータ転送とか、さっぱりわからないよね
308: 2022/10/26(水)11:45 ID:Gwv5fEeF(1/2) AAS
cudaは別にコンパイルしてC#から呼べば?このほうが調べやすそう
309
(1): 2022/10/26(水)12:52 ID:XY9sqarF(4/6) AAS
趣味でやっているだけなので調べてすぐにできればいいと思ったんですよ。
>>304でGPU側で計算した結果を渡すだけなのにそれを乗せてるウェブサイトが見つからないなんて、そんな手間な作業なの?
310: 2022/10/26(水)13:29 ID:Gwv5fEeF(2/2) AAS
>>309
cpuとgpuで別々のメモリを見てるんで >>302 のようなことが必要です
311: 2022/10/26(水)16:16 ID:Gl6HUSuY(3/3) AAS
CUDA本体はC言語かC++言語で使う前提なのでそれらの言語ならサンプルコードや情報がたくさん見つかるんだけど。
C#からCUDA使うとなるとマイナーなライブラリを使うことになって情報を見つけづらいかもしれない。英語の情報までくまなく調べればそうじゃないのかもしれないが。
312: 2022/10/26(水)16:57 ID:2ajidUUz(4/4) AAS
C#から使う場合は上にも書いた通り、cuda でdllを作成して
C#からはDllImportで読み込む
313: 2022/10/26(水)17:35 ID:XY9sqarF(5/6) AAS
そうなんですね。ありがとうございます。
ライブラリが用意されているのでそれでできないのなら何のためのライブラリなのかと素人的には感じてしまいました。
314: 2022/10/26(水)21:01 ID:8mk+cARY(1) AAS
出来ないかどうかはちゃんと調べないとわからないだろう
簡単に出来るかどうかはライブラリは保証しないよ、特にC#とCUDAみたいな組み合わせだったら。
めちゃくちゃ沢山のグルーコードをC++/CLIで書かなきゃいけないのを省略してくれる、ぐらいなもんでCUDAに対する理解なしに使える代物じゃないと思うけどな。
315: 2022/10/26(水)23:22 ID:XY9sqarF(6/6) AAS
すいません、↓にテストコードが載っていたのでそれを動かしたところ、GPUの計算結果を取り出せました。
お騒がせしました。

Alea GPUで簡単C# GPUプログラミング - Qiita
外部リンク:qiita.com
316: 2022/11/26(土)11:57 ID:BVUhPWJi(1) AAS
CUDA初心者です。RTX2060 superでCUDA環境構築したいのですが、どうしてもcuda.is_availableの結果がFalseとなってしまいます。(Nvidiaのドライバ、Python・CUDA・Pytorchのバージョンを新しくしたり古くして見たり、CUDNN入れてもダメでした。)
python -m torch.utils.collect_envで読み込みした現在の環境は下記の通りとなります。Trueとさせる方法がわからず、もう自分では完全に手詰まりとなっておりますので、ご教授頂けますと大変有難いです。

C:\Users\●●●>python -m torch.utils.collect_env
Collecting environment information...
PyTorch version: 1.13.0+cu116
Is debug build: False
CUDA used to build PyTorch: 11.6
ROCM used to build PyTorch: N/A
OS: Microsoft Windows 10 Pro
GCC version: Could not collect
Clang version: Could not collect
CMake version: Could not collect
Libc version: N/A
Python version: 3.9.13 (tags/v3.9.13:6de2ca5, May 17 2022, 16:36:42) [MSC v.1929 64 bit (AMD64)] (64-bit runtime)
Python platform: Windows-10-10.0.19045-SP0
Is CUDA available: False
CUDA runtime version: 11.6.124
CUDA_MODULE_LOADING set to: N/A
GPU models and configuration: GPU 0: NVIDIA GeForce RTX 2060 SUPER
Nvidia driver version: 511.65
cuDNN version: Could not collect
HIP runtime version: N/A
MIOpen runtime version: N/A
Is XNNPACK available: True

Versions of relevant libraries:
[pip3] numpy==1.23.5
[pip3] torch==1.13.0+cu116
[pip3] torchaudio==0.13.0+cu116
[pip3] torchvision==0.14.0+cu116
[conda] Could not collect
317: 2022/11/26(土)12:10 ID:8YfGLTST(1/2) AAS
pytorchはよく知らんけど
toolkit入れた?
cuda.is_availableてtorchのメッセージだよね?

てな感じで全然情報不足だわな
318: 2022/11/26(土)12:51 ID:GN65Kd03(1/3) AAS
そうです。Torchのメッセージです。
CUDA Toolkitなら入れてますね。
現在は11.6.2をインストールしています。

以下コマンドプロンプトの出力結果。

■Nvcc -V で表示される内容
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Tue_Mar__8_18:36:24_Pacific_Standard_Time_2022
Cuda compilation tools, release 11.6, V11.6.124
Build cuda_11.6.r11.6/compiler.31057947_0

■print(torch.__version__)で表示される内容
1.13.0+cu116

■torch.cuda.is_available()で表示される内容
False

過去にcuda_11.3.1とか10.2をツールキットからインストールした事もありますが、それでもダメでした。
319: 2022/11/26(土)12:53 ID:8YfGLTST(2/2) AAS
まずcudaは動いてるの?
devicequeryとかsampleのプログラムが動くかどうか確認して問題なければ
torch周りの問題かと
320: 2022/11/26(土)22:03 ID:GN65Kd03(2/3) AAS
ありがとうございます!
サンプル試したことなかったのでやってみました。

外部リンク:github.com
上記サイトからCUDA Samples v11.6をダウンロードして、VisualStudio2017.slnをビルド
ビルド結果:ビルド: 175 正常終了、11 失敗、0 更新不要、0 スキップ(ただしビルド文書の中にいくつか失敗という文字あり)

deviceQueryをコマンドプロンプトから実行したところ・・・。

cudaGetDeviceCount returned 100
-> no CUDA-capable device is detected
Result = FAIL

という結果だったので、CUDA対応デバイスが検出されていないようです・・・。
321: 2022/11/26(土)22:06 ID:GN65Kd03(3/3) AAS
あっ、ビルド結果、11個失敗しているって意味なんですね・・・。
322: 2022/11/26(土)23:52 ID:HQ9nVBdA(1) AAS
GPUがちゃんと刺さって無いとか、電源不足とかドライバがちゃんとインストールされてないとか。
323: 2022/11/28(月)08:14 ID:MM544pas(1/2) AAS
ん〜、GPU自体は認識されてるみたいなんですよね。
GPU-Zで調べてみたらCUDAのところチェック外れてたので、やはりCUDAは認識されていないみたいです。
画像リンク[png]:gpuz.techpowerup.com

現在の電源は550Wなのですが、もうちょっと大きい容量のに変えてみて、それでダメならやはりドライバが合っていないという事でしょうか・・・。
324: 2022/11/28(月)08:33 ID:D2ZVp0By(1) AAS
gpu-zはハードウェア情報なのでcudaのチェックが外れてるって
何かがかなりおかしい

20年前のgeforceなら分からんでもないがRTXなら
偽物をつかまされたか、ハードウェア故障を疑った方が良い気がする
325: 2022/11/28(月)08:52 ID:FFe6eh0R(1) AAS
まずはsystem32にnvcuda.dll があるかどうか確認するかな
326
(1): 2022/11/28(月)12:53 ID:MM544pas(2/2) AAS
316です。
Sytem32にnvcuda.dll入ってました。

やはりハードウェアの故障でしょうか? (今のGPUは約2年前にドスパラで買いました)
とりあえず電源ユニット注文しちゃったんで、電源交換&GPUも付け直してみて、それでダメだったら新しいGPU購入ですかね(T_T)
327: 2022/12/02(金)20:33 ID:2cIkFTzc(1/2) AAS
グラボを3060TIに変えてみましたが、それでもGPU-ZでCUDAにチェックが入っていませんでした・・・。
328: 2022/12/02(金)20:51 ID:NwS5Fypu(1/2) AAS
あとはマザボかね~???
329
(1): 2022/12/02(金)20:53 ID:NwS5Fypu(2/2) AAS
差す穴変えてみた?
330: 2022/12/02(金)21:26 ID:xlTggD6P(1) AAS
12V繋いでないってことはないよな
331: 2022/12/02(金)22:03 ID:2B2OMrFT(1) AAS
>>326
Linuxでも入れて確認してみたら?
332: 2022/12/02(金)22:11 ID:2cIkFTzc(2/2) AAS
接続するPCIEスロットも変えてみましたが・・・ダメでした。
グラボ上部にある補助電源?用のケーブルはちゃんと繋いでるはずなのですが、他に必要な接続とかあるんでしょうか?

現状のGPU-Zでの結果
画像リンク[png]:gpuz.techpowerup.com
333: 2022/12/03(土)06:08 ID:9AvqKyUf(1) AAS
OpenGL, DirectX, vulkanとかのグラフィッ関係のAPIを使ったプログラムやゲームも動かないの?
本当にハードウェア関係に問題があるんならそういうプログラムも動かないだろうけど。
334: 2022/12/03(土)12:15 ID:s9fm/abx(1) AAS
他のGPU全部殺してドライバアンインストール
3060Tiのドライバ入れなおせ
335: 2022/12/03(土)12:19 ID:Xj+KmoE3(1) AAS
別のドライブにOSクリーンインストールしてみれば
336: 2022/12/04(日)11:39 ID:2Pwe8xJ8(1) AAS
>>329
337: 2022/12/06(火)21:28 ID:VA2y8qjn(1) AAS
316です。
思い切ってCドライブ初期化してみたらCUDA認識されました。
皆さんありがとうございました。
338
(1): 2022/12/06(火)22:09 ID:lBiSjHRF(1) AAS
経験上、一番難しいと感じたのはpython
listとかタプルとかデータ型が沢山あってこの変換がやたら発生
pandaとnumpyでも型が違うとか

torchは経験ないけどtensorflowは理屈が分かればそれほど難しくないと思う
339: 2022/12/07(水)02:07 ID:imjH6UhZ(1) AAS
>>338
普通にC++の方が難しいと思うけど、どんな言語を試した経験上なの?
340: 2022/12/07(水)06:20 ID:YHin935u(1) AAS
もしかしてCUDAでC++を覚えようとしてるの?
CUDAはCの知識でもできるけどCは?
341
(1): 2022/12/07(水)13:28 ID:wqy1K1SQ(1) AAS
C++は変態過ぎて
経験豊富ならべつにC++かまわんが
経験無いならCからやった方が良い
342: 2022/12/07(水)17:47 ID:4gcyj4i9(1) AAS
>>341
Cは便利じゃないけど、確実だよね。マイコンとかでC++を使うのは、開発時間が十分に取れるなら(慣れてるなら)いいけど、処理系の変な制限にハマりそうで怖くて使えないわ。
343
(1): 2022/12/23(金)20:34 ID:ovzWFFv+(1/2) AAS
処理系の変な制限て何?
344: 2022/12/23(金)20:38 ID:ovzWFFv+(2/2) AAS
小規模マイコンでもC++は便利だぞ
345: 2022/12/27(火)00:37 ID:szDr1TAR(1) AAS
>>343
お気持ちC++実装でフル規格満たしてないとか普通にある。調べるのが手間すぎる。
346: 2022/12/27(火)04:54 ID:Y8dS0LJm(1) AAS
フル規格を満たしてない事が普通にあるのはCも同じ
恐くて使えないのは経験が少ないからだな
347: 2022/12/27(火)13:10 ID:vQ4ixuph(1) AAS
MSVCで作っておけば大体オッケー
g++依存は死ぬ
348
(1): 2022/12/28(水)21:30 ID:VGHawTJO(1) AAS
今時C++で開発してる会社あるのかな?
349: 2022/12/28(水)21:33 ID:IIYChppW(1) AAS
当然
高速処理が要求されるようなところはC/C++だよ
350: 2023/01/14(土)11:12 ID:hF49Vv2k(1) AAS
質問です。
cudaの9.0バージョンで
nvcc -V
このようなことをうっても、一切反応しないです。
誰か教えてえらいひとーー!
351: 2023/01/14(土)11:36 ID:ITBYYn4q(1) AAS
>>一切反応しないです

もう少し具体的に
352: 2023/01/14(土)13:28 ID:HwrORXYU(1) AAS
無修正を観ても、一切反応しないです。
誰か教えてえろいひとーー!
353: 2023/01/23(月)20:21 ID:VfNttDi/(1) AAS
NVIDIA HPC SDK使ってる人いる?
windows版がないんだけどそのうちサポートされるんかね?
354
(1): 2023/01/23(月)20:47 ID:1CzktcoW(1) AAS
HPC SDKになった2020年にはWindows版は翌年公開予定と言っていたけど,
その記載もなくなったし永遠に出ない可能性が高いと思われる

当時とは違ってCUDA on WSL2でHPC SDKも使えるようになったから
Windows需要もそこで解消されるし
355: 2023/01/25(水)11:08 ID:/YL2yMwg(1) AAS
>>354
詳しい人降臨キター
旧PGIのユーザはほぼLinuxばっかだったようだしWindowsは見捨てられたのかと思ったけど必ずしもそうじゃないのかな
WSLで本当に性能出るの?ってのは気にはなるけど
ありがとうございました
356: 2023/03/05(日)20:30 ID:skhIF3To(1/2) AAS
てst
357: 2023/03/05(日)21:06 ID:skhIF3To(2/2) AAS
亀レス
>>348
あるっしょ
いくらでも,
このまえいびられて死んだ三菱電機の社員は電気系でも物性系の修士出てるのに
会社に入ってC++まともに書けなくて死んだ
物性選んだ時点でプログラム苦手なのにいきなりC売り物用のC++コード書け,
しかも,意地の悪い上司が適当なサンプルコードも見せてくれなきゃ死にたくなるかもな
358: 2023/05/14(日)05:25 ID:EUIAlyu+(1/3) AAS
test
359
(1): 2023/05/14(日)06:02 ID:EUIAlyu+(2/3) AAS
おまえら教えろください
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 ID:EUIAlyu+(3/3) AAS
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__でコールできないので駄目なんですよ
361: 2023/05/28(日)07:37 ID:rAN5cbTU(1) AAS
何もレスないけど
cudaDeviceSynchronize なくても困らないコード書いてるの?
shared memory使うときどーしても使うと思うんだがこのAPI
362
(4): 2023/05/30(火)17:45 ID:GWh7Fu6m(1) AAS
ふつうは __syncthreads() 使うなあ。
というかカーネル内から全スレッド同期出来たとは知らなかった。
やっぱりいろいろ無理があったから廃止になったんじゃね?
363
(2): 2023/06/01(木)19:34 ID:woZHz0xe(1) AAS
カーネルの実行完了を待つ関数をカーネル内から呼び出せるのはおかしいだろ
364: 2023/06/02(金)21:14 ID:GpIK8Zp9(1/5) AAS
>>362
>>363
お前らマジでレベル低いわ
シェアードメモリとかまったく使いこなせてないだろ
シェアードメモリってのはブロック内スレッドでのみ共通のメモリ
カーネル関数内で待ち合わせ処理できずにどうやって使うんだこんなもん
365: 2023/06/02(金)21:16 ID:GpIK8Zp9(2/5) AAS
>>363にいたってはCUDA Dynamic Parallelizmすら理解してない
366
(1): 2023/06/02(金)21:29 ID:GpIK8Zp9(3/5) AAS
>>362
ふつうは?
__syncthreads()自体とっくに廃止されてそのかわりのcudaDeviceSynchronize()だろ
367: 2023/06/02(金)21:32 ID:GpIK8Zp9(4/5) AAS
>>362
CUDA Runtime API rev.1 をみても __syncthreadsなんて載ってないんだが,
どこに載ってるか教えてくれ
368
(1): 2023/06/02(金)22:14 ID:GpIK8Zp9(5/5) AAS
>>362
外部リンク[pdf]:docs.nvidia.com
↑から最新のAPIマニュアルをダウソして検索したが __syncthreadsなんてものは存在しない
お前の書いたコードが最新のcuda 12.1.1コンパイラで使えるかどうか確認してみろ
とっくにサポートが打ち切られたAPIを使うと嘯吹いてただけじゃねーのか?
お前はとんでもなく長い間cudaコードを書いてなかったんじゃないのか?
369: 2023/06/02(金)23:26 ID:zbQswG7U(1) AAS
カーネルからRuntime API使うのがそもそも違和感あるんだがイマドキのCUDAはそういうものなんか?
370: 2023/06/02(金)23:38 ID:44SgMOSU(1) AAS
>>366
同期する範囲がぜんぜん違ぇだろうが
371: 2023/06/03(土)01:32 ID:f1mb9frl(1/2) AAS
submit済みカーネルが2並列同じキューで動いていて、両方が完了待ちしたらデッドロック起こすなwww
372: 2023/06/03(土)10:34 ID:hgrjzBME(1) AAS
プログラムわかってないやつがいきなりの攻撃性を発揮するのガイジっぽくていいね
373: 2023/06/03(土)16:01 ID:f1mb9frl(2/2) AAS
>>368
ランタイムAPIwwww
こっち見とけ
外部リンク[html]:docs.nvidia.com
374
(4): 2023/06/10(土)08:16 ID:gJM3u8Zc(1/3) AAS
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>>>();
}
375: 2023/06/10(土)08:17 ID:gJM3u8Zc(2/3) AAS
つづき
ホスト側から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 ID:gJM3u8Zc(3/3) AAS
つづき
こういうコードスタイルにすることで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
(1): 2023/06/10(土)10:12 ID:5lxShvGN(1) AAS
>>374
同じstream使ってんのにいちいちそんなところで同期してたら効率悪くね?
378: 2023/06/10(土)11:53 ID:Y9DL3tjK(1) AAS
まだやってたのかよw>>359
379
(1): 2023/06/16(金)10:37 ID:VMczRTMU(1) AAS
>>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側に制御戻す必要なく処理速度が落ちるわけじゃない.
それどころかはるかにプログラムの見通しもよくなるんだから
380
(1): 2023/06/16(金)20:00 ID:duxPCvpi(1) AAS
丸々一ヶ月経ってもまだ躓いてるのかw
せっかくアドバイス貰っても理解する気がないならしょうがないな。
381
(1): 2023/06/16(金)23:41 ID:T6+41XgS(1) AAS
>>379
dynamic parallelismがどうたらイキってた輩が実はstreamすらろくに理解していなかったという
382
(1): 2023/06/17(土)09:32 ID:6mG7lpSl(1) AAS
そもそもShared Memoryが云々の話とこれ全く関係ないし、unique_ptrがどうとか誰も聞いてないし、ただイキってクソコード書いてるnoobにしか見えん
383: 2023/06/30(金)06:45 ID:HGq0NS3h(1/6) AAS
>>381
streamてCPUとGPUの協調のこと言ってるの?
協調はこの際,まったく関係ないんだが,
CPUからGPUに制御を移して完全にCPUとは分離する話をしてんの
そのほうが遥かにプログラムが楽に簡潔に書けるからそれを言ってる.
GPUのほうが8倍から1桁速度が速いので実験的な計算ならこれで十分な速度が得られる
CPUとの協調とか難しいプログラムを書くんじゃなく
GPUだけで計算を完結させるためにDynamic Parallelismを使う
Dynamicに並列化したいわけじゃなくGPUのプロセスを一つ立ち上げたいためにそれを使う
384: 2023/06/30(金)06:53 ID:HGq0NS3h(2/6) AAS
>>380
何のアドバイス?ww
GPUプロセスの中で全プロセスどうやってwaitするのさw
ま, cudaのユーザサイトには代替案とか書いてる人いるよ
cudaDeviceSynchronize()と比較して速度は期待できないが一応使える.
せめてそれぐらいのアドバイスできるようになってから言いな.
俺のようなコード書いてGPUプロセスの中からcudaDeviceSynchronize()コールしてるユーザは一定数いるってこった
どーせ__global__でnew/deleteふつーに使えること知らんかったんだろお前ww
385: 2023/06/30(金)07:16 ID:HGq0NS3h(3/6) AAS
>>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
386
(3): 2023/06/30(金)08:24 ID:pBAX8tCp(1) AAS
俺はCUDA使ったこと無いんだけど

>__global__でnew/deleteを使ってGPUだけで完結処理

これって思い込みじゃねえかなあ
387: 2023/06/30(金)11:03 ID:HGq0NS3h(4/6) AAS
>>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しか使えないけどな.
388: 2023/06/30(金)11:07 ID:HGq0NS3h(5/6) AAS
>>386
ウソだと思うなら,>>374のコードを実際cudaでコンパイルして確認してみろや
実際__global__内でnew/malloc使えて__global__から__global__を起動できることだけがポイントなんだから
ちなみに, dynamic parallelismサポートしてないような古いグラボは使用禁止な.
389: 2023/06/30(金)11:38 ID:HGq0NS3h(6/6) AAS
>>386

new/deleteが__global__内でふつーに使えるってことなら
cuda c programming guide 最新版の
7.34. Dynamic Global Memory Allocation and Operations

どっちが思い込みかね?ww
390
(1): 2023/06/30(金)18:28 ID:h/tbEWPQ(1) AAS
もしかしてNVIDIAのフォーラムでモデレータに I’m confused とか言われてんのコイツ?
391
(1): 2023/06/30(金)22:03 ID:nvcNe2IT(1/2) AAS
炎上学習法かとも思ったが全然学習してる素振りもないのよなあ

>streamてCPUとGPUの協調のこと言ってるの?

ちょっとはググるなりしたらどうかね

> body1<<< Ki, Ki >>> ( idata, odata1 ); //マルチスレッド実体
> cudaDeviceSynchronize();
> body2<<< Ki, Ki >>> ( odata1, odara2 ); //マルチスレッド実体

body1とbody2は同じstreamだから基本的にそんなところにsynchronizeはいらんのよ
392
(1): 2023/06/30(金)22:07 ID:nvcNe2IT(2/2) AAS
>そのときcudamalloc/cudafreeなんか使ってたんじゃメモリ管理が大変で,

これも意味不明だなあ
malloc/freeと比べてどう大変だと言うんだろう
393: 2023/06/30(金)23:46 ID:lTu2cFop(1) AAS
病気の人に関わってもいいことないですよ
394: 2023/07/02(日)11:33 ID:ZzvN3CPt(1) AAS
同期オブジェクトが出てないんだから、そりゃシリアルに動くやろうなあ
CUDA知らん
395
(1): 2023/07/02(日)14:47 ID:tUgy2gS2(1) AAS
>>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のローカルメモリの解放を手でやらかすよりよほど楽だと言ってるのだよ.
396: 2023/07/02(日)19:20 ID:nj7sKJew(1) AAS
>>395
いや、それストリーム間の同期の話であって同じストリームに投入したカーネルの実行の話とは関係ないんだが。
いろいろ検索したりしたんだろうけどここ勘違いするようなレベルでイキりまくられても。

もともとは cudaDeviceSynchronize がデバイス上で非推奨になるんで代替策をどうするかって話だったと思うけど、
「自分は間違ってない」と強弁するだけならそりゃ2ヶ月近く解決しないわけだわ。
397: 2023/10/20(金)12:42 ID:/M3RKJCH(1) AAS
NVIDIA中國から撤退
398
(1): 2023/12/07(木)06:26 ID:R1AO2r8W(1) AAS
PCくそど初心者で、オーディオをやっている者です。

現在PC(linux)でHQplayerというソフトで音楽ききてます。

そのPCにグラボ刺したら音質上がるなんてガセネタつかまされたんで、騙されてみようと思うのですが、その際CUDAの設定しないとGPUが使われないということのようなのです。

調べたら、ドライバー、ツールキット、cuDNNの3つをインストールするみたいなのですが、最後のcuDNNの意味がわかりません。

有識者の方、どうかご教授下さい!
399
(1): 2023/12/10(日)12:43 ID:9z8kD1aM(1) AAS
>>398
他人の作った何をやっているかわからないプログラムを使うより
音とプログラミングとCUDAについて勉強して
自分で音質を上げるプログラムを作ったほうがよいと思うよ。
本屋とかアマゾンでそういう専門書も探せば見つかるでしょ。
400: 2023/12/13(水)06:47 ID:YKWD9gfa(1) AAS
>>399

398です。
なるほど、そういう方法もあるのですね。
自分で勉強してプログラムのことまで理解するなんて大変そうですが、根本を理解していないと使う意味ないですもんね。

大変そうですが、チャレンジしてみます。

ありがとうございました。
401: 2024/01/13(土)07:53 ID:Ce28ohDx(1) AAS
RTX4090よりA4000をおすすめしてる所がありますが、これは長期稼働の安定性と低消費電力が理由でしょうか。

lstmで出来るだけ早く学習させたいのですが4090の方が早そうですがいかがですか。
402: 2024/03/14(木)19:33 ID:LpPl9eeZ(1) AAS
自己解決
webページ作成者に聞いた

4090の方が速いが、例えば3時間が4時間になったところでたいした違いはないでしょうとか

いくつものパターンを試したいので少しでも早いものをってことで4090を買った
403: 2024/10/12(土)23:57 ID:g42aTpjG(1) AAS
faster_whisperがGTX1660で6.8倍に高速化した
動画のハードエンコードみたいなことしてる訳でもないのに、なんでこんなに効くんだろう
404
(1): 05/03(土)21:22 ID:GOrfAv9r(1) AAS
CUDAを使うにはH100が必要なの?
405: 05/03(土)21:57 ID:DmXNLEJI(1) AAS
>>404
nvidiaのGPUなら多少古くてもcuda使えるよ
A100でもA6000 A4000 RTX3060でもいい
406: 05/12(月)20:36 ID:QasGmRud(1) AAS
clvkってなんか普通に記事あるけど魔境なやつ?
407: 06/05(木)17:19 ID:O3mofczY(1) AAS
wayland対応はよう
1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.942s*