我正在研究 Tesla C1060,它包含 240 个处理器内核,计算能力为 1.3。知道每 8 个内核由单个多处理器控制,并且每个线程块都分配给单个多处理器,那么我预计启动 30 个块的网格应该与单个线程花费相同的执行时间堵塞。然而,事情并没有很好地扩展,即使每个块有 8 个线程,我也从来没有得到过这种很好的扩展。走到另一个极端,每个块有 512 个线程,当网格最多包含 5 个块时,我得到一个块的大致相同时间。当我将性能与在 8 核 CPU 机器上实现与 MPI 并行的相同任务进行比较时,这令人失望。有人可以向我解释一下吗?
顺便说一句,计算机实际上包含两张特斯拉卡,那么它是自动在它们之间分配块,还是我必须采取进一步措施确保两者都被充分利用?
编辑:关于我的最后一个问题,如果我在同一台计算机上启动两个独立的 MPI 进程,我怎样才能让每个进程在不同的显卡上工作?
EDIT2:根据 Pedro 的要求,这里是一个图表,描绘了垂直访问的总时间,标准化为 1 ,与并行块的数量。线程/块的数量 = 512。这些数字是粗略的,因为我观察到大量块的时间差异很大。