1

この質問のあいまいさを前もってお詫び申し上げます。

バックグラウンド:

OpenCL で形態学的画像処理関数を作成しようとしています。すべてのピクセルのデータを格納するために使用する __local バッファーがあります (各ピクセルはワークアイテムで表され、まだループ展開はありません)。また、私はテストの初期段階であるため、単一のワークグループ (8x8 ピクセルの画像であるため、手動で結果を検証できます) のみを使用しています。

問題:

場合によっては、1 つ、2 つ、3 つ、さらには 4 つのピクセルからのデータを別のピクセル バッファーに追加する必要があります。これらは同じワークグループ内の隣接するピクセルであるため、ローカル メモリ バンクの競合が発生していると確信しています。大丈夫です。速度は私の最優先事項ではありません (まだ!)。ただし、これらのバンクの競合により、データが失われたり、データが破損したりするようです。バッファーがオーバーフローしたりオーバーランしたりしないように細心の注意を払っています。

ですから、私の最初の質問は、銀行の競合がデータの破損や損失を引き起こしている可能性はありますか? Opencl 仕様は、操作をシリアル化して帯域幅を遅くする必要があることを示しているようですが、データ損失については言及されていません。

私の 2 番目の質問は: 助けて! - これについて何ができますか?

どんなガイダンスも大歓迎です-ありがとう!

4

1 に答える 1

0

おそらく nvidia のホワイトペーパーPrefix Sum (Scan) with CUDAが正しい軌道に乗ることができます。についてですall-prefix-sums algorithmis a good example of a computation that seems inherently sequential, but for which there is an efficient parallel algorithm.

all-prefix-sums operationは、数値のリスト[3,4,1,2]をそれらの合計に変換します: [0,3,7,8].

この論文がCUDAに関するものであることは知っていますが、両方の技術が同様の概念を使用しているため、結果として得られるカーネルは非常に似ていることがわかりました。

本紙がお役に立てば幸いです。

乾杯

于 2011-05-05T18:04:28.537 に答える