思想这个东西,是个人理解的问题。
无论是 MPI OPENMP 等等并行计算的方法,都是使用多线程同时并发的执行。
所谓并发,就是看起来一起执行罢了,在真正的单核CPU中,是在某段时间内,串行执行,通过线程调度来掩盖其执行的顺序。
那么CUDA 编程中,并行计算的思想是SIMT,simple instruction multiple thread。你可以分配好多线程给GPU,无所谓其中的SP有多少,但是最好还是根据SP 的个数来设置其threadPerBlock,这样既方便调度,又可以提高资源利用率。
由于 GPU中 寄存器的数量庞大,可以保存不同线程的运行状态,可以较快的切换进程的上下文,因此也从另一个方面掩盖了访存延迟。
我觉得,GPU并行思想,与其硬件架构有很大关系,与CPU主要做控制逻辑相比,GPU更喜欢做一些可以大量重复或者并行的计算,而避免复杂的条件分支。