自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

吴建明wujianming_110117

吴建明专业博客wujianming_110117

  • 博客(1070)
  • 问答 (8)
  • 收藏
  • 关注

原创 CUDA 7流简化并发

CUDA 7流简化并发异构计算是指有效使用系统中的所有处理器,包括CPU和GPU。为此,应用程序必须在多个处理器上同时执行功能。CUDA应用程序通过在流(按顺序执行的命令序列)中,执行异步命令来管理并发性。不同的流可能同时执行,或彼此相对执行命令。在不指定流的情况下执行异步CUDA命令时,运行时runtime将使用默认流。在CUDA 7之前,默认流是特殊流,它与设备上的所有其他流隐式同步。CUDA 7引入了大量强大的新功能,其中包括为每个主机线程使用独立默认流的新选项,从而避免了对传统默认流的序列化。

2021-01-12 12:57:39 25

原创 C ++基本输入/输出

C ++基本输入/输出本文将学习如何使用cin对象从用户那里获取输入,并使用cout对象在示例的帮助下向用户显示输出。C ++输出在C ++中,cout将格式化的输出发送到标准输出设备,例如屏幕。将cout对象与<<运算符一起使用以显示输出。示例1:字符串输出#include using namespace std;int main() {// prints the string enclosed in double quotescout << “This is

2021-01-12 11:54:40 14

原创 C ++变量,文字和常量

C ++变量,文字和常量本文将借助示例来学习C ++中的变量,文字和常量。C ++变量在编程中,变量是用于保存数据的容器(存储区)。为了指示存储区域,应该为每个变量赋予唯一的名称(标识符)。例如,int age = 14;这里, age是int数据类型的变量,为其分配了一个整数值14。注:该int数据类型表明变量只能容纳整数。同样,double如果必须存储小数和指数,则可以使用数据类型。后面将详细了解所有数据类型。变量的值可以更改,因此名称为variable。int age = 14;

2021-01-12 11:05:46 26

原创 nvGRAPH三角形计数和遍历示例

nvGRAPH三角形计数示例#include “ stdlib.h”#include“ inttypes.h”#include“ stdio.h”#include“ nvgraph.h”#define check( a ){nvgraphStatus_t status =(a); if((status)!= NVGRAPH_STATUS_SUCCESS){printf(“ERROR :%s,%s:%d \ n”,status,__ FILE , LINE __); exit(0); }

2021-01-12 10:19:32 26

原创 TensorRT深度学习训练和部署图示

TensorRT深度学习训练和部署NVIDIA TensorRT是用于生产环境的高性能深度学习推理库。功率效率和响应速度是部署的深度学习应用程序的两个关键指标,因为它们直接影响用户体验和所提供服务的成本。Tensor RT自动优化训练好的神经网络,以提高运行时性能,与仅使用通用CPU的深度学习推理系统相比,Tesla P100 GPU的能源效率(每瓦性能)提高多达16倍(见图1)。图2显示了使用TensorRT和相对复杂的GoogLenet神经网络架构运行NVIDIA Tesla P100和K80进行推理

2021-01-08 07:31:11 48

原创 TensorRT 数据和表格示例

TensorRT 数据和表格示例TensorRT 7.1在绑定索引方面比其前身更加严格。以前,允许错误配置文件的绑定索引。考虑一个网络,该网络具有四个输入,一个输出,以及在其中的三个优化配置文件 IBuilderConfig。该引擎有15个绑定,每个优化配置文件有5个绑定,概念上被组织为一个表:优化概要...

2021-01-08 07:12:41 31

原创 TensorRT原理图示

TensorRT原理图示NVIDIA的核心® TensorRT™是有助于在NVIDIA图形处理单元(GPU)的高性能推理一个C ++库。它旨在与TensorFlow,Caffe,PyTorch,MXNet等训练框架以互补的方式工作。它专门致力于在GPU上快速有效地运行已经受过训练的网络,以生成结果(过程称为评分,检测,回归或推断)。一些训练框架(例如TensorFlow)已经集成了TensorRT,因此可以将其用于加速框架内的推理。另外, TensorRT可以用作用户应用程序中的库。它包括用于从Caff

