Я реализовал проект с opencl. У меня есть файл, который содержит функцию ядра, а функции, используемые ядром, включены в отдельный заголовочный файл, но когда я изменяю включенный файл, иногда изменения применяются, а иногда нет, и это сбивает меня с толку. если приложение имеет ошибку или нет.
Я проверил другие сообщения в stackoverflow и увидел, что у nvidia есть серьезная проблема с передачей -I{include directory}
, поэтому я изменил его и явно указал адрес файлов заголовков, но все же компилятор opencl не может найти ошибки в файле заголовка, который включен в имя файла ядра.
Кроме того, я использую nvidia gtx 980 и установил CUDA 7.0 на свой компьютер.
У кого-нибудь есть такой же опыт? как я могу это исправить?
Итак, предположим, что у меня есть такое ядро:
#include "../../src/cl/test_kernel_include.cl"
void __kernel test_kernel(
__global int* result,
int n
)
{
int thread_idx = get_global_id(0);
result[thread_idx] = test_func();
}
который test_kernel_include.cl
выглядит следующим образом:
int test_func()
{
return 1;
}
Затем я запускаю код и получаю массив, все члены которого равны 1
, как мы и ожидали. Теперь я меняю test_kernel_include.cl
на:
int test_func()
{
return 2;
}
но результатом по-прежнему является массив, все элементы которого равны 1
, который должен измениться на 2
, но это не так.