2

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

int count[8];

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

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

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

4

2 回答 2

2

根据 Cudafy.NET 论坛,截至 2014 年 3 月 20 日,目前不支持此功能。所以我添加了这个答案,以减轻未来人们对解决方案的徒劳搜索。上面陈述的线程是here

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

于 2014-03-20T20:37:47.297 回答
0

C#,你会做这样的事情:

int[] count = new int[8];

或者,如果您使用的是unsafe代码,您还可以创建固定大小的缓冲区

fixed int count[8];
于 2014-03-20T06:36:38.713 回答