OpenCL* on Intel® Programmable Acceleration Card with Intel® Arria® 10 GX FPGA快速入门用户指南

ID 683831
日期 12/04/2018
Public

11. 禁用非统一存储器访问(NUMA)和DMA工作线程以优化 PCIe* 带宽

OpenCL* 使用DMA将数据从主机传输到FPGA器件。默认情况下,有一个DMA工作线程(DMA worker thread),此DMA工作线程执行传输,在传输完成时触发一个回调函数。 DMA工作线程支持主机程序在DMA传输过程中继续工作,从而倾向于提高整体性能。

默认情况下,runtime使用numactl将DMA工作线程保持在与主 OpenCL* 线程相同的NUMA节点上。这降低了与传输数据到不同节点上的工作线程相关联的性能开销。

尽管默认设置旨在提供最佳性能,但在某些系统上,用户可能希望禁用工作线程来提高 PCIe* 带宽或NUMA关联,从而实现调度线程中OS更多自由度。

要对调整存储器传输性能进行试验, OpenCL* MMD提供了两个环境变量:
  • DISABLE_NUMA_AFFINITY_ENV:禁止CPU关联的设置。这使Operating System (OS)能够在任何内核上调度DMA线程。通过输入以下命令来使能此环境变量:
    $ export DISABLE_NUMA_AFFINITY_ENV=yes
  • DISABLE_DMA_WORK_THREAD_ENV:完全禁止DMA工作线程。这将大数据传输转换成主机代码中的模块化操作(blocking operation)。通过输入以下命令来使能此环境变量:
    $ export DISABLE_DMA_WORK_THREAD_ENV=yes