Cuda nvcc未执行ubuntu 17.10中的内核代码

Cuda nvcc未执行ubuntu 17.10中的内核代码,cuda,Cuda,我已经编写了以下代码 #include "cuda_runtime.h" #include "device_launch_parameters.h" #include <stdio.h> #include<iostream> using namespace std; __global__ void hello() { printf("Hello"); } int main() { hello<<<1, 7>>>()

我已经编写了以下代码

#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include <stdio.h>
#include<iostream>
using namespace std;

__global__ void hello()
{
    printf("Hello"); 
}

int main()
{
    hello<<<1, 7>>>();
    cudaDeviceSynchronize();
    return 0;
}
#包括“cuda_runtime.h”
#包括“设备启动参数.h”
#包括
#包括
使用名称空间std;
__全局_uu; void hello()
{
printf(“你好”);
}
int main()
{
你好;
cudaDeviceSynchronize();
返回0;
}
代码使用
nvcc-o test test.cu编译并生成一个警告
nvcc警告:“compute\u 20”、“sm\u 20”和“sm\u 21”体系结构已弃用,并可能在将来的版本中删除(使用-Wno弃用的gpu目标来抑制警告)。
我继续执行
/test
,但根本没有输出。
代码中有错误吗?谢谢

您说您的问题在重新启动后得到了解决:重新启动,或者在安装nvidia驱动程序/CUDA后至少需要重新启动X

无论如何,检查CUDA api调用中的错误是一个很好的做法,并在最后重置设备(否则,CUDA memecheck等工具可能会错过错误):

#包括“cuda_runtime.h”
#包括“设备启动参数.h”
#包括
#包括
使用名称空间std;
#定义cudaErr(ans){gpuAssert((ans),_文件_,_行_)}
内联void gpuAssert(cudaError\u t代码,const char*文件,int行,bool abort=true)
{
如果(代码!=cudaSuccess)
{
fprintf(标准,“GPUassert:%s%s%d\n”,cudaGetErrorString(代码)、文件、行);
如果(中止){
出口(代码);
}
}
}
__全局_uu; void hello()
{
printf(“你好”);
}
int main()
{
你好;
cudaErr(cudaDeviceSynchronize());
cudaErr(cudaDeviceReset());
返回0;
}

每当您在使用CUDA代码时遇到问题时,最好先使用CUDA memcheck并运行代码,然后再向他人寻求帮助。即使您不理解错误输出,它也可能对试图帮助您的其他人有用。如果使用
cuda memcheck./test运行代码会发生什么情况?谢谢,系统重新启动后问题就解决了。也许编译器出了问题
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include <stdio.h>
#include<iostream>
using namespace std;

#define cudaErr(ans) { gpuAssert((ans), __FILE__, __LINE__); }
inline void gpuAssert(cudaError_t code, const char *file, int line, bool abort = true)
{
    if (code != cudaSuccess)
    {
        fprintf(stderr,"GPUassert: %s %s %d\n", cudaGetErrorString(code), file, line);
        if (abort) {
            exit(code);
        }
    }
}

__global__ void hello()
{
    printf("Hello"); 
}

int main()
{
    hello<<<1, 7>>>();
    cudaErr(cudaDeviceSynchronize());
    cudaErr(cudaDeviceReset());
    return 0;
}