我想澄清以下问题。我能够访问包含了Nvidia K40 GPU和Intel Xeon E5 processor.The处理器细节单个节点使用lscpu命令得到如下:CUDA MPI性能瓶颈
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 32
On-line CPU(s) list: 0-31
Thread(s) per core: 1
Core(s) per socket: 8
Socket(s): 4
NUMA node(s): 4
Vendor ID: GenuineIntel
CPU family: 6
Model: 62
Stepping: 4
CPU MHz: 2300.201
BogoMIPS: 4599.40
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 16384K
NUMA node0 CPU(s): 0-7
NUMA node1 CPU(s): 8-15
NUMA node2 CPU(s): 16-23
NUMA node3 CPU(s): 24-31
我运行MPI程序横跨32分配工作处理器的核心。每个核心然后将一部分部分卸载到GPU。在运行代码时,性能会下降(执行时间增加)而不是减少?是否因为内核对GPU的访问被序列化?我只想澄清这个概念,因此我没有发布任何代码。我已经阅读了关于CUDA意识的MPI,但我认为它在这种情况下没有多大用处,因为它更适用于多节点情况。如果我错了,请纠正我。在这些情况下改善绩效的可能方法有哪些?