C++ CUDA nvlink警告:未找到SM Arch('SM_35')

C++ CUDA nvlink警告:未找到SM Arch('SM_35'),c++,cuda,C++,Cuda,昨天在我的ubunutu14.04上安装了cuda-6.5。我遵循了中所述的步骤。检查了系统要求,我的还可以。执行预安装、卸载以前安装的cuda和安装的package manager安装。所有这些步骤都已成功执行。我跳过了arm的runfile安装和croos构建环境的步骤。在[安装后操作][2]步骤中,添加了 export PATH=/usr/local/cuda-6.5/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda-6.5/lib64:$L

昨天在我的ubunutu14.04上安装了cuda-6.5。我遵循了中所述的步骤。检查了系统要求,我的还可以。执行预安装、卸载以前安装的cuda和安装的package manager安装。所有这些步骤都已成功执行。我跳过了arm的runfile安装和croos构建环境的步骤。在[安装后操作][2]步骤中,添加了

export PATH=/usr/local/cuda-6.5/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-6.5/lib64:$LD_LIBRARY_PATH
将这些行添加到.profile文件。我通过运行sudo apt get install cuda drivers命令将我的驱动程序升级为最新的可用驱动程序。还验证了我安装了正确的驱动程序。重新启动我的计算机,vaulla cuda-6.5已成功生成。但是当我编译simpleCuda.cu文件时

#include <stdio.h>
#include <cuda.h>
#include<iostream>
#include <thrust/device_vector.h>
#include <thrust/logical.h>
#include <thrust/functional.h>
#include <cassert>
#include <cublas_v2.h>



using namespace std;

int main(){
        float* dev,host;

        cudaError_t stat = cudaMalloc((void**)&dev,10*sizeof(float));
        cout << "stat " << stat << endl;
        return 0;
}
`


。在我看来,这是可以忽略的。但我不想忽视这个信息。我使用cuda-5.5编译工具在不同的计算机上设置相同的编译参数来编译这个simpleCuda.cu。它没有给我任何关于架构链接的警告信息-arch=sm_35。我想摆脱这个警告信息。这些编译参数对于我发布的这段特定代码不是必需的,但我还需要它们。非常感谢您的帮助。

这显然是一个工具链限制,在CUDA 7生产版本中得到了纠正


[此答案是根据注释组合而成的,目的是将问题从CUDA标记的未回答队列中排除]

为什么要对单个文件使用单独的编译和链接cublas和设备运行时库,而不使用设备代码和cublas库调用?当CUDA 7生产版本可用时,请切换到CUDA 7生产版本。我认为这个问题应该得到解决。它在CUDA 7 RC中尚未修复。同时,如果您只是想让nvlink警告消息消失,可以将-Xnvlink-w添加到compile命令中。如果这是不可接受的,那么我可以提供的唯一建议是等到CUDA 7产品发布。在那之前,这种警告都是善意的。你好,罗伯特,谢谢你的建议。那我就等CUDA 7。嗨,Talonmes,你说得对,目前我没有在cublas和设备运行库上做任何事情,但在不久的将来我计划使用它们。非常感谢。
nvlink warning : SM Arch ('sm_35') not found in '/usr/local/cuda-6.5/bin/../targets/x86_64-linux/lib/libcublas_device.a:maxwell_sgemm.asm.o'
nvlink warning : SM Arch ('sm_35') not found in '/usr/local/cuda-6.5/bin/../targets/x86_64-linux/lib/libcublas_device.a:maxwell_sm50_sgemm.o'