NVCC不支持中文路径

自己写的矩阵乘法

#include<stdio.h>
#include
#include"cuda_runtime.h"
#define N 10//计算c=a*b
global void mult(float *dev_a,float dev_b,floatdev_c,int n);

int main(void)
{
int i,j;
float a,b,c,dev_a,dev_b,dev_c;
a=(float
)malloc(sizeof(float)NN);
b=(float
)malloc(sizeof(float)NN);
c=(float
)malloc(sizeof(float)NN);
cudaMalloc((void
)&dev_a,sizeof(float)NN);
cudaMalloc((void
*)&dev_b,sizeof(float)NN);
cudaMalloc((void**)&dev_c,sizeof(float)NN);
for(i=0;i<N;i++)
for(j=0;j<N;j++)
{
a[i*N+j]=i;
b[i*N+j]=i*i;
}
cudaMemcpy(dev_a,a,sizeof(float)NN,cudaMemcpyHostToDevice);
cudaMemcpy(dev_b,b,sizeof(float)NN,cudaMemcpyHostToDevice);
cudaMemcpy(dev_b,b,sizeof(float)NN,cudaMemcpyHostToDevice);
dim3 blocks(1,1);
dim3 threads(10,10);
kernel<<<blocks,threads>>>(dev_a,dev_b,dev_c,N);
cudaMemcpy(c,dev_c,sizeof(float)NN,cudaMemcpyDeviceToDevice);
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf(“%f\t “,c[i*N+j]);
printf(”\n”);
}
system(“pause”);
free(a);
free(b);
free(c);
cudaFree(dev_a);
cudaFree(dev_b);
cudaFree(dev_c);
return 0;
}

global void mult(float dev_a,float dev_b,floatdev_c,int n)
{
int x=threadIdx.x;
int y=threadIdx.y;
float temp=0;
int i;
for(i=0;i<N;i++)
temp+=dev_a[y
n+i]dev_b[i*n+x];
dev_c[x+y
n]=temp;
}

LZ您好:

请您卸载当前的CUDA Toolkit和Visual Studio,然后重新将Visual Studio安装在不含中文的路径中,之后再重新安装CUDA Toolkit。

以及您以后建立解决方案的 时候也不要使用中文路径。

祝您好运~

哦哦哦,谢谢版主。
但是我同学写的一个工程发给我,我放在一个“新建文件夹”的文件夹里运行就没有这个问题,这个是为什么啊

LZ您好:

1:您说的“放在一个“新建文件夹”的文件夹里运行就没有这个问题”指的是?编译出来的exe果断能运行的。

2:以及,您如果说的是该解决方案可以正常在VS中编译,请问这个工程里面是否使用了NVCC编译了device端的代码?

望楼主回答。

祝您好运~

谢谢版主,重新装了以后能用了。但是开始那个我同学代码能运行的问题他确实是使用了device端的代码,至于为什么他的代码能运行我的不能还是没弄清楚

今天重新调试了一遍,结果全是-431602080,我自己暂时也找不出什么错误

找到问题了。。。
cudaMemcpy(c,dev_c,sizeof(float)NN,cudaMemcpyDeviceToHost)
写成了cudaMemcpy(c,dev_c,sizeof(float)NN,cudaMemcpyDeviceToDevice)了

LZ您好:

当前nvcc是不支持中文路径的,所以无论您VS安装到中文路径下还是您项目在中文路径下,都是无法正确编译的。

以及恭喜您发现您代码的问题所在。

祝您调试顺利~

另外,请LZ适当修改下帖子标题,以便其他人能够从标题获知帖子的基本内容。

显然这个不会导致楼主被提示无效的host compiler路径的,

我建议您还是诚实点,别再用您的那个“新建文件夹了”,
无论是host compiler的所在,还是项目的所在,
都不要用。

cuda tookit不支持中文路径的。

这绝不是神马“cudaMemcpy用错导致”的提示,请不要混弄论坛。
(您的图能看得很清楚,版主们都不是瞎子)
(这次给您个面子,下次不要这样了)

虽然我是小白,但这个真没乱来,应该是我没表达清楚吧。同学写了把整个工程发给我,我把工程放在一个中文名的文件夹里

LZ您好:

目前NVCC还无法支持中文路径,所以您如果将工程文件放在中文路径下,并且使用NVCC编译其中的device代码,这个应该是会报错的。

大致如此,以及,请您修改一下帖子的标题以方便看贴的人快速获知帖子的内容。

祝您好运~

谢谢版主。不过这个怎么改。。。没找到可以改的选项

LZ您好:

已经代为修改了您的标题。

祝您好运~