2021-01-08 06:52:45 39

原创 TensorRT 数据格式说明

TensorRT 数据格式说明NVIDIA ® TensorRT™支持不同的数据格式。需要考虑两个方面:数据类型和布局。数据类型格式数据类型是每个单独值的表示。它的大小决定了数值的范围和表示的精度;分别是FP32(32位浮点或单精度),FP16(16位浮点或半精度),INT32(32位整数表示)和INT8(8位表示)。布局格式布局格式决定了存储值的顺序。通常,批次维度是最左侧的维度,其它维度指的是每个数据项的各个方面,例如C 是频道 H 是高度,并且 w ^是宽度(以图片为单位)。总是忽略在这些之

2021-01-08 06:41:30 38

原创 GPU编程和流式多处理器(七)

GPU编程和流式多处理器(七)6. 杂项说明6.1. warp级原语warp作为执行的原始单元(自然位于线程和块之间),重要性对CUDA程序员显而易见。从SM 1.x开始,NVIDIA开始添加专门针对thread的指令。VoteCUDA体系结构是32位的,并且warp由32个线程组成,这些线程与评估条件,向warp中的每个线程广播1位结果,指令能完整匹配。VOTE指令(在SM 1.2第一个可用的)的计算结果的状态,并广播该结果在thread的所有线程。__any()默认返回1,在任何thread3

2021-01-06 07:42:23 44

原创 GPU编程和流式多处理器(六)

GPU编程和流式多处理器(六)5. 纹理和表面读取和写入纹理和表面的指令,所引用的隐式状态,比其他指令要多得多。header中包含诸如基地址,尺寸,格式和纹理内容的解释之类的参数,该header是一种中间数据结构,其软件抽象称为纹理参考或表面参考。当开发人员操纵纹理或表面引用时,CUDA运行时runtime和驱动程序,必须将这些更改转换为header,纹理或表面指令,将其作为索引引用。在启动在纹理或表面上运行的内核之前,驱动程序必须确保,在硬件上正确设置了所有状态。结果,启动此类内核,可能需要更长的时

2021-01-06 06:31:41 51

原创 GPU编程和流式多处理器(五)

GPU编程和流式多处理器(五)4. 条件代码硬件实现了“条件代码”或CC寄存器,其中包含用于整数比较的常用4位状态向量(符号,进位,零,溢出)。可以使用比较指令(例如ISET)来设置这些CC寄存器,并且它们可以通过谓词或发散来指导执行流程。预测允许(或禁止)在warp内基于每个线程执行指令,而分歧则是较长指令序列的条件执行。因为SM内的处理器以warp粒度(一次32个线程)以SIMD方式执行指令,所以如果warp内的所有线程都采用相同的代码路径,则差异会导致执行的指令更少。4.1. 谓词由于管理发散

2021-01-06 06:20:13 63

原创 GPU编程和流式多处理器(四)

GPU编程和流式多处理器(四)3.2. 单精度(32位)单精度浮点支持是GPU计算的主力军。GPU已经过优化,可以在此数据类型上原生提供高性能,不仅适用于核心标准IEEE操作(例如加法和乘法),还适用于非标准操作(例如对先验的近似(例如sin()和log()))。32位值与整数保存在同一寄存器文件中,因此单精度浮点值和32位整数(使用__float_as_int()和__int_as_float())之间的强制转换是免费的。加法,乘法和乘加编译器自动将浮点值的+,–和运算符转换为加,乘和乘加指令。所

2021-01-05 09:08:13 42

原创 GPU编程和流式多处理器(三)

GPU编程和流式多处理器(三)3. Floating-Point Support快速的本机浮点硬件是GPU的存在理由,并且在许多方面,它们在浮点实现方面都等于或优于CPU。全速支持异常可以根据每条指令指定直接舍入,特殊功能单元可为六种流行的单精度先验函数,提供高性能的近似函数。相比之下,x86 CPU在微代码中实现异常,其运行速度可能比在规范化浮点算子上运行的速度慢100倍。舍入方向是由一个控制字指定的,该控制字需要数十个时钟周期来更改,并且SSE指令集中唯一的超越逼近函数是用于倒数和倒数平方根的,给出

2021-01-05 08:51:26 93

原创 GPU编程和流式多处理器(二)

GPU编程和流式多处理器(二)2. 整数支持SM具有32位整数运算的完整补充。• 加法运算符的可选否定加法• 乘法与乘法加法• 整数除法• 逻辑运算• 条件码操作• to/from浮点转换• 其它操作(例如,SIMD指令用于narrow整数,population人口计数,查找第一个零)CUDA通过标准C运算符公开了大部分此功能。非标准运算(例如24位乘法)可以使用内联PTX汇编或内部函数进行访问。2.1. 乘法在Tesla级和Fermi级硬件上,乘法的实现方式有所不同。特斯拉实现了2

2021-01-05 07:34:45 61

原创 GPU编程和流式多处理器

GPU编程和流式多处理器流式多处理器(SM)是运行CUDA内核的GPU的一部分。本章重点介绍SM的指令集功能。流式多处理器(SM)是运行我们的CUDA内核的GPU的一部分。每个SM包含以下内容。• 可以在执行线程之间划分的数千个寄存器• 几个缓存:• –共享内存,用于线程之间的快速数据交换• –恒定高速缓存,用于快速广播恒定内存中的读取• –纹理缓存,以聚合纹理内存的带宽• – L1缓存,可减少对本地或全局内存的延迟• Warp调度程序可以快速在线程之间切换上下文,并向准备执行的Warp发

2021-01-05 07:12:56 70

原创 CloudHub概述

CloudHub概述CloudHubCloudHub是cloudcore的一个模块,是Controller和Edge端之间的中转。它同时支持基于websocket的连接以及QUIC协议访问。Edgehub可以选择一种协议来访问cloudhub。CloudHub的功能是启用边端与控制器之间的通信。到边端的连接(通过EdgeHub模块)是通过websocket连接上的HTTP完成的。对于内部通讯,它直接与控制器通讯。发送到CloudHub的所有请求都是上下文对象,它们与标记为它的nodeID的事件对象的映

2021-01-05 06:19:17 89

原创 Kubeedge Edged概述

Kubeedge Edged概述OverviewEdgeD是管理节点生命周期的边缘节点模块。它可以帮助用户在边缘节点上部署容器化的工作负载或应用程序。这些工作负载可以执行任何操作,从简单的远程遥测数据操作到分析或ML推理等等。使用kubectl云端的命令行界面,用户可以发出命令来启动工作负载。通过容器运行时接口Container Runtime Interface(CRI)支持几种符合OCI的运行时runtimes。请参阅KubeEdge运行时配置,以获取有关如何配置边缘以利用其他运行时的更多信息。

2021-01-05 06:12:43 48

原创 3D MinkowskiEngine稀疏模式重建

3D MinkowskiEngine稀疏模式重建本文看一个简单的演示示例,该示例训练一个3D卷积神经网络,该网络用一个热点向量one-hot vector重构3D稀疏模式。这类似于Octree生成网络ICCV’17。输入的one-hot vector一热向量,来自ModelNet40数据集的3D计算机辅助设计(CAD)椅子索引。使用MinkowskiEngine.MinkowskiConvolutionTranspose和 MinkowskiEngine.MinkowskiPruning,依次将体素上采

2021-01-04 08:21:04 97

原创 MinkowskiEngine多GPU训练

