Например, этот фрагмент кода будет компилироваться и выполняться нормально?делает нормальные указатели арифметические работы на ядрах opencl?
int* end = local_buffer + BUFFER_SIZE;
for(int* x = local_buffer; x < end; ++x)
{
...
}
Например, этот фрагмент кода будет компилироваться и выполняться нормально?делает нормальные указатели арифметические работы на ядрах opencl?
int* end = local_buffer + BUFFER_SIZE;
for(int* x = local_buffer; x < end; ++x)
{
...
}
Арифметика указателей не работает, но вам нужно подписать указатели с соответствующим объемом памяти. Так что ваш пример кода, скорее всего, не так: если local_buffer
объявлен как
local int local_buffer[BUFFER_SIZE];
Тогда напечатает end
и x
Variables' сусло также имеют local
specfier:
local int* end = …;
for (local int* x = …
по умолчанию является global
, что приведет к сбоям в работе, если ваш указатель находится в локальной или постоянной памяти. Я обнаружил, что многие реализации OpenCL не предупреждают вас об этом, поэтому вы должны быть очень осторожны.
Да, если указатели находятся в пространстве устройства. Нет проблем. – DarkZeros