精华内容
下载资源
问答
  • NVCC

    千次阅读 2018-01-08 14:41:11
    NVCC官网解析:http://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/#nvcc-command-options GCC : https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html nvcc命令选项: 选项命令有长名和短名,...

    NVCC官网解析:http://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/#nvcc-command-options

    GCC : https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html

    nvcc命令选项:

    选项命令有长名和短名,通常我们使用是用短名,长名主要用于描述。

    1.指定编译阶段

    主要指定编译的阶段以及要编译的输入文件。

    -cuda  -cubin  -fatbin  -ptx  -gpu  -E 

    -c :最常使用,编译每个.c/.cc/.cpp/.cxx/.cu输入文件为object文件

    -dc  -dw  -dlink  -link 

    -lib :编译所有的输入文件为object文件,并且把结果添加到指定的library输出文件

    -run

    2.文件和路径配置

    -o :指定输出文件的位置和名称

    -include  :指定预处理和编译时预先需要包含的头文件

    -l  :指定链接时需要的库文件

    -D :指定预处理和编译时需要的宏

    -U  :取消宏定义

    -I :指定包含文件的搜索路径

    -isystem :指定系统包含的引用文件的搜索路径

    -L :指定库文件的搜索路径

    -odir :指定输出文件的目录

    -ccbin :指定host编译器所在路径

    -cudart :指定CUDA runtime library使用类型(none,shared,static),默认为static

    -ldir  :指定包含libdevice库文件目录

    3.指定编译器、连接器的行为

    -pg 

    -g  :产生可调式代码,调试模式下必须的

    -G  :产生可调式的设备代码

    -lineinfo :为设备代码产生行number信息

    -O  :产生优化代码 ,包括O0,O1,O2,O3,用于产生不同的指令集

    -ftemplate-backtrace-limit  -shared  -x  -std  -nohdinitlist  -nohdmoveforward  -expt-relaxed-constexpr 

    -m  :指定平台结构32 vs 64

    4.编译工具内部选项

    -Xcompiler  -Xlinker  -Xarchive  -Xptxas  -Xnvlink

    -Xptxas -v:显示代码生成的统计结果

    -Xptxas -dlcm=cg:关闭L1cache

    -Xptxas -dlcm=ca:将L1cache增加到48KB(默认为16KB,和shared memory一共64KB)

    5.编译驱动引导选项

    -noprof  -dryrun 

    -v  :列出nvcc产生的编译命令,不影响其执行

    -keep  :保留各步骤产生的中间文件,用于调试

    -keep-dir  -save-temps 

    -clean  :逆转nvcc的行为

    -run-args  -idp  -ddp  -dp  -MT  -nodlink

    6.CUDA编译方式选项

    -default-stream

    7.驾驭GPU代码生成选项

    -arch :指定GPU架构

    -code  -gencode  -rdc  -e 

    -maxrregcount  :指定GPU函数可使用的最大寄存器数量

    -use_fast_math  -ftz  -prec-div  -prec-sqrt  -fmad

    8.ptxas选项

    -allow-expensive-optimizations  -c  -dlcm  -dscm  -g  -disable-optimizer-consts  -e  -fmad  -flcm  -fscm  -lineinfo  -arch  -h  -m  -maxrregcount  -O  -optf  -o  -preserve-relocs  -sp-bound-check  -v  -V  -Werror  -warn-double-usage  -warn-spills

    扩展:

    (1)--std {c++03|c++11|c++14}-std

    Select a particular C++ dialect.

    Allowed values for this option: c++03,c++11,c++14

    (2)--expt-relaxed-constexpr

    -expt-relaxed-constexpr

    Experimental flag: Allow host code to invoke __device__constexpr functions, and device code to invoke __host__constexprfunctions.

    (3)--x {c|c++|cu}-x

    Explicitly specify thelanguage for the input files, rather than letting the compiler choose a default based on the file name suffix.Allowed values for this option: cc++cu.

    (4)--compiler-options options,...

    -Xcompiler : Specify options directly to the compiler/preprocessor.

    (5)--gpu-architecture arch

    -arch :Specify the name of the class of NVIDIA virtual GPU architecture for which the CUDA input files must be compiled.

    The architecture specified with this option must be a virtualarchitecture (such as compute_50). Normally, this option alone does not trigger assembly of the generated PTX for a real architecture (that is the role of nvcc option --gpu-code, see below); rather, its purpose is to control preprocessing and compilation of the input to PTX.

    For convenience, in case of simple nvcc compilations, the following shorthand is supported. If no value for option --gpu-code is specified, then the value of this option defaults to the value of --gpu-architecture. In this situation, as only exception to the description above, the value specified for --gpu-architecture may be a realarchitecture (such as a sm_50), in which case nvcc uses the specified real architecture and its closest virtualarchitecture as effective architecture values. 

    For example, nvcc --gpu-architecture=sm_50 is equivalent tonvcc --gpu-architecture=compute_50 --gpu-code=sm_50,compute_50.

    Virtual Architecture Feature List


    compute_30
     and compute_32

    Basic features

    + Kepler support

    + Unified memory programming

    compute_35+ Dynamic parallelism support
    compute_50compute_52, and compute_53+ Maxwell support
    compute_60compute_61, and compute_62+ Pascal support
    compute_70+ Volta support

    (6)GCC 5的 Dual ABI [1][2] 的存在,GCC 5与 GCC 4.X 系列的ABI是不兼容的,所以GCC 5编译出来的库混合GCC 4.X编译的库是会出现链接符号找不到的,其中最大的影响就是std::string,使用统一版本的编译器编译是最好的处理方式,越简单越暴力越美好。

    (7)_GLIBCXX_USE_CXX11_ABI 

    controls whether the declarations in the library headers use the old or new ABI. So the decision of which ABI to use can be made separately for each source file being compiled. Using the default configuration options for GCC the default value _GLIBCXX_USE_CXX11_ABI =1 which causes the new ABI to be active, so to use the old ABI you must explicitly define the _GLIBCXX_USE_CXX11_ABI =0 before including any library headers. 






    展开全文
  • bazel_nvcc 在bazel中使用nvcc编译器 如何建造 bazel build cuda:全部 bazel测试测试:全部
  • nvcc fatal

    2021-03-26 11:05:42
    nvcc fatal 磁盘/tmp为read only,检查是否有sudo权限,如有,检查磁盘是否正常挂载; nvcc版本和gcc版本是否兼容。

    nvcc fatal

    1. 磁盘/tmp为read only,检查是否有sudo权限,如有,检查磁盘是否正常挂载;
    2. nvcc版本和gcc版本是否兼容。
    展开全文
  • cuda nvcc dll.pdf

    2021-09-14 11:03:30
    cuda nvcc dll.pdf
  • nvcc简介

    千次阅读 2020-05-03 22:47:50
    nvcc编译分成device部分编译和host部分编译,host部分直接调用平台编译器进行编译Linux使用gcc,window使用cl.exe,这里主要讲解device部分的编译,此部分编译分两个阶段,第一阶段将源文件.cu文件的device部分编译...

    nvcc编译分成device部分编译和host部分编译,host部分直接调用平台编译器进行编译Linux使用gcc,window使用cl.exe,这里主要讲解device部分的编译,此部分编译分两个阶段,第一阶段将源文件.cu文件的device部分编译成ptx文本指令,第二阶段将ptx文本指令编译成在真实架构上运行的二进制指令,第二阶段可能发生在生成可执行程序的过程中,也可能发生在运行可执行程序的过程中(just-in-time compilation)。在生成可执行程序的过程中可以根据nvcc选项选择是否将ptx文本指令(x.ptx中间文件中)、二进制指令(x.cubin中间文件)嵌入到可执行程序中,一般有3种嵌入方式:只嵌入x.ptx(第二阶段被忽略,全部依赖just-in-time compilation);只嵌入x.cubin(无法进行just-in-time compilation);两者都嵌入(运行过程中driver找到合适二进制指令镜像则加载之,否则进行just-in-time compilation再加载之)。

    虚拟架构和真实架构

    gpu设备的应用兼容性和cpu明显不同,cpu每一代指令集一般都兼容上一代指令集,所以已发布的应用可以运行在新一代的cpu硬件上,但GPU新一代指令集不兼容上一代的指令集。GPU使用virtual architectures来保证应用层兼容性(PTX可以看做虚拟的GPU架构,ptx是文本指令)。GPU虽然在真实架构上不具备二进制指令的兼容性,但是PTX可以跨代兼容,例如使用compute_30虚拟架构生成的PTX指令,可以用来生成sm_50的真实架构的二进制指令。低代PTX文本指令可以跨代生成高代二进制指令,但低代二进制指令却无法跨代运行在高代真实架构GPU,高代二进制指令更不可能运行在低代架构GPU上。

    sm_30 and sm_32

    Basic features

    + Kepler support

    + Unified memory programming

    sm_35+ Dynamic parallelism support
    sm_50, sm_52, and sm_53+ Maxwell support
    sm_60, sm_61, and sm_62+ Pascal support
    sm_70+ Volta support

    上表中第二列Kepler、 Maxwell、 Pascla 、Volta都是NVDIA显卡架构名(不同于系列名,如GeForce、 Quadro是系列名,分别对应游戏和深度学习两个领域),各代架构对应不同的各代指令集。第一列对应显卡的functional capabilities,例如sm_35,3代表第3代架构,5代表第五发版本,同一代的二进制指令是兼容的,sm_30的真实架构的二进制指令可以运行在sm_35架构的GPU上。

    Virtual Architecture Feature List

    compute_30 and compute_32

    Basic features

    + Kepler support

    + Unified memory programming

    compute_35+ Dynamic parallelism support
    compute_50, compute_52, and compute_53+ Maxwell support
    compute_60, compute_61, and compute_62+ Pascal support
    compute_70+ Volta support

    上表对应GPU虚拟架构,类比真实架构进行理解。

    NVCC使用

    使用指令

    nvcc x.cu --gpu-architecture=compute_50 --gpu-code=sm_50

    效果如下图
                                      

    最终只有对应真实架构sm_50的二进制的指令被嵌入到最用的可执行程序或者库文件中,如果运行在非sm_50的GPU上,将会报错如下:

    addKernel launch failed: no kernel image is available for execution on the device
    
    addWithCuda failed!

    因为没有将PTX文本指令嵌入到可执行程序中,没法进行即时编译(just-in-time compilation)。

    将PTX文本指令和二进制指令都嵌入到可执行程序中可以使用指令:

    nvcc x.cu --gpu-architecture=compute_50 --gpu-code=compute_50,sm_50

    或者省略--gpu-code

    nvcc x.cu --gpu-architecture=sm_50

    将一个版本的PTX指令和多种二进制指令嵌入可执行程序使用如下指令:

    nvcc x.cu --gpu-architecture=compute_50 --gpu-code=compute_50,sm_50,sm_52

    只将ptx文本指令嵌入到可执行文件可以使用如下指令:

    nvcc x.cu --gpu-architecture=compute_50 --gpu-code=compute_50

    或者省略--gpu-code

    nvcc x.cu --gpu-architecture=compute_50

    just-in-time compilation如下:

                          

    总结:compute_50这参数项用来指定生成ptx指令的版本,跟在--gpu-architecture选项和--gpu-code选项之后皆可;sm_50这类参数用来指定生成二进制代码的版本,不考虑shorthand的情况(详见官网,就是以上省略--gpu-code的情况),跟在--gpu-code选项之后;--gpu-architecture选项只能跟一个参数,不考虑shorthand的情况,只能用来指定生成的ptx版本;--gpu-code选项可以跟多个参数,不考虑shorthand的情况,用来指定生成的二进制文件的版本和最终嵌入到可执行文件中的内容,是只有ptx文本指令还是只有二进制指令,或者两者皆有。为何不混淆记忆,我们可以不使用shorthand的情况,即不省略--gpu-code选项。

    展开全文
  • nvcc 3.0手册

    2010-09-16 23:21:21
    nvcc 3.0手册 nvcc 3.0手册 nvcc 3.0手册
  • nvcc not installed

    2021-03-10 17:28:48
    nvcc not installed 问题 运行github上一个项目,提示需要安装nvcc,该项目提供了以下代码用于测试nvcc的安装情况 nvcc test_nvcc.cu -o test_nvcc -run 测试输出如下,提示没有安装 The program ‘nvcc’ is ...

    nvcc not installed

    问题

    运行github上一个项目,提示需要安装nvcc,该项目提供了以下代码用于测试nvcc的安装情况

    nvcc test_nvcc.cu -o test_nvcc -run
    

    测试输出如下,提示没有安装

    The program ‘nvcc’ is currently not installed. To run ‘nvcc’ please ask your administrator to install the package ‘nvidia-cuda-toolkit’

    解决方法

    首先确认/usr/local/cuda/bin文件夹下存在nvcc文件,判断是环境变量存在问题

    编辑~/.bashrc文件

    添加下面两行,配置环境变量

    export LD_LIBRARY_PATH=/usr/local/cuda/lib
    export PATH=$PATH:/usr/local/cuda/bin
    

    再执行source ~/.bashrc更新配置

    重新执行项目提供的测试命令:

    nvcc test_nvcc.cu -o test_nvcc -run
    

    成功输出:

    | CPU says hello.

    | GPU says hello.

    展开全文
  • cuda安装应该是成功了,输入nvcc --version是有输出的. ![nvcc --version输出结果](https://img-ask.csdn.net/upload/202009/12/1599874230_76217.png) 问题是当我试图去修改nvcc的--gpu-architecture...
  • nvcc install,input nvcc -V ,command not found run command:nvcc -V,there is a error that command not found . input two sentence: export PATH=/usr/local/cuda/bin:$PATH export LD_LIBRARY_PATH=/usr/local/...
  • NVCC开发搭建.pdf

    2020-06-27 09:34:33
    NVCC开发搭建.pdfNVCC开发搭建.pdfNVCC开发搭建.pdfNVCC开发搭建.pdfNVCC开发搭建.pdfNVCC开发搭建.pdfNVCC开发搭建.pdfNVCC开发搭建.pdfNVCC开发搭建.pdf
  • 这个函数NVCC是NVIDIA Cuda编译器NVCC.exe的包装器与Visual Studio编译器结合使用。 在这个 Cuda 之后文件可以编译成内核如果您第一次调用代码,或者使用“nvcc -config”: 1) 它将尝试定位“The NVIDIA GPU ...
  • nvcc编译器参数

    千次阅读 2018-02-08 14:21:28
    nvcc编译器参数 参考: http://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html https://www.cnblogs.com/shrimp-can/p/5567518.htm nvcc编译器参数 示例 nvcc编译器参数 nvcc是cuda程序的...
  • nvcc(CUDA编译器)

    2021-08-21 12:32:23
    nvcc就是CUDA的编译器 nvcc是10.0就代表你装了CUDA的版本是10,0. nvcc可以从CUDA Toolkit的/bin目录中获取,类似于gcc就是c语言的编译器。由于程序是要经过编译器编程成可执行的二进制文件,而cuda程序有两种代码...
  • nvcc简介及版本查询

    2021-01-02 00:39:04
    nvcc:NVIDIA Cuda compiler windows下查看nvcc版本 nvcc --version nvcc -V
  • nvcc gcc g++混合编译器编程.pdf
  • NVCC简单学习

    千次阅读 2017-01-25 19:41:57
    1、NVCC Identification Macro 预定义的宏,并且给出NVCC的版本号 nvcc predefines the following macros: NVCC Defined when compiling C/C++/CUDA source files. CUDACC Defined when compiling CUDA ...
  • Fix nvcc command lookup

    2021-01-12 03:10:07
    <div><p>Takes over #3023 <p>In some environment, <code>nvcc</code> is not necessarilly looked up by<code>PATH</code>.</p><p>该提问来源于开源项目:cupy/cupy</p></div>
  • ubuntu解决没有nvcc命令的错误

    万次阅读 2018-12-18 15:07:04
    学习需求在ubuntu电脑上安装了cuda10...安装完成后,用nvcc查看安装版本,但是nvcc -V找不到命令。然后在terminal中提示sudo apt-get install nvidia-cuda-toolkit安装 解决办法: 办法一:如果存...
  • cuda nvcc dll

    千次阅读 2018-05-21 20:49:25
    Creating DLL from CUDA using nvcc原文:https://stackoverflow.com/questions/16423643/creating-dll-from-cuda-using-nvcc#include &lt;stdio.h&gt; #include "kernel.h" void hello(const ...
  • 如果确定已经安装过CUDA,那可能是没有配置环境变量(安装后发现安装CUDA本身就会更新环境变量,在安装路径中cmd打开nvcc不会报错,但是在其它路径下会报错,这就要考虑是否是环境变量path没有更新) 解决方法: 在...
  • 如果在没有做任何操作的情况下,在终端上输入 nvcc -V ,会显示下面的内容: bash: nvcc:未找到命令 此时切换到 ~目录下: cd ~ ; 然后打开 .bashrc文件:vim .bashrc ; 接着按 i键,进入编辑状态; 再...
  • 在执行make指令进行编译的时候,遇到问题"/bin/sh:1:nvcc:not found",如图所示: 其原因是未找到nvcc,于是开始尝试去安装,如下命令: 方法探索 使用apt-get进行安装,如下: 对于上述这个问题,一般执行如下两个...
  • “#NVCC-CYBERNET”
  • CUDA nvcc -v 错误

    千次阅读 2018-12-01 13:41:23
    CUDA 测试 版本 使用命令 nvcc -v 出现错误 此时需要 使用命令 nvcc --version
  • 解决安装了cuda但是nvcc找不到的问题

    万次阅读 2019-12-03 16:36:22
    引用:...nvcc -V找不到命令。在terminal中提示sudo apt-get install nvidia-cuda-toolkit安装。nvcc -gencode=arch=compute_50,code=\"sm_50,compute_50\" -o basic basic...
  • 运行nvcc -v时报错: nvcc fatal : No input files specified; use option --help for more information 解决办法:换一个大写V

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,637
精华内容 5,854
关键字:

nvcc