2.1.cuda驱动API-概述

这篇具有很好参考价值的文章主要介绍了2.1.cuda驱动API-概述。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

杜老师推出的 tensorRT从零起步高性能部署 课程,之前有看过一遍,但是没有做笔记,很多东西也忘了。这次重新撸一遍,顺便记记笔记

本次课程学习精简 CUDA 教程-Driver API 概述

课程大纲可看下面的思维导图

2.1.cuda驱动API-概述,tensorRT从零起步高性能部署,模型部署,tensorRT,CUDA,高性能

1. Driver API概述

对于 Driver API 你需要知道:

  1. CUDA Driver 是与 GPU 沟通的驱动级别底层 API
  2. 对 Driver API 的理解,有利于理解后续的 Runtime API
  3. CUDA Driver 随显卡驱动发布,需要与 cudatoolkit 分开看
  4. CUDA Driver 对应于 cuda.h 和 libcuda.so
  5. Driver API 主要知识点是 Context 的管理机制 以及 CUDA 系列接口的开发习惯(错误检查方法),还有内存模型

参考:显卡,显卡驱动,nvcc, cuda driver,cudatoolkit,cudnn到底是什么?

下图很清楚的展示了 Driver API 和 Runtime API 以及与其它概念之间的关系

2.1.cuda驱动API-概述,tensorRT从零起步高性能部署,模型部署,tensorRT,CUDA,高性能

图1-1 Driver API和Runtime API的关系

从图中可知我们平时常用的 nvidia-smi 调用的是 Driver API。最开始 Driver API 是与显卡沟通的底层 API,但是人们发现 Driver API 太过底层,由此引入了 Runtime API。从图中可以看出 Runtime API 是基于 Driver API 开发的,我们日常中见到的 cudaMalloc()cudaMemset()cudaMemcpy() 都属于 Runtime API。像 cu 开头的如 cuCtxCreate() 就属于 Driver API。

值得注意的是,cuda.h 是 NVIDIA CUDA Toolkit 中的一部分。CUDA Toolkit 是 NVIDIA 提供的用于开发 GPU 加速应用程序的软件开发工具包,其中包含了用于编译和执行 CUDA 程序的各种库和头文件。而 libcuda.so 是 NVIDIA 显卡驱动安装到系统中时随之安装的一个共享库文件。

cuda.h 提供了 CUDA 编程的接口和声明,而 libcuda.so 则是运行库,提供了 CUDA 运行时所需的底层功能和支持。

为什么需要了解 Driver API 呢,直接看更高级的 Runtime API 不就行了吗?

  1. Driver API 是理解 cudaRuntime 中上下文的关键
  2. Driver API 只需要做到理解 context 即可,知道它的存在就行
  3. 开发过程中可能因为对 Driver API 的理解不够,造成上层调试困难
  4. 对于越底层的 api,做一些了解,有利于高层遇到问题后排查原因

关于 context 有两种

  1. 手动管理的 context,cuCtxCreate()(手动管理,以堆栈方式 push/pop)
  2. 自动管理的 context,cuDevicePrimaryCtxRetain(自动管理,runtime api 以此为基础)

关于内存,有两大类

  1. CPU 内存,称之为 Host Memory。又可以分为 Pageable Memory:可分页内存 + Page-Locked Memory:页锁定内存
  2. GPU 内存,称之为 Device Memory。又可以分为 Global Memory:全局内存 + Shared Memory:共享内存 + 其它多种内存

2.1.cuda驱动API-概述,tensorRT从零起步高性能部署,模型部署,tensorRT,CUDA,高性能

图1-2 内存数据流向

关于 context 和内存先有个基本概念就行,后续会详细讲解。

2. 补充知识

我们需要了解 cuda 和显卡等基本概念及初始化 cuda 的相关知识:(from 杜老师)

  1. 如何运行
  • make run
  1. 显卡,显卡驱动,nvcc,cuda driver,cudatoolkit,cudnn 到底是什么?
  • 关于显卡驱动与 cuda 驱动的版本匹配
    • Table 1. CUDA 11.6 Update 1 Component Versions
    • 结论:尽量将显卡驱动升级到新的,因此显卡驱动向下兼容 cuda 驱动
  • 简单了解显卡相关概念
    • 显卡:GPU
    • 显卡驱动:驱动软件,类比声卡驱动,摄像头驱动
    • GPU架构:gpu 架构指的是硬件的设计方式,例如是否有 L1 or L2 缓冲
    • CUDA:其中一种理解是它是一种编程语言(向 C++、Python 等,只不过它是专门用来操控 GPU 的)
    • cuDNN:这个其实就是一个专门为深度学习计算设计的软件库,里面提供很多专门的计算函数
    • CUDAToolkit:这是我们真正需要首先安装的工具包,所谓的装 cuda 首先指的是它
    • 它里面包含了许多库,例如:cudart、cublas等
    • 其它涉及到的知识有 nvcc 与 nvidia-smi,多个 cuda 版本之间进行切换,cuda 的安装等
    • 详细请参考:https://zhuanlan.zhihu.com/p/91334380
  1. cuda-driver-api 与 cuda-runtime-api
  • CUDA Driver 与 CUDA Runtime 相比更偏底层,就意味着 Driver API 有着更灵活的控制,也伴随着更复杂的编程
  • 因此 CUDA Driver 需要做显式的初始化 cuInit(0),否则其他 API 都会返回 CUDA_ERROR_NOT_INITIALIZED
  • 经过初始化驱动和显卡的信息可以轻松获取:
    • 驱动版本管理 https://docs.nvidia.com/cuda/archive/11.2.0/cuda-driver-api/group__CUDA__VERSION.html#group__CUDA__VERSION
    • 设备信息管理 https://docs.nvidia.com/cuda/archive/11.2.0/cuda-driver-api/group__CUDA__DEVICE.html
  1. 写在文末
  • CUDA 的在线文档地址
    • https://developer.nvidia.com/cuda-toolkit-archive
    • https://docs.nvidia.com/cuda/archive/11.2.0/
  • 报错
    • 提示 nvcc 错误。对于 gcc 版本大于等于 8 的不支持,需要修改 Makefile 中的 g++ 为 g++7 或者更低

