我想在内核中执行此操作:
int count[8];
我几乎肯定您可以在 CUDA GPU 内核中声明固定大小的数组。那么,在使用 Cudafy 时我该如何做到这一点呢?这不起作用:
[Cudafy]
public static void kernelFunction(int[] input, int[] output)
{
int count[8];
// ....other stuff
}
上述代码会导致 C# 错误:“无法在变量声明中指定数组大小(尝试使用“new”表达式进行初始化)。”
最佳答案
根据 Cudafy.NET 论坛的信息,截至 2014 年 3 月 20 日,目前尚不支持此功能。所以我添加这个答案是为了让 future 的人们不再徒劳地寻找解决方案。上述内容的线程是 here .
请注意,线程中建议正确方法是使用共享内存的人是错误的。您可以在 GPU 内核中声明固定大小的数组,Cudafy 目前不支持它。共享内存用于增加变量的范围,以便 block 内的所有线程都可以访问它们。当注册表存储已满时,它还充当变量存储的溢出位置。说共享内存是数组声明的唯一位置是不正确的。
关于c# - 如何在 Cudafy GPU 内核中声明固定大小的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22523691/