MinkowskiEngine多GPU训练目前,MinkowskiEngine通过数据并行化支持Multi-GPU训练。在数据并行化中,有一组微型批处理,这些微型批处理将被送到到网络的一组副本中。首先定义一个网络。import MinkowskiEngine as MEfrom examples.minkunet import MinkUNet34CCopy the network to GPUnet = MinkUNet34C(3, 20, D=3)net = net.to(target_d

2021-01-04 08:08:37 64

原创 MinkowskiEngine语义分割

MinkowskiEngine语义分割要运行示例,请安装Open3D与PIP安装open3d-python。cd /path/to/MinkowskiEnginepython -m examples.indoor细分酒店房间运行示例时,将看到一个旅馆房间和房间的语义分割。运行示例时,以交互方式旋转可视化效果。首先,加载数据并体素化(量化)数据。调用MinkowskiEngine.utils.sparse_quantize进行体素化。pcd = o3d.read_point_cloud(file

2021-01-04 07:51:10 73

原创 MinkowskiEngine demo ModelNet40分类

MinkowskiEngine demo ModelNet40分类本文将看一个简单的演示示例,该示例训练用于分类的3D卷积神经网络。输入是稀疏张量,卷积也定义在稀疏张量上。该网络是以下体系结构的扩展,但具有剩余的块和更多的层。创建ModelNet40数据加载器首先,需要创建一个数据加载器,以返回网格的稀疏张量表示。如果仅使用顶点,则3D模型的网格表示可能会稀疏。首先以相同的密度采样点。def resample_mesh(mesh_cad, density=1):‘’’https://chri

2021-01-04 07:30:45 60

原创 MinkowskiEngine基准测试

MinkowskiEngine基准测试介绍卷积层和小型U网络的前馈和后馈通过时间。可以将具有相同张量步幅,步幅和内核偏移的内核映射重新用于其他层,可以在大型nueral网络中使用的所有层上,分摊此页面中实验报告的时间。使用Titan X进行实验。实验设置对于单卷积层实验,使用以下设置。import MinkowskiEngine as MEconv = ME.MinkowskiConvolution(in_channels=3,out_channels=32,kernel_size=7,

2021-01-04 07:02:33 104

原创 MinkowskiEngine Miscellaneous Classes杂类

Miscellaneous Classes杂类内核生成器class MinkowskiEngine.KernelGenerator(kernel_size = -1,stride = 1,dilation = 1,is_transpose = False,region_type = <RegionType.HYPERCUBE:0>,region_offsets = None,axis_types = None,Dimensions = -1 )init(kernel_size = -1,s

2021-01-04 06:50:48 65

原创 MinkowskiEngine实用函数和类

MinkowskiEngine实用函数和类sparse_quantizeMinkowskiEngine.utils.sparse_quantize(coords, feats=None, labels=None, ignore_label=- 100, return_index=False, return_inverse=False, quantization_size=None)给定坐标和特征(optional的标签),函数将生成量化(体素化)坐标。Args:coords(numpy.ndarr

2021-01-04 06:40:44 82

原创 Minkowski坐标管理

Minkowski坐标管理坐标键classMinkowskiEngine.CoordsKey(D)init(D)初始化self. See help(type(self))有关准确的签名。getKey()getTensorStride()isKeySet()setKey(key)setTensorStride(tensor_stride)坐标管理器Class MinkowskiEngine.CoordsManager(num_threads : int = -1,memory_manag

2021-01-04 06:23:35 82

原创 Minkowski修剪

Minkowski修剪Minkowski修剪Class MinkowskiEngine.MinkowskiPruning从MinkowskiEngine.SparseTensor中删除指定的坐标。init()初始化由nn.Module和ScriptModule共享的内部模块状态。forward(input, mask)Args:input(MinkowskiEnigne.SparseTensor):从中删除坐标的稀疏张量。mask(torch.BoolTensor):指定要保留哪一个的掩码

2021-01-04 06:06:11 61

原创 MinkowskiNonlinearities非线性

MinkowskiNonlinearities非线性MinkowskiReLUclass MinkowskiEngine.MinkowskiReLU(*args, **kwargs)init(*args, **kwargs)初始化由nn.Module和ScriptModule共享的内部模块状态。MODULEalias of torch.nn.modules.activation.ReLUtraining: boolMinkowskiPReLUclass MinkowskiEngine.Mi

2021-01-04 05:59:14 79

原创 MinkowskiBroadcast广播

MinkowskiBroadcast广播MinkowskiBroadcastAddition广播加法class MinkowskiEngine.MinkowskiBroadcastAddition将缩小的特征广播到所有输入坐标。第一个参数采用稀疏张量。第二个参数采用简化为原点的特征。通常可以使用全局减少来完成此操作,例如MinkowskiGlobalPooling。init()I初始化由nn.Module和ScriptModule共享的内部模块状态。forward(input, input_

2021-01-03 20:52:59 31

原创 MinkowskiPooling池化(下)

MinkowskiPooling池化(下)MinkowskiPoolingTransposeclass MinkowskiEngine.MinkowskiPoolingTranspose(kernel_size, stride, dilation=1, kernel_generator=None, dimension=None)稀疏张量的池转置层。展开功能,然后将其除以贡献的非零元素的数量。init(kernel_size, stride, dilation=1, kernel_generator

2021-01-03 20:27:48 32

原创 MinkowskiPooling池化(上)

MinkowskiPooling池化(上)如果内核大小等于跨步大小(例如kernel_size = [2,1],跨步= [2,1]),则引擎将更快地生成与池化函数相对应的输入输出映射。如果使用U网络架构,请使用相同功能的转置版本进行上采样。例如pool = MinkowskiSumPooling(kernel_size = 2,stride = 2,D = D),然后使用 unpool = MinkowskiPoolingTranspose(kernel_size = 2,stride = 2,D =

2021-01-03 20:21:56 35

原创 稀疏张量基础

稀疏张量基础稀疏张量是稀疏矩阵的高维扩展,其中非零元素表示为一组索引和关联值。Data Generation可以通过提取非零元素直接生成数据。本文展示了一个简单的2D数组,其中心有5个非零元素。data = [[0, 0, 2.1, 0, 0],[0, 1, 1.4, 3, 0],[0, 0, 4.0, 0, 0]]def to_sparse_coo(data):# An intuitive way to extract coordinates and featurescoords,

2021-01-03 19:11:39 19

原创 稀疏张量网络

稀疏张量网络稀疏张量在传统语音,文本或图像数据中,特征是密集提取的。因此,用于这些数据的最常见表示形式是矢量,矩阵和张量。但是,对于3维扫描或什至更高维的空间,这样的密集表示效率不高,因为有效信息仅占空间的一小部分。取而代之,只能将信息保存在空间的非空区域上,这与将信息保存在稀疏矩阵上的方式类似。此表示是稀疏矩阵的N维扩展;因此,被称为稀疏张量。在Minkowski Engine中,采用稀疏张量作为基本数据表示形式,并且类提供为 MinkowskiEngine.SparseTensor。稀疏张量网络

2021-01-03 17:48:50 47

原创 英伟达TRTTorch

英伟达TRTTorchPyTorch JIT的提前(AOT)编译Ahead of Time (AOT) compiling for PyTorch JITTRTorch是PyTorch / TorchScript的编译器,通过NVIDIA针对NVIDIA GPU的TensorRT深度学习优化器和运行时runtime。与PyTorch的即时(JIT)编译器不同,TRTorch是一种提前(AOT)编译器,这意味着在部署TorchScript代码之前,需要执行显式的编译步骤,以TensorRT引擎为目标,将标

2021-01-03 17:18:36 44

原创 闵可夫斯基引擎Minkowski Engine

闵可夫斯基引擎Minkowski EngineMinkowski引擎是一个用于稀疏张量的自动微分库。它支持所有标准神经网络层,例如对稀疏张量的卷积,池化,解池和广播操作。有关更多信息,请访问文档页面。闵可夫斯基引擎Minkowski Enginepip install git+https://github.com/NVIDIA/MinkowskiEngine.git稀疏张量网络:空间稀疏张量的神经网络压缩神经网络以加快推理速度并最小化内存占用已被广泛研究。用于模型压缩的流行技术之一是修剪卷积网络中

2021-01-03 13:58:49 52

原创 双精度张量内核加快了高性能计算

双精度张量内核加快了高性能计算通过NVIDIA Ampere架构,仿真和迭代求解器可将FP64数学提高多达2.5倍。模拟可以帮助了解黑洞的奥秘,并了解冠状病毒上的蛋白质尖峰如何导致COVID-19。还可以让设计师创建从时尚汽车到喷气发动机的所有东西。但是仿真也是地球上最苛刻的计算机应用程序之一,因为需要大量最先进的数学。通过使用称为FP64的双精度浮点格式的计算,仿真使数值模型变得可视化。格式中的每个数字在计算机中占用64位,使其成为当今GPU支持的多种数学格式中计算强度最高的一种。NVIDIA

2020-12-30 14:09:03 50

原创 A100计算能力

A100计算能力A100 GPU支持新的计算功能8.0。表1比较了NVIDIA GPU架构的不同计算功能的参数。数据中心GPU NVIDIA Tesla P100 NVIDIA Tesla V100 NVIDIA A100GPU代号 GP100 GV100 GA100GPU架构 NVIDIA Pascal NVIDIA Volta NVIDIA安培计算能力 6.0 7.0 8.0线/经线 32 32 32最大翘曲/ SM 64 64 64最大线程数/ SM 2048 2048 2048最大

2020-12-30 14:04:35 60

原创 A100 Tensor核心可加速HPC

A100 Tensor核心可加速HPCHPC应用程序的性能需求正在迅速增长。众多科学研究领域的许多应用程序都依赖于双精度(FP64)计算。为了满足HPC计算快速增长的计算需求,A100 GPU支持Tensor操作,以加速符合IEEE的FP64计算,提供的FP64性能是NVIDIA Tesla V100 GPU的2.5倍。A100上新的双精度矩阵乘法加法指令替换了V100上的八条DFMA指令,从而减少了指令提取,调度开销,寄存器读取,数据路径功率和共享存储器读取带宽。A100中的每个SM总共计算64个

2020-12-30 13:54:22 57

原创 A100 GPU硬件架构

A100 GPU硬件架构NVIDIA GA100 GPU由多个GPU处理群集(GPC),纹理处理群集(TPC),流式多处理器(SM)和HBM2内存控制器组成。GA100 GPU的完整实现包括以下单元:• 每个完整GPU 8个GPC,8个TPC / GPC,2个SM / TPC,16个SM / GPC,128个SM• 每个完整GPU 64个FP32 CUDA内核/ SM,8192个FP32 CUDA内核• 每个完整GPU 4个第三代Tensor核心/ SM,512个第三代Tensor核心• 6个H

2020-12-30 13:36:35 36

原创 NVIDIA深度架构

NVIDIA深度架构今天,在2020年NVIDIA GTC主题演讲中,NVIDIA创始人兼首席执行官黄仁勋介绍了基于新NVIDIA Ampere GPU架构的新NVIDIA A100 GPU。本文介绍新的A100 GPU,并介绍了NVIDIA Ampere架构GPU的重要新功能。现代云数据中心中运行的计算密集型应用程序的多样性推动了NVIDIA GPU加速的云计算的爆炸式增长。此类密集型应用程序包括AI深度学习(DL)训练和推理,数据分析,科学计算,基因组学,边缘视频分析和5G服务,图形渲染,云游戏等。

2020-12-30 13:29:38 28 1

原创 稀疏性如何为AI推理增加难度

稀疏性如何为AI推理增加难度NVIDIA Ampere架构使数学运算加倍,以加速对各种神经网络的处理。如果曾经玩过游戏Jenga,那么将有一些AI稀疏感。玩家将木制积木交叉成一列。然后,每个玩家轮流小心地移开一个障碍物,而不会倾倒立柱。它从一开始就很容易,但是变得越来越毛茸茸,直到失败的玩家拔出一个障碍物,导致塔楼坠毁。多年来,研究人员一直在努力地利用数字打积木,以利用稀疏性来加速AI。他们尝试从神经网络中提取尽可能多的不需要的参数-而不破坏AI的超高精度。目标是减少深度学习所需的矩阵乘法堆,从

2020-12-30 08:44:44 14

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除