总结

本次课程主要了解 CUDA Driver API 的一些概念,它是一个偏底层的 API,它提供了对 GPU 硬件和驱动程序的底层访问能力。学习了解 Driver API 可以更好的帮助我们后续理解 Runtime API,后续主要从 Context 的管理机制、CUDA 系列接口的开发习惯、内存模型 三个方面来学习 Driver API 的使用。文章来源地址https://www.toymoban.com/news/detail-537154.html

到了这里,关于2.1.cuda驱动API-概述的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 从零开始实现一个C++高性能服务器框架----Hook模块

    此项目是根据sylar框架实现,是从零开始重写sylar,也是对sylar丰富与完善 项目地址:https://gitee.com/lzhiqiang1999/server-framework 项目介绍 :实现了一个基于协程的服务器框架,支持多线程、多协程协同调度;支持以异步处理的方式提高服务器性能;封装了网络相关的模块,包括

    2023年04月09日
    浏览(100)
  • 云原生 | 从零开始,Minio 高性能分布式对象存储快速入手指南

    [ 点击 👉 关注「 全栈工程师修炼指南」公众号 ] 希望各位看友多多支持【关注、点赞、评论、收藏、投币】,助力每一个梦想。 【 WeiyiGeek Blog\\\'s - 花开堪折直须折,莫待无花空折枝  】 作者主页: 【 https://weiyigeek.top 】 博客地址: 【 https://blog.weiyigeek.top 】 作者答疑学习交

    2024年02月08日
    浏览(58)
  • 高性能API网关Kong介绍

    本文:高性能、API网关、Kong、微服务 ​​​​​​​         API网关是随着微服务(Microservice)概念兴起的一种架构模式。原本一个庞大的单体应用(All in one)业务系统被拆分成许多微服务(Microservice)系统进行独立的维护和部署,服务拆分带来的变化是API的规

    2024年02月03日
    浏览(45)
  • 国际版阿里云/腾讯云:弹性高性能计算E-HPC入门概述

    入门概述 本文介绍E-HPC的运用流程,帮助您快速上手运用弹性高性能核算。 下文以创立集群,在集群中安装GROMACS软件并运转水分子算例进行高性能核算为例,介绍弹性高性能核算的运用流程,帮助您快速上手运用弹性高性能核算。运用流程如下图所示。 操作流程 创立集群

    2024年02月10日
    浏览(64)
  • Nginx 入门指南:从入门到放弃(不是!)从零开始掌握高性能 Web 服务器

    Nginx 可以构建高性能、可靠的 Web 服务器。本文将带你了解 Nginx 的基本概念、安装方法以及常见配置,让你快速上手并搭建自己的 Web 服务器。 随着互联网的发展,构建稳定、高性能的 Web 服务器成为了许多开发者的重要需求。而在众多的服务器软件中, Nginx 以其出色的性能

    2024年04月15日
    浏览(61)
  • 服务器显卡:驱动高性能计算和人工智能应用

    一、引言 随着高性能计算和人工智能应用的不断发展,服务器显卡的性能显得越来越重要。服务器显卡是服务器硬件配置中的一个关键组件,它不仅提供基本的图形渲染能力,还在高性能计算和人工智能应用中发挥着重要作用。本文将探讨服务器显卡的重要性和发展趋势,以

    2024年02月09日
    浏览(76)
  • FastAPI 构建 API 高性能的 web 框架(一)

    如果要部署一些大模型一般langchain+fastapi,或者fastchat, 先大概了解一下fastapi,本篇主要就是贴几个实际例子。 官方文档地址: https://fastapi.tiangolo.com/zh/ 来源:大语言模型工程化服务系列之五-------复旦MOSS大模型fastapi接口服务 服务端代码: api启动后,调用代码: 来源: 大语

    2024年02月13日
    浏览(48)
  • FastAPI 构建 API 高性能的 web 框架(二)

    上一篇 FastAPI 构建 API 高性能的 web 框架(一)是把LLM模型使用Fastapi的一些例子,本篇简单来看一下FastAPI的一些细节。 有中文官方文档:fastapi中文文档 假如你想将应用程序部署到生产环境,你可能要执行以下操作: 并且安装uvicorn来作为服务器: 然后对你想使用的每个可选

    2024年02月12日
    浏览(51)
  • Linux高性能服务器编程 学习笔记 第五章 Linux网络编程基础API

    我们将从以下3方面讨论Linux网络API: 1.socket地址API。socket最开始的含义是一个IP地址和端口对(ip,port),它唯一表示了使用TCP通信的一端,本书称其为socket地址。 2.socket基础API。socket的主要API都定义在sys/socket.h头文件中,包括创建socket、命名socket、监听socket、接受连接、发

    2024年02月07日
    浏览(56)
  • ubuntu20.04显卡驱动cuda cudnn conda TensorRT安装及配置

    如果要使用 TensorRT ,请注意CUDA 支持的最高算力要大于等于GPU本身的算力, 可以先看3小节 conda和pip换源直接看2.3小节 本人已在ubuntu20.04下安装成功。其他版本步骤应该差不多 如果帖子有帮助,感谢一键三连, ^_^ 部署有问题的小伙伴欢迎留言和加 Q 裙- 472648720 BEV各算法环境部

    2024年01月22日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包