Насколько я знаю (но я бы не стал этим ругаться), вы не можете инициализировать переменные из кода хоста, которые объявлены таким образом (за одним исключением, см. Ниже).Вы можете объявить переменную и инициализировать ее следующим образом:
__constant float pi = 3.14f;
Вы также можете сделать что-то вроде этого:
Ядро: __constant float width = WIDTH
Хост: Сборка ядрас параметром сборки -D
, определяющим значение WIDTH
.
То, что я делал в прошлом, это постоянная переменная в качестве параметра ядра.
__kernel void Foo(__constant SomeParams Parameters)
{
int a = Parameters.a;
/// do something useful...
}
Тогда вы можетевыделить и установить значение, как и любой другой аргумент ядра.