Вызов KernelScan в AleaGPU C#

#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(), поскольку ее невозможно вызвать из уже запущенного ядра, однако это должно быть возможно с помощью этой функции.