【发布时间】:2016-06-12 16:23:11
【问题描述】:
我想澄清以下问题。我可以访问包含 Nvidia K40 GPU 和 Intel Xeon E5 处理器的单个节点。使用 lscpu 命令获得的处理器详细信息如下:
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 的信息,但我认为它在这种情况下并没有多大用处,因为它更适用于多节点情况。如果我错了,请纠正我。在这种情况下有哪些可能的方法来提高性能?
【问题讨论】: