ページ アライメントされたホスト メモリの割り当て - 2021.1 Japanese

Vitis 統合ソフトウェア プラットフォームの資料: アプリケーション アクセラレーション開発 (UG1393)

Document ID
UG1393
Release Date
2022-03-29
Version
2021.1 Japanese

XRT は、4K 境界のメモリ空間を割り当てて、内部メモリを管理します。ホスト メモリのポインターがページ境界に揃っていない場合、XRT が揃うように memcpy を追加で実行します。このため、ホスト メモリ ポインターを 4 K 境界に揃えて、メモリ コピー操作が余分に実行されないようにしてください。

次に、ホストのメモリ空間に malloc ではなく posix_memalign を使用する例を示します。

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);