首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Cuda寄存器编译器优化

Cuda寄存器编译器优化
EN

Stack Overflow用户
提问于 2017-02-01 13:32:42
回答 1查看 1.1K关注 0票数 1

我的问题很简单,我正在编写一个CUDA应用程序,但由于我的主计算机是Windows (Visual 2013),我在那里开发了我的应用程序。但是,最终应用程序将部署在*nix服务器中。

我的问题是:

Visual 2013中,优化标志/Ox (完全优化)和/Oi (启用本质)设法将我的寄存器使用量压缩到32 32regs,从而获得了完整的占用。

代码语言:javascript
运行
复制
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.4cuda-8,使用cmakeO3E 216优化级别编译,寄存器计数约为49 (>32)。

代码语言:javascript
运行
复制
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

我漏掉了什么旗吗?我不想把任何寄存器泄露到本地内存中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-01 13:55:17

不同版本的工具包(甚至驱动程序,如果您编译到PTX)可能对同一代码使用不同数量的寄存器。

使用发射界将特定内核的启动配置和占用目标通知编译器。如果必要的话,它将努力降低注册使用。

是否需要将寄存器溢出到本地内存是您无法控制的,但是编译器的行为通常是非常合理的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41981106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档