#c# #.net #gpu #aleagpu
#c# #.net #графический процессор #aleagpu
Вопрос:
Я пытаюсь использовать функцию AllInOne<>, заданную графическим процессором Alea в Alea.Параллельный.Библиотека KernelScan. Однако я продолжаю сталкиваться с этой ошибкой:
Система.Исключение: ‘Длина общего массива должна быть постоянной времени компиляции ядра.
Это код, который я использую для вызова функции:
int[] scanInput = new int[100];
for(int i = 0; i <100; i )
{
scanInput[i] = 100;
}
int[] scanOut = new int[100];
var scanInGPU = gpu.AllocateDevice(scanInput);
var scanOutGPU = gpu.AllocateDevice(scanOut);
var scanOutPtr = scanOutGPU.Ptr;
var scanInPtr = scanInGPU.Ptr;
Func<int, int, int> op = new Func<int, int, int>((a, b) => { return a b; });
LaunchParam lp = new LaunchParam(griddim, blockdim);
sesh.Launch(KernelScan.AllInOne, lp, 2, 50, op, 0, scanOutPtr, scanInPtr, 0, 100);
Есть ли способ заставить эту функцию работать, чтобы я мог вызвать ее из другого ядра, работающего на графическом процессоре? Или мне придется написать собственное ядро сканирования?
Я не могу использовать GPUExtension.Функция Scan(), поскольку ее невозможно вызвать из уже запущенного ядра, однако это должно быть возможно с помощью этой функции.