- 87 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 18:21:34 ]
- 85です。
例に挙げた式、間違ってました。 C += A[ty][tx] * B[tx][ty] でした。申し訳ない。 for文を使う場合は for(i=0;i<BS;i++) C += A[ty][i] * B[i][ty]; こんな感じです。 iはint型変数、BSはブロックサイズです。 for文を使わないと、各スレッドがそれぞれのタイミングでCの値を参照し、計算結果 を足しこんでいるのでしょうか、Cの値が毎度おかしなものになります。 AとBはReadOnlyです。 86さんの誘導先に似たような事例がありましたので参考にしようと思います。 それにしても、スレッドの並列処理に比べてfor文があまりにも遅くて驚きました。
|

|