0

CUDA で並列遺伝的アルゴリズムを使用して TSP を解決しようとしています

使っています

THREAD_SIZE as 32

BLOCK_SIZE as 16

各ブロックで使用する共有メモリはこれです

__shared__ int population[THREAD_SIZE][NUM_OF_CITIES];

NUM_OF_CITIES が 14 または 29 の場合、プログラムは問題なく動作しますが、NUM_OF_CITIES を 51 に増やすと、どこかでメモリ アクセス違反が発生します。

そして、ディスプレイドライバーがクラッシュします..

制限よりも多くの共有メモリを使用しているためですか? これを回避する方法はありますか?

[編集] Robert Crovellaが指摘したように、問題は各スレッドの実行にかかる時間のよう です

各スレッド内で次の操作を実行します

for(int k = 0 ; k < 100 ; k++ ) {
//Selection
//CrossOver
//Evolution (Two Opt ヒューリスティックを使用)
}

Two Optの進化ステップ を削除した場合、ループ内ループ内で最もコストのかかるステップであり、カーネルは問題なく動作します...

カーネルを 2 秒以上実行させる方法はありますか? より優れた強力なカードを購入すれば、この問題は解決しますか?

GTS 450を使用していますが、近い将来GTX 650 Tiを購入する予定です。これで問題は解決しますか?

4

0 に答える 0