2018年1月22日月曜日

GCCのビルトインプリフェッチ

sse->neonの移植でmm_prefetch()に相当するものがないのでいろいろ調べた。
Clangでも使える。
GCCのビルトインプリフェッチ命令

__builtin_prefetch(const void *addr, int rw, int locality)

 const void *addr プリフェッチするアドレス
int rw 0:デフォルト 読み込み
        1:書き込み
int locality 0:キャッシュにアクセス後、データを残さない
              1:0と3の間。0寄り
              2:0と3の間。3寄り
              3:可能な限りキャッシュにデータを残す

2018年1月14日日曜日

[メモ]Tinker Board でのOpenCLのビルド

apt-get install opencl-headers

gcc main.c -I/usr/include -L/usr/lib /usr/lib/arm-linux-gnueabihf/libOpenCL.so


CL_PLATFORM_xxxxをとってみた結果はこんな感じ

CL_PLATFORM_PROFILE   : FULL_PROFILE
CL_PLATFORM_VERSION   : OpenCL 1.2 v1.r9p0-05rel0-git(f980191).e4ba9e4c6ff8005348d0332aae160089
CL_PLATFORM_NAME      : ARM Platform
CL_PLATFORM_VENDOR    : ARM
CL_PLATFORM_EXTENSIONS: cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_byte_addressable_store cl_khr_3d_image_writes cl_khr_fp64 cl_khr_int64_base_atomics cl_khr_int64_extended_atomics cl_khr_fp16 cl_khr_gl_sharing cl_khr_icd cl_khr_egl_event cl_khr_egl_image cl_arm_core_id cl_arm_printf cl_arm_thread_limit_hint cl_arm_non_uniform_work_group_size cl_arm_import_memory