Я новичок в CUDA. Я пытаюсь написать приложение, в котором я вызываю одну функцию ядра из другой функции ядра. Но я получаю сообщение об ошибке "запуск ядра с устройства или глобальные функции требуют отдельного режима компиляции" при сборке приложения. Вот мой полный код. Любая помощь будет оценена по достоинству.
#include<iostream>
#include<curand.h>
#include<cuda.h>
#include <curand_kernel.h>
#include <stdlib.h>
#include <stdio.h>
using namespace std;
__device__ int *vectorData;
__device__ void initializeArray(int elementCount)
{
for (int i = 0; i < elementCount; i++)
{
vectorData[i] = 1;
}
}
__global__ void AddOneToEachElement(int elementCount)
{
for (int i = 0; i < elementCount; i++)
{
vectorData[i] = vectorData[i]+1;
}
}
__global__ void addKernel(int *numberOfElements)
{
vectorData = (int*)malloc(sizeof(int));
initializeArray(*numberOfElements);
int gridSize = ceil((*numberOfElements) / 1024) + 1;
AddOneToEachElement << <gridSize, 1024 >> > (*numberOfElements);
cudaDeviceSynchronize();
free(vectorData);
}
int main()
{
int numberOfElements = 1;
int *device_numberOfElements;
cudaMalloc((int**)&device_numberOfElements, sizeof(int));
cout << "Enter the Number of elements" << endl;
cin >> numberOfElements;
cudaMemcpy(device_numberOfElements, &(numberOfElements), sizeof(int), cudaMemcpyHostToDevice);
addKernel << <1, 1 >> > (device_numberOfElements);
cudaFree(device_numberOfElements);
return 0;
}