【问题标题】:How to declare a fixed size array in a Cudafy GPU kernel如何在 Cudafy GPU 内核中声明一个固定大小的数组
【发布时间】:2014-04-26 18:00:32
【问题描述】:

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

int count[8];

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      int[] count = new int[8];
      

      或者如果你使用unsafe代码,你也可以创建fixed size buffers

      fixed int count[8];
      

      【讨论】:

      • 在 C# 中,这可能有效。但是,将 C# 与 Cudafy 一起使用,这些都不起作用。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-31
      • 1970-01-01
      • 2020-10-18
      • 2017-04-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多