Я занимаюсь написанием кода CUDA и изучением структуры и идеалов массового параллельного программирования. В любом случае, я столкнулся с проблемой, которую я не совсем понимаю.Аргумент несовместим с параметром того же типа
Вот код:
#include <cuda_runtime.h>
#include <stdio.h>
#include <math.h>
__global__ void cudaTest(struct led* input[])
{
int ledNum = blockIdx.x * blockDim.x + threadIdx.x;
}
int main()
{
struct led
{
unsigned char red, green, blue;
};
struct led* input[1200];
struct led* dInput[1200];
cudaMalloc((void**)&dInput, sizeof(struct led) * 1200);
cudaMemcpy(dInput, input, sizeof(struct led) * 1200, cudaMemcpyHostToDevice);
cudaTest<<<4, 300>>>(dInput);
cudaMemcpy(input, dInput, sizeof(struct led) * 1200, cudaMemcpyDeviceToHost);
cudaDeviceSynchronize();
cudaFree(dInput);
printf("Input: %d", *input);
}
Вопрос гряду через это при компиляции программы:
testCuda.cu (22): ошибка: аргумент типа "во главе **" является несовместим с параметром типа «во главе **»
cudaTest<<<4, 300>>>(dInput);
Я не понимаю, это по понятным причинам ... Он говорит, что по существу то же самое, не совместимо с самим собой.
Я не знаю, если это проблема с тем, как я выделяю память для массива, с тем, как я инициализирую его, или что бы это ни было. Любая помощь приветствуется.
Редактирование: только для некоторого контекста этот код не имеет приложения, это тестовая программа, которую я использую для проверки кода, прежде чем я его внедряю в свой проект. Цель этой программы проста: выделить пространство для массива на графическом процессоре, перенести его на GPU, вызвать ядро и перенести его.
Не относится к C. – Olaf
К сожалению, удалили тег. – WaffleMan0310
Это, но я вижу, что он говорит, вам нужно больше, чем просто знание C, чтобы понять это. – WaffleMan0310