Добрый день!
Пишу одну считалку, использую OpenCL для вычислений. И пока что тестирую на pocl. И вот почему-то pocl нагружает только одно ядро процессора, т.е. считает в один поток. Хотя вроде как по-умолчанию должен по количеству ядер потоки делать.
Ядро:
kernel void kernel_geodesic(int num, global double *pos, global double *dir, global int *finished, double h, global const double *args)
{
int id = get_global_id(0);
int i;
struct tensor_1 cpos = {
.covar = {false},
};
struct tensor_1 cdir = {
.covar = {false},
};
if (finished[id] == 1)
return;
for (i = 0; i < DIM; i++)
{
cpos.x[i] = pos[DIM*id + i];
cdir.x[i] = dir[DIM*id + i];
}
for (i = 0; i < num; i++)
{
if (!allowed_area(&cpos, args))
{
finished[id] = 1;
break;
}
if (!geodesic_calculation_step(&cpos, &cdir, h, args))
{
finished[id] = 1;
break;
}
}
for (i = 0; i < DIM; i++)
{
pos[DIM*id + i] = cpos.x[i];
dir[DIM*id + i] = cdir.x[i];
}
}
При запуске с 1000 объектами получаю
global work size: 1000
local work size: 4096