У меня есть константа в верхней части моего кода...
__constant uint uintmaxx = (uint)( (((ulong)1)<<32) - 1 );
Он отлично компилируется на компиляторах AMD и NVIDIA OpenCL... затем выполняется.
(правильно) на картах ATI возвращает... 4294967295 или (все 32 бита = 1)
(неверно) на картах NVIDIA возвращает... 2147483648 или (только 32-й бит = 1)
Я также попробовал -1 + 1‹‹32, и это сработало на ATI, но не на NVIDIA.
Что дает? Я просто что-то упустил?
Пока я говорю о различиях компиляторов OpenCL, кто-нибудь знает хороший ресурс, в котором перечислены различия компиляторов между AMD и NVIDIA?