Я пытаюсь понять, как передать матрицу из Matlab в файл C++ CUDA (*.ptx). Я хочу обрабатывать матрицу по-разному в каждом потоке! Я определенно не хочу разбить матрицу в разных потоках! Я хочу, чтобы каждый поток имел одну и ту же матрицу!
Я пробовал что-то вроде:
_global_ void radialAverage(int* image[][]) {
...
}
но это не сработало. Я получаю следующую ошибку:
kernel.cu(8): error: an array may not have elements of this type
1 error detected in the compilation of "C:/Users/ADMINI~1/AppData/Loca/Temp/tmpxft_00000c44_00000000-8_kernel.cpp1.ii".
Можете ли вы придумать какой-либо способ сделать это? Или это возможно?
Btw: Я не использую библиотеки для C++, а только CUDA-Api.
Правильный способ определения ядра для передачи матрицы из Matlab четко отображается (несколько раз) на странице, на которую вы ссылались в своем вопросе.
Итак, определите это ядро (Matlab gpuArray
передается автоматически как указатель устройства на ядро):
__global__ void radialAverage(int* image) {
...
}
После того как вы CUDAKernel
ядро с помощью CUDAKernel
из панели инструментов, создайте целочисленный gpuArray
из вашей матрицы Matlab и передайте это функции ядра.