【GPGPU】くだすれCUDAスレ part7【NVIDIA】 [転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2014/11/20(木) 23:14:46.66ID:jr3oZn27
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
CUDA使いが優しくコメントを返しますが、
お礼はCUDAの布教と初心者の救済をお願いします。

CUDA・HomePage
ttp://developer.nvidia.com/category/zone/cuda-zone

関連スレ
GPGPU#5
ttp://peace.2ch.net/test/read.cgi/tech/1281876470/l50

前スレ
【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/
3835
垢版 |
2014/12/20(土) 22:32:39.87ID:ovXiOWlC
>>36
少し気になって質問してみただけで今自分は一つしか持っていません!

もう一つGPUを購入した時の為にvisual profilerを使えるようになっておこうと思い
ビルドした実行ファイルでプロファイラを使用してみたところ「Warning: No CUDA application was profiled, exiting」とエラーが出てしまいました
6.5のツールキットを使用して新しいセッションを作成→ビルドした実行ファイルを選択→設定はデフォルト、としたのですが何がダメだったのでしょう?
nvidiaの説明書を見てもさっぱりです。ヒントだけでもいいので教えてください
2014/12/21(日) 12:30:22.37ID:C04pqXsd
>>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();
4035
垢版 |
2014/12/21(日) 22:57:23.15ID:McLr4XTH
>>39
ループしているプログラムなのでエスケープキーを押すと後処理関数をatexit関数で呼び出して終了するようになっています
その後処理関数の中にcudaDeviceReset();を入れているのですがこれではダメなようです
それともcudaError_t cudaStatus = cudaDeviceReset();としてcudaStatusをどこかへ渡すのでしょうか?
2014/12/22(月) 00:14:29.09ID:6pNe5aqW
>>40
とりあえず、>>39を新規プロジェクト作ってプロファイラの
動作を確かめてから、あらためて自分のソースコードに反映すれば?
2014/12/23(火) 15:40:43.82ID:bsnZ8h6l
>>41
新規プロジェクトでサンプルプログラムが生成されるのを忘れていました
おそらくサンプルのプロファイルに成功したので自分のプログラムに反映させようと思います
ありがとうございました
4342
垢版 |
2014/12/24(水) 18:51:30.92ID:/5m6EieY
一応書いておきます
調べてみた結果、必要なものはcudaDeviceReset();を呼び出すことのみでした
自分のプログラムがプロファイル出来なかった原因は.dllが.exeと同じ場所に無かったからでした
2014/12/24(水) 20:32:20.58ID:6fZpwBGv
並列化についての質問です
スレッドやブロックを増やしてもあまり計算速度に差が出ないのですがどのような理由が挙げられますか
2014/12/24(水) 20:59:33.63ID:SBHK+d/x
どう変わると思った?計算量自体は変わらんのだぞ。
2014/12/24(水) 21:07:44.58ID:6fZpwBGv
最初は一つのスレッドにつき4回ほどループさせ計算をしていました
その後、スレッド数を2倍にしてループ数を半分の2回しました
計算速度は2倍になるだろうと予想していましたが、あまり変わりませんでした
2014/12/24(水) 21:23:52.28ID:SBHK+d/x
ハード的に同時に実行できるスレッドは有限なんだから、それ以上スレッドを増やしても
物理的に速くなりようがない。
2014/12/24(水) 22:24:43.11ID:pbZqH+Xm
プログラム上のスレッド数とハード上のスレッド数は違うと言うことですか
2014/12/24(水) 22:50:48.00ID:3hqu78L7
スレッドが多ければ、メモリアクセスでスレッドが止まっている間
cudaコアは別のスレッドを実行できる
2014/12/27(土) 01:57:38.03ID:u9BI3CqV
基本的にはcudaコアの数だけしか並列計算出来ないのですか

だけしかと言ってもコアは何百もありますが
2014/12/27(土) 06:52:06.91ID:fxVjSbuk
ある瞬間、実際に並列に処理されているということと、理論上並列に扱われるということは別の話ですよ

上のレスにもありますが、計算速度的には実際に処理を行うヤツが足りていなければそこで頭打ちになるのは当然かと
2014/12/27(土) 10:09:35.39ID:W6Y2DM4+
cudaコアの数以上にスレッドを生成する利点は
メモリアクセスの遅延の隠蔽にある
2014/12/28(日) 20:39:13.97ID:52BL0aAq
550TIで使っていたプログラムを750TIで走らせて見たところ1.5倍ほど遅くなってしまいました
何故でしょうか?
2014/12/29(月) 02:19:31.23ID:YUQudPNs
腐ってやがる。早すぎたんだ
2014/12/29(月) 09:47:06.28ID:Sx0YYE+e
>>53
一度のカーネル実行で処理するデータ量を増やしたら改善しませんか?
2014/12/29(月) 09:51:11.07ID:Sx0YYE+e
>>53
maxwellは倍精度がそーとーしょぼいので、
cuda-zかなんかで性能をチェックした方がよいかもしれません。
http://sourceforge.jp/projects/sfnet_cuda-z/
2014/12/29(月) 12:03:33.25ID:oV4aoJAy
>>56
本当にしょぼかった。陽子ビームぶち込みたい。
どうやらマクスウェルさんは演算用には向いていないようですね
2014/12/29(月) 12:51:57.86ID:oV4aoJAy
コア数が3倍になっていることを考慮すればそれでも遅い気がしますね
2014/12/31(水) 21:08:03.80ID:3b0Wn462
CUDA初学者です
cudaBindTexture2D()のpitchとoffsetは何を表しているのですか?
手元の書籍のサンプルから推測するに
pitchは一次元の配列を二次元のテクスチャに入れる場合の折り返し地点のようなもの
でしょうか?それならwidthとhighだけでも十分ではないかと言う疑問も出てきます。

そして一番の疑問がテクスチャメモリの存在です。
いくら二次元、三次元配列が使えるとは言え512バイトしか容量のないテクスチャメモリは64キロバイトもあるコンスタントメモリに劣るのではないでしょうか?
長々と失礼いたしましたm(_ _)m
2014/12/31(水) 23:07:39.94ID:WrP28EMy
>>52
それじゃあストリームは何のためにあるのさ?
2015/01/01(木) 12:48:51.81ID:82JnHkZd
>>60
どっちも使えるなら、実験して早い方を採用
同時に並んでいるスレッド数を増やしてcudaコアが遊ばない状況
を作り出すことが重要

ストリームの使い道は異なるカーネルの並列実行だと思ってる
2015/01/02(金) 01:42:39.20ID:aooXGYY5
>>61
なるほどね
2015/01/03(土) 13:07:05.02ID:yWVdPt25
970/980は確かにゲームのパフォーマンスは上がってるが帯域減ってるから
GPGPU用途では微妙になってしまったな
2015/01/09(金) 00:33:57.02ID:Iq4Pw+IC
Toolkit 6.0 + VS 2008から
Toolkit 6.5 + VS 2013に移行したら
遅くなっちゃったんだけど、そういう人ほかにいる?
2015/01/12(月) 00:15:12.48ID:crrCnhEj
CUDAの日本語ページって4.0とかの古い情報ばっかりじゃね
6.0/6.5では全然仕様が違ってて全然使えない
66デフォルトの名無しさん
垢版 |
2015/01/16(金) 07:53:04.52ID:IHSf0jGJ
CUDA7.0 RC
2015/01/16(金) 09:02:56.43ID:VQ2eHsT0
もうCUDAも成熟してしまった感があるなあ。
2015/01/25(日) 10:58:33.86ID:m2kue9j8
970の影響でGPUメモリテストが流行っているね。
2015/02/06(金) 21:35:53.90ID:72/Q/UeS
ここ何週間かデバッグを続けているのですが原因を突き止めることが出来ません
初学者がはまりやすいミスやデバッグのこつなんかを教えてもらえませんか?
明らかなバグなら原因を突き止めやすいのですが、かなり微妙なバグなのでなかなか見つけられず困っています
2015/02/07(土) 00:48:46.19ID:OS4q1AxS
printfとかで要素を表示してデバックしてみれば?
2015/02/07(土) 13:10:14.61ID:4cvxubK6
syncthreadとか?
if文の中に書いてたりすると同期ずれが起こったりするなー
他には確保してないメモリへのアクセスとか?

>>70の通り、printfとかで、配列の添字とか値を表示するしかないのかな?
2015/02/08(日) 15:23:01.85ID:E04CIgi2
>>70
>>71
ありがとうございます
1セットの計算量があまりにも多いのでprintfの方法は難しいです
シンクロや範囲外アクセスもありませんでした

原因が分かっちゃったかも知れないので質問です
中間計算結果→atomicAdd
中間計算結果→配列→atomicAdd
こんな風に同じ数値を使った計算でも一度配列を通してしまうとatomicAddによって追加された計算結果に差が出たりしますか?
2015/02/08(日) 15:48:00.96ID:E04CIgi2
変数に入れると精度は落ちますね
お騒がせしました
2015/02/08(日) 21:32:20.44ID:BpjOkBmf
>>72
ちょっと面倒だけど、要素が多い場合は減らしてやってみるとか、どうだろうか?

何はともあれ、原因判明したみたいで、おめでとう
2015/02/08(日) 22:56:08.44ID:KLuvC02r
>>74
それは意外な盲点でした
数を減らせば良かったのですね
2015/02/09(月) 10:20:08.08ID:pN+UjOmC
>>72
fpが(a+b)+c != a+(b+c)を知らないとかではないよね?
2015/02/09(月) 23:18:25.64ID:QR2S1do8
volatile使うとか?
変数の宣言とか関数の引数の型の前にvolatileをいれると・・・
2015/02/17(火) 21:40:32.15ID:K8c74Rhe
>>53
750TIでGPGPUって考えていたけど、750TIって2世代前の同ランクぐらいの550TIより性能悪いのか。
一般ゲーム用VGAではGPGPU能力ってたいして要らないから落としたのかな

いろいろなゲーム用VGAの単精度、倍精度の能力が載ったホームページ教えてください
79undefined
垢版 |
2015/02/19(木) 11:23:20.97ID:aqLRWkl1
質問☆
cudaってドライバインストして、画像表示をcuda設定にするだけでは
効果ない?
2015/02/19(木) 14:30:54.02ID:iKdaAUCi
>>78
FP32とFP64の一覧表ならこれとか。
ttp://www.geeks3d.com/20140305/amd-radeon-and-nvidia-geforce-fp32-fp64-gflops-table-computing/

ボトルネックになりうる点は他にもあるから、Compute Capability毎の仕様の違いも結構重要だと思う。
2015/02/19(木) 23:45:36.57ID:ngPIgbTR
maxwellさん自体にに倍精度が無いようだから
一世代前のkeplerさんか次世代のpascalさんを選べば良いんじゃないかな
2015/02/19(木) 23:54:19.28ID:Lt8lBsrZ
>>80
有難う。750TiのFP64悪すぎだな。
なんか大衆向け用でGPGPUするならFP32よ、FP64は使わないでだな。
2015/02/20(金) 04:05:21.12ID:fPdGyDpl
>>81
KeplerはMaxwell以上にピーキーだったような。
自分の用途がはっきりしていて、それがKeplerやMaxwellに向いているならありだろうけど。
64bit変数をほとんど使わなくても、不向きな処理ではGTX 680が570に惨敗したりする。

CUDAの開発環境とか情報量に魅力を感じて、あえて今から始めてみるという人に勧めるとすれば、個人的には
投げ売り続行中のGTX 570や580で、余裕があるなら型落ちCPU・マザボ・メモリのセット等と
組み合わせてCUDA専用マシンを用意かな。

>>82
それは差別化とか、グラフィック用途でのワットパフォーマンスとかで仕方がないかと。
84デフォルトの名無しさん
垢版 |
2015/02/20(金) 08:52:57.87ID:xG3c1huj
keplerはinteger bit shiftが弱いGK110(tesla)以外は
maxwellはkepler比で2倍のスループットになってる
2015/02/22(日) 18:45:23.46ID:JhGx5uct
適当なプログラム作ってみても
maxwellの方がはやいね

shared memoryが倍になったのも大きいなぁ
86名無し
垢版 |
2015/03/07(土) 10:52:38.85ID:UBzBpgz5
スレチなら申し訳ない
当方、モバイルでCUDAを使用したいけど
安い方法はどれが良いと思います?
(速度はそこそこで良く、外でテストして
 パワーがいる場合はデスクトップを使用するつもり)

モバイル用は安く上げたいので
Chromebookかタブレットで探した方が良いですかね?
奇をてらってJetsonのtk1にACアダプタ用のバッテリーを積むとか
(可能かどうかわからないですが)
ちなみにゲームはやるつもりありません。
2015/03/07(土) 20:42:36.10ID:CzdLWIdo
thinkpad w550sのquadro K620mはダメなの?
ノートパソコンだよ
88デフォルトの名無しさん
垢版 |
2015/03/08(日) 10:25:35.13ID:TYY6zzsE
レスありがとうございます
安くあげたいので予算的に厳しいかと
最初だけ計算量は多いですけど
要所ごとに定数化すれば、その後は計算量がへるかと思っているので外での使用は少ないデータ量でプログラムチェックができればいいかなと考えています。
K1がのったタブレットも安いのでそこから考えてみようと思います
ありがとうございました
2015/03/18(水) 02:36:15.45ID:jKTvW/7W
うわ、titan xの倍精度、しょぼ過ぎ・・・。
https://twitter.com/search?q=titan%20x&;src=typd
2015/03/18(水) 09:22:22.19ID:33RtPIwm
単精度が7TFLOPS、倍精度が0.2TFLOPSで良いんだよな??

詳しい事は良く分からないんだけど倍精度ってそんなに使わないものなの?
PhysXっていう物理エンジン使ったりするのに
2015/03/18(水) 10:23:22.30ID:C11qPS4w
>>90
ゲームだと単精度で十分だったりするからじゃない?
もともとゲームのために作られたような物だから、倍精度の性能なんかあまりこだわってないと思う
92デフォルトの名無しさん
垢版 |
2015/03/19(木) 07:37:41.52ID:M0RYJxHF
https://developer.nvidia.com/cuda-downloads
CUDA 7 Downloads
93デフォルトの名無しさん
垢版 |
2015/03/19(木) 07:39:40.96ID:M0RYJxHF
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.com/r/4b0lwgeqgzrk&;eom

CUDA 7 Performance Overview

Date/Time: Wednesday, April 15th at 11:30 AM PDT
Register: https://cc.readytalk.com/r/empyu1qc65l6&;eom

Best regards,

Nadeem Mohammad
NVIDIA Developer Relations Team
2015/03/24(火) 05:27:05.96ID:7oVKj7vD
CUDAがgcc4.8でうまく動かない問題ってもう解決したの?
2015/03/25(水) 15:16:29.51ID:9JMqB0KU
うん
2015/03/25(水) 21:19:25.13ID:WRhchtaz
Driver API使ってコンパイル済みのptxを実行するプログラムを作ろうとしているんだけど、
64bitのホストコードから32bitのptxを実行することってできるんだっけ?
2015/04/10(金) 02:15:05.70ID:C60yUXFO
nvidia-smiでutilizationやmemory usageを確認できると思うのですが、全てのパラメータを確認できるのはtesla、quadro、Titanです。
Geforce系のGPUで、utilization、各プロセスのmemory usage等を確認するにはどうすればいいでしょうか?
2015/04/10(金) 07:26:02.69ID:nzpIVsUT
>>97
nvapi
http://masafumi.cocolog-nifty.com/masafumis_diary/2008/09/nvapi.html
2015/04/12(日) 23:53:21.24ID:g4+PudFo
古いGeforceでもOpenCL1.1のプログラムなら動くのでしょうか
2015/04/13(月) 00:39:39.73ID:NPPeHBbv
少なくともCUDA対応している必要があるが、基本的にGeForce8シリーズ以降で動くはず。
特定の機種について知りたいならGeeks3Dのデータベース検索してみるとか。
しかしスレチ。
2015/04/13(月) 16:29:29.85ID:EBHbrztF
thinkpadに入ってるquadro K620Mはcudaのサポート無いんだな
インストールしようとしてワラタ
102デフォルトの名無しさん
垢版 |
2015/04/14(火) 18:39:28.21ID:hgZdA2dw
Linux(CentOS6)の環境でTITAN BLACKでCUDA(Ver.6.5 or 7.0)使ってるのだけど、計算走らせると
NVIDIA X Server SettingsのPerformance LevelsのLevelが3から2に落ちてMemory Transfer Rateが7000Mhzから6000Mhzに落ちてしまう。
で結果的にノーマルTITANと性能が同じになってしまう。このメモリクロックを固定させることはできませんかね?
ちなみにTelsa K20 での固定クロックの方法はnvidia-smiがTITANに対応してないらしくできなかった。
ちなみにPreferred Modeは「Prefer Maxmum Performance」になっていて、
CUDAで計算しなければLevel3でメモリクロックも7000Mhzとなっています。
2015/04/14(火) 21:44:04.71ID:frAktQrJ
空冷を見直す。
104デフォルトの名無しさん
垢版 |
2015/04/15(水) 11:49:47.50ID:DmeNPmdM
>>102
何時間もフルで使ってるならまだしも、GPU叩いた瞬間に7000Mhzから6000Mhzに落ちるって、TITAN BLACKの公称メモリクロック「7GHz」ってのは詐欺にならないか?
これじゃノーマルTITANと同じ性能・・・
2015/04/15(水) 23:05:57.76ID:+7B/lj1n
環境がわからんからなんとも言えんが、
どうしても固定したければどっかからbiosを引っ張ってくるしかないね。
106デフォルトの名無しさん
垢版 |
2015/04/16(木) 13:27:15.95ID:xeug049T
ん?TITANのクロック制御はマザーのBIOSが管理してるのか?
2015/04/16(木) 14:34:33.50ID:PYEjJT3R
VGAボード側のだよ。
2015/04/23(木) 12:42:01.23ID:GK/TBYtY
pycudaで既存のコンパイル済みのオブジェクトとリンクして
実行させるにはどうすればいいのでしょうか
2015/04/23(木) 18:12:10.80ID:GK/TBYtY
cmakeの自動configがGTX900シリーズなのにsm_20とか言ってくるのなんとかならないの?
2015/04/27(月) 00:54:11.64ID:XOkfLgXW
最近のマザーボードってビデオカード2枚刺して
両方に計算させることもできるの?
自分のcore2duoのパソコンだと1つしか刺す場所ないけど
最近のddr4を使うマザーみると
それらしき場所が3つぐらいあるから3並列計算できるってことかな?
2015/04/29(水) 08:43:39.45ID:2J/vCqrD
>>110
場合によっては、計算用のGPUと出力用のGPUで分けてたりする。少なくともNVIDIAはそういう方針
2015/04/30(木) 22:40:28.09ID:4E7PVA8Y
vexclのサンプルコードをcudaでコンパイルしようとしてるんだけど
エラーだらけ
何か依存パッケージが足りないのかな?
2015/04/30(木) 22:46:37.84ID:4E7PVA8Y
.bashrcに設定する変数名が
CUDA_PATH
だったり
CUDA_ROOT
だったりみんな違う

なんで統一しないのか
2015/05/07(木) 18:56:17.28ID:oEZIeMhu
vexclについてくるexampleプログラムの中のベンチマークってプログラムが面白い
このプログラムのベンチマークによると
GT430とかいう古いビデオカードなのに最近のCPUの10倍の計算速度でてる
115101
垢版 |
2015/05/13(水) 12:03:41.64ID:3UCLt7KQ
thinkpad w550sのquadroでもcudaなんも問題なかった
やっと勉強できる
116デフォルトの名無しさん
垢版 |
2015/05/13(水) 19:42:38.26ID:SKtXN3hT
3D映像でパストレーシングやモンテカルロ法を行いたい場合、光線とシーン中
のあらゆるポリゴンとの交差を判定し、条件分岐を行う必要があります。
しかし、GPGPUは条件分岐が遅いらしいので、もしかするとCPUと役割分担を
行うべきなのでしょうか?
例えば、シーン中のポリゴンとの交差判定はCPUでやった方が良いとか?
2015/05/13(水) 23:31:21.84ID:xMqj1fKt
if
  A
else
  B
end
のような文なら、AとBは逐次の処理になる

if
  A
end
なら、Aを行わないスレッドは待つだけだから問題ない

もし3項演算で解決できる条件分岐なら3項演算子を用いて書く
118デフォルトの名無しさん
垢版 |
2015/05/14(木) 07:59:10.95ID:CyZl9DuQ
>>117
>AとBは逐次の処理になる

これはどういう意味でしょう?
AとBが内部的には必ず両方とも実行されてしまうと言うことでしょうか?
119デフォルトの名無しさん
垢版 |
2015/05/14(木) 09:14:40.23ID:CyZl9DuQ
Intel系CPUの場合、確か cmov などという命令は、bool 値が1の時だけ
転送するのだったと思います。そういう命令は無いんでしょうか?
仮に何かあったとして、CUDA や OpenCL でどうやってそのような
「専用命令」を生成する事は可能でしょうか?
2015/05/15(金) 01:05:26.23ID:WYo5pZkW
分岐命令の代わりに使えるプレディケート付き命令があるかという話なら
それは存在するし、分岐のあるコードではコンパイラさんがよしなにやってくれる。
と、ヘネパタ本には書いてあった。
121デフォルトの名無しさん
垢版 |
2015/05/15(金) 08:19:31.91ID:pyCNH+0F
>>120
ありがとうございます。

では、「>>118」の方はどうですか?
2015/05/15(金) 09:39:10.09ID:mDU8aVUi
>>121
warp divergenceの話じゃないの?
2015/05/15(金) 15:58:50.84ID:pyCNH+0F
>>122
習慣的に(?)「ウォープ・ダイバージェンス」と読み、

http://news.mynavi.jp/special/2008/cuda/001.html

のことのようですね。
2015/05/17(日) 10:18:02.33ID:R3tkd0Ad
>>121
AとB両方実行されるよ
125デフォルトの名無しさん
垢版 |
2015/05/19(火) 21:33:47.52ID:spimwXxa
今まで一つのソースファイルで書いてきたのですが、いい加減見づらくなってきたのでソースファイルを分けてみたところエラーがでたので質問させてください
extern __constant__ unsigned short v[n]; //nは#defineで定義しています。
メインのソースファイルで
__constant__ unsigned short v[n];
と定義し、ビルドすると「メインの方で再定義されている」というエラーが出てしまいます

他にも、__device__ double atomicAdd の定義をサブのソースファイルに書くと
ptxas fatal : Unresolved extern function '_Z9atomicAddPdd'
とエラーが出てしまいます。どうか解決方法を教えてください。

環境は
NVIDIA Nsight Visual Studio Edition v.4.2
CUDA 7.0 Toolkit
のはずです
126125
垢版 |
2015/05/19(火) 21:42:34.97ID:spimwXxa
×CUDA 7.0
○CUDA 6.5
でした
127125
垢版 |
2015/05/20(水) 16:28:14.38ID:MP+tATlH
CUDA5.0以降ではrdcを「はい」にするとファイルの分割が出来るという情報を得たのでさっそく試してみたところ
>>125のエラーは無くなったのですが
1>sub.cu.obj : error LNK2005: "long __cdecl genrand_int31(void)" (?genrand_int31@@YAJXZ) は既に main.cu.obj で定義されています。
上記のような二重定義エラーがいくつか出てきました

また、ヘッダファイルの拡張子を.cuhとしている方を見かけたのですが、.hとの違いはあるのでしょうか?
2015/05/20(水) 22:26:00.46ID:tQNdJIhT
デバイス関数ってインライン展開されるんじゃなかったっけ。
でもって、他のファイルからは使えなかったのでは?
129125
垢版 |
2015/05/20(水) 23:53:16.57ID:MP+tATlH
>>128
ファイルを分割出来ないとなるとすごく不便になので、何かしらの方法があるのでは?と思っています
2015/05/21(木) 04:25:30.08ID:Dige6mTv
とりあえずCUDAの日本語wikiがあるから、そこの分割コンパイルの項目をみたらどうかな?
OSによっては解決できるかも
2015/05/21(木) 09:09:27.02ID:BxelVpyp
cuファイルをcuファイルにインクルードしてみるとか。
132125
垢版 |
2015/05/21(木) 17:23:47.43ID:25nDpRt2
レスありがとうございます

どうやら>>127のエラーはCUDAとは関係なさそうなのでC++のスレで聞いてきます
133125
垢版 |
2015/05/24(日) 22:10:36.84ID:FupD4mQN
>>127の方法で分割コンパイルに一応成功しました!
一応と言ったのはrdcを「はい」にした場合と「いいえ」にした場合とでプログラムの挙動が少し変わってしまうのです
今書いているプログラムは何億回もの計算結果を足し合わせていくものなので、誤差の蓄積による影響を受けていると思います
コンパイルの方法を変えた(?)事で誤差の蓄積が変化(?)し、プログラムの挙動が変わったということなのでしょうか?
コンパイルと誤差がどう関係するのかは分かりませんが
134125
垢版 |
2015/05/24(日) 22:19:49.55ID:FupD4mQN
>>「はい」にした場合と「いいえ」にした場合
ファイルを分割するともちろん「いいえ」では動かないので、一つのファイルで完結しているプログラムでの話です
2015/05/26(火) 06:54:20.42ID:VVQAbCqm
最適化の仕方が変わるのかもね
誤差が出て困るなら、なるべく誤差が少なくなるような組み方を考えるしかない
2015/05/26(火) 07:49:49.21ID:3GnQrGbV
誤差にも種類があるが・・・
浮動小数点演算等の誤差なのか
同期ミスによる誤差なのか・・・
2015/05/26(火) 22:03:46.38ID:f2qMZr+T
>>135
かもね
今はatomicAddをそのまま使っているので、情報落ちをなんとかして誤差は減らす予定です

>>136
原因と結果の関係性が分からないのでなんとも言えないです
ちなみに同期ミスによる誤差とは何でしょうか?
2015/05/26(火) 22:55:29.89ID:sIi3toQP
つうか最適化で結果が変わったら
それはバグ以外に無いけどねえ。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況