この例を Macで使用するここをクリック
大きな配列で OpenCL がクラッシュします (Put NUM_VALUE=10000)。その理由について何か提案はありますか?
確実に知るには、gdb などのデバッガーでプログラムを実行する必要があります。次の割り当てのいずれかになります。
float* test_in = (float*)malloc(sizeof(cl_float) * NUM_VALUES);
void* mem_in = gcl_malloc(sizeof(cl_float) * NUM_VALUES, test_in, CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR);
void* mem_out = gcl_malloc(sizeof(cl_float) * NUM_VALUES, NULL, CL_MEM_WRITE_ONLY);
このプログラムはそれをチェックしないため、メモリ要求に対して NULL を返し、これらの配列の 1 つに対する次のアクセスで segfault が発生します。