1

この例を Macで使用するここをクリック

大きな配列で OpenCL がクラッシュします (Put NUM_VALUE=10000)。その理由について何か提案はありますか?

4

1 に答える 1

1

確実に知るには、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 が発生します。

于 2013-11-08T20:35:58.763 に答える