Intel® FPGA SDK for OpenCL™ Pro Edition: 最佳实践实践指南

ID 683521
日期 9/26/2022
Public
文档目录

4.4. 分配对齐的存储器

在分配用于向FPGA传输数据和从FPGA传输数据的主机端存储器时,存储器必须至少64字节对齐。

对齐主机端存储器允许进行对FPGA和从FPGA的直接存储器访问(DMA)传输并提高缓冲区传输效率。

注意: 取决于主机端存储器的使用方法, Intel® 建议分配更严格的对齐。例如,如果分配的存储器用于创建使用CL_MEM_USE_HOST_PTR标记的缓冲区,则该存储器也应该与用于访问内核缓冲区的数据类型正确对齐。有关主机端存储器的对齐要求,请参阅OpenCL Specification version 1.2的C.3小节。

要建立已对齐存储器的分配,请将以下源代码添加到您的主机程序中:

  • 对于Windows:
    #define AOCL_ALIGNMENT 64
    #include <malloc.h>
    void *ptr = _aligned_malloc (size, AOCL_ALIGNMENT);

    要释放对齐的存储器模块,请包含函数调用_aligned_free(ptr);

  • 对于Linux:
    #define AOCL_ALIGNMENT 64
    #include <stdlib.h>
    void *ptr = NULL;
    posix_memalign (&ptr, AOCL_ALIGNMENT, size);

    要释放对齐的存储器模块,请包含函数调用free(ptr);