FFT 2D время выполнения ядра = 0 в OpenCL

Я работаю над домашним заданием и сравниваю производительность Fast Fourier Transform на CPU и GPU. Я закончил с частью CPU, но с GPU у меня проблема.

Беда в том, что время выполнения ядра равно нулю, входной сигнал совпадает с выходным образом. Я использую VS2010 на win7 с AMD APP SDK. Вот хозяин код , ядро , дополнение заголовок обращаться с образ , их можно найти в Книге программирования OpenCL (Ryoji Tsuchiyama…)

Я предполагаю, что ошибка заключается в том, что мы передаем значения из пикселей изображения в cl_float2 *xm (строка 169-174 в коде хоста). Я не могу получить доступ к компоненту вектора, чтобы проверить его, компилятор не принимает .sX или же .xy , выдает ошибку об этом. Другие части — ядро, заголовок … — выглядит хорошо со мной.

for (i=0; i < n; i++) {
for (j=0; j < n; j++) {
((float*)xm)[(2*n*j)+2*i+0] = (float)ipgm.buf[n*j+i];   //real
((float*)xm)[(2*n*j)+2*i+1] = (float)0; //imag
}
}

Надеюсь, вы, ребята, поможете мне. Любые идеи будут оценены.

2

Решение

OpenCL предоставляет много разных кодов ошибок.
Вы уже получаете их, делая ret = clInstruction(); на каждый звонок, но вы не анализируете его.

Пожалуйста, проверяйте при каждом вызове, равно ли это значение CL_SUCCESS,
Всегда может случиться так, что памяти недостаточно, аппаратное обеспечение уже используется или в исходном коде есть простая ошибка. Возвращаемое значение скажет вам.

Также: пожалуйста, проверьте ваш cl_context, cl_programи т. д. для NULL ценности.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]