0
Редактирование: Компиляция для AMD GPU и процессора Intel дает ту же ошибку. Это всего лишь код, я просто удалил несколько пустых строк, чтобы опубликовать его здесь.OpenCL C ожидается объявление
Мое ядро
__kernel void distances(constant float* data, int n, int D, int k, global float* centroids, global int* cluster, global float* distances) {
local float l_distances[64];
private int idg = get_global_id(0);
private int idl = get_local_id(0);
private double sqdist = 0;
for(int i=0; i<k;i++){
sqdist=0;
for (int j=0; j<D;j++){
sqdist = fma((double)(centroids[i*D]-data[D*idg+j]), (double)(centroids[i*D]-data[D*idg+j]),sqdist);
}
l_distances[k*idl+i] = sqrt(sqdist);
}
private float d_min=0;
for(int i=0;i<k;i++){
d_min = (d_min<l_distances[k*idl+i]) ? l_distances[k*idl+i] : d_min;
cluster[idg] = (d_min==l_distances[k*idl+i]) ? i : cluster[idg];
}
distances[idg] = l_distances[idl];
}
дает следующие ошибки:
...Temp\OCL1304T1.cl", line 35: error: expected a
declaration
]=l_distances[idl];
^
...Temp\OCL1304T1.cl", line 41: error: expected a
declaration
}
^
почему?
Попробуйте выполнить компиляцию для другого устройства. У меня была аналогичная компиляция проблем для intel gpu. –
Вы не ставите весь код. Номер строки не совпадает. Наверное, у вас есть некоторая '{}' размещенная за пределами того фрагмента кода, который вы вставили. – DarkZeros