- 1 名前:デフォルトの名無しさん [2011/08/23(火) 22:08:06.09 ]
- このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。 CUDA使いが優しくコメントを返しますが、 お礼はCUDAの布教と初心者の救済をお願いします。 CUDA・HomePage ttp://developer.nvidia.com/category/zone/cuda-zone 関連スレ GPGPU#5 ttp://hibari.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/
- 159 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 22:05:36.51 ]
- 全スレッドの計算結果を1コアに集約して1スレッドで処理したいんだけどいい方法あるかな?
リダクションのサンプルだと最後はCPUで合計だしこれでは都合悪いんだよね 全てGPUでやりたいのよね
- 160 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 23:20:19.00 ]
- しかたないじゃん、CPUで合計出した方が速いんだから。
- 161 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 23:28:38.68 ]
- >>159
バイナリツリーで足していくしか。 Ex. thread数が64のとき if (threadIdx < 32) data[threadIdx] += data[threadIdx + 32]; __syncthreads(); if (threadIdx < 16) data[threadIdx] += data[threadIdx + 16]; __syncthreads(); if (threadIdx < 8) data[threadIdx] += data[threadIdx + 8]; __syncthreads(); if (threadIdx < 4) data[threadIdx] += data[threadIdx + 4]; __syncthreads(); if (threadIdx < 2) data[threadIdx] += data[threadIdx + 2]; __syncthreads(); if (threadIdx < 1) result = data[threadIdx] + data[threadIdx + 1]; >>160 データ量によってはそうでもないよ。
- 162 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 23:35:14.30 ]
- >>161
>データ量によってはそうでもないよ。 >>159は「1スレッドで処理したい」と言っている。 それに、「計算結果を集約」と言っているだけで足し算とは言っていない。 この条件の下では、データ量が多くなれば多くなるほどCPUで処理した方が速い。 データ数が極端に少なければ、転送時間の関係でGPUでしたほうが速いかもしれないが。
- 163 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 23:40:05.87 ]
- あーそうか、まさか1スレッドだけ動かす方法が判らんと言う話とは思わなかった。
単純に、「CPUで合計」の代わりをやりたいのかと思ったよ。
- 164 名前:159 mailto:sage [2011/11/27(日) 23:55:11.26 ]
- >>160-163
レスサンクス 一度集約して最少二乗法を適用してから再度マルチスレッドで処理しようとしてるんだけど 一度CPUに戻すしかないかな・・・
- 165 名前:デフォルトの名無しさん mailto:sage [2011/11/28(月) 00:02:09.10 ]
- 最小二乗法ならマルチスレッドでできるじゃん。
- 166 名前:デフォルトの名無しさん mailto:sage [2011/11/29(火) 03:07:20.82 ]
- リダクションしろよ
1ブロック分しかできないってこと?
- 167 名前:デフォルトの名無しさん mailto:sage [2011/11/29(火) 10:48:39.03 ]
- サイズが決まっている3次元配列どうしの演算で演算回数も決まっているんだけど、
ブロック数とスレッド数を調整して演算回数ぴったりにするとコアレッシングしなくて効率悪いんだ。 こーいう時ってどゆアプローチ?
- 168 名前:デフォルトの名無しさん mailto:sage [2011/11/29(火) 14:42:48.05 ]
- CPUで計算させてみる
- 169 名前:デフォルトの名無しさん mailto:sage [2011/11/29(火) 15:26:04.48 ]
- もちろんCPUでは計算させてみてるよぉぉん(><)
1つ目の演算対象配列はギリギリL2に乗らないサイズ、2つ目の配列はVRAMにも乗らないサイズなので悩んでる。
- 170 名前:159 mailto:sage [2011/11/29(火) 16:52:31.44 ]
- もっと良いCPUかGPU買え
- 171 名前:デフォルトの名無しさん mailto:sage [2011/11/30(水) 02:20:28.60 ]
- >>159
同じブロック内の複数スレッドは共有メモリで集約できるけど、 ブロックをまたがっての集約ができないってこと? 手元のコードではブロック数の一時保存のための領域を確保し そこにブロックごとの結果を放り込むカーネルを起動し、 次にブロック数が1、スレッド数が前のカーネルのブロック数の カーネルを起動。その中でさらに集約して結果を1つにまとめている。 カーネル2回起動よりもCPUでやらせた方が速いかもしれないが。
- 172 名前:デフォルトの名無しさん mailto:sage [2011/11/30(水) 04:29:51.70 ]
- code.google.com/p/thrust/
のリダクション使ってみれば? 中身で何やってるかはよくわからんが
- 173 名前:デフォルトの名無しさん mailto:sage [2011/11/30(水) 08:40:15.94 ]
- カーネルの中で関数作って足せばいいんじゃない
threadが終わったら自作関数に投げて足すとか バリアがいるけど
- 174 名前:デフォルトの名無しさん mailto:sage [2011/11/30(水) 08:52:34.48 ]
- 微妙に話が噛み合っていない悪寒。
つーか、>159が混乱に輪を掛けているし。
- 175 名前:159 mailto:sage [2011/11/30(水) 10:04:46.33 ]
- 各スレッドでサンプリングされたXiとYiを使って
Σ(Ai*Xi-Yi)^2を計算して最小化するパラメータのAiを求めたいんだよ 求まったAiを使ってまたGPUでマルチスレッドで処理をするから CPUに戻したくなかっただけ 戻せばできるのは分かるけど、戻さないでできるならその方がいいと思ったわけね
- 176 名前:やんやん ◆yanyan72E. mailto:sage [2011/11/30(水) 10:24:24.37 ]
- なんか式がおかしい、Ai=Yi/Xi なんて答えを求めたい訳じゃなかろう?
- 177 名前:159 mailto:sage [2011/11/30(水) 11:22:19.91 ]
- >>176
うん 正確には多項式近似の最小二乗法 めんどいので略した
- 178 名前:171 mailto:sage [2011/11/30(水) 14:43:43.94 ]
- >>177
非線形最小二乗法ってこと?非線形最適化法しか知らないけど、目的関数が 特殊な場合にそれを上手に利用したのが非線形最小二乗って理解。 手元では対数尤度(二乗和みたいなもの)を171の手順で計算する関数を CUDAで書いて、MCMCの中で使って推定値を求めているけど、同じことは 最小二乗法でもできると思うんだが…。
- 179 名前:159 mailto:sage [2011/11/30(水) 14:50:41.39 ]
- >>178
カーネルの二度起動だよね? その方法でもできると思うけど、一度で済ませたいというのがニーズ それよかMCMCをマルチスレッドでやるってのが分からんのだが… あれはマルコフ連鎖だからほとんどマルチスレッドで効果上がらんだろw
- 180 名前:178 mailto:sage [2011/11/30(水) 15:21:59.61 ]
- >>179
こちらも一度の起動で済ませたかったけど方法が分からなかったので、 分かったら是非報告よろしく。 尤度の計算対象とするデータ数があまりにばかでかくて…。マルコフ連鎖は 順次計算だけど、その中の並列化は相当のメリットがあってね。
- 181 名前:やんやん ◆yanyan72E. mailto:sage [2011/11/30(水) 16:50:24.20 ]
- >>179
二度起動がいやなら、ここの ttp://neuralgorithm.org/documents/global-thread-synchronization-on-cuda-ja/ globalsyncみたいなのを使って計算→集計→計算って やらせればいいんだろうけれど、 なんか怖いなw
- 182 名前:デフォルトの名無しさん mailto:sage [2011/11/30(水) 16:50:29.44 ]
- CUDA Visual Plofiler への入力ファイル(cpjファイルとcsvファイル)をコンソールを使って作成したいのですが、可能でしょうか。
GUI環境ではメモリが足りず実行できないプログラムのビジュアルプロファイルを取りたいのですが…
- 183 名前:デフォルトの名無しさん mailto:sage [2011/12/02(金) 18:08:55.43 ]
- linuxで4.0のtoolkitを導入した時に古いものをリムーブするかと出てきたのでyesを選んだのですが、もしかして同じ階層のものを全部削除とかしています?
X windowすら上手く開かなくなったのですが…
- 184 名前:デフォルトの名無しさん mailto:sage [2011/12/03(土) 18:12:31.51 ]
- unixは知らんけど、windowsだとインストールしたファイルしか消されないよ
新しいの入れる度に毎回cl.hppを手動で追加してるけど、 アンインストールしてもそれだけ残ってる
- 185 名前:デフォルトの名無しさん mailto:sage [2011/12/03(土) 18:46:52.04 ]
- Toolkitを入れたからじゃなくて、Driverを入れたからじゃね?
Driverを入れるときにroot権限がないとXのconfigを更新できないから。
- 186 名前:デフォルトの名無しさん [2011/12/06(火) 06:03:27.50 ]
- 4.1 RC2
| NVIDIA Developer Zone developer.nvidia.com/cuda-toolkit-41
- 187 名前:デフォルトの名無しさん mailto:sage [2011/12/06(火) 10:46:45.36 ]
- 蔵人にメル栓抜きツイスターきたのか
- 188 名前:デフォルトの名無しさん mailto:sage [2011/12/06(火) 11:57:45.78 ]
- コンパイルどれくらい早くなってんのかな
VCでコンパイルしてて小さなcuファイルでも数秒待たされるのがガチでイライラするんだけど
- 189 名前:デフォルトの名無しさん mailto:sage [2011/12/06(火) 12:05:12.77 ]
- vcでコンパイルしているなら、変わるわけないだろ。
vsからnvccを起動しているなら兎も角も。
- 190 名前:デフォルトの名無しさん mailto:sage [2011/12/06(火) 12:18:58.00 ]
- cuファイルとcppファイルに分けるのはどういう意図があるんでしょうか?thrustって何に使えるんですか?
- 191 名前:デフォルトの名無しさん mailto:sage [2011/12/06(火) 12:26:24.32 ]
- >>190
・nvccに任せておきたくない部分は、.cppに書く。 ・抽象的に取り敢えず書くのに便利。
- 192 名前:デフォルトの名無しさん mailto:sage [2011/12/06(火) 16:39:18.49 ]
- cuにkernel_foo()を書いて
cppに書いたfoo()からkernel_foo()を呼ぶのが定石かと思ってた そうすればopenclに移行したりしてもocl_kernel_foo()を呼び出すようにすれば変更すくないし。
- 193 名前:デフォルトの名無しさん mailto:sage [2011/12/06(火) 17:11:07.38 ]
- >>192
その定石に則れば、>191の前半を満たせるから問題ないよ。 ただ、それだとCPU側とGPU側で共通のロジックを更に別のソースに書かないといけなくなるから適材適所だと思う。
- 194 名前:デフォルトの名無しさん [2011/12/07(水) 00:20:58.16 ]
- 青木氏の本読んでも、ガイド読んでも、くすだれcudaを見ても全くわからなかったので質問します。
おそらくwarpの話で、cudaをまったく分かっていないゆえの質問だと思います。 cudaのデータの取扱いを調べるために、以下のような構造のデータをGPU側に送り、 typedef struct data{ int i,j; //初期化でi=1,j=0 }DATA; Grid1コ,ThreadBlock1コ,総Thread数512コと指定して、以下のようなコードを実行させました。 __global__ void test(DATA *A){ int i = blockDim.x*blockIdx.x + threadIdx.x; if(i%2==0){//threadIdの奇遇でiの値及び加算値を変更 A->i=2; A->j+=1; }else{ A->i=3; A->j+=2; }} 5,6回実行して、iの値はthreadの総数を奇遇どちらにしても3で不変でした。 jの値は実行するたび値が異なり、j=3,5,7,9のいずれかになりました。 iの結果は各warpの32コのThreadが順次if文を実行してて、 idが奇数のときの場合が後に実行されるから、結果がi=3となるのか?という理解でよろしいのでしょうか。 また、jの結果は青木氏の言う「加算命令を実行した結果は有効なスレッドに対してのみ反映される」 の理解がいると思うのですが、そもそも有効なスレッドがどう判定されているのかわかりません。 また512コのthreadがあるのに、jの値の結果が10以下になるのはどうも腑に落ちません。 i,jの値を決めているものは何か、ご教示願います。
- 195 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 00:45:36.69 ]
- +=で同じアドレスに同時書き込みしてるから
- 196 名前:デフォルトの名無しさん [2011/12/07(水) 01:09:59.92 ]
- >>195
+=で同じアドレスに同時書き込みすると、内部で何が起こるんですか?
- 197 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 01:27:31.21 ]
- 競合状態が発生してんじゃないの?
atomic演算とか同期が必要だと思うよ。 512スレッドで同一アドレスの変数の読み書きしてんだから。 まず512個の要素の配列作って、添え字にスレッド番号(上のi)を指定して確認してみたら? 書籍ならcuda exampleも買って読むといいかもね
- 198 名前:デフォルトの名無しさん [2011/12/07(水) 02:05:18.21 ]
- >>197
>競合状態が発生してんじゃないの? >>195のコメと合わせて考えるに、なんとなく予想はしてましたけど、取り合いになってるんですね... >atomic演算とか同期が必要だと思うよ。 まだザックリとしか勉強してないので、atomic演算は知らなかったです。あとで試してみます。 同期を行う場合だったら、どうすればいいのだろう。 >まず512個の要素の配列作って、添え字にスレッド番号(上のi)を指定して確認してみたら? それは分岐条件がきちんと実行しているのか見るためのテストをしたとき確認しました。
- 199 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 07:39:11.25 ]
- 根本的にプログラミングの基礎が抜けている悪寒。
- 200 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 09:07:22.99 ]
- >>198
atomicという排他的処理を知らないのなら並列化プログラムをやるのは早すぎる。 増してCUDAという特殊な並列化をやるのはもっと早すぎる。
- 201 名前:デフォルトの名無しさん [2011/12/07(水) 12:02:55.64 ]
- >>199
どこまで戻ればいいんでしょうか... >>200 ...これ使って課題提出しなきゃならんので、早すぎると言われても後に引けないです...
- 202 名前:デフォルトの名無しさん [2011/12/07(水) 13:13:17.16 ]
- >>198
>>201 ですけど、 >>200の"atomicという排他的処理を知らないのなら並列化プログラムをやるのは早すぎる。" では並列化プログラムをやるにあたり、 どういったことを勉強して、どういった手順でやればいいんでしょうか? そこがよくわからず、私はいきなりcudaに突っ込んだので四苦八苦してるわけですが...
- 203 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 14:10:39.88 ]
- >>202
同期とロック
- 204 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 15:51:27.47 ]
- 青木本読んだんじゃないのん?
x+=1ってのは 1.xを読み出す 2.読み出した値に1を加算する 3.結果をxに格納する って手順なんだけど以下略
- 205 名前:デフォルトの名無しさん [2011/12/07(水) 16:45:28.63 ]
- >>203
同期とロックですか。勉強します。 >>204 青木本は読みましたけど、ものにしたっていう状態じゃないです... >x+=1ってのは... 普段、なんとなく使ってるので... 勉強不足ですみません。
- 206 名前:デフォルトの名無しさん [2011/12/07(水) 17:29:38.47 ]
- ここの一番下に載ってる資料の4-7ページにatomicの説明が少しある。
ttp://accc.riken.jp/HPC/training.html
- 207 名前:デフォルトの名無しさん [2011/12/07(水) 17:58:07.38 ]
- >>206
ありがとうございます。参照します。
- 208 名前:デフォルトの名無しさん mailto:sage [2011/12/07(水) 23:52:25.72 ]
- この本でも読んでみると良い。
日本語でわかりやすい。 www.amazon.co.jp/gp/product/4798014621/
- 209 名前:デフォルトの名無しさん [2011/12/08(木) 00:42:53.72 ]
- >>208
ありがとうございます。明日早速本屋行ってきます。
- 210 名前:デフォルトの名無しさん [2011/12/08(木) 17:37:10.02 ]
- 久しぶりに新しいCUDAの本が出たようだ。
www.amazon.co.jp/dp/4906608000/ref=cm_sw_r_fa_dp_454Zob03VNZ25
- 211 名前:デフォルトの名無しさん mailto:sage [2011/12/08(木) 18:59:25.20 ]
- >>210
グラフィックをメインにしてCUDAを道具としてこれから使おうとする人にはいいかも? 3章第3項がCUDA入門。第4項の「応用プログラム」でおもしろい話が読めたらいいね。 こっち(2011/11/14発売)も気になったけど、内容説明読んだだけじゃどの程度の本なのかわからなかった。 値段とタイトルからはちょっと期待させられる。 Amazon.co.jp: CUDA Application Design and Development: Rob Farber: 洋書 www.amazon.co.jp/CUDA-Application-Design-Development-Farber/dp/0123884268/
- 212 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 05:54:08.89 ]
- CUDAというかVisualStudioが分からない。鬱だ死のう。
- 213 名前:デフォルトの名無しさん mailto:sage [2011/12/09(金) 09:40:45.47 ]
- VSがわからないんじゃなく、C++がわからないんだろ
- 214 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 23:39:15.74 ]
- fortranもここでいいかな?
pgiのコンパイラ買って、三重ループの前後に指示行追加してやったけどまったく速くならない。憂鬱。。
- 215 名前:デフォルトの名無しさん mailto:sage [2011/12/11(日) 23:56:05.05 ]
- fortran使う人って量子論とかやってる人?
どの世界の人が使うのかしら?
- 216 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 08:31:48.58 ]
- fortranを使うのは過去の遺産のためだろう。
fortranを使えば速くなるわけでもないしなあ。
- 217 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 09:39:06.64 ]
- fortran懐かし過ぎる
先日、二度と使うことは無いと思って本を捨てたばっかりだわ
- 218 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 20:09:34.35 ]
- 高レベル言語使うのは時代の趨勢じゃないかな。
LAPACKはfortranで書かれている。 fortranはnvccよりもアプリケーションに近い。 CUDAを使うのにnvccのレベルでなきゃダメということは無いと思う。 逆に、nvcc使わない人をバカにするヤツは、本物のバカだと思う。
- 219 名前:デフォルトの名無しさん [2011/12/12(月) 20:20:14.55 ]
- 道具にこだわることが目的となって、肝心の結果を出せない人間を馬鹿というでは?
- 220 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 21:18:03.01 ]
- TSUBAME2.0でnvccを使うのと京でfortran使うのと比べるとどうなんだろう。
京はSPARCだけで計算して、TSUBAME2.0の10倍くらいの速度みたいだ。 東工大は教育機関なのに対して、理化学研究所は結果を求められる独立行政法人。
- 221 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 22:25:59.20 ]
- 既存のコードを使う限りでは京のほうが速いだろう。
ただ、富士通のコンパイラがダメダメだと聞いたけど、 それは解消されたのかな?
- 222 名前:デフォルトの名無しさん [2011/12/12(月) 22:29:03.43 ]
- 富士通のコンパイラは、8コアCPUへの割り当ては自動らしい。
これ、すごいことだと思うんだけど、 このコンパイラは完成しているのだろうか。
- 223 名前:デフォルトの名無しさん mailto:sage [2011/12/12(月) 22:46:19.38 ]
- >>222
openMPに対応してたら各CPUのコアへの割り当ては普通にコンパイラ側でやると思うけど?
- 224 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 11:47:52.86 ]
- >>223
OpenMPがそんな事やるかよ。やるのはOSだぞ。 >>222が言っているのはNUMAのことだ。 現時点でも普通のLinuxならnumactlを使えばかなりのケースでノードの割り当てができるようになる。 CUDAを使う場合でも、複数GPUを使う場合に、MPIを使う場合に有効だ。
- 225 名前:やんやん ◆yanyan72E. mailto:sage [2011/12/13(火) 14:16:05.38 ]
- なんだ?OpenMPやNUMAを何のことだと思ってるんだ?
というか釣られたか?
- 226 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 17:55:43.92 ]
- >>222
> これ、すごいことだと思うんだけど、 スパコンの世界では、ずうううっと前からやってるんじゃない?
- 227 名前:デフォルトの名無しさん mailto:sage [2011/12/13(火) 20:56:29.90 ]
- じゃあ、そろそろ俺らも本気出すか
- 228 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 09:03:43.27 ]
- >>227
本気だしたら、負けだと思うんだ。
- 229 名前:デフォルトの名無しさん [2011/12/14(水) 20:16:13.92 ]
- 4Gamer.net ― NVIDIA,CUDA 4.1をリリース。CUDAコンパイラのソースコード公開も
www.4gamer.net/games/076/G007660/20111214033/ 中国時間2011年12月14日,NVIDIAは「CUDA 4.1」をリリースした。 最大の注目点は, LLVMベースとなるCUDAコンパイラが搭載されそのソースコードが公開された点だ。 LLVM(Low Level Virtual Machine)はAppleなどが参加する“言語非依存”のコンパイラ環境だ。 NVIDIAは同時に「CUDAプラットフォームのオープン化」を明言し, LLVMベースとなるCUDAコンパイラのソースコードを研究者やツールベンダーに公開している。 要するに,NVIDIAのGPUでしか利用できなかったCUDA環境がほかのCPUやGPUに広がっていく可能性が出てきたのだ。 たとえばCPUや,それこそRadeonなどの他社製GPUでもCUDAを利用できる可能性が出てきたわけで, CUDAの標準化をさらに推し進める起爆剤となり得るのである。
- 230 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 22:38:03.27 ]
- これって、個人でもソースもらえるのかな
- 231 名前:デフォルトの名無しさん mailto:sage [2011/12/14(水) 23:11:41.54 ]
- へえ、ソースを公開したんだ。
でも思いっきりOpenCLとかぶるな。 OpenCLが死亡か。
- 232 名前:デフォルトの名無しさん mailto:sage [2011/12/15(木) 08:04:39.43 ]
- なんで、OpneCLが死亡するんだ?
- 233 名前:デフォルトの名無しさん mailto:sage [2011/12/15(木) 11:54:57.42 ]
- まだ来てなくない?
- 234 名前:デフォルトの名無しさん mailto:sage [2011/12/15(木) 11:59:38.42 ]
- Radeon用CUDA作っても、特定の機種用になりそうだな
- 235 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 02:35:32.30 ]
- そもそもRADEON上でCUDAってマトモに動くのか?
一応HD3000世代のRV670からはFP64対応らしいが
- 236 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 02:14:51.68 ]
- 動かないよ
動かそうとする人も現時点ではいないだろ まだまだGPGPU向けには問題ありそうだし
- 237 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 01:48:20.74 ]
- cudaスレだが、
研究室や自分の周りでけで高速化すればいいんだったらcudaでいいんだろうけど 製品に組みこむならintelの普及度やなるべく多くの人に使ってもらえることを 考えるとOpenCLのほうがいいんじゃないかと思ってる。 photoshopのGPU対応もOpenCLでやってるみたいだし。
- 238 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 03:10:58.69 ]
- Photoshopは現状CUDAとATi Streamです
高速化しようとすると結局はデバイス毎に最適化したプログラムを書くことになるので、 デバイスに特化したライブラリの方が融通が利きます Parallel NsightでのデバッグはOpenCLではできません
- 239 名前:デフォルトの名無しさん [2011/12/20(火) 03:38:50.36 ]
- NVIDIA Opens Up CUDA, Compiler Source Code is Out - Bright Side Of News*
www.brightsideofnews.com/news/2011/12/19/nvidia-opens-up-cuda2c-compiler-source-code-is-out.aspx
- 240 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 18:56:37.44 ]
- CUDAのハードウェア種別を問わない展開が可能になったという事は、
CUDAの上に乗っかる形で実装されているPhysXやOptiX等もまた ハードウェア種別を問わず動作可能になる可能性があるという事だよな 期待したい
- 241 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 22:23:45.55 ]
- 別にソースコードなくたって、ある程度の知識を持った人なら
CUDAを移植できたと思うけど
- 242 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 22:49:46.93 ]
- RADEONでPhysXはマーケティングの理由で使えないんだろ?
- 243 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 23:19:03.65 ]
- AMDがCUDAを実装されるの嫌がってPhysX蹴ったんだっけ
- 244 名前:デフォルトの名無しさん [2011/12/21(水) 19:57:27.52 ]
- 質問:
GPU側に2次元配列を送るには、 1.2次元を1次元に直してからcudaMallocでメモリ確保→cudaMemcpyで送信 2.cudaMallocPitchでメモリ確保→cudaMemcpy2Dで送信 という2つの方法がありますけど、 構造体のメンバーに2次元配列があるものをGPU側に送る場合はどのようにしたらいいんでしょうか?
- 245 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 20:20:10.20 ]
- ポインタじゃなく配列ならそのままでうまくいかんか?
- 246 名前:デフォルトの名無しさん [2011/12/21(水) 21:23:30.55 ]
- >>244
再度検証してたけど、サジ投げた。 最終的には以下の構造体をGPU側に送信して処理した後、CPU側に戻したい。 typedef struct test{ int a; int b[5]; }TEST; typedef struct data{ int c; TEST d[1][10]; }DATA; 上をcudaMallocでメモリ確保&cudaMemcpy送信しようとしてるけど、違うのかな。 教示お願いします。
- 247 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 21:36:40.66 ]
- そのまま転送すればいいじゃん
- 248 名前:デフォルトの名無しさん [2011/12/21(水) 21:49:19.70 ]
- >>246です。
すいません。できました。お騒がせしました。
- 249 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 08:21:40.56 ]
- >>229
このコンパイラって、謎のCをPTXに変換する部分だけじゃないの? 今のフロントエンド(cudafe)は、他社製品のEDGベースだから、出てこないと思うが。 cudafe -> PTXへのコンパイラ(今だとnvopencc) -> ptxas のまんなかが出来るだけなので、この部分のソースがあったところで、CUDAコンパイラを自分で作れるとか、 CUDAを他のプロセッサで動かせるようになるとかいうものではない。
- 250 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 13:07:41.69 ]
- .cファイルがコンパイルできません
たすけて
- 251 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 13:13:00.92 ]
- んvccじゃできんだよ
- 252 名前:デフォルトの名無しさん [2011/12/26(月) 15:17:58.63 ]
- あの、OpenCLってオワコンなの?IntelとAMDが支持してるのに全然盛り上がってないんだが。
- 253 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 21:25:42.32 ]
- 科学技術計算向けがtesla一択だから他を使う理由もないってっところなのかね。
わざわざcudaで組んだものを他に移植する理由もないだろうし。
- 254 名前:デフォルトの名無しさん [2011/12/26(月) 21:42:01.58 ]
- OpenCLで書くと長くなってしまう。
それだけのこと
- 255 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 02:04:51.35 ]
- C++ Bindings使えよ。
- 256 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 10:05:27.99 ]
- ちょっとしたラッパーかくのも嫌なのか
- 257 名前:デフォルトの名無しさん [2011/12/27(火) 11:26:29.65 ]
- 超素人の質問です。
コマンドラインでnvccを使いコンパイルを行っているのですが、OpenGLのサンプルコードをコンパイルできません。 freeglutを入れてます。 gcc -lglut program.cではコンパイル可能でした。 しかしnvcc -lglut program.cuとするとコンパイル不可となります。 -Lや-lによってライブラリやヘッダファイル先を指定したところで、コンパイルできませんでした。 阿呆な質問かもしれませんが、自己解決できそうにないのでよろしくおねがいします。
- 258 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 11:33:58.46 ]
- 凄いアフォだな
エラーメッセージすべてコピペし
- 259 名前:帝徒=繪璃奈=啓北商業の野島えり [2011/12/27(火) 14:53:52.03 ]
- 主犯 少頭劣一族=蔗冽一族とは
中国 華喃の山の梺の村八分の家。 二間位の横長で玄関の右側がお勝手。 大正に猿のままで生まれたのが 鈴木あゆみ(网(アミ) 范襤の子) フィリピン人の范襤と 同じくフィリピン人のモンゴルに逃げた『シバ』との間の男児。 日本名 鈴木ひろしと聞いた。 その後、親戚の鈴木大樹を殺し 戸籍を使用。 今は一文字 雉。
|

|