如何在共享内存中分配多个数组

How to allocate multiple arrays in shared memory

我正在尝试将为 Cudafy 编写的内核转换为 Alea。 Cudafy 允许您在共享内存中分配多个不同类型的数组。示例:

int[,] paths = thread.AllocateShared<int>("path", 128, 9);
float[] best = thread.AllocateShared<float>("best", 128);

在 Alea 中,您似乎只能在共享内存中分配一个数组。我只看到以下内容:

var lp = new LaunchParam(128, 128, 1024);
...
int[,] paths = __shared__.Array2D<int>(128, 9);

我错过了什么吗?有没有办法在 Alea 的共享内存中分配多个数组?

__shared__.Array2D 在内核中用于定义编译时固定大小的二维数组。它不能在内核之外使用。以下是一些示例:https://github.com/quantalea/AleaGPUTutorial/blob/master/src/csharp/examples/matrix_multiplication/MatrixMult.cs#L52