- 1 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 11:13:52 ]
- このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。 CUDA使いが優しくコメントを返しますが、 お礼はCUDAの布教と初心者の救済をお願いします。 CUDA・HomePage www.nvidia.com/cuda 関連スレ 【GPGPU】NVIDIA CUDA質問スレッド pc11.2ch.net/test/read.cgi/tech/1190008468/ GPUで汎用コンピューティングを行うスレ pc11.2ch.net/test/read.cgi/tech/1167989627/ GPGPU#2 pc11.2ch.net/test/read.cgi/tech/1188374938/
- 280 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 17:47:00 ]
- __global__な関数から__device__の関数を<<<>>>で呼ぶことはできない。
- 281 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 09:40:52 ]
- ちょっと質問させてくらさい。。
8ストリーミングプロセッサ(SE)単位で構成されている ストリーミングマルチプロセッサ(SM)でのことなのですが、 グローバル(ローカル)メモリ上へのデータのロード、 ストア命令は100サイクル以上かかってしまいますよね。 その間、8つのストリーミングプロセッサはおお休みしている のでしょうか? それとも、他のWarpのインストラクションが割り当てられたり するのでしょうか。そうであるといいのですが、 そうするとSharedメモリがあとからのWARPにのっとられてしまって まずそうですよね??? レジスタ的には32bit×2048本あるようなので(280の場合) OKそうですが、Sharedメモリは16KBytesしかないし。 実際LD、STに160サイクルぐらいくったら、 160命令ぐらい無駄にしちゃって効率をかなり落としてる気がするので、 なんかやです。 24WARPぐらい、バッファリングしていて、割り当てられるWARPを out of oderで実行するという記事も、どっかで見たような 気がするのですがSharedメモリがじゃまして無理があるような・・・ なんか良い方法があるのかな??? っていうか、なにか根本的な部分で俺の勘違い?
- 282 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 10:12:52 ]
- ・グローバルメモリアクセスは、最大400(?)クロック掛かるが、最短では4クロックで済む。
# そのためには、coalescedにアクセスできるように工夫する必要がある。 ・各ストリーミングプロセッサは、独立して動作する。Sharedメモリも同様。 例えば、行列の転置のような処理の場合、普通に書くとcoalescedに読んでincoherentに書かざるを得ない。 # 或いはその逆か。 そこで、CUFFT内で行なっている転置処理では、(プロファイルで見る限り)一旦共有メモリにおいて同期を取ることで、 読み書き共にcoalescedアクセスを維持しているようだ。
- 283 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 18:40:52 ]
- >>282
早速のレス、さんくす。 なるほど、最短4クロックですか。coalescedにしてもレイテンシー だからだめかなって思ったけど、よくよく考えると、DRAMへの直接 アクセスに数百クロックってのはおかしいことに気づいた。 各ストリーミングプロセッサは、独立だけど1インストラクション単位で 同期してるんじゃないんかな(んなことぁない?) ・・・っておもったけどブランチがあるから、TPXレベルから見ると独立か??? 最初見たときSharedメモリも他のSPのregも0レイテンシで使える ようだったんで、演算と独立にグローバルメモリとのロード、ストアができん 16K程度のSharedメモリ、あまり意味ないじゃんとかおもったけど、 そんなことなさそだね。 なかなか面白そうなチップだ。 分岐粒度が32って実際、汎用でどうなんだろ。 ベクトルつかったことないんでわからんが、 適当にセルオートマタでも乗っけて遊んでみまつ。
- 284 名前:デフォルトの名無しさん [2008/11/12(水) 22:42:34 ]
- CUDA-Zなんて便利なものがありました。
forum.nvidia.co.jp
- 285 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 22:55:32 ]
- >>284
kwsk
- 286 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 23:19:24 ]
- ttp://cuda-z.sourceforge.net/
- 287 名前:デフォルトの名無しさん [2008/11/14(金) 19:39:30 ]
- あげてすまん。
CUDAのためにGTX280つきのPCかったのだが ほかにもう一枚グラボ買わないといけんのかな? あとPCIバスしか残ってないのだが・・・ LINUXで使う予定。
- 288 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 22:57:10 ]
- >>287
別に一枚でも大丈夫。二枚挿しても(開発には)却って面倒だったり。 まぁ、二枚あれば表示に足引っ張られる心配なくなるから安定はするけどね。
- 289 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 00:41:03 ]
- >>288
そうなのか、安心した。 ありがd
- 290 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 17:39:36 ]
- 質問です。
float にてゴリゴリ計算して、結果を返すプログラムを書いてみたのですが、 普通のアルゴリズム、CUDA+GPU、CUDA+CPU(deviceemu) の2つで比較して みたところ、思ったより差が大きいのですが、こんなもんですか? もしくは、機種依存があったりするんでしょうか?
- 291 名前:290 mailto:sage [2008/11/15(土) 17:40:23 ]
- >>290
すいません、間違えました。 「2つで比較して」->「3つで比較して」
- 292 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 19:43:01 ]
- 何の差?
演算精度なら、そりゃぁあるさ、floatなんだもの。
- 293 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 20:51:43 ]
- ホストは、デフォルトではfloatをfloatで計算してくれないからな。
SSEを使うなりで、ホストがちゃんとfloatで計算すれば、結果は一致するんジャマイカ?
- 294 名前:デフォルトの名無しさん mailto:sage [2008/11/15(土) 20:57:47 ]
- >>293
一致する保証はないよ。CUDAのドキュメントにもあるけれど、超越関数はGPU内部の組み込み版を使うと若干誤差が残る。 いずれにしてもfloatの想定の範囲内だから、実用上は問題にならないけどね。
- 295 名前:,,・´∀`・,,)っ-●◎○ mailto:sage [2008/11/15(土) 22:26:10 ]
- x87 SSE CellB.E. CUDA の浮動小数サポートの対比表みたいなのがCUDAのマニュアルにあったな。
確かに完全じゃない。 糞まじめに準拠してるのはx87くらいだ
- 296 名前:290 mailto:sage [2008/11/16(日) 02:56:28 ]
- >>292-295
なるほど。出てきた結果が、CPU上の double で計算した結果と、 GPUの float で計算した結果が、最大1%程度違ったから、正直 驚きました。普段doubleしか使って無くて、誤差なんかほとんど 気にしなくてよかったので。 誤差が蓄積してくようなタイプのアルゴリズムではないと思っていた だけに、少し驚きました。
- 297 名前:デフォルトの名無しさん [2008/11/20(木) 18:53:51 ]
- Cで使っていた自作ライブラリは、
nvccでコンパイルし直さなきゃダメなの?
- 298 名前:,,・´∀`・,,)っ-○◎- mailto:sage [2008/11/20(木) 18:58:40 ]
- 食べてみたけどおいしかったよ。
一つどうぞ、あーんして
- 299 名前:,,・´∀`・,,)っ-●◎○ mailto:sage [2008/11/20(木) 19:44:47 ]
- 飾りだ、食うなボケ。
- 300 名前:,,・´∀`・,,)っ---- mailto:sage [2008/11/20(木) 21:36:00 ]
- 僕のもうないです
>>299から貰ってね
- 301 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 23:10:32 ]
- >>297
ホスト(CPU)上で実行させるものならVC++と一緒にリンクできる。 (cppIntegrationサンプル参照) GPU上で実行させたいならそれなりにいじくらないと無理。
- 302 名前:デフォルトの名無しさん mailto:sage [2008/12/01(月) 15:16:29 ]
- -deviceemuでは動くプログラムが、GPUを使うと誤動作します。
__device__関数に引数が一部しか渡らなくなります(float4のz成分だけしか渡せない) ループ回数を極端に減らすと改善されるのですが、これはregisterメモリがパンクしてしまったということでしょうか?
- 303 名前:デフォルトの名無しさん mailto:sage [2008/12/01(月) 17:15:56 ]
- ソースを見ないとなんとも言えませんが、ループ回数とregisterは依存関係にはありません。
nvcc -ptxでptxファイルを出力して眺めてみては如何でしょう。
- 304 名前:デフォルトの名無しさん mailto:sage [2008/12/01(月) 23:02:30 ]
- ptxファイルですか。。。
正直どこをどう見たらいいのかわからないので敬遠していましたが、 遂に避けられないとこまで来てしまいましたかねえ。 見るべきポイントとかありましたら、よろしければ教えてください。
- 305 名前:,,・´∀`・,,)っ-●◎○ mailto:sage [2008/12/01(月) 23:09:56 ]
- ptxもネイティブコードじゃなしに中間コードの断片だからな。
レジスタが何本割り当てられるかとかそういった情報すら持ってないから困る。 その点Larrabeeは16本+16本+αとかレジスタ本数が決まってて コード生成時点で割り当てが決まってしまう。 結果的に静的な最適化がしやすい。 良し悪し。
- 306 名前:デフォルトの名無しさん [2008/12/02(火) 13:02:50 ]
- リョウテニ●ヽ( ・∀・)ノ● CUDA!
- 307 名前:デフォルトの名無しさん mailto:sage [2008/12/03(水) 17:58:11 ]
- .oとかにしてgccでリンクすることってできますか?
- 308 名前:デフォルトの名無しさん mailto:sage [2008/12/04(木) 00:09:51 ]
- >>307
何を? どこで? なんで質問もろくにできないの? ちなみに、エスパー募集ならお門違い。
- 309 名前:デフォルトの名無しさん mailto:sage [2008/12/04(木) 00:52:30 ]
- >>307
普通にできますよ。 -l/usr/local/cuda/lib -lcudart 等のオプションは当然自分で追加する必要があります。
- 310 名前:デフォルトの名無しさん mailto:sage [2008/12/04(木) 06:13:34 ]
- Windowsで、とかいう話だったりしてね。
- 311 名前:デフォルトの名無しさん mailto:sage [2008/12/04(木) 10:05:39 ]
- .objじゃなくて.oって書いてあるんだからそれはないんじゃない?
- 312 名前:デフォルトの名無しさん mailto:sage [2008/12/04(木) 22:31:14 ]
- それだったらわざわざ聞くかねぇ。まぁいいか。
- 313 名前:デフォルトの名無しさん mailto:sage [2008/12/12(金) 18:47:36 ]
-
【GPGPU】CUDA/ATI STREAM 速度・画質検証スレ pc11.2ch.net/test/read.cgi/jisaku/1228764782/
- 314 名前:デフォルトの名無しさん mailto:sage [2008/12/14(日) 19:30:29 ]
- これからCUDAを始めようといろいろサイトを巡回しているのですが、
グリッドサイズとブロックサイズはどのようにして決めたらいいのでしょうか? 同期をとるかとらないかで変わると思いますが、とりあえずとらない場合でお願いします。
- 315 名前:デフォルトの名無しさん mailto:sage [2008/12/14(日) 20:41:30 ]
- >>314
BlockSize(スレッド数)は32の倍数で余り大きくない辺り。GridSize(ブロック数)は充分大きく。
- 316 名前:デフォルトの名無しさん mailto:sage [2008/12/14(日) 21:31:49 ]
- >>315
ありがとうございます。 もう一つ質問させていただきたいのですが、たとえば、512x512のようにブロックサイズ、グリッドサイズ ともに最大値未満の場合、<16, 32, 1>のように複数の次元に分けるのと、<512, 1, 1>のように1つの次元 にまとめるのとどちらがいいのでしょうか? 多分通常はブロックサイズは各次元の最大値<512, 512, 64>をオーバーすることが多いと思うので、こちらは 分けることになると思いますが、グリッドサイズの最大値は<65536, 65536, 1>もあるので、 次元を分けなくてもいいときは分けない方がいいのでしょうか?
- 317 名前:デフォルトの名無しさん mailto:sage [2008/12/14(日) 22:01:51 ]
- threadサイズが実際の分散処理の単位になる
つまりthread数だけ並列演算が行われる 例えばthread(1)にしてblock(10)とかだと順次処理と変わらない ただしthreadは256までしか出来ないのでblockという単位が容易されてる blockは単にプログラムがやりやすいように用意されただけのもので 実際に分散処理には影響しない
- 318 名前:デフォルトの名無しさん mailto:sage [2008/12/14(日) 22:15:42 ]
- >>316
言いたいことがよく判らんが、演算量が512x512ならブロックを8x8にしてグリッドを64x64でいいんでない? 或いはxyの区別が重要でないならブロックを64、グリッドを4096とか。 私は後者の方針でptxファイルの出力とプロファイルの結果を睨みながら決定することが多いけど。 # 横着するときは前者だなぁw
- 319 名前:デフォルトの名無しさん mailto:sage [2008/12/14(日) 22:17:30 ]
- >>316
単に内部ループが for(x=0;x<?;x++){} _global_ か for(x=0;x<?;x++){ for(y=0;y<?;y++){ _global_ } } になるかの違い
- 320 名前:デフォルトの名無しさん mailto:sage [2008/12/14(日) 22:24:34 ]
- 元の位置を特定する為にglobal関数でインデックスを計算することになるから
もしxやyのどちらかで収まるなら1つだけ使うのが良い global関数内部の計算コストが一番ネックになる部分だからね インデックスの計算部分が一番邪魔で削れるだけ削った方が良い
- 321 名前:デフォルトの名無しさん mailto:sage [2008/12/14(日) 22:35:25 ]
- >>317,319
ありがとうございます。ようやく喉のつっかえが取れました。 >>318 試しに昔書いた画像処理のコードを移植しようとしていたのですが、入力によって いろいろサイズが変わるので、512x512で固定するのはちょっとやりづらいかなと… ただ、ここまでの話からするとchannel(RGB)*height*widthの三次元配列に画像をつっこんで、 grid = <height, channel, 1> block = <32, width / 32, 1> で処理を回せそうですね。画像の幅をを32の倍数に合わせる必要はありそうですが。 >>320 ありがとうございます。実際に使うときは上のような感じにブロックとグリッドの数を決めようかなと 思いますが、どうでしょうか?
- 322 名前:デフォルトの名無しさん mailto:sage [2008/12/14(日) 22:59:47 ]
- heightは超えてもいいの?
範囲は内部でインデックスが範囲かどうか判定するよりは 端数を含めたメモリを確保して必要無い部分も計算させてしまった方が速いよ
- 323 名前:デフォルトの名無しさん mailto:sage [2008/12/14(日) 23:22:38 ]
- >>322
そこまで大きな画像を入れるかどうかは分かりませんが、確かに高さが65536を 超える場合は分割してやる必要がありますね。 >端数を含めたメモリを確保して必要無い部分も計算させてしまった方が速いよ ということは、配列にコピーするときに幅を合わせてコピーするのではなく、後ろに空白部分を まとめた方がいいということでしょうか? #これって多次元配列を引数に渡すのってどうするんだろう…
- 324 名前:デフォルトの名無しさん mailto:sage [2008/12/15(月) 00:01:31 ]
- いや、最終的には全て一次元の配列でそれが適切な間隔でアクセスされるように並んでいるのが一番いいことになる。
だから、画像なんかの場合だと座標値に意味がないなら詰め込んで構わない。 実際には、コンボリューションフィルターなどで隣の画素を参照しないといけないことが多いだろうけど、 その場合はどうせ共有メモリを使ってアクセスを減らすなどの工夫が必要だからどの途32の倍数に拘る必要はない気がする。
- 325 名前:デフォルトの名無しさん mailto:sage [2008/12/15(月) 00:50:40 ]
- 論文用のならともかく普通の画像処理で画像サイズが固定されてることはまずないし
サイズも共有メモリじゃとても足りない 共有メモリを使うならCPUサイドであらかじめ画像を分割して渡すという方法しかないけど効率悪いよ 毎回隣接した画素情報も含めないといけないから
- 326 名前:デフォルトの名無しさん mailto:sage [2008/12/15(月) 01:06:12 ]
- >>324
カーネルサイズにもよりますが、sharedメモリはちょっとサイズ的にきつそうですね… constantメモリならブロックサイズを調整すれば何とかなるかも? >>325 単なる趣味グラムなので、ぶっちゃけ全部globalメモリからとってきてもいいような気がしたのですが、 逆にそれだとCPUで処理するよりも遅くなりそうですね
- 327 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 01:54:49 ]
- 遅くなりそうというかどんだけがんばっても最終的にはglobalメモリを使うのが一番早いという結論になるよ
まあそれがGPGPUの一番のネックなんだけどね CPUサイドのメモリを共用するようにいずれはなるんだろうけど今の限界はそこ
- 328 名前:デフォルトの名無しさん mailto:sage [2008/12/16(火) 06:11:12 ]
- 一番(手っ取り)早いのは同意するが、一番速いとは限らない。
それこそ、思考放棄じゃないかな?
- 329 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 00:31:55 ]
- 詰まってます、助けて・・・
私はVS2005で開発しようとカスタムウィザードを入れ、ツールキットとSDKをインスコし パスも通したのにLNK1181エラーでるんです・・・存在しないオブジェクトファイルを指定するのはなぜでしょう? ライブラリパスがみつからないってどういうことなんでしょうか?
- 330 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 01:37:50 ]
- "Program" "Files"と認識してるとか
- 331 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 02:38:31 ]
- Windowsってなんで重要なディレクトリ名にスペースなんか入れるんだろう。
MSって頭悪いの?
- 332 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 04:16:06 ]
- 低脳を排除するためかもねw
- 333 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 05:06:25 ]
- プログラマお断り。ずっと消費者で居てくだちい。
- 334 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 06:27:59 ]
- デスクトップやマイドキュメントのスペースや半角カナフォルダはなくなったが、Program Filesはそのままだな。
- 335 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 09:43:22 ]
- >>331
その昔16ビットOSが主流だったころM$は8文字ファイル名しか扱えなかった そしてUnix系OSは既にロングファイルネームに対応していた そこで登場したのが32bit Window 95だった 長いファイル名が使えるんだぞ、凄いんだぞと新発明でもしたかのように宣伝していた そして自慢げにフォルダ名を無駄に長くした
- 336 名前:,,・´∀`・,,)っ-●◎○ mailto:sage [2008/12/20(土) 12:23:53 ]
- VistaはUNIXerには優しくなったな。
上位エディション限定だけどSUAも使えるし
- 337 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 20:39:06 ]
- CUDAをさ、VS2005で使えてる人っているの?
つか、なんで英語のマニュアルしかないんだよ。わかんねーよ
- 338 名前:,,・´∀`・,,)っ-○◎● mailto:sage [2008/12/21(日) 00:44:02 ]
- むしろ2005以外でどうやって使うんだ?
2.1βで2008対応したけど
- 339 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 00:58:06 ]
- >>338
おお、それはいいこと聞いた やっと2005アンインストールできる
- 340 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 01:37:02 ]
- >>338
どこか日本語で環境設定を教えてくれるサイト知ってたら教えてくれ・・・
- 341 名前:デフォルトの名無しさん [2008/12/21(日) 01:55:48 ]
- 環境設定なんか何も要らんがな。スクリプト走らせるだけ。
bashのバージョンによってはウォーニング出るけど、ちゃんと動く。 スクリプト猿にも成れないとは、どんだけゆとり脳なんだよ?スポンジなの?
- 342 名前:,,・´∀`・,,)っ-●◎○ mailto:!sage [2008/12/21(日) 10:35:26 ]
- どのみちあの程度の英語が読めない人に優れたプログラミング書くのは無理だと思うんだ。
俺の私的な業務の手伝いしてくれるなら日本法人さんに代わりにチュートリアルとかの要求 してあげてもいいんだけど、職権乱用か。 >>340 ここで解らなかったらもう諦めたら? chihara.naist.jp/people/STAFF/imura/computer/OpenGL/cuda1/disp_content
- 343 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 11:55:12 ]
- どうでもいいけど、↑のURLは「disp_content」を削らないとエラーになった。
- 344 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 12:58:13 ]
- >>340
サンプルプロジェクトを開いて設定を見て勉強するのがいいよ
- 345 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 12:51:08 ]
- 英語読めないのにプログラミング言語してる男の人って・・・
- 346 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 18:35:50 ]
- 英語に優越感もってるやつって、さもしいな
- 347 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 19:03:01 ]
- >>345
可愛いもんだよねv
- 348 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 23:58:39 ]
- 英語なんて誰でも1ヶ月もあればある程度は読めるようになるよ
出来ないと思い込んでやろうとしないだけで
- 349 名前:デフォルトの名無しさん [2008/12/26(金) 12:46:32 ]
- vs2005の環境で拡張子cuの場合、定義参照はできるのですが、
インテリセンスが機能しません。freeとかvcのランタイムも同様に 機能しないのですが、やり方分かる方いますか? ツール->オプション->テキストエディタ->ファイル拡張子にcu c++として 登録するとできるのは上記だけです
- 350 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 22:27:18 ]
- いっそ、nvccの拡張機能以外は全部cppでやったら?
- 351 名前:デフォルトの名無しさん mailto:sage [2008/12/27(土) 05:03:22 ]
- それがスマートだね
- 352 名前:デフォルトの名無しさん [2008/12/27(土) 17:53:02 ]
- 質問です。
VC++2005で開発する際に、コマンドプロンプトにデバイス名も含め一切文字を表示させたくないのですが、どのようにすればよいでしょうか?
- 353 名前:デフォルトの名無しさん mailto:sage [2008/12/27(土) 18:38:27 ]
- >>352
長いパス名が邪魔なだけなら set PROMPT=$G とか?
- 354 名前:デフォルトの名無しさん mailto:sage [2008/12/27(土) 18:47:25 ]
- >>352
CUTILを使うと標準出力があるって話なら、リダイレクトするかCUTILを使わなければいいと思うのだが。
- 355 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 01:33:08 ]
- プロンプト出したくないって話なら_tmainじゃね
- 356 名前:352 [2008/12/28(日) 02:53:51 ]
- >>353-355
回答ありがとうございます。 >>353 質問があいまいですみません。 パス名が邪魔、ってわけではないです。 >>354 おそらくこの指摘にあてはまるのだと思います。 >リダイレクト リダイレクトしても、コマンドプロンプトに表示が出てしまいます。 >CUTIL cutil.hを使わずに、cutil.hで提供されている関数を使わない方法、もしくは、代替可能なヘッダーファイルはありますか? >>355 _tmainを使ってしまうとWindowsでしか使えないソースコードになってしまうので、別の方法があれば教えてください。
- 357 名前:352 [2008/12/28(日) 02:55:28 ]
- 自己レスですw
誤:cutil.hで提供されている関数を使わない方法 正:cutil.hで提供されている関数を使う方法 の間違いです。
- 358 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 03:10:48 ]
- system("cls");
とか
- 359 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 10:49:28 ]
- >>356
> _tmainを使ってしまうとWindowsでしか使えないソースコードになってしまうので、別の方法があれば教えてください。 Windows かどうかで #ifdef するくらいは許されるんじゃないの?
- 360 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 14:29:28 ]
- プロジェクトの設定でWindowsアプリにすればいいだけでしょ
- 361 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 14:32:32 ]
- >>_tmainを使ってしまうとWindowsでしか使えないソースコードになってしまうので、別の方法があれば教えてください。
mainだろうがWindows依存部分のコードが発生するのは当たり前でしょ CUDAの部分とC++の部分とWindows依存部分とファイルを分離するのが鉄則だよ 複数の環境で使う場合は#ifdefプラグマを使って分離したWindows依存部分の #includeを切り替えるようにするだけ
- 362 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 17:29:43 ]
- コンパイラのオプションで指定できるでしょ
環境ごとにmakefile書くだけじゃね
- 363 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 17:48:49 ]
- >>361
#ifdefはいつからpragmaになりましたか?
- 364 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 17:53:47 ]
- >>363
#ifdefディレクティブと言いたかったんじゃないの? で、使い慣れない言葉なんでつい間違えたと。 句読点もちゃんと使えないようだし、日本語に慣れていない三国人なんでしょ。
- 365 名前:デフォルトの名無しさん [2008/12/28(日) 22:36:27 ]
- cudaのMDコードどこかに追ってませんか?
- 366 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 12:11:23 ]
- たった1行でここまで意味不明なのも凄いな。
- 367 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 12:24:23 ]
- ×追ってませんか?
○オッドアイいませんか?
- 368 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 13:39:38 ]
- >>365氏はcudaで書かれたMD(分子動力学)コードどこかに落ちてませんか
と聞いてるのかと。当方も知らないので答えられませんが。 Fortranで書いたものを全部はアレなのでGPU上で実行したいサブルーチンだけ Cに変えてCUDAで動かしたいのですが、そんな例とかは落ちてないですかね。 mainルーチンその他関係ないところまで全部Cに移植するのが嫌ってだけな んですが。あ、当方はIntelFortran使用。 当方まだCUDA触りたて、試しにSTREAM BMTのtriadだけ手で適当に書いて GeForce9600GTで40GB/s弱(効率7割弱)のメモリバンド幅。あ、じゃもうでき るじゃんとか勝手に思い、Fortranのコードに挑もうとしてあえなく止まってますorz
- 369 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 14:08:06 ]
- つttp://www.easize.jp/product/fortrantocudamenu.html
- 370 名前:368 mailto:sage [2008/12/29(月) 14:20:59 ]
- >>369
ありがとうございます。m(_ _)m 多次元配列はどのみちGPU上では一次元化するつもりでしたがなるほど。 参考にさせていただきます。
- 371 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 14:45:46 ]
- >>369
そのページ、ポインタの扱いがメタメタだな わかってるなら別にいいが
- 372 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 14:49:43 ]
- うん、ぶっちゃけ「"cuda fortran"でぐぐって一番上に来たリンク貼り付けただけ」なんだ、すまない
- 373 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 14:50:01 ]
- 何か普段使うものをCUDAに移植しようと思いつつ適当な物が見当たらない
- 374 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 02:15:09 ]
- ぶっちゃけ、俺もそうなんだよね。おまけで付いて来たサンプル書き換えて
動かしてFLOPSベンチしてるだけ。 CUDA動かす環境をコスパ良く構築するには?と考えて色々やってみたが、 構築した環境で動かすモノって、結局サンプルの改造ばっか。まんまと nVidiaの販促戦略に乗せられたぜw
- 375 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 08:50:29 ]
- zip圧縮とかjpg圧縮とかを移植したらライセンスの関係はどうなるの?
- 376 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 12:52:04 ]
- 圧縮アルゴリズムに関しては問題ないんじゃね?
- 377 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 15:08:44 ]
- CUDAプログラミングモデルの概要
ttp://http.download.nvidia.com/developer/cuda/jp/CUDA_Programming_Model_jp.pdf CUDAプログラミングの基本(パート I - ソフトウェアスタックとメモリ管理) ttp://http.download.nvidia.com/developer/cuda/jp/CUDA_Programming_Basics_PartI_jp.pdf CUDAプログラミングの基本(パート II - カーネル) ttp://http.download.nvidia.com/developer/cuda/jp/CUDA_Programming_Basics_PartII_jp.pdf
- 378 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 03:21:23 ]
- デバイス側に確保したメモリにホスト側から
cudaMemcpyのように一括でコピーするのではなく、 一部分だけコピーする、又は書き換える良い方法がありましたら教えてください。
- 379 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 03:28:19 ]
- ・cudaMemcpy()で一部分だけコピーする。
・cudaMemset()で(ry ・そういうカーネル関数を用意して呼び出す。
- 380 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 12:27:16 ]
- 一部分だけってのはたいてい順次処理になるからCPUにやらせたほうが有利だよ
|

|