[過去ログ] 【GPGPU】くだすれCUDAスレ part7【NVIDIA】 [転載禁止]©2ch.net (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
125
(6): デフォルトの名無しさん [] 2015/05/19(火) 21:33:47.52 ID:spimwXxa(1/2) AAS
今まで一つのソースファイルで書いてきたのですが、いい加減見づらくなってきたのでソースファイルを分けてみたところエラーがでたので質問させてください
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
のはずです
126: 125 [sage] 2015/05/19(火) 21:42:34.97 ID:spimwXxa(2/2) AAS
×CUDA 7.0
○CUDA 6.5
でした
127
(2): 125 [sage] 2015/05/20(水) 16:28:14.38 ID:MP+tATlH(1/2) AAS
CUDA5.0以降ではrdcを「はい」にするとファイルの分割が出来るという情報を得たのでさっそく試してみたところ
>>125のエラーは無くなったのですが
1>sub.cu.obj : error LNK2005: "long __cdecl genrand_int31(void)" (?genrand_int31@@YAJXZ) は既に main.cu.obj で定義されています。
上記のような二重定義エラーがいくつか出てきました

また、ヘッダファイルの拡張子を.cuhとしている方を見かけたのですが、.hとの違いはあるのでしょうか?
129: 125 [sage] 2015/05/20(水) 23:53:16.57 ID:MP+tATlH(2/2) AAS
>>128
ファイルを分割出来ないとなるとすごく不便になので、何かしらの方法があるのでは?と思っています
132: 125 [sage] 2015/05/21(木) 17:23:47.43 ID:25nDpRt2(1) AAS
レスありがとうございます

どうやら>>127のエラーはCUDAとは関係なさそうなのでC++のスレで聞いてきます
133: 125 [sage] 2015/05/24(日) 22:10:36.84 ID:FupD4mQN(1/2) AAS
>>127の方法で分割コンパイルに一応成功しました!
一応と言ったのはrdcを「はい」にした場合と「いいえ」にした場合とでプログラムの挙動が少し変わってしまうのです
今書いているプログラムは何億回もの計算結果を足し合わせていくものなので、誤差の蓄積による影響を受けていると思います
コンパイルの方法を変えた(?)事で誤差の蓄積が変化(?)し、プログラムの挙動が変わったということなのでしょうか?
コンパイルと誤差がどう関係するのかは分かりませんが
134: 125 [sage] 2015/05/24(日) 22:19:49.55 ID:FupD4mQN(2/2) AAS
>>「はい」にした場合と「いいえ」にした場合
ファイルを分割するともちろん「いいえ」では動かないので、一つのファイルで完結しているプログラムでの話です
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.301s*