如何在Cudafy GPU内核中声明固定大小的数组
How to declare a fixed size array in a Cudafy GPU kernel
我想在内核中这样做:
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日,目前不支持。所以我添加了这个答案,以减轻未来的人从徒劳的寻找一个解决方案。上面所述的线程在这里。
请注意,线程中建议正确使用共享内存的人是错误的。你可以在GPU内核中声明固定大小的数组,Cudafy目前还不支持。共享内存用于增加变量的作用域,以便块内的所有线程都可以访问它们。当注册表存储已满时,它还充当变量存储的溢出位置。声明共享内存是数组声明的唯一位置是不正确的。
在C#
中,您可以这样做:
int[] count = new int[8];
或者如果你使用unsafe
代码,你也可以创建固定大小的缓冲区:
fixed int count[8];
相关文章:
- 无法将字符串数组声明为类成员而不是字符 (C++)
- 为什么从函数返回数组时需要将数组声明为静态数组.(C++)
- 在 c++ 中直接访问的内联数组声明
- 由于 2D 数组声明,C++ 14 中的运行时错误
- 如何将char数组声明为函数参数?或告诉我此代码中还有其他问题?
- 来自函数参数的 C++ 静态数组声明
- C++ 中的动态数组声明
- C++数组声明
- 数组声明中的错误:表达式必须具有常量值
- 程序随数组声明崩溃
- 运行时和编译时的数组声明
- C++数组声明和初始化
- 带有常量表达式的数组声明
- C ,数组声明,模板,链接器错误
- 如何用'n'维数组声明 std::vector?
- 数组声明上的编译器错误
- 这是什么数组声明
- 头文件类中的数组声明
- 节点数组声明
- 在静态数组声明中使用了两次C++常量