Я не могу воспроизвести ошибку, поэтому я предполагаю, что это проблема с драйвером.
Согласно документации OpenCL , T log2 (T)
определено, поэтому log2(double)
возвращает double
, который должен выдавать вам предупреждение компилятора только при неявном приведении к int
. Попробуйте
int offset = (int)(log2((float)m)+0.5f);
, чтобы избежать каких-либо предупреждений компилятора, и если это все еще не работает, используйте мой evil fast log2 метод
int offset = (as_uint((float)m)>>23)-127;
, который использует встроенный Функция OpenCL as_uint(float)
.