【发布时间】:2017-02-01 13:32:42
【问题描述】:
我的问题很简单,我正在编写一个 CUDA 应用程序,但是因为我的主计算机是 Windows PC (Visual Studio 2013),所以我在那里开发了我的应用程序。但最终应用程序将部署在 *nix 服务器中。
我的问题是:
在 Visual Studio 2013 优化标志 /Ox(完全优化)和 /Oi(启用内在函数)设法将我的寄存器使用量压缩到只有 32 个注册,因此可以完全入住。
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\bin\nvcc.exe" -gencode=arch=compute_35,code=\"sm_35,compute_35\" --use-local-env --cl-version 2013 -ccbin "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\x86_amd64" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\include" --keep-dir x64\Release -maxrregcount=0 --ptxas-options=-v --machine 64 --compile -cudart static -DWIN32 -DWIN64 -DNDEBUG -D_CONSOLE -D_MBCS -Xcompiler "/EHsc /W3 /nologo /Ox /Zi /MD " -o Simulation.cu.obj "Simulation.cu"
在 Ubuntu 上使用 gcc 4.9.4 和 cuda-8 通过 cmake 和 O3 编译 优化级别,寄存器数在49(>32)左右。
nvcc Simulation.cu -dc -o Simulation.cu.o -ccbin cc -m64 -DNDEBUG -Xcompiler ,\"-std=c++1y\",\"-w\",\"-O3\",\"-g\" -arch=sm_35 -std=c++11 -rdc=true -O3 --ptxas-options=-v -DNVCC
我是否缺少任何标志?而且我不想将任何寄存器溢出到本地内存。
【问题讨论】:
标签: c++ cuda compiler-optimization