-
プログラム
-
【GPGPU】くだすれCUDAスレ part7【NVIDIA】 [転載禁止]©2ch.net
-
UPLIFTで広告なしで体験しましょう!快適な閲覧ライフをお約束します!
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
CUDA使いが優しくコメントを返しますが、
お礼はCUDAの布教と初心者の救済をお願いします。
CUDA・HomePage
http://developer.nvi...egory/zone/cuda-zone
関連スレ
GPGPU#5
http://peace.2ch.net.../tech/1281876470/l50
前スレ
【GPGPU】くだすれCUDAスレ【NVIDIA】
http://pc12.2ch.net/...cgi/tech/1206152032/
【GPGPU】くだすれCUDAスレ pert2【NVIDIA】
http://pc12.2ch.net/...cgi/tech/1254997777/
【GPGPU】くだすれCUDAスレ pert3【NVIDIA】
http://hibari.2ch.ne...cgi/tech/1271587710/
【GPGPU】くだすれCUDAスレ pert4【NVIDIA】
http://hibari.2ch.ne...cgi/tech/1291467433/
【GPGPU】くだすれCUDAスレ part5【NVIDIA】
http://toro.2ch.net/...cgi/tech/1314104886/
【GPGPU】くだすれCUDAスレ part6【NVIDIA】
http://peace.2ch.net...cgi/tech/1348409867/ - コメントを投稿する
-
関連サイト
CUDA
http://www.nvidia.co...uda_home_new_jp.html
CUDAに触れてみる
http://chihara.naist...L/cuda1/disp_content
CUDA のインストール
http://blog.goo.ne.j...70a174af345f4a33bd51
NVIDIAの「GeForce 8800 GT(G92)」と次に控える64-bit GPUアーキテクチャ
http://pc.watch.impr...7/1031/kaigai398.htm
CUDAを使う
http://tech.ckme.co.jp/cuda.shtml
NVIDIA CUDAを弄ってみた その2
http://dvd-r.sblo.jp...rticle/10422960.html
CUDAベンチ
http://wataco.air-ni...08/02/cuda_2044.html
KNOPPIX for CUDA
http://www.yasuoka.mech.keio.ac.jp/cuda/ -
>>1
ああ、キミ!また会えたね。久しぶりだ。どうだいあの件は?どうなったか説明したまえな。
神戸市の東、芦屋西宮の知的障害者施設で未成年利用者に性的な行為をして淫行条例で逮捕された三田谷学園元職員の堂垣直人(西宮市老松町)は、結局どういう罪になったの?
被害者家族のケアを芦屋市役所と兵庫県警はちゃんとやったのか?
差別や虐待は環境を選べない子供には関係ない。
http://www.youtube.c...MzW3ZlV4g&sns=em
まあ、こっちに座れよ。ゆっくり話そうじゃないか。 -
syncthreadsとthreadfence_blockの違いが分かりません
syncthreadsだけで十分な気がしますが、どういう時に使い分けるのでしょうか? -
すみません、誤読しました。
「同じブロック内の全スレッドがこの命令にたどり着く」
まで待つかどうかの違いですね。 -
今一番コスパ高いカードってなに?
-
謝罪文みても思い上がりが激しい
-
プログラムのカーネル部分がどうしても実行されません(サンプルプログラムでは実行されていました)
どなたか原因に心当たりはありませんか?(私はありません)
ブレークポイントで確認したところカーネルの上下にあるクロックは実行されており、
カーネルだけが実行されていませんでした(カーネルの中へ入って行かないという意味です)
以下が呼び出しで、dim3はグローバルで定義してあります
dim3 blocks((num + max - 1) / max, (num + max - 1) / max);
dim3 threads(max, (1024 + max - 1) / max, 1);
void calculation(void)
{
clock_t start, end;
start = clock();
cal<<<blocks, threads>>>(con, num, points, data);
end = clock();
cout << double(end - start) / CLOCKS_PER_SEC << "\n";
} -
>>11
dim3構造体のメンバ変数をプリントしたらどうなりますか? -
>>12
>11のcalculation()の最後の行にプリントの一文を入れてみましたが
ブロックが(128,128)、スレッドが(128,8)と想定通りでした
(スレッドは1ブロック当たり1024個まで配置可能なのでギリギリセーフなはずです)
忘れていましたが、呼び出し先です
この中にブレークポイントを配置してもプログラムが止まらないという魔の領域となっています
(もちろんnsightのcuda debuggingでデバッグしています)
__global__ void cal(double con, int num, a_data *points, b_data *data)
{・・・} -
>>13
カーネルが実行されているかどうかはどうやって確認していますか? -
おれもカーネルに入らないケース出たわ
原因調査中・・・ -
>>15
CUDAのデバッガ使った事がない(ひたすらprintf)ので
一般論的な事しか言えませんが、
怪しそうな処理をコメントアウトしていったらどうでしょう?
変なメモリアクセスで落ちるとか割とありがちな気が。 -
おれもカーネルに入らない
ただなぜかcygwinでコンパイルするとカーネルが起動する
なんでじゃ・・・
例のvisual studio2013もインストールしてみたいな〜 -
>>18だけど
osはwindows8.1
コンパイラはcuda6.5+vs2013 express
カーネルは担当する要素を+1するだけのもの
これをコマンドプロンプトでコンパイルしてもカーネルは動かなかった(?)
動かないと判断したのは結果をmemcpyしてホスト側に返しても+1されてなかったから
もしかしたら正常にmemcpyされてないだけかもしれない
カーネルに入らない人はcygwin使ってみるといいかもね
本質的な解決にはならないけど・・・ -
ビジュアルプロファイラー使ってみたら。
-
kernel実行後にcudaGetLastError()でRCを取得
そうするとkernel実行結果が分かる
RCの数値は自分で調べてね -
21の情報は役だったかな?
自分の場合(LINUX)、RC=7(too many resources requested for launch)だったので
コンパイルオプションに -Xptxas -vを追加して使用レジスタ数を確認。
結果ハードウェアのレジスタ数を超過したためにカーネルの処理が行われなかったことが判明。
スレッドサイズを小さくして問題解決。
因みに使用レジスタはハードウェアによって変わる。 -
>>22
ちょっと興味があるんですけれど、
カーネルのサイズは動的に決めてるんですか?
前にソースコードにブロック数とスレッド数をべた書きで
大きいサイズを指定したらコンパイルの段階ではじかれた事があったんで。 -
>>21
ありがとうすごく役に立ったよ
ここ最近忙しくてpc触れなかったんだ
自分も同じく「error: too many resources requested for launch」だった
原因を調べてみるよ
あと、自動でエラー内容もだせるみたいだね
http://homepage2.nif...rams/gpgpu/cuda.html
>>20
ビジュアルプロファイラーも便利そうだから調べてみるよ -
x,y,zの3つの変数から成る構造体配列A,B(同じサイズ)があったとして
BからAへそれぞれ対応するデータを転送する場合
Ax,Ay,Az,Bx,By,Bzという同じサイズの構造体でない配列が6つあったとして
BからAへそれぞれ対応するデータを転送する場合(BxからAxなど)
前者と後者では後者の方が転送速度は上がりますか? -
>>25
一般論としてデータ量が同じなら一回にまとめてを転送した方が効率はよくなりますね。 -
memcpyって同期とるもんね
-
kernelの中で使えるタイマー関数はありますか?
-
clock()関数が使えるよ。
-
自分の持っていないGPUの共有メモリの量などの詳細を知ることはできますか?
-
http://en.wikipedia....s_and_specifications
の
Maximum amount of shared memory per multiprocessor
あたりかな。 -
なんでCCのバージョン3.5から5.0に飛んでるの?
SDKのバージョンと合わせたのか? -
二つ以上のGPUでVBOを使用する場合、データの流れはどうなっているのでしょう?
やはり一旦ディスプレイに接続側のGPU出力データが集められ出力されるのですか? -
プロファイラ使えばわかるんじゃない?
-
>>34
ゲフォの800番台がスルーされたからかも? -
>>36
少し気になって質問してみただけで今自分は一つしか持っていません!
もう一つGPUを購入した時の為にvisual profilerを使えるようになっておこうと思い
ビルドした実行ファイルでプロファイラを使用してみたところ「Warning: No CUDA application was profiled, exiting」とエラーが出てしまいました
6.5のツールキットを使用して新しいセッションを作成→ビルドした実行ファイルを選択→設定はデフォルト、としたのですが何がダメだったのでしょう?
nvidiaの説明書を見てもさっぱりです。ヒントだけでもいいので教えてください -
>>38
cudaDeviceReset() が必要のはず。
Visual Studioで「CUDA X.X Runtime」のプロジェクトを作ったら、
kernel.cu の return 0; の直前のコードに、以下のように書いてある。
// cudaDeviceReset must be called before exiting in order for profiling and
// tracing tools such as Nsight and Visual Profiler to show complete traces.
cudaStatus = cudaDeviceReset(); -
>>39
ループしているプログラムなのでエスケープキーを押すと後処理関数をatexit関数で呼び出して終了するようになっています
その後処理関数の中にcudaDeviceReset();を入れているのですがこれではダメなようです
それともcudaError_t cudaStatus = cudaDeviceReset();としてcudaStatusをどこかへ渡すのでしょうか? -
一応書いておきます
調べてみた結果、必要なものはcudaDeviceReset();を呼び出すことのみでした
自分のプログラムがプロファイル出来なかった原因は.dllが.exeと同じ場所に無かったからでした -
並列化についての質問です
スレッドやブロックを増やしてもあまり計算速度に差が出ないのですがどのような理由が挙げられますか -
どう変わると思った?計算量自体は変わらんのだぞ。
-
最初は一つのスレッドにつき4回ほどループさせ計算をしていました
その後、スレッド数を2倍にしてループ数を半分の2回しました
計算速度は2倍になるだろうと予想していましたが、あまり変わりませんでした -
ハード的に同時に実行できるスレッドは有限なんだから、それ以上スレッドを増やしても
物理的に速くなりようがない。 -
プログラム上のスレッド数とハード上のスレッド数は違うと言うことですか
-
スレッドが多ければ、メモリアクセスでスレッドが止まっている間
cudaコアは別のスレッドを実行できる -
基本的にはcudaコアの数だけしか並列計算出来ないのですか
だけしかと言ってもコアは何百もありますが -
ある瞬間、実際に並列に処理されているということと、理論上並列に扱われるということは別の話ですよ
上のレスにもありますが、計算速度的には実際に処理を行うヤツが足りていなければそこで頭打ちになるのは当然かと -
cudaコアの数以上にスレッドを生成する利点は
メモリアクセスの遅延の隠蔽にある -
550TIで使っていたプログラムを750TIで走らせて見たところ1.5倍ほど遅くなってしまいました
何故でしょうか? -
腐ってやがる。早すぎたんだ
-
>>53
一度のカーネル実行で処理するデータ量を増やしたら改善しませんか? -
>>53
maxwellは倍精度がそーとーしょぼいので、
cuda-zかなんかで性能をチェックした方がよいかもしれません。
http://sourceforge.j...ojects/sfnet_cuda-z/ -
コア数が3倍になっていることを考慮すればそれでも遅い気がしますね
-
CUDA初学者です
cudaBindTexture2D()のpitchとoffsetは何を表しているのですか?
手元の書籍のサンプルから推測するに
pitchは一次元の配列を二次元のテクスチャに入れる場合の折り返し地点のようなもの
でしょうか?それならwidthとhighだけでも十分ではないかと言う疑問も出てきます。
そして一番の疑問がテクスチャメモリの存在です。
いくら二次元、三次元配列が使えるとは言え512バイトしか容量のないテクスチャメモリは64キロバイトもあるコンスタントメモリに劣るのではないでしょうか?
長々と失礼いたしましたm(_ _)m -
>>52
それじゃあストリームは何のためにあるのさ? -
>>61
なるほどね -
970/980は確かにゲームのパフォーマンスは上がってるが帯域減ってるから
GPGPU用途では微妙になってしまったな -
Toolkit 6.0 + VS 2008から
Toolkit 6.5 + VS 2013に移行したら
遅くなっちゃったんだけど、そういう人ほかにいる? -
CUDAの日本語ページって4.0とかの古い情報ばっかりじゃね
6.0/6.5では全然仕様が違ってて全然使えない -
CUDA7.0 RC
-
もうCUDAも成熟してしまった感があるなあ。
-
970の影響でGPUメモリテストが流行っているね。
-
ここ何週間かデバッグを続けているのですが原因を突き止めることが出来ません
初学者がはまりやすいミスやデバッグのこつなんかを教えてもらえませんか?
明らかなバグなら原因を突き止めやすいのですが、かなり微妙なバグなのでなかなか見つけられず困っています -
printfとかで要素を表示してデバックしてみれば?
-
syncthreadとか?
if文の中に書いてたりすると同期ずれが起こったりするなー
他には確保してないメモリへのアクセスとか?
>>70の通り、printfとかで、配列の添字とか値を表示するしかないのかな? -
変数に入れると精度は落ちますね
お騒がせしました -
>>72
fpが(a+b)+c != a+(b+c)を知らないとかではないよね? -
volatile使うとか?
変数の宣言とか関数の引数の型の前にvolatileをいれると・・・ -
>>53
750TIでGPGPUって考えていたけど、750TIって2世代前の同ランクぐらいの550TIより性能悪いのか。
一般ゲーム用VGAではGPGPU能力ってたいして要らないから落としたのかな
いろいろなゲーム用VGAの単精度、倍精度の能力が載ったホームページ教えてください -
質問☆
cudaってドライバインストして、画像表示をcuda設定にするだけでは
効果ない? -
>>78
FP32とFP64の一覧表ならこれとか。
http://www.geeks3d.c...ops-table-computing/
ボトルネックになりうる点は他にもあるから、Compute Capability毎の仕様の違いも結構重要だと思う。 -
maxwellさん自体にに倍精度が無いようだから
一世代前のkeplerさんか次世代のpascalさんを選べば良いんじゃないかな -
keplerはinteger bit shiftが弱いGK110(tesla)以外は
maxwellはkepler比で2倍のスループットになってる -
適当なプログラム作ってみても
maxwellの方がはやいね
shared memoryが倍になったのも大きいなぁ -
スレチなら申し訳ない
当方、モバイルでCUDAを使用したいけど
安い方法はどれが良いと思います?
(速度はそこそこで良く、外でテストして
パワーがいる場合はデスクトップを使用するつもり)
モバイル用は安く上げたいので
Chromebookかタブレットで探した方が良いですかね?
奇をてらってJetsonのtk1にACアダプタ用のバッテリーを積むとか
(可能かどうかわからないですが)
ちなみにゲームはやるつもりありません。 -
thinkpad w550sのquadro K620mはダメなの?
ノートパソコンだよ -
レスありがとうございます
安くあげたいので予算的に厳しいかと
最初だけ計算量は多いですけど
要所ごとに定数化すれば、その後は計算量がへるかと思っているので外での使用は少ないデータ量でプログラムチェックができればいいかなと考えています。
K1がのったタブレットも安いのでそこから考えてみようと思います
ありがとうございました -
うわ、titan xの倍精度、しょぼ過ぎ・・・。
https://twitter.com/...tan%20x&src=typd -
単精度が7TFLOPS、倍精度が0.2TFLOPSで良いんだよな??
詳しい事は良く分からないんだけど倍精度ってそんなに使わないものなの?
PhysXっていう物理エンジン使ったりするのに -
https://developer.nv...a.com/cuda-downloads
CUDA 7 Downloads -
Dear Developer,
The CUDA? 7.0 Production Release is now available to the public. Run your application faster with this latest version of the CUDA Toolkit. It features 64-bit ARM support and the simplified programming model enabled by Unified Memory. Highlights include:
New cuSOLVER library
? Accelerates key LAPACK routines, 12x faster direct sparse solvers
New C++11 language features
? Increases productivity with lambdas, auto, and more
Runtime Compilation
? Enables highly optimized kernels to be generated at runtime
Download the CUDA 7 Production Release at www.nvidia.com/getcuda
Learn more about CUDA 7 by attending these webinars:
CUDA 7 Feature Review
Date/Time: Friday, April 10th at 10:00 AM PDT
Register: https://cc.readytalk...4b0lwgeqgzrk&eom
CUDA 7 Performance Overview
Date/Time: Wednesday, April 15th at 11:30 AM PDT
Register: https://cc.readytalk...empyu1qc65l6&eom
Best regards,
Nadeem Mohammad
NVIDIA Developer Relations Team -
CUDAがgcc4.8でうまく動かない問題ってもう解決したの?
-
うん
-
Driver API使ってコンパイル済みのptxを実行するプログラムを作ろうとしているんだけど、
64bitのホストコードから32bitのptxを実行することってできるんだっけ? -
nvidia-smiでutilizationやmemory usageを確認できると思うのですが、全てのパラメータを確認できるのはtesla、quadro、Titanです。
Geforce系のGPUで、utilization、各プロセスのmemory usage等を確認するにはどうすればいいでしょうか? -
古いGeforceでもOpenCL1.1のプログラムなら動くのでしょうか
-
少なくともCUDA対応している必要があるが、基本的にGeForce8シリーズ以降で動くはず。
特定の機種について知りたいならGeeks3Dのデータベース検索してみるとか。
しかしスレチ。
↑今すぐ読める無料コミック大量配信中!↑