C++高性能并行编程与优化 - 课件 - 08 CUDA 开启的 GPU 编程CUDA 开启的 GPU 编程 by 彭于斌( @archibate ) 往期录播: https://www.bilibili.com/video/BV1fa411r7zp 课程 PPT 和代码: https://github.com/parallel101/course 前置条件 • 学过 C/C++ 语言编程。 • 理解 malloc/free 之类的概念。 • 熟悉 STL 中的容器、函数模板等。 中的容器、函数模板等。 • 英伟达 GTX900 及以上显卡。 • CUDA 11 及以上。 • CMake 3.18 及以上。 我负责监督你学习 第 0 章: Hello, world! CMake 中启用 CUDA 支持 • 最新版的 CMake ( 3.18 以上),只需在 LANGUAGES 后面加上 CUDA 即可启用 。 • 然后在 add_executable 里直接加你 cn/docs/IO/51635/NVIDIA_CUDA_Programming_Guide_1.1_chs.pdf CUDA 编译器兼容 C++17 • CUDA 的语法,基本完全兼容 C++ 。包括 C+ +17 新特性,都可以用。甚至可以把任何一个 C++ 项目的文件后缀名全部改成 .cu ,都能编 译出来。 • 这是 CUDA 的一大好处, CUDA 和 C++ 的关 系就像 C++ 和0 码力 | 142 页 | 13.52 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 09 CUDA C++ 流体仿真实战CUDA C++ 流体仿真实 战 by 彭于斌( @archibate ) 往期录播: https://www.bilibili.com/video/BV16b4y1E74f 课程 PPT 和代码: https://github.com/parallel101/course CUDA 纹理对象 https://docs.nvidia.com/cuda/cuda-c-programming-guide/index g-guide/index.html#texture-and-surface-memory CUDA 多维数组:封装 • cudaMalloc3DArray 用于分配一个三维数组。 各维度上的大小通过 cudaExtent 指定,方 便起见我们的 C++ 封装类用了 uint3 表示 大小。 • GPU 的多维数组有特殊的数据排布来保障 访存的高效,和我们 CPU 那样简单地行主 序或列主序(如 序或列主序(如 a[x + nx * y] )的多维数组 不一样。 • 随后可用 cudaMemcpy3D 在 GPU 的三 维数组和 CPU 的三维数组之间拷贝数据。 CUDA 表面对象:封装 • 要访问一个多维数组,必须先创建一个表面对象 ( cudaSurfaceObject_t )。 • 考虑到多维数组始终是需要通过表面对象来访问的,这 里我们让表面对象继承自多维数组。 •0 码力 | 58 页 | 14.90 MB | 1 年前3
全连接神经网络实战. pytorch 版. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.1 基本网络结构 11 2.2 使用 cuda 来训练网络 13 3 更完善的神经网络 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 导入 pytorch 6 1.2 导入样本数据 7 本章节将神经网络训练之前的准备工作进行全面介绍。但我们并不介绍如何安装 pytorch,一是由 于不同版本的 pytorch 会依赖于不同的 cuda 工具,二是因为官网资料非常齐全,也有很多博客来 介绍,因此没有必要赘述。 1.1 导入 pytorch 首先我们需要明白一个术语:tensor。这个词被翻译为中文叫张量。1 维标量是一种 tensor; 的网络训练会自动帮你进行转换,所以我们不需要自己去操作,因此并不需要 设置 target_transf orm。 前两节的源码参见 chapter1.py。 2. 构建神经网络 2.1 基本网络结构 11 2.2 使用 cuda 来训练网络 13 本章描述如何构建神经网络模型。 2.1 基本网络结构 我们定义神经网络的结构。在 pytorch 中要想使用神经网络,需要继承 nn.Module: c l a s s0 码力 | 29 页 | 1.40 MB | 1 年前3
动手学深度学习 v2.03.1 创建和运行EC2实例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 750 16.3.2 安装CUDA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755 16.3.3 安装库以运行代码 环境: conda activate d2l 安装深度学习框架和d2l软件包 在安装深度学习框架之前,请先检查计算机上是否有可用的GPU。例如可以查看计算机是否装有NVIDIA GPU并已安装CUDA9。如果机器没有任何GPU,没有必要担心,因为CPU在前几章完全够用。但是,如果想 流畅地学习全部章节,请提早获取GPU并且安装深度学习框架的GPU版本。 我们可以按如下方式安装PyTorch的CPU或GPU版本: ow系统的命令行窗口中运行以下命令前, 需先将当前路径定位到刚下载的本书代码解压后的目录): jupyter notebook 9 https://developer.nvidia.com/cuda‐downloads 10 目录 现在可以在Web浏览器中打开http://localhost:8888(通常会自动打开)。由此,我们可以运行这本书中每个 部分的代码。在运行书籍代码、更新深0 码力 | 797 页 | 29.45 MB | 1 年前3
PyTorch OpenVINO 开发实战系列教程第一篇tensorboard 相关类。 3)torch 开头的一些包与功能,主要包括支持模型导出功能 的 torch.onnx 模块、优化器 torch.optim 模块、支持 GPU 训 练 torch.cuda 模块,这些都是会经常用的。 4)此外本书当中还会重点关注的 torchvison 库中的一些常见 模型库与功能函数,主要包括对象检测模块与模型库、图象数 据增强与预处理模块等。 以上并不是 Windows 下相同的命令行完成 pytorch 安装校验 测试。这样我们就完成了 Pytorch 的环境搭建,这里有个很特 别的地方需要注意,就是 Pytorch 的 GPU 版本需要 CUDA 驱 动支持与 CUDA 库的安装配置支持。关于这块的安装强烈建 议参照英伟达官方网站的安装指导与开发者手册。 1.3 Pytorch 基础术语与概念 很多人开始学习深度学习框架面临的第一个问题就是专业术语 如下: gpu = torch.cuda.is_available() for i in range(torch.cuda.device_count()): PyTorch + OpenVINO 开发实战系列教程 第一篇 9 print(torch.cuda.get_device_name(i)) if gpu: print(x.cuda()) y = torch.tensor([10 码力 | 13 页 | 5.99 MB | 1 年前3
【PyTorch深度学习-龙龙老师】-测试版202112cpu_b.device) # 创建使用 GPU 运算的 2 个矩阵 gpu_a = torch.randn([1, n]).cuda() gpu_b = torch.randn([n, 1]).cuda() print(n, gpu_a.device, gpu_b.device) 接下来实现 CPU 和 GPU 运算的函数,并通过 timeit 系统,NVIDIA GPU 和 Python 语言环境为例,介绍如何安装 PyTorch 框架及其它开发软件。 一般来说,开发环境安装分为 4 大步骤:安装 Python 解释器 Anaconda,安装 CUDA 加速库,安装 PyTorch 框架和安装常用编辑器。 1.6.1 Anaconda 安装 Python 解释器是让以 Python 语言编写的代码能够被 CPU 执行的桥梁,是 Python 1.6.2 CUDA 安装 目前的深度学习框架大都基于 NVIDIA 的 GPU 显卡进行加速运算,因此需要安装 NVIDIA 提供的 GPU 加速库 CUDA 程序。在安装 CUDA 之前,请确认计算机具有支持 CUDA 程序的 NVIDIA 显卡设备。如果计算机没有 NVIDIA 显卡,例如部分计算机显卡生 产商为 AMD 或 Intel,则无法安装 CUDA 程序,因此可以跳过这一步,直接进入0 码力 | 439 页 | 29.91 MB | 1 年前3
AI大模型千问 qwen 中文文档模型,其中包含 Qwen1. 5-7B-Chat 的实例: from transformers import AutoModelForCausalLM, AutoTokenizer device = "cuda" # the device to load the model onto # Now you do not need to add "trust_remote_code=True" model chat。以下是一个如何与 Qwen1.5-7B-Chat 进行对话的示例: from transformers import AutoModelForCausalLM, AutoTokenizer device = "cuda" # the device to load the model onto # Now you do not need to add "trust_remote_code=True" model 一个非常简单的代码片段,展示如何运行量化模型 Qwen1.5-7B-Chat-AWQ : from transformers import AutoModelForCausalLM, AutoTokenizer device = "cuda" # the device to load the model onto model = AutoModelForCausalLM.from_pretrained( "Qwen/Qwen1.5-7B-Chat-AWQ"0 码力 | 56 页 | 835.78 KB | 1 年前3
2024 中国开源开发者报告但是在体系结构领域却有专家较早地认识到深度神经网络的潜在影响,从 2010 年便开始探索 加速深度神经网络的处理器架构设计。另一方面,2003 年前后,英伟达开始追求 GPU 的高 性能算力与可编程性,为 GPU+CUDA 生态大厦打下地基,成为今天 AI 算力生态的统治 82 / 111 者。 3.1 先驱者:DianNao 家族 AI 处理器 2010 年的体系结构领域国际旗舰会议 ISCA 在法国召开,当时来自法国 TPU[15]、Meta 开始自研 MTIA 芯片、Tesla 自研 Dojo 芯片等等。可以说,在这一轮全球 AI 处理器热潮中,中国科研团队起到了当之无愧的引领作用。 3.2 英伟达 GPU 与 CUDA 2001 年,斯坦福大学 Bill Dally 教授团队在处理器微结构旗舰期刊《IEEE Micro》上发 表了一篇题为“Imagine:Media Processing with Streams”的论文正式介绍 上那样进行编程。这项工作旋即得到英伟达的青睐, 于是 Buck 博士毕业后便立刻加入英伟达,带领两位工程师创立了 CUDA 项目。2007 年, CUDA 1.0 正式发布,全面适配 GeForce 8800 系列 GPU。随后,UIUC 胡文美教授团队 在 GeForce 8800 GPU 上用 CUDA 实现一些程序,性能比通用 CPU 高 10 倍到 400 倍不等,充分展示了 GPU 的高性能与可编程性[18]。至此,英伟达的0 码力 | 111 页 | 11.44 MB | 9 月前3
深度学习与PyTorch入门实战 - 02. 开发环境安装开发环境准备 主讲人:龙良曲 开发环境 ▪ Python 3.7 + Anaconda 5.3.1 ▪ CUDA 10.0 ▪ Pycharm Community ANACONDA CUDA 10.0 ▪ NVIDIA显卡 CUDA 安装确认 路径添加到PATH CUDA 测试 PyTorch安装 管理员身份运行cmd PyCharm ▪ 配置Interpreter PyCharm0 码力 | 14 页 | 729.50 KB | 1 年前3
C++高性能并行编程与优化 - 课件 - 11 现代 CMake 进阶指南Makefile 启动时会把每个文件都检测一遍, 浪费很多时间。特别是有很多文件,但是实 际需要构建的只有一小部分,从而是 I/O Bound 的时候, Ninja 的速度提升就很明 显。 然而某些专利公司的 CUDA toolkit 在 Windows 上只允许用 MSBuild 构建,不能 用 Ninja (怕不是和 Bill Gates 有什么交 易) 第 1 章:添加源文件 一个 .cpp 源文件用于测试 指定了该项目使用了哪些编程语言。 • 目前支持的语言包括: • C : C 语言 • CXX : C++ 语言 • ASM :汇编语言 • Fortran :老年人的编程语言 • CUDA :英伟达的 CUDA ( 3.8 版本新增) • OBJC :苹果的 Objective-C ( 3.16 版本新增) • OBJCXX :苹果的 Objective-C++ ( 3.16 版本新增) CXX_STANDARD 或是全局变量 CMAKE_CXX_STANDARD 来 设置 -std=c++17 这个 flag , CMake 会在配置阶段检测编译器是否支持 C++17 。 CUDA 的 -arch=sm_75 也是同理,请使用 CUDA_ARCHITECTURES 属 性。 再说了 -std=c++17 只是 GCC 编译器的选项,无法跨平台用于 MSVC 编 译器。 假如你一定要用动态链接库( Windows0 码力 | 166 页 | 6.54 MB | 1 年前3
共 57 条
- 1
- 2
- 3
- 4
- 5
- 6













