如何在Cudafy GPU内核中声明固定大小的数组

时间:2014-03-20 04:46:26

标签: c# c++ arrays cuda cudafy.net

我想在内核中执行此操作:

int count[8];

我几乎肯定你可以在CUDA GPU内核中声明固定大小的数组。那么在使用Cudafy时我该怎么做呢?这不起作用:

[Cudafy]
public static void kernelFunction(int[] input, int[] output)
{
  int count[8];
  // ....other stuff
}

上面的代码导致C#错误:“无法在变量声明中指定数组大小(尝试使用'new'表达式初始化)。”

2 个答案:

答案 0 :(得分:2)

根据Cudafy.NET论坛和截至2014年3月20日,目前尚不支持此功能。所以我添加了这个答案,以减轻未来人们徒劳寻找解决方案的麻烦。说明上述内容的主题是here

请注意,线程中建议正确方法的人是使用共享内存是错误的。你可以在GPU内核中声明固定大小的数组,Cudafy目前不支持它。共享内存用于增加变量的范围,使得块中的所有线程都可以访问它们。当注册表存储空间已满时,它还可充当变量存储的溢出位置。声明共享内存是数组声明的唯一位置是不正确的。

答案 1 :(得分:0)

C#中,您可以执行以下操作:

int[] count = new int[8];

如果您使用的是unsafe代码,您还可以创建fixed size buffers

fixed int count[8];