分配页面对齐的主机存储器 - 2022.1 简体中文

Vitis 统一软件平台文档 应用加速开发 (UG1393)

Document ID
UG1393
Release Date
2022-05-25
Version
2022.1 简体中文

XRT 在 4K 边界内分配存储器空间,用于内部存储器管理。如果主机存储器指针未对齐到页面边界,那么 XRT 会执行额外的 memcpy 以使其对齐。因此,您应将主机存储器指针与 4K 边界对齐,以免执行额外的存储器复制操作。

以下示例演示了如何为主机存储器空间指针使用 posix_memalign 以代替 malloc

int *host_mem_ptr; // = (int*) malloc(MAX_LENGTH*sizeof(int));
// Aligning memory in 4K boundary
posix_memalign(&host_mem_ptr,4096,MAX_LENGTH*sizeof(int)); 
 
// Fill the memory input       
for(int i=0; i<MAX_LENGTH; i++) {
  host_mem_ptr[i] = <... >   
}

cl_mem dev_mem_ptr = clCreateBuffer(context, 
				     CL_MEM_READ_WRITE | CL_MEM_USE_HOST_PTR,  
  			       sizeof(int) * number_of_words, host_mem_ptr, NULL); 

err = clEnqueueMigrateMemObjects(commands, 1, dev_mem_ptr, 0, 0, 
      NULL, NULL);