GPU
文章平均质量分 69
daijingxin
好好学习天天向上
展开
-
Jetson下jtop工具的安装
Jetson下对GPU的观测工具nvidia-smi的替代为jtop使用jtop需要安装jetson-stats,具体步骤如下:sudo -H pip3 install -U jetson-statssudo -H pip3 install jetson-statsjetson-releasejtopjetson_varibles原创 2022-01-12 22:54:22 · 2379 阅读 · 0 评论 -
GPU优化内存调度时的几个原则
最小化内存访问减少浪费。比如,当你只需要单通道贴图的时候,不要使用多通道贴图;16bit就可以的时候,不要用32bit;避免重复访问。比如,在做一些全屏后效的时候,你所需要的数据可能隔壁线程里面就有。如果你所使用的GPU支持从隔壁偷数据的话,大胆的用;用计算代替内存访问。比如一些LUT表格当中的数据,是可以通过计算得到的。在某些情况下(比如为内存访问瓶颈的时候),可能直接计算比使用LUT在总体上效率更高;采用压缩。如果你所使用的GPU支持对压缩数据的直接访问,那么使用它。这可以显著减少所需的内存访转载 2022-01-12 22:50:26 · 840 阅读 · 0 评论 -
make报错 /usr/include/c++/11.1.0/bits/stl_pair.h
进行GPU CUDA编程时遇到这个问题,原因是CUDA编程需要将C++标准设置为11可以在cmake 中加入:SET(CMAKE_CXX_FLAGS "-std=c++")或者在makefile文件中加入特定的参数。原创 2021-07-08 17:32:11 · 1389 阅读 · 0 评论 -
CUDA 编程 __launch_bounds__的应用方法
目录Launch Bounds1.概述2.用法2.1概要2.2参数3.分析4.Example5.Register usageLaunch Bounds1.概述As discussed in detail in Multiprocessor Level, the fewer registers a kernel uses, the more threads and thread blocks are likely to reside on a multiprocessor, which can impr转载 2021-06-21 11:55:54 · 2594 阅读 · 0 评论 -
NVIDA GPU架构演进(2022年更新)
GPU发展时间表GPU架构的更新主要体现在SM、TPC的增加,最终体现在GPU浮点计算能力的提升。Kepler架构: FP64单元和FP32单元的比例是1:3或者1:24;GPU型号K80。Maxwell架构: FP64单元和FP32单元的比例下降到了只有1:32;GPU型号M10/M40。Pascal架构: 这个比例又提高到了1:2(P100)但低端型号里仍然保持为1:32,型号Tesla P40、GTX 1080TI/Titan XP、Quadro GP100/P6000/P5000Vota原创 2021-03-21 17:02:00 · 17206 阅读 · 2 评论 -
Volatile关键字与原子性操作
目录什么是原子性操作什么是Volatile关键字为什么需要原子性操作Volatile能不能实现原子性操作?Volatile关键字常用的场景CUDA编程实现原子性操作的方法什么是原子性操作原子性操作具有不可分割性。比如 i=0 这个操作是不可分割的,那么我们说这个操作时原子操作。再比如:i++; 这个操作实际是i = i + 1;是可分割的,所以他不是一个原子操作。非原子操作都会存在线程安全问题,需要我们使用同步技术(sychronized)来让它变成一个原子操作。一个操作是原子操作,那么我们原创 2021-02-09 13:59:53 · 4265 阅读 · 1 评论 -
Linux下nvprof工具的使用
目录1.介绍2.使用方法2.1 使用前的配置1.介绍nvprof是用来测试与优化CUDA程序性能的工具。能够通过终端界面收集和查看相关的数据。2.使用方法2.1 使用前的配置首先确认nvprof有没有正确安装。......原创 2020-11-21 16:18:11 · 7200 阅读 · 0 评论 -
如何在CUDA C / C ++中优化数据传输
注意:文中采用设备版本较老,重在设计思想目录使用nvprof测量数据传输时间最小化数据传输批量传输数据总结在本篇中,我们将开始关于何有效地在主机和设备之间传输数据的讨论。 设备内存和GPU之间的峰值带宽(例如,在NVIDIA Tesla C2050上为144 GB / s)比主机内存和设备内存之间的峰值带宽(在PCIe x16 Gen2上为8 GB / s)高得多。 这种差异意味着在主机和GPU设备之间进行数据传输的实现可能会影响或破坏整体应用程序性能。 让我们从有关主机设备数据传输的一些一般准则开始。翻译 2020-11-19 10:09:12 · 688 阅读 · 0 评论 -
GPU编程 内存类型简介
目录内存分类内存功能三级目录内存分类存储空间主要分为可编程与不可编程两种。通常在存储结构中,缓存都是不可编程的。(例如:L1和L2 cache)GPU的可编程存储空间有:Global, local, texture, constant, shared and register memory。按照速度和大小对他们进行排序如下图所示:内存功能各部分存储空间的分布情况如下图所示:从上图不难看出,GPU每个线程块内实际只有寄存器、共享内存、本地内存。其余常量、纹理、全局内存都存放在GPU芯片上原创 2020-11-10 22:34:47 · 1301 阅读 · 0 评论 -
GPU编程 线程配置
目录1.线程的组成结构2.确定自己显卡的配置3.CUDA核函数的参数(Kernel Function)3.1 1d Grid 和 1d Block3.2 2d Grid 和 2d Block3.3 3d Grid 和 3d Block3.4 计算公式汇总1.线程的组成结构具体的结构从上至下可以分为:Grid-> Block-> Warp ->thread。Grid/Block/Warp/Thread都是软件的组织结构,并不是硬件的,因此理论上我们可以以任意的维度(一维、二维、三维)去原创 2020-10-12 11:36:44 · 2277 阅读 · 8 评论 -
GPU编程 Profiler的使用(包括如何配置图形化界面)
在安装完成了CUDA库后,除了包含的Nsight还有一系列英伟达提供的工具,比如说Profiler。“Visual Profiler是一个图形化的剖析工具,可以显示你的应用程序中CPU和GPU的活动情况,利用分析引擎帮助你寻找优化的机会。”其实除了可视化的界面,NVIDIA提供了命令行方式的剖析命令:nvprof。对于初学者,使用图形化的方式比较容易上手。使用命令的方式如下:但是还是想搞一下图形化界面。如果直接进入Profiler会弹出以下界面:所以使用Profiler前需要注意:比较原创 2020-10-10 10:47:56 · 1693 阅读 · 1 评论 -
VS2019 调试程序报错 无法找到.exe文件
通常是输出文件目录没有和实际文件匹配导致的。需要对以下两个地方修改:1.项目属性->链接器->常规->输出文件2.输出文件目录可以在配置属性下的常规选项看到:4.之后重新生成文件便不会提示错误。...原创 2020-10-06 22:30:19 · 29260 阅读 · 11 评论 -
VS2019 无法解析的外部符号 cublasSgemm_v2等类似问题的解决方法
编译程序时报出以下错误:LNK2019 无法解析的外部符号 cublasSgemm_v2,函数 main 中引用了该符号 TEST1.首先确认环境配置没有问题:如果软件安装在C盘,在C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\extras目录下进入cmd界面进行测试。运行以下命令:./bandwidthTest.exe./deviceQuery.exe运行程序后显示PASS表示环境配置成功。如果这步有问题需要检查自己原创 2020-10-06 22:23:54 · 1691 阅读 · 2 评论