我试图在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时,会在某处发生内存访问冲突
并且显示驱动程序崩溃..
是因为我使用的共享内存超过了限制吗? 有办法解决这个问题吗?
[EDITED] 正如 Robert Crovella 所指出的那样,问题似乎是每个线程执行所需的时间
在每个线程中我执行以下操作
for(int k = 0; k <100; k ++){
//选择
// CrossOver的
//进化(使用两个选择启发式)
}
在循环中,如果我删除两个选择进化步骤即循环中最昂贵的一步,内核工作得很好......
是否可以让内核执行超过2秒? 购买更好更强大的卡会解决这个问题吗?
我正在使用 GTS 450 ,计划在不久的将来购买 GTX 650 Ti 这会解决问题吗?