質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
CUDA

CUDAは並列計算プラットフォームであり、Nvidia GPU(Graphics Processing Units)向けのプログラミングモデルです。CUDAは様々なプログラミング言語、ライブラリ、APIを通してNvidiaにインターフェイスを提供します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

1回答

2901閲覧

atomicAddが上手くいかない

sho_jonas

総合スコア77

CUDA

CUDAは並列計算プラットフォームであり、Nvidia GPU(Graphics Processing Units)向けのプログラミングモデルです。CUDAは様々なプログラミング言語、ライブラリ、APIを通してNvidiaにインターフェイスを提供します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

1クリップ

投稿2015/07/09 08:16

現在CUDAを用いて並列計算を行っています。
使っているGPUはTesla k20です。
thread数256, block数256で計算を行っています
宣言は
dim3 blocks(256,1,1)
dim3 threads(256,1,1)

デバイス側の関数は以下のようになっています
A_d[blockIdx.x] = 0.0F;
atomicAdd(&A_d[blockIdx.x], B_d[blockIdx.x*threadIdx.x]*C_d[blockIdx.x]);
__syncthreads();

for文で表すと
for(int i=0; i<256; i++){
for(int j=0; j<256; j++){
A_d[i] += B[j*256+i]*C[i];
}
}
のようなことを行いたいのですが結果を見ると全て加算されていない
(例えば256回1を足す計算なのに200となってしまう)

どうしたらちゃんと加算が行われるのでしょうか?
乱文で申し訳ないですがよろしくお願いします

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

A_d[blockIdx.x] = 0.0F; の直後に__syncthreads()がないと、
加算中に0.0Fで初期化されてしまうのではないでしょうか?

CUDAを使用したことはないので、的外れだったらすみません。

投稿2015/07/09 10:25

eripong

総合スコア1546

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sho_jonas

2015/07/10 04:37

貴重な意見をありがとうございます。 ですが実際にやってみましたが結果は変わりませんでした。 自分では思いつかないことであったのでとても参考になりました。
eripong

2015/07/10 04:59 編集

そうですか。 解決できず残念です。 結果は、実行のたびに違うのでしょうか? あるいは、同じでしょうか?
eripong

2015/07/10 05:02

__threadfence_block(); も必要なのかも知れません。
sho_jonas

2015/07/10 06:43

ごめんなさい>< 最初の方法で上手くいきました! プログラムを書き直しているうちに間違ったプログラムを書いてしまって、そこに__syncthreads();を入れてしまっていたので上手く動きませんでした。 その後自分の間違えに気づき__syncthreads();入れたら上手くいきました。 ご迷惑おかけしてすみません。 ありがとうございました。
eripong

2015/07/10 06:45

おお、良かったです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問