2

分離不可能なカーネルを使用した画像畳み込みの効率的なバージョンを実装する必要があります (したがって、CUDA の SDK は FFT の例だけに役立ちますが、カーネル サイズが大きい場合にのみうまく機能することが明確に述べられています)。

私の頭に浮かぶようにゼロから実装することは別として、私の必要性は、アプリオリに未知のサイズのマトリックスとカーネルで動作することです(それらは20.000x20.000として10x10になる可能性があります、私は単にそれを予測することはできません)

FFT の例に関する提案は何ですか? (これがあなたの最良の選択である場合は、それがどのように機能するかを理解するための良い点を教えてください)

2 番目の選択 (自分で畳み込みを手動で実装する) については、メモリの結合を最大化するための提案は何ですか?

4

2 に答える 2

2

GPUに関する私の提案:

  1. 最初にそれを正しくします。最初に CPU で GPU に実装するアルゴリズムに慣れてください。さらに多くの低レベルの詳細に対処する必要があるため、出力がどうあるべきかを知っておくことが重要です。

  2. 速くしてください。使用できる場合は、FFT アプローチが最速です (ほとんどの場合)。

最初の目的を達成するには、OpenCv で実装することをお勧めします。Python 用の非常に優れたラッパーがあり、フィルタリングのためのフレームワークを提供します。

結果と OpenCv でそれを達成する方法を確認したら、FFT を使用して同じことができるかどうかをテストします。全体を GPU に移植する方がはるかに簡単です。

于 2011-04-01T08:12:59.723 に答える
1

theano での畳み込みの実装 (非 FFT ベースのカーネルを使用) を確認するか、単に theano を使用することをお勧めします。

于 2011-03-31T17:42:44.540 に答える