【GPGPU】くだすれCUDAスレ pert4【NVIDIA】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2010/12/04(土) 21:57:13もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
CUDA使いが優しくコメントを返しますが、
お礼はCUDAの布教と初心者の救済をお願いします。
CUDA・HomePage
http://www.nvidia.com/cuda
関連スレ
GPUで汎用コンピューティングを行うスレ
http://hibari.2ch.net/test/read.cgi/tech/1167989627/
GPGPU#5
http://hibari.2ch.net/test/read.cgi/tech/1281876470/
前スレ
【GPGPU】くだすれCUDAスレ【NVIDIA】
http://pc12.2ch.net/test/read.cgi/tech/1206152032/
【GPGPU】くだすれCUDAスレ pert2【NVIDIA】
http://pc12.2ch.net/test/read.cgi/tech/1254997777/
【GPGPU】くだすれCUDAスレ pert3【NVIDIA】
http://hibari.2ch.net/test/read.cgi/tech/1271587710/
0002デフォルトの名無しさん
2010/12/04(土) 21:58:52CUDA Zone
http://www.nvidia.co.jp/object/cuda_home_jp.html
フォーラム
http://forum.nvidia.co.jp/EokpControl?&event=TE0001
CUDAに触れてみる
http://chihara.naist.jp/people/STAFF/imura/computer/OpenGL/cuda1/disp_content
cudaさわってみた
http://gpgpu.jp/article/61432191.html
CUDA のインストール
http://blog.goo.ne.jp/sdpaninf/e/9533f75438b670a174af345f4a33bd51
NVIDIAの「GeForce 8800 GT(G92)」と次に控える64-bit GPUアーキテクチャ
http://pc.watch.impress.co.jp/docs/2007/1031/kaigai398.htm
CUDAを使う
http://tech.ckme.co.jp/cuda.shtml
NVIDIA CUDAを弄ってみた その2
http://dvd-r.sblo.jp/article/10422960.html
CUDAベンチ
http://wataco.air-nifty.com/syacho/2008/02/cuda_2044.html
KNOPPIX for CUDA
http://www.yasuoka.mech.keio.ac.jp/cuda/
0003デフォルトの名無しさん
2010/12/04(土) 22:27:14低レベル質問にも対応するスレだったんだな
道理でCUDAは意味が無いという意見が出て来るわけだ
0004デフォルトの名無しさん
2010/12/04(土) 23:04:150005デフォルトの名無しさん
2010/12/04(土) 23:09:17ORのPERT?
だとしてもCUDAとの関係がわからん
0006デフォルトの名無しさん
2010/12/04(土) 23:32:440007デフォルトの名無しさん
2010/12/04(土) 23:43:310008デフォルトの名無しさん
2010/12/05(日) 01:01:35買ったほうがいいですか?ちなみに行列の演算を高速化したいというのが
目的です。
0009デフォルトの名無しさん
2010/12/05(日) 01:28:17GT430にしろよ・・・
0010デフォルトの名無しさん
2010/12/05(日) 01:30:180011デフォルトの名無しさん
2010/12/05(日) 11:15:340012デフォルトの名無しさん
2010/12/06(月) 02:44:34の意味がわかりません。意味を詳しく教えていただけませんか?
0013デフォルトの名無しさん
2010/12/06(月) 17:16:54activeなwarpってのは要はメモリアクセスとかで待ってる状態じゃなく今すぐ実行できるwarpの事
fermiだと0から48まで
active cycleはactiveなwarpが一つでもあるcycleの数
例えば総cycleが10cycleだとして、
毎cycleにactiveなwarpが有ればactive cycleの値は10
10cycleの内、activeなwarpが一つもないcycleが一回あったとしたら9
warpが分からないとかなら青木先生の本でも読めばいい
0014デフォルトの名無しさん
2010/12/06(月) 19:37:01warpについては理解しています、がいまだcycleがわかりません・・・
cycleとはある命令を実行するのにかかる時間であり、ある命令はwarp単位で発行されるという認識です。
ですので1cycleで48warpがアクティブになるというのがよくわかりません。
またこれらの値は大きいほうがいいのか、小さいほうがいいのかもいまいちわからない状況です。
たとえばSummary Tableにでているactive warps/active cycle やretire ipcなども
意味と値が大きいほうがいいのか、がいくら調べてもわかっていない状況です。
よろしければご教授お願いします。
0015デフォルトの名無しさん
2010/12/06(月) 21:51:210016デフォルトの名無しさん
2010/12/06(月) 21:58:05>>14高校生?
0017デフォルトの名無しさん
2010/12/06(月) 22:08:20プロファイラのマニュアルはちゃんとあるし、
プログラミングガイド、ベストパフォーマンスガイドに基本は全て載ってる
全部公式のガイドだぞ
0018デフォルトの名無しさん
2010/12/06(月) 22:26:33初心者とゆとりが融合した素晴らしい素材ってことは分かる
0019デフォルトの名無しさん
2010/12/06(月) 23:18:431cycleで複数のwarpを処理できるという点がいまいちどういう仕組みなのかわかっていませんでした。
Type SMとありましたので、この値はあるSMで計測された値だということがわかりますが、
上記のような認識だとつじつまが合わない(1SMで1warpずつ処理すると思っていたのに、1cycleで最大48warpがアクティブになるという点)ため質問させていただきました。
ややこしく、説明がいまいちになってしまい申し訳ないです。
プロファイラのマニュアルも読みましたが、読んだ上でゆとり質問となり言い返す言葉もありません。
これ以上スレを汚すのもどうかと思いますので質問を〆させていただきます。
レスくださった方ありがとうございました。
0020デフォルトの名無しさん
2010/12/06(月) 23:50:52待ち行列が無いと、演算器に空きが出来てもwarpを割り当てる事が
出来ないから、ある程度の長さの待ち行列が常にある事が
(演算器の利用効率を最大化するという意味では)重要になる。
fermiの細かいアーキテクチャまでは分からないが、
アレだけレジスタが多いとregisterがマルチバンクになっている可能性が高いから
例えば奇数cycleは奇数IDのwarp、偶数cycleは偶数IDのwarpしか発行できない
とかそういう制限があるかもしれない。
その場合はactive warpだからといって
常に任意のcycleに実行可能とならない場合もあるから
待ち行列は長い方が良い。
0021デフォルトの名無しさん
2010/12/07(火) 01:36:55質問とはちょっとずれるかもしれないけど、
http://www.softek.co.jp/SPG/Pgi/TIPS/public/accel/gpu-accel2.html
この記事が長いけど結構分かりやすいかもね
ゆとりとかは挨拶だから気にするなよ
0022デフォルトの名無しさん
2010/12/07(火) 01:52:08GT430で探したんですが1スロットで収まる商品が2つしかなく、
評判も安定性も良くないらしいのでELSAのGT240にしようかと思っています。
何かアドバイスがあればよろしくお願いします。
0023デフォルトの名無しさん
2010/12/07(火) 02:23:5621さんのレスなんか涙がレスが読めなくなるほど。
ゆとりくんは心に刻むんだぞ。
玄人のおぢさんたちに生暖かく見守られているということを。
0024デフォルトの名無しさん
2010/12/07(火) 02:39:12430使ってるが不具合ないよ。
あと今更fermi以前でPG組む気になれん。
CUDA目的ならCCのバージョンを意識しないと駄目だと思うぞ。
それをわかってて240にするなら何も言わない。
0025デフォルトの名無しさん
2010/12/07(火) 02:40:260026デフォルトの名無しさん
2010/12/07(火) 02:53:55目的、予算、制限を明確にしてほしいな
高速処理が至上命題で、予算も制限もないなら
言うまでもなく、Teslaボードをお勧めします
やっぱりfermi世代の方が無難なチョイスなので、
fermiチップのボードだとしてアドバイス
ELSAのGT240は使ってないからよくわからないけれど、
メーカーとしては鉄板の印象。安心していいのでは?
CUDAの場合、仮想メモリは使えないので、やりたい計算で
512MBのメモリだけで、溢れないか見積もることをお勧めします
1スロット幅を譲れない場合、少々値が張るが
Quadroならば1スロット幅のモデルもあるよ.
Quadro4000までは1スロット幅のようだ
市場価格は2万程度から10万弱くらい
2スロットでもよくて,そこそこ安く高性能というなら
やっぱりGTX580あたりがいいんじゃないかな
doubleやECC機能を利用しない限り、Teslaモデルより高速
コスパ最強です
それからWindowsの場合は画面出力用のボードとCUDA用のボードを分けると
デバッグしやすい気がするので、ボード2枚構成というのも考慮の余地があるかも
Linuxはしらない
0027デフォルトの名無しさん
2010/12/07(火) 02:58:31GT440だと脳内保管されてた・・・
ワシもfermiでないGT240は推奨しません
CUDAの勉強が目的ならGT240の方が
勉強になるかもしれない
fermiはキャッシュのおかげでタコなコードでも
そこそこ動いてくれるから
0029デフォルトの名無しさん
2010/12/07(火) 09:53:37詳しいことはわかりませんが、同じコア数でもGT240とGT439ではなぜ
これだけ値段の差があるのか解りません。できれば安いほうを買いた
いのですが予算は10000円程度で考えています。
何かよきアドバイスがあればよろしくお願いします。
0030デフォルトの名無しさん
2010/12/07(火) 09:59:41fermiじゃなきゃ高速演算の手間がかかる
と思えばおk
0031デフォルトの名無しさん
2010/12/07(火) 10:11:53これなんかどうでしょう?騒音がすごいというレビューを見ましたが。
0032デフォルトの名無しさん
2010/12/07(火) 12:48:45詳しくはは自分でも調べてほしいのだが、fermiってのはアーキテクチャの世代の名前。
fermiアーキテクチャのチップは4xx(480,470,465,460,450,430,)と5xx(580)。
それ以前の2xxシリーズなどはfermiではない。
cudaは最適化とかに限らず、ハードウエアで使える資源(メモリやALU)のことを意識して
プログラムを組む必要があるのだが、fermi世代だと色々制限がなくなって、プログラムを組む
労力が少なくてすむようになってるし、パフォーマンスも上がりやすい。
それで制限に関係するのがCC(Compute Capability)の番号。
この番号によって使える機能が変わるfermiは今のところ2.0と2.1。
詳しくはcuda cプログラミングガイド3.2.2 Appendix G.参照
「詳しいことは知りませんが」とか言って下調べをしないで
プログラムしようとすると痛い目にあうぞ
予算1万ならfermi世代だと430しかないな。
0033デフォルトの名無しさん
2010/12/07(火) 13:16:57最初はIONみたいなので消費電力を気にせずつかえるのがいいと思う。
速いカードの方が当然チューニングの効果がでるからおもしろい。
プロファイラで取れる情報もカードによって違うみたい。
0034デフォルトの名無しさん
2010/12/07(火) 13:24:26添字が小数点の時の線形補完を使ってみたいのですが、
メモリはチップ外にあるということはグローバルメモリと同等の速度なのですよね
キャッシュはされるみたいですが同じデータを何度も利用しなくては意味がないということでしょうか
0035デフォルトの名無しさん
2010/12/07(火) 15:47:54EVGA GeForce GT 430で迷っています。
どちらがいいかアドバイスをよろしくお願いします。
0036デフォルトの名無しさん
2010/12/07(火) 15:54:56印象でいえばELSAは手堅い印象。
EVGAはゲーム向けのチューニングとかしてて精度の点が不安。
予算的に許すならquadro600がいいかもしれない。
ただしELSAでもgeforce,quadroはcudaでの演算結果の保証はしてないから
演算を間違うコアが含まれていても交換対象ではない。
0037デフォルトの名無しさん
2010/12/07(火) 16:01:43有限体の行列なので浮動小数点は使いません。
予算は1万円です。コアの精度ってなんですか?
コアが計算を間違えることがあるのですか?
精度を求めるならどちらがいいでしょうか?
質問ばかりで申し訳ありませんが、ご回答よろしくお願いします。
0038デフォルトの名無しさん
2010/12/07(火) 16:06:170039デフォルトの名無しさん
2010/12/07(火) 16:08:52浮動小数点の意味わかってる?
0040デフォルトの名無しさん
2010/12/07(火) 16:13:50自分が計算したいのはunsigned shortなのです。
以前雑誌の特集にCUDAの記事がありNVIDIAのコアには整数演算も
可能であるということが書かれてありました。なので整数の行列も
高速化できるかと思っていました。何か間違いがありましたら
ご指摘をお願いします。
0041デフォルトの名無しさん
2010/12/07(火) 16:14:46演算結果は保証されないけど、geforceより厳しい検査がされているから
より演算結果の値にエラーがでにくいだろうという推測にもとづくもの。
演算を間違うコアがふくまれる場合があるというのは簡単に言えば1+1が2以外の結果になる
コアが含まれる場合があるって意味。
精度を求めるというのが演算結果を保証するならという意味ならTESLAしかない。
そこまでの予算を確保できない場合、上記のようなコアが含まれていないかを確認するプログラムを自分で
組んで確認しないといけない。
単純に足し算だけでなく、四則演算、浮動小数点演算、指数関数、超越関数、L1、L2キャッシュ、
VRAMに至るまで正当性を確認する必要がでると思ってる
0042デフォルトの名無しさん
2010/12/07(火) 16:21:20簡略な確認としてもいいかもしれない。それで許されるのであれば。
0043デフォルトの名無しさん
2010/12/07(火) 16:30:24間違いがないことを実験する必要があるのですね。
同じ計算機なのにどうしてそのような確率的な動作をするのか
理解しかねます。CPUだけが特別に演算が正確なのはなぜでしょう?
GPUも同じ32ビットレジスタなので構造が同じだと思ったのですが。
0044デフォルトの名無しさん
2010/12/07(火) 16:41:06CPUは元々計算用に作ってあるでしょ?CPUで1+1=2を保証しなくてだれが買うよ?
GPUは元々描画用に作られてて座標計算とかfloatで計算することが多い。
そのときに1.000002が1.000002になってもあんまり影響ないでしょ?
もちろん正確に計算できるほうがいいが、描画だったら多少不正確でも問題はないだろうっていう判断だと思う。
それにCPUに比べてALUが膨大なこともあってすべてのコアの演算精度を保証してたらキリがないでしょ。コスト的に。
そういう用途の人のために厳しいテストをしたTESLAが用意されてる訳。でもその分料金上乗せさせてもらいますよって事だよ。
0045デフォルトの名無しさん
2010/12/07(火) 16:41:22並列化のメリットがなくなってしまう気がします。
0046デフォルトの名無しさん
2010/12/07(火) 16:42:14× そのときに1.000002が1.000002になっても
○ そのときに1.000001が1.000002になっても
0047デフォルトの名無しさん
2010/12/07(火) 16:45:03一回CPUと同等の計算をして、演算結果に謝りがないことの確認をもって
GPUのコアにエラーが発生していないことの簡略確認にすれば?
ってことだよ
0048デフォルトの名無しさん
2010/12/07(火) 16:48:03計算してもらいたいと祈るばかりですね。
0049デフォルトの名無しさん
2010/12/07(火) 16:51:100050デフォルトの名無しさん
2010/12/07(火) 16:54:15が、無理なんだろうなあ
0051デフォルトの名無しさん
2010/12/07(火) 17:07:36typedef union uni {
unsigned long long int dd[2];
unsigned int cc[4];
unsigned short ss[8];
unsigned char m[16];
} on;
void code (char str[256]){
int i,c,d;
unsigned long long int u=0;
i=0;
do { c = str[i] & 0xff; e[i]=c; if((c & 0x80) > 0)
{ ++i; d = str[i] & 0xff; e[i]=d; c^=(d<<8);
printf("'%c%c' %u\n",c,d,c);
} else { printf("'%c' %d \n",c,c); } ++i; }while(c != '\0');
printf("\n");
for(i=0;i<16;i++)
printf("%u ",e[i]);
printf("\n");
for(i=0;i<8;i++)
u^=(u<<8)^e[i];
c3[0]=u;u=0;
for(i=8;i<16;i++)
u^=(u<<8)^e[i];
c3[1]=u;
printf("%llu %llu\n",c3[0],c3[1]);
}
0052デフォルトの名無しさん
2010/12/07(火) 17:08:51int a[16]={7,3,15,11,5,1,13,9,6,2,14,10,4,0,12,8};
int i,j;
unsigned int b=0,c;
__m128i GG;
for(i=0;i<16;i++)
GG.m128i_u8[a[i]]=cc.m128i_u8[i];
for(i=0;i<4;i++)
b^=(GG.m128i_u8[i]<<(8*i));
c=b&0x1f;
b=(b>>5)^(c<<27);
for(i=0;i<4;i++){
GG.m128i_u8[i]=b&0xff;
b=(b>>8);
}
return GG;
}
0053デフォルトの名無しさん
2010/12/07(火) 17:13:42int sum=0,j=0,i=0,k=0,fd,read_size,o,p,l,ll;
FILE *fp,*fq;
unsigned short m;
char fin[80],fout[80];
__m128i pa = a; __m128i pb = b; __m128i pc = c;
__m128i *pd1= (__m128i*)d1;__m128i *pd2= (__m128i*)d2;__m128i *pbuf=(__m128i*)buf;
__m128i *pbuf2=(__m128i*)buf2;
__m128i va, vb, vc, vd1, vd2;
printf("main\n");
fp=fopen(argv[2],"wb");
fq=fopen(argv[1],"rb");
hash(argv[3]);
for(i=0;i<16;i++){
d1[i]=0;
d2[i]=0;
}
0054デフォルトの名無しさん
2010/12/07(火) 17:15:17for(k=0;k<SIZE/32;k++){
memcpy(buf,&buff[32*k],32);
for(j=0;j<16;j++){
o=FG[a.m128i_u8[j]];
p=FG[b.m128i_u8[j]];
for(i=0;i<16;i++){
d1[i]^=GF[((o+h1[p][i]-2)&0xff)+1];
d2[i]^=GF[((o+h2[p][i]-2)&0xff)+1];
}
vd1 = _mm_loadu_si128(pd1); vd2 = _mm_loadu_si128(pd2);
_mm_storeu_si128(pbuf, _mm_xor_si128(_mm_loadu_si128(pbuf), vd1));
pbuf++;
_mm_storeu_si128(pbuf, _mm_xor_si128(_mm_loadu_si128(pbuf), vd2));
pbuf--;
}
_mm_storeu_si128((__m128i *)&a,_mm_xor_si128(_mm_loadu_si128((__m128i *)&a),_mm_and_si128( _mm_add_epi8(_mm_loadu_si128((__m128i *)&d1),_mm_loadu_si128((__m128i *)&c)),_mm_set1_epi8(0x0ff))));
_mm_storeu_si128((__m128i *)&b,_mm_xor_si128(_mm_loadu_si128((__m128i *)&b),_mm_and_si128( _mm_add_epi8(_mm_loadu_si128((__m128i *)&d2),_mm_loadu_si128((__m128i *)&c)),_mm_set1_epi8(0x0ff))));
buf[0]=*pbuf->m128i_u8;
pbuf++;
buf[16]=*pbuf->m128i_u8;
pbuf--;
memcpy(&buff[32*k],buf,32);
}
fwrite(buff,1,read_size,fp);
}
fclose(fp);
fclose(fq);
return 0;
}
0055デフォルトの名無しさん
2010/12/07(火) 17:15:28レジスタ
L1
共有メモリ
L2
0056デフォルトの名無しさん
2010/12/07(火) 17:16:12誤爆
0057デフォルトの名無しさん
2010/12/07(火) 17:18:52レジスタ
| ↑
L1 |コーヒレント
| ↓
共有メモリ
| ↑
L2 |コーヒレントじゃない
| ↓
グローバルメモリ
この資料に書いてあるとかいう情報があるなら
それも教えてもらえると助かります
0058デフォルトの名無しさん
2010/12/07(火) 17:19:11使っていますがRubyの実装でC言語にはしてないです。
このプログラムは疑似乱数生成器で基本的には最大32*32の行列演算を
主に行っています。これが並列化できれば32回の計算で256ビットの
乱数を生成できるので効率的になります。
というかなればいいなあと思ってます。
0059デフォルトの名無しさん
2010/12/07(火) 18:40:08int(4)なら加算だけでもfloatの4倍かかるぞ
FMAとかも使えないし
0060デフォルトの名無しさん
2010/12/07(火) 18:42:12http://sky.geocities.jp/tcshacina/grs1.c
0061デフォルトの名無しさん
2010/12/07(火) 18:45:53じゃあグラフィックボードで並列計算するのはこの場合逆効果になる
のでしょうか?買わないほうがいいですか?
0062デフォルトの名無しさん
2010/12/07(火) 18:50:41intにこだわる必要あるのか?
0063デフォルトの名無しさん
2010/12/07(火) 18:58:39計算しておいて後から一斉にunsigned charに変換することが可能で
しょうか?暗号に使う疑似乱数なので整数で処理しないといけない
という条件があります。
0064デフォルトの名無しさん
2010/12/07(火) 19:03:47あれだけコードがかけるならいいおもちゃだから買えばいいんじゃないですか。
Cellも整数の論理演算にむいていた気がします。6個のタスクを生成できる
ので使いやすい場合もありました。
0065デフォルトの名無しさん
2010/12/07(火) 19:05:17xorshiftのこと?
であればCURANDってのがあるからそれ使えば乱数生成可?
メルセンヌもSDKについてる
0066デフォルトの名無しさん
2010/12/07(火) 19:14:48という疑問です。できなければfloatのままデータを生成して、後で
CPUにまとめてfloat->intの処理をさせながらXORを計算するという
方法ではうまくいかないでしょうか?マニュアルには論理演算も
可能と書いてありますけど、整数演算の速度が浮動小数点より遅い
というのが気がかりです。
Rubyで作った暗号化モジュールいろいろ
http://sky.geocities.jp/tcshacina/crypt.html
0067デフォルトの名無しさん
2010/12/07(火) 19:24:500068デフォルトの名無しさん
2010/12/07(火) 19:29:450069デフォルトの名無しさん
2010/12/07(火) 19:32:36CURANDのマニュアル読んで目的にかなうかどうか確認し
0070デフォルトの名無しさん
2010/12/07(火) 19:34:29どうやってそれを使えばいいのですか?ソースは晒してあるので
自由に見て感想を聞かせてください。
0071デフォルトの名無しさん
2010/12/07(火) 19:37:090072デフォルトの名無しさん
2010/12/07(火) 19:40:050073デフォルトの名無しさん
2010/12/07(火) 20:49:540074デフォルトの名無しさん
2010/12/07(火) 21:00:10それを考えるのがプログラマだろうが!1から10まで聞いてないで自分でやってみろ
0075デフォルトの名無しさん
2010/12/07(火) 22:12:310076デフォルトの名無しさん
2010/12/07(火) 23:07:110077デフォルトの名無しさん
2010/12/07(火) 23:28:12いくら超低レベルスレといっても
"ちょっと調べて分かること"を次々質問するのはどうなんだ?
答えるは簡単だがこの程度のことを人に頼る時点で
そいつにまともなプログラムが作れると思えん
0078デフォルトの名無しさん
2010/12/07(火) 23:48:44同感。
そういうやつでも数学的素養が優れていたりして特定のモデルの構築とかには
優れた才能を発揮する奴がいるから、そういう所だけは認めざるを得ないこともある
のが悔しい。
0079デフォルトの名無しさん
2010/12/07(火) 23:52:59プログラミングの方法より使い方を話題にしたいなと
GPGPUでシミュレーションを高速化してみる
http://kamome.2ch.net/test/read.cgi/sim/1291687353/
0080デフォルトの名無しさん
2010/12/08(水) 01:41:45Micro-benchmarking the GT200 GPU
http://www.eecg.toronto.edu/~moshovos/CUDA08/arx/microbenchmark_report.pdf
GT200ではint加算、減算、論理演算、シフトのレイテンシ、スループットはfloat積和算と同じ。
CPUと違ってレイテンシが24もあるが、並列度が十分にあれば普通に使える。
Fermiでの資料を探したが見つからなかった。誰か頼む。
0081デフォルトの名無しさん
2010/12/08(水) 05:30:08Int add, shift, min, max: 4 cycles (Tesla), 2 cycles (Fermi)
Int mul: 16 cycles (Tesla), 2 cycles (Fermi)
FP32 add, mul, mad, min, max: 4 cycles (Tesla), 2 cycles (Fermi)
FP64 add, mul, mad: 32 cycles (Tesla), 2 cycles (Fermi)
Int divide and modulo are expensive
Divide by 2^n, use “>> n”
Modulo 2^n, use “& (2^n ? 1)”
Avoid automatic conversion of double to float
Adding “f” to floating literals (e.g. 1.0f) because the default is double
と、あった
0082デフォルトの名無しさん
2010/12/08(水) 07:54:020083デフォルトの名無しさん
2010/12/09(木) 17:13:20SDKのサンプルtempleteが2008で開けない。
カスタム ビルド規則 ファイル 'C:\Program Files\Microsoft Visual Studio 9.0\VC\VCProjectDefaults\NvCudaRuntimeApi.rules' が見つからないか、または読み込めませんでした。
って出たからrulesファイル探してるんだけどないんだよな…
SDK再インストールしたけどやっぱりない。たすけて
0084デフォルトの名無しさん
2010/12/10(金) 11:21:46複数のGPUに並列でカーネルを実行させることが出来ますか?
0085デフォルトの名無しさん
2010/12/10(金) 12:16:29008684
2010/12/10(金) 13:49:23無理ですか…
シミュレーションを複数のGPUで実行して,
結果をOpenGLで可視化したいと思っています(出力は一つから).
ランタイムAPIとOpenMPを組み合わせて作ろうと思っていました.
しかし,その場合malloc等の前処理の段階で
複数のホストスレッドでcudaSetDeviceを使ってしまうと,
いざカーネルを実行しようとしたときに,マスターホストスレッド以外のホストスレッドの
cudaSetDeviceで"もう既にセット済"というエラーが出てしまいます.
OpenGLのイベント待ちのために,
複数スレッド→マスタスレッドのみ→複数スレッド→マスタスレッドのみ→…
という状態を繰り返すのですが,1スレッドに戻っても
マスタスレッド以外で設定したコンテキストが消えないのが原因のようです.
マニュアルのドライバAPIのコンテキストの部分を読んでいたら,
色々命令があるので出来るかもしれないと思い質問させていただきました.
ホストスレッドの数は複数でも問題ないので,
コンテキストの操作に詳しい方いらっしゃいますか?
0087デフォルトの名無しさん
2010/12/10(金) 15:36:25良く見直してみ
0088デフォルトの名無しさん
2010/12/10(金) 17:16:41GlobalからのReadキャッシュをL1キャッシュにおいて有効にしたときと無効にしたときにL1キャッシュが無効のほうが早い場合があり、
Visual Profilerで調べてみるとinstruction issueが93152(L1有効)と67666(L1無効)
で差があり、replayを含まないinstruction executed が54592(有効無効どちらも同じ値)
ですのでreplayに問題があると思ったのですが、どういう状況下でreplayが起こるのかいまいちわかりません。
replayはコアレッシングできていないreadのときにおこると思っていたのですが、間違っているなら教えてください。
0089デフォルトの名無しさん
2010/12/10(金) 23:41:08ビルドルールのemulation modeにて、はい (-deviceemu -D_DEVICEEMU)を選択しても、
下記エラー分が消えません。
calling a host function from a __device__/__global__ function is not allowed
どうすればよいのでしょう?
CUDAのバージョンは3.1です。
0090デフォルトの名無しさん
2010/12/10(金) 23:51:250091デフォルトの名無しさん
2010/12/10(金) 23:55:04calling a host function from a __device__/__global__ function is not allowed
するとやはりエラーが消えないのですが・・・
0092デフォルトの名無しさん
2010/12/11(土) 00:13:47おまえ言ってること矛盾してるし、何をやってそういうエラーがでたかの説明してなくて
アドバイスを求めても無理。
vbにprintfとかないよね?どういうことなの?
0093デフォルトの名無しさん
2010/12/11(土) 00:14:07Fermi系列なら確かそのまんまprintf使えるけど
windowsならVisual Nsightとかいうのでデバッグできたはず
あとはどうしてもエミュレーション使いたいならcuda2.3使うとか
0094デフォルトの名無しさん
2010/12/11(土) 00:16:07printfは確かfermi系だけのサポートのはず。
そして2.3はfermiサポートしてない。3.0からだったはず。
0095デフォルトの名無しさん
2010/12/11(土) 00:19:120096デフォルトの名無しさん
2010/12/11(土) 00:24:18同様の現象が起きていて困ってる
GTX480ではinstruction issueが取れなかったんだが、Tesla使い?
0098デフォルトの名無しさん
2010/12/11(土) 18:03:20探しています。
フロートの性能は欲しいがC2050は高すぎるということで。
0099デフォルトの名無しさん
2010/12/11(土) 21:19:193DVantageとかの260と580の性能差を4倍したものを求めて見積もればいいんじゃない?
0100デフォルトの名無しさん
2010/12/11(土) 22:44:360101デフォルトの名無しさん
2010/12/11(土) 23:25:14■ このスレッドは過去ログ倉庫に格納されています