- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我希望编译后的 CUDA 代码能够在任何 Nvidia GPU 上运行,因此我使用以下选项编译每个 .cu 文件:
-gencode arch=compute_20,code=sm_20
-gencode arch=compute_30,code=sm_30
-gencode arch=compute_32,code=sm_32
-gencode arch=compute_35,code=sm_35
-gencode arch=compute_50,code=sm_50
-gencode arch=compute_52,code=sm_52
-gencode arch=compute_53,code=sm_53
-gencode arch=compute_60,code=sm_60
-gencode arch=compute_61,code=sm_61
-gencode arch=compute_61,code=compute_61
(这是使用 CUDA 8.0,所以我还没有列出较新的架构。)
问题是 nvcc 同步编译每个目标,这可能需要相当长的时间。有没有办法将其拆分到多个 CPU 核心上?我正在使用 Make 构建系统。
我可以使用每个架构的不同 Make 目标轻松地在不同的异步 nvcc 调用中手动为每个架构创建 .ptx 或 .cubin 文件。但是,如何将它们组合成最终的 .o 文件以与我的主机代码链接在一起?
这个: https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html#cuda-compilation-trajectory似乎暗示我应该采用多个 .cubin 文件并将它们组合成一个 .fatbin 文件。但是,当我尝试这样做时,出现错误:
nvcc fatal : A single input file is required for a non-link phase when an outputfile is specified
这可能吗?我缺少什么?谢谢!
编辑1:以下是塔隆米斯的回复。我尝试过这样做:
F:/SDKs/CUDASDK/9.2/bin/WIN64/bin/nvcc -ccbin=C:/MVS14/VC/bin --machine=64 --ptxas-options=-v -D_DEBUG -D_CONSOLE -Xcompiler /EHsc,/MDd,-Od,-Z7,/W2,/RTCs,/RTCu,/we4390,/wd4251,/we4150,/we4715,/we4047,/we4028,/we4311,/we4552,/we4553,/we4804,/we4806,/we4172,/we4553,/we4700,/we4805,/we4743,/we4717,/we4551,/we4533,/we6281,/we4129,/we4309,/we4146,/we4133,/we4083,/we4477,/we4473,/FS,/J,/EHsc -I"F:/SDKs/CUDASDK/9.2/include" -DWIN32 --device-c -cubin -gencode arch=compute_30,code=sm_30 -o ms_30.cubin ms.cu
F:/SDKs/CUDASDK/9.2/bin/WIN64/bin/nvcc -ccbin=C:/MVS14/VC/bin --machine=64 --ptxas-options=-v -D_DEBUG -D_CONSOLE -Xcompiler /EHsc,/MDd,-Od,-Z7,/W2,/RTCs,/RTCu,/we4390,/wd4251,/we4150,/we4715,/we4047,/we4028,/we4311,/we4552,/we4553,/we4804,/we4806,/we4172,/we4553,/we4700,/we4805,/we4743,/we4717,/we4551,/we4533,/we6281,/we4129,/we4309,/we4146,/we4133,/we4083,/we4477,/we4473,/FS,/J,/EHsc -I"F:/SDKs/CUDASDK/9.2/include" -DWIN32 --device-c -cubin -gencode arch=compute_35,code=sm_35 -o ms_35.cubin ms.cu
然后链接:
F:/SDKs/CUDASDK/9.2/bin/WIN64/bin/nvcc -o out.o -dlink ms_35.cubin ms_30.cubin -I"F:/SDKs/CUDASDK/9.2/include"
但是我收到错误:
fatbinary fatal : fatbinary elf mismatch: elf arch '35' does not match '30'
所有使用设备链接的示例始终只使用一个拱门。是否可以通过这种方式组合架构?
最佳答案
nvcc
只是一个向许多其他工具发出命令的前端。如果您将 --dryrun
标志添加到 nvcc
调用中,它将打印您需要运行的确切命令,以替换您对 nvcc
的使用.
从那里应该很容易将此命令列表转换为脚本或 makefile。
更新:CUDA 11.3 中的 nvcc
最终通过 -t
flag 支持开箱即用。 .
关于cuda - 在同一 . .cu 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51092717/
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 9 年前。 Improve t
由于cuda的“.cu”文件基本上是c,是否有办法使用doxygen生成“.cu”文件的文档?我注意到NVIDIA使用doxygen生成cuda的文档。但是,当我使用doxygen时,“。cu”文件将
标准约定似乎是给CUDA源代码文件一个.cu扩展名,以将它们与具有.c扩展名的C文件区分开。特定于CUDA的头文件的对应约定是什么?有一个吗? 最佳答案 某些人(包括CUDA SDK)对CUDA头文件
我希望编译后的 CUDA 代码能够在任何 Nvidia GPU 上运行,因此我使用以下选项编译每个 .cu 文件: -gencode arch=compute_20,code=sm_20 -genco
我希望编译后的 CUDA 代码能够在任何 Nvidia GPU 上运行,因此我使用以下选项编译每个 .cu 文件: -gencode arch=compute_20,code=sm_20 -genco
两个事实: CUDA 5.0 允许您在不同的目标文件中编译 CUDA 代码,以便稍后进行链接。 CUDA 架构 2.x 不再自动内联函数。 像往常一样在 C/C++ 中,我实现了一个函数 __devi
我有一个包含 cuda 文件的 visual studio c++ 项目(使用 VS 2010 和 insight 2)。这是代码 你好.h : #pragma once #pragma warnin
我想获取 HEVC HM 解码器上的 CU/PU 级别信息。我还想获得一些统计数据,以了解解码不同类型的 CU(帧内、帧间 - 单向/双向)平均需要多少时间。 HM 编码器中现有的调试是不合适的,因为
我正在使用 cu 实用程序将我的 Cubieboard 1 连接到我的笔记本电脑。当我启动我的 Cubieboard 时,它会将启动日志发送到我的终端。 我想要的是输出应该显示在我的屏幕上并发送到我指
这个问题已经有答案了: pandas select from Dataframe using startswith (5 个回答) 已关闭 3 年前。 这似乎是直截了当的事情,但找不到合适的答案。 我
我想在 cu 命令中执行“sw i01”并退出 cu(使用“~.”) 在一行或文件 bash 中,因为 il 会从远处执行它们服务器 在这张图片中我放了: cu -s 19200 -l /dev/tt
我想知道 .cu 编译单元中隐式包含了哪些 header 。例如,让我们举一些基本的例子: #include __global__ void kernel(int a, int b, int *c)
我最近将 CU9 安装到 BizTalk 2010。Microsoft 网站 (https://support.microsoft.com/en-us/kb/3136004) 声称所有以前的 CU 都
我有两个 cuda 文件,分别是 A 和 B。我需要从 A 到 B 调用一个函数,比如.. __device__ int add(int a, int b) //this is a function
我有以下文件: // Main.cpp #include "kernel_util.cuh" int main() { call_kernel(); } // kernel_util.cuh
我正在尝试使用 cu 通过 ttyS0 与另一个 UNIX 设备进行通信(谷歌“cu unix”以了解有关 cu 的更多信息)。我的程序运行得很好,但问题是,在第一次执行程序(建立连接、读取日志文件和
我正在学习使用 CUDA。我写了两个 .cu 文件,一个包含主要功能,另一个用作提供所有其他功能的库。但是我在编译这两个 .cu 文件时遇到了多个定义错误。我展示了一个玩具示例如下: main.cu
我正在尝试将 SigmoidCrossEntropyLossLayer 修改为我自己的版本。我只实现了 .cpp 版本。已经有一个 SigmoidCrossEntropyLossLayer 的 .cu
如何将 cuda 内核代码和项目中的其他 cpp 代码分开?我想将所有内核定义收集在一个文件中,因为其他 cpp 文件在需要时调用它们。我试图在 kernel.cu 中编写所有内核并通过包含 kern
我换了一个新的 GPU GeForce GTX 980 cc 5.2,所以它必须支持动态并行。但是,我什至无法编译一个简单的代码(来自编程指南)。我不会在这里提供它(没有必要,只是有一个全局内核调用另
我是一名优秀的程序员,十分优秀!