у меня есть этот вывод из компилятора с clGetProgramBuildInfo из этого ядра:
CVMS_ERROR_SERVICE_FAILURE: компилятор CVMS упал или завис при управлении службой
__kernel void vadd(
__global char* char_array,
int m,
int n,
__global long* result)
{
int index = get_global_id(0);
int max_n = n/m;
if(index == m-1){
max_n = n - (n/m)*(m-1);
}
long max[ max_n ];
int offset = log2((double)m);
for (int it=0; it < max_n; it++)
{
__global char* bits = &(char_array[64*(n/m)*(index-1)+it*64]);
int count=0;
for(int i=offset; i<=64; i++)
{
if(bits[i]=='0'){
count++;
}else{
break;
}
}
max[it] = count;
}
*result = 0;
long tmp = 0;
for(int i=0; i<max_n;i++)
{
if(max[i] > *result){*result = max[i];}
}
*result = tmp +1;
}
я получаю этот вывод, изменяя строку " int offset = log2 (m); " в "int offset = log2 ((double) m);" до того, как журнал компилятора вызвал неоднозначный вызов log2 (m), как правильно вызвать log2? Спасибо