1.银河系CUDA编程指南(2.5)——NVCC与PTX
2.onnxruntime源码学习-编译与调试 (公网&内网)
3.Autoware.io源码编译安装
4.conda安装的cudatoolkit,cudnn与在主机上安装的cuda,cud
5.在windows11上编译opencv使用cuda加速
6.win10 + CUDA 9.0 + cuDNN 7.0 + tensorflow源码编译安装
银河系CUDA编程指南(2.5)——NVCC与PTX
在构建了一个以cuDNN和cuBLAS为基础的简单深度学习框架后,我已将其开源,并鼓励大家参与交流学习。未来计划逐步完善框架,将尝试使用纯CUDA C实现,并与cuDNN进行性能比较。仙命决源码关于cuDNN的使用,我也会后续专门撰写文章进行详细介绍。
NVCC,CUDA的编译器,其核心是NVVM优化器,基于LLVM编译器结构。它本质上是一个集合,调用gcc、cicc、ptxas等工具编译CUDA源代码,区分主机代码(用ANSI C编写)和设备代码(CUDA扩展语言编写)。
NVCC的编译过程分为离线编译和即时编译,通过预处理将源代码分为两部分,分别由不同编译器处理,最终合并为单个object文件。例如,通过dryrun选项可以查看编译步骤,包括头文件配置、CUDA设备代码编译等。
PTX是CUDA的编程模型和指令集,是一种虚拟架构汇编,允许跨GPU优化。vb连通域源码NVCC通过虚拟架构编译生成PTX,然后在实际GPU上执行为SASS。编译时,需设置虚拟和实际GPU架构以保证兼容性。
Separate Compilation允许在编译阶段将device code分开处理,形成relocatable代码,然后在链接阶段定位到最终的host object。这与Whole Program Compilation不同,后者直接编译为executable device code。
以cudnn-learning-framework的Makefile为例,需配置CUDA相关路径,添加cuDNN库,并调整编译生成部分,确保链接所有需要的.o文件。NVCC命令在编译时会执行链接任务。
onnxruntime源码学习-编译与调试 (公网&内网)
在深入学习ONNX Runtime的过程中,我决定从1.版本开始,以对比与理解多卡并行技术。为此,我选择了通过`./tools/ci_build/build.py`脚本进行编译,而不是直接执行`build.sh`,因为后者并不直接提供所需的参数。在`build.py:::parse_arguments()`函数中,我找到了可选择的参数,例如运行硬件(CPU/GPU)、调试模式(Debug/Release)以及是否并行编译。我特别使用了`--skip_submodule_sync`,asp分页源码下载以避免因与公网不通而手动下载“submodule”,即`./cmake/external`文件夹下的依赖组件。这样可以节省每次编译时检查依赖组件更新的时间,提高编译效率。同时,我使用`which nvcc`命令来确定`cuda_home`和`cudnn_home`的值。
我的编译环境配置为gcc8.5.0、cuda.7和cmake3..1,其中cmake版本需要不低于3.,gcc版本则至少为7.0,否则编译过程中会出现错误。在编译环境的配置中,可以通过设置PATH和LD_LIBRARY_PATH来指定可执行程序和动态库的路径。对于手动下载“submodule”的不便,可以通过先在公网编译cpu版本,然后在编译开始阶段由构建脚本自动下载所有依赖组件并拷贝至所需目录来简化流程。
编译顺利完成后,生成的so文件并未自动放入bin目录,这可能是由于在安装步骤后bin目录下才会出现相应的文件。接下来,我进入了调试阶段,使用vscode进行调试,最终成功运行了`build/RelWithDebInfo/onnxruntime_shared_lib_test`可执行文件。
在深入研究ONNX Runtime的编译流程时,我发现了一个更深入的资源,它涵盖了从`build.sh`到`build.py`再到`CmakeList.txt`的编译过程,以及上述流程中涉及的sdp 分销系统 源码脚本解析。对这个流程感兴趣的读者可以进行更深入的研究。
在编译过程中,我遇到了一些问题,如下载cudnn并进行安装,以及解决找不到`stdlib.h`的问题。对于找不到`stdlib.h`,我通过查阅相关文章和理解编译过程中搜索路径的逻辑,最终找到了解决方案。如果忽略这个问题,我选择在另一台机器上重新编译以解决问题。
在使用vscode调试时,我遇到了崩溃问题,这可能是由于vscode、gdb或Debug模式编译出的可执行文件存在潜在问题。通过逐步排除,我最终确定问题可能出在Debug模式编译的可执行文件上。这一系列的探索和解决过程,不仅加深了我对ONNX Runtime的理解,也提高了我的调试和问题解决能力。
Autoware.io源码编译安装
要编译安装Autoware.io,首先请确保已安装ROS1,如Ubuntu .版本的Melodic。以下步骤将指导你完成依赖安装及源码编译过程。安装依赖
1. 对于CUDA的支持(可选但建议),你需要下载CUDA .0,链接位于developer.nvidia.com/cuda。安装时,rmaps官网源码遇到驱动安装询问时选择n,后续步骤默认安装即可。 2. 安装cudnn,从developer.nvidia.com/rd...获取并进行安装。在cuda目录下进行软链接配置,并通过验证测试。其他依赖安装
3. 安装eigen3.3.7,接着是opencv3,安装时需先安装依赖库,然后解压、配置和编译。源码下载与编译
4. 创建新的工作区,下载并配置工作区,然后下载Autoware.ai源码。 5. 使用rosdep安装依赖库,有CUDA版本和无CUDA版本两种编译方式。测试与问题解决
6. 下载并运行demo,可能遇到的问题包括编译错误和链接问题。问题1:calibration_publisher报错,需修改CMakeList.txt文件。
问题2:ndt_gpu编译错误,需替换Eigen3Config.cmake文件中的版本信息。
问题3:opencv链接问题,需要检查和调整。
问题4:rosdep更新慢,可通过修改源码和配置文件解决。
问题5:runtime manager花屏,需安装wxPython 4.和libsdl1.2-dev。
通过上述步骤,你应该能够成功编译并测试Autoware.io。如有任何疑问,查阅官方文档或社区论坛寻求帮助。conda安装的cudatoolkit,cudnn与在主机上安装的cuda,cud
通过调用生成 tensorflow / pytorch 库时设置的链接库寻找目录,可以确定使用哪个 cuda 库。以 pytorch 为例,项目根目录下的 setup.py 文件指定链接库搜索目录,其中 CUDA_HOME 在 tool.setup_helpers.cuda 中获取,其过程大致如下(基于 pytorch 源码版本 '1.3.0')。具体细节可查阅 pytorch 源码。tensorflow 源码的处理逻辑可能相似。
使用 conda 安装的 cudatoolkit 包含的库文件位于 miniconda3/lib(或 miniconda3 / pkgs / cudatoolkit-.x.xxx /lib)中,可直接查看。原生安装的 cuda 包含 conda-cudatoolkit 包的所有内容,甚至更多。尝试两种安装方法,通过肉眼比较,差异一目了然。如有疑问,可访问 nvidia 官网获取文档解答。
通过执行 ldd xx.so 命令,可以直接查看所依赖的库及其详细路径。
在windows上编译opencv使用cuda加速
在Windows 环境下,利用CUDA加速OpenCV的编译过程可以显著提升性能。以下是具体步骤的概述:
1. **环境与软件准备**:
- 安装Windows 、Visual Studio 、CMake-gui以及Anaconda(用于管理Python环境)。
- 确保已安装CUDA工具包、Visual Studio编译器,还需下载OpenCV源码和opencv-contrib源码。
- 需要安装CUDA及CUDNN环境,确保Opencv与opencv-contrib版本匹配。
2. **安装步骤**:
- 下载并安装Visual Studio 和CMake-gui。
- 使用管理员权限打开CMake-gui,设置OpenCV源码路径,可能需要设置Python路径(如果安装在虚拟环境中)。
- 配置Visual Studio版本和平台(位)。
- 配置过程中,确保WITH_CUDA、OPENCV_DNN_CUDA、ENABLE_FAST_MATH等CUDA相关选项被选中,并勾选BUILD_opencv_python3和opencv_contrib模块。
3. **编译过程**:
- 打开CMake-gui,配置CUDA架构(根据显卡型号选择合适的算力)。
- 生成Visual Studio项目(OpenCV.sln),并选择对应版本的Visual Studio打开。
- 选择release版本和x平台进行编译,这可能需要几分钟。
- 完成第一个编译后,进行安装,将OpenCV安装到Anaconda环境中。
4. **测试与参考**:
- 编译成功后,可通过打印数值确认。编译教程参考了如下的博客:
- [opencv-python使用GPU资源](/lujx_/article/details/)
- [CMake编译OpenCV 4.5.5/4.6.0/4.7.0 GPU版及VS配置](/optimistwenshen/article/details/)
- [Windows上编译OpenCV使用CUDA加速DNN模型推理](/optimistwenshen/article/details/)
通过以上步骤,您可以在Windows 上利用CUDA为OpenCV编译加速,提升深度学习和计算机视觉任务的性能。
win + CUDA 9.0 + cuDNN 7.0 + tensorflow源码编译安装
在配置个人深度学习主机后,安装必备软件环境成为首要任务。使用Anaconda5.0.0 python3.6版本管理Win python环境,新建基于python3.5的tensorflow-gpu-py conda环境。直接使用conda安装tensorflow,会默认安装tensorflow-gpu 1.1.0并主动安装cudatoolkit8.0 + cudnn6.0。若需配置CUDA环境,需自行下载并安装cuda9.0 + cudnn7.0,配置环境变量。pip安装tensorflow,会默认安装最新版本tensorflow-gpu 1.3.0。配置不当导致import tensorflow时报错:'ModuleNotFoundError: No module named '_pywrap_tensorflow_internal'。尝试源码编译tensorflow解决此问题。
查阅tensorflow官网文档,了解cmake window build tensorflow方法。文档中提到,tensorflow源代码目录下有详细网页介绍Windows环境编译方法,包含重要信息。发现安装tensorflow-gpu版本、配置CUDA8.0 + cuDNN6.0/cuDNN5.1或CUDA9.0 + cuDNN7.0时,import tensorflow时报错。查阅错误信息,网上解答提及需要配置正确的CUDA和cuDNN版本。然而,尝试安装和配置后依然报错。安装tensorflow cpu版本无问题,确认CUDA环境配置错误。
决定源码编译tensorflow-gpu以解决问题。查阅文档,执行编译操作。在window环境下编译tensorflow源码,需要准备的软件包括Git、tensorflow源码、anaconda、swig、CMake、CUDA、cuDNN、Visual Studio 。在百度网盘下载相关软件。
配置过程中,修改CMakeLists.txt以适应CUDA 9.0 + cuDNN 7.0。在cmake目录下新建build文件夹,执行命令配置tensorflow。配置后进行编译,遇到问题如:cudnnSetRNNDescriptor参数不匹配、网络访问问题、编码问题、protobuf库下载问题、zlib.h文件不存在、下载链接失败、无法解决的错误等。
为解决这些问题,采取相应措施,如修改cuda_dnn.cc文件、网络代理设置、文件编码转换、忽略警告信息、多次尝试下载、修改cmake配置文件等。遇到无法解决的问题,如CUDA编译器问题、特定源代码文件问题,提交至github tensorflow进行讨论。
完成源码编译后,安装tensorflow-gpu并进行验证。在下一步中继续讨论验证过程和可能遇到的后续问题。整个编译过程耗时、复杂,需要耐心和细心,希望未来能有官方解决方案以简化编译过程。