我正在尝试在 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 ,这样可以解决问题吗?