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

标签 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”表达式进行初始化)。”

最佳答案

根据 Cudafy.NET 论坛的信息,截至 2014 年 3 月 20 日,目前尚不支持此功能。所以我添加这个答案是为了让 future 的人们不再徒劳地寻找解决方案。上述内容的线程是 here .

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

关于c# - 如何在 Cudafy GPU 内核中声明固定大小的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22523691/

相关文章:

c# - Dictionary(TKey, TValue) GetHashCode 和 Equals - 它们是如何工作的?

c# - 为什么派生 List<T> 类只是为了重申索引器?

c++ - 从 dll 中的函数返回时堆损坏

c++ - 在 C++ 中使用 strtol 获取 long double

javascript 将数组的元素映射到 HTML DIV 模板

c# - 如何创建两个数组的数组,然后测试它是否相等?

c# - 如何获取数组中类的属性

c++ - Nim 变体游戏策略 - StoneGameStrategist - SRM 309

c++ - VS 在程序集操作码中嵌入字符串

c++ - Ncurses 和 C++ 屏幕保护程序