我想澄清以下問題。我能夠訪問包含了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,但我認爲它在這種情況下沒有多大用處,因爲它更適用於多節點情況。如果我錯了,請糾正我。在這些情況下改善績效的可能方法有哪些?