【发布时间】:2016-06-04 03:48:30
【问题描述】:
我在 CUDA 编程中有两个问题。
-
我想在 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])
两者都不工作。它给出了“不允许参数”的错误。
-
在main方法里面我要声明一个矩阵
int a[n][n];其中 n 从 1 运行到 5(在 for 循环中)。它给出了“表达式必须有一个常数值”的错误。
我在哪里犯了错误。
我尝试使用 gcc 和 nvcc 编译器从 this question 编译代码,gcc 编译而 nvcc 不编译。
【问题讨论】:
-
你今天已经问过一次这个问题了。我认为这就足够了。
-
@talonmies 我的问题是,gcc 编译器在 CUDA 编译器不编译的地方编译。你能理解我的问题吗
-
有人已经为您的问题here 提供了完整的答案。 nvcc 默认使用宿主机 C++ 编译器,所以第二个版本最合适。如果您尝试编译该答案中的第一个版本,nvcc/g++ 将告诉您确切您必须使用什么选项来编译 C99 代码而不会出错。这不值得提出新问题。
-
@talonmies 我已经编辑了问题并添加了我得到的结果的图片
-
@talonmies 我试过 "nvcc -Xcompiler -std=c99 printmatrix.cu", "nvcc -arch=sm_20 printmatrix.cu" 都没有编译
标签: cuda