矩阵作为CUDA中的参数

时间:2016-02-22 16:08:44

标签: cuda

我在CUDA编程中遇到两个问题。

  1. 我想将矩阵作为CUDA程序中的函数参数传递。我试过跟随。 GCC编译器编译以下代码,但NVIDIA CUDA C编译器不编译此代码并提示错误。 (我已经安装了CUDA 7.5)

    void printMatrix( size_t rows, size_t cols, int a[][cols] )
    

    void printMatrix(int row, int col, int matrix[row][col])
    
  2. 两者都不起作用。它给出了#34;不允许参数"错误。

    1. 在main方法中我想声明一个矩阵

      int a[n][n];
      

      其中n从1到5(在for循环中)。它给出了#34;表达式必须具有恒定的值"错误。

    2. 我在哪里犯错误。

      我尝试使用gcc和nvcc编译器从this question编译代码,gcc编译,而nvcc则没有。

      compiler results

1 个答案:

答案 0 :(得分:1)

因为您在Windows上执行此操作,nvcc note nvcc不是编译器)使用Visual Studio编译器编译主机主机。 Visual Studio不是support C99 language features,因此您不能在任何将在Windows上与CUDA一起编译的主机代码中使用它们。您必须在不使用主机代码中的C99语言功能的情况下重写代码。

如果您在linux上执行此操作,则可以使用gcc通过nvcc编译主机代码,如果您提供正确的命令行选项并使用.c传递文件,则可以使用C99语言功能延伸,正如你在你的问题中巧妙地证明的那样。 C99功能和CUDA不能在.cu文件中混合,因为CUDA需要C ++编译器来编译包含CUDA语言扩展的主机代码。