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++ ) {
//选择
//​​CrossOver
//进化(使用两个 Opt 启发式)
}

如果我删除两个选择进化步骤 ,即在循环中循环中最昂贵的一步,内核工作得很好......

有没有办法让内核执行超过 2 秒?购买一张更好更强大的卡会解决这个问题吗?

我正在使用GTS 450,计划在不久的将来购买GTX 650 Ti ,这样可以解决问题吗?

4

0 回答 0