一个程序设计的问题

现在有一个算法,需要对2000个2000阶的矩阵做CG,根据CPU版本的计算结果,每个矩阵收敛到设定的门限差不多要700次到800次迭代,想问下是不断启动2000次kernel划算还是分成2000个block,每个block算一个矩阵的CG划算,这2000个矩阵求解相互独立,660的卡~

LZ您好:

我不懂CG的具体实现,也无法估算计算一个2000阶的矩阵的CG需要多少计算资源,因此无法给您建议。
只能说,因为计算多个矩阵是互相独立的,因此不限于您启动一次kernel只计算一个矩阵的CG。

至于如何计算,和如何划算,无法建议您了,这已经超出了我的能力和论坛一般的讨论范围。
论坛一般只就具体的CUDA算法和实现加以讨论 ,而不能抽象地讨论一些问题。

祝您好运~

分成2000block划算,这样驱动知道你一共计算多少,可以自动为你调度。

如果以计算为主的程序,计算请求越多,卡利用越充分。具体你可以尝试一下,可能一次算500个CG最好,但一次算2000个肯定也差不了太多

如果传输为主,那就想办法掩盖传输延时。

还一个问题就是我这个CG算法里面矩阵向量积要用到FFT,假如分成2000个块每个块执行一个CG的的话那CUFFT能自己指定具体执行的线程块编号吗?假如一个CG启动一次kenerl的话就不存在这个问题,直接调用CUFFT就行

有人会吗?自己顶一下:)