CUDA共享内存访问冲突

时间:2013-02-26 20:20:12

标签: cuda

我试图在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 这会解决问题吗?

0 个答案:

没有答案