Intel® FPGA SDK for OpenCL™: ベスト・プラクティス・ガイド

ID 683521
日付 12/08/2017
Public
ドキュメント目次

3.4. アラインメントされたメモリーの割り当て

FPGAとの間でデータを転送するために使用されるホスト側のメモリーを割り当てる場合、メモリーは少なくとも64バイトに揃えられている必要があります。

ホスト側のメモリーを整列させることで、FPGAとのダイレクトメモリーアクセス(DMA)転送が可能になり、バッファー転送効率が向上します。

重要: ホスト側メモリーの使用方法によっては、 インテル® はより厳密なアラインメントを割り当てることを推奨します。たとえば、割り当てられたメモリーを使用してCL_MEM_USE_HOST_PTRフラグを使用してバッファーを作成する場合、カーネル内のバッファーにアクセスするために使用されるデータ型に合わせてメモリーを適切に配置する必要があります。ホスト側メモリーの位置合わせ要件の詳細については、 OpenCL仕様バージョン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);を含めます。