- 博客(91)
- 收藏
- 关注
原创 NCU使用指南及模型性能测试(pytorch2.5.1)
本项目在原项目的基础上增加了Nsight Compute(ncu)测试的功能,并对相关脚本功能做了一些健硕性的增强,同时,对一些框架的代码进行了更改(主要是数据集的大小和epoch等),增加模型性能测试的效率,同时完善了模型LSTM的有关功能。
2024-12-06 13:52:54
2359
原创 上传镜像docker hub登不上和docker desktop的etx4.vhdx占用空间很大等解决办法
平时使用docker一般都在Linux服务器上,但这次需要将镜像上传到docker hub上,但是服务器上一直无法登录本人的账号,(这里的问题应该docker 网络配置中没有开代理的问题,因服务器上有其他用户使用,不可能直接更改docker的网络配置。了解了一下这个etx4.vhdx,大概的意思就是他是一个虚拟磁盘,就是只会变大不会变小,假如你某个时刻需要10GB的空间,他这时候会占用10GB的空间,但是当你不需要的时候,他还会占那么多,大概就是这个意思。这时候现在先将文件改变稀疏属性,再压缩就可以了。
2024-11-28 14:18:39
562
原创 使用cupti拦截多并发kernel launch
main.cu// 定义内核函数指针函数指针初始化KernelFunction kernelFunctions[] 是函数指针与函数名的映射信息,第三个参数为核函数传递参数的数量int kernel_nums为核函数的数量:声明变量和函数指针映射等// 型枚举,在回调函数中识别函数类别// 声明全局变量,其中matrixAdd_func为mian.cu中定义的函数指针// 使用 constexpr 来定义编译时常量// 启动函数声明:拦截的kernel的数量。
2024-10-28 15:12:07
1035
1
原创 通过gpgpu模拟器获取内存地址
GPGPU-sim能够在Linux系统下,提供对GPU的功能模拟和性能仿真,让你在没有装NVIDIA显卡的情况下可以编译并运行CUDA程序。当然它更重要的意义是,可以通过修改仿真参数,让开发者修改GPU内部架构,并进行性能仿真,以针对自己的项目需求进行更好的代码设计,获得更好的性能表现cuda 版本不宜太高,具体适用的版本在clone下来的git里有 常用的版本基本都可以。
2024-10-19 23:27:16
466
原创 使用 NVBit 进行内存访问跟踪指南
是 NVIDIA 提供的一款轻量级、灵活的 GPU 二进制插桩框架,可以帮助开发者在不修改源代码的情况下,跟踪 CUDA 程序的内存访问。NVBit 通过在程序运行时对 CUDA 内核的二进制代码(SASS)进行动态插桩,实现对内核执行的监控和分析。
2024-10-19 23:26:29
1018
原创 神经网络的一些benchmark示例
常见的测试类型包括矩阵乘法、向量加法、卷积操作等,通过这些基准可以有效评估硬件资源的利用率、带宽、延迟等关键指标,帮助开发者优化 CUDA 程序的性能。该基准测试框架的目标是推动 GNN 研究的进展,使研究人员能够更有效地开发和优化 GNN 模型,提升其在真实世界应用中的性能。它提供了一个更具挑战性的搜索空间,并基于更广泛的架构评估结果,避免了对真实硬件的高昂训练成本。它支持不同任务类型,包括节点分类、边预测和图分类,适用于大规模的图结构数据,推动图神经网络研究和应用的发展。cuda 版本不适配。
2024-10-09 21:23:27
1708
原创 基于radinia的benchmark示例
总体上看,内核执行时间非常短,意味着计算部分的工作量较小,主要的时间花费在数据传输和其他非计算部分上。两次运行的时间差异主要可能是由于输入数据的不同,或者缓存影响。每个图像经历了 3 个阶段的二维前向 DWT 变换,程序分步骤显示了每一层中滑动步长(图像,其中每一层都展示了不同的滑动步长和网格划分。CUDA 核函数执行,程序多次显示。类似的步骤也应用于较大尺寸的。每个阶段的 DWT 变换由。,表示每个核函数的执行完成。总时间(包括内存传输)CUDA 内核执行时间。
2024-10-09 21:20:35
1247
原创 cublas 的section介绍
cuBLAS 是 NVIDIA 提供的高性能线性代数库,它实现了 BLAS(Basic Linear Algebra Subprograms)的功能,用于在 CUDA 支持的 GPU 上加速矩阵和向量运算。cuBLAS 是专门为在 GPU 上执行大规模线性代数操作设计的,广泛应用于深度学习、科学计算和机器学习等领域。readelf。
2024-09-29 22:41:28
1149
原创 cudnn的section介绍
使用objdump工具查看cuDNNSections:ALLOC用途:这个 section 通常包含构建工具生成的唯一构建 ID。用于调试或验证目的,帮助唯一标识不同的编译版本。.gnu.hash用途:用于动态链接时的符号查找,存储哈希表。GNU hash 提高了符号查找效率,尤其在动态库中。.dynsym用途:动态符号表,用于在动态链接时查找和解析符号。这是库中所有导出符号(如函数、全局变量等)的列表。.dynstr用途:字符串表,用于存储符号表中的符号名称。符号名称在动态链接时通过这个段来访问。
2024-09-29 22:40:17
922
原创 cuda二进制文件的section介绍
在编译CUDA程序(如矩阵乘法示例)并生成二进制可执行文件后,可以使用工具如objdump和readelf来查看生成的可执行文件中的各个。本文以matrixMul代码示例说明介绍相关的section。
2024-09-29 22:39:27
1054
原创 tensorflow的显存分配机制
默认情况下,TensorFlow 会映射进程可见的所有 GPU(取决于 CUDA_VISIBLE_DEVICES)的几乎全部内存。这是为了减少内存碎片,更有效地利用设备上相对宝贵的 GPU 内存资源。为了将 TensorFlow 限制为使用一组特定的 GPU,可以使用 tf.config.set_visible_devices 方法。在某些情况下,希望进程最好只分配可用内存的一个子集,或者仅在进程需要时才增加内存使用量。TensorFlow 为此提供了两种控制方法。
2024-09-22 14:03:19
457
原创 tensorflow同步机制
在 TensorFlow 中,多算子(operators)和多核(CPU 核或 GPU 核)同步机制旨在提高深度学习模型的计算效率和资源利用率。
2024-09-21 22:55:34
1339
原创 tensorflow算子调用示例(MINIST)
本文以MINIST为例,阐述在模型训练时,tensorflow框架每个算子具体调用kernel的过程。
2024-09-21 22:54:55
1081
原创 tensorflow底层架构
TensorFlow 的架构分为多个层次,从上层的 Python 和 C++ 客户端到底层的设备管理和分布式计算。上层提供了用户友好的 API,用于定义和执行计算图;中层处理数据流的执行和分布式计算;底层则负责与硬件设备的交互,确保计算任务能够高效地在不同设备上执行。这种分层结构使得 TensorFlow 既能方便用户使用,也能够高效处理大规模的深度学习任务。
2024-09-21 22:53:51
1864
原创 pytorch自动微分原理
Tensor是PyTorch实现多维数组计算和自动微分的关键数据结构。一方面,它类似于numpy的ndarray,用户可以对Tensor进行各种数学运算;另一方面,当设置之后,在其上进行的各种操作就会被记录下来,用于后续的梯度计算,其内部实现机制被称为。Variable变量:在PyTorch早期版本中,Tensor只负责多维数组的运算,自动微分的职责是Variable完成的,因此经常可以看到因而产生的包装代码。而在0.4.0版本之后,二者的功能进行了合并,使得自动微分的使用更加简单了。
2024-09-21 22:50:59
711
原创 pytorch 显存分配机制
动态显存分配:PyTorch 在需要时动态分配显存,而不是一次性占用所有可用显存。缓存分配器 (Caching Allocator):避免频繁分配和释放显存,减少内存碎片,优化性能。显存监控工具:提供了多种 API 来监控显存使用情况,并在需要时手动清空缓存。自动混合精度 (AMP):通过降低部分计算的精度来减少显存占用。多 GPU 管理:每个 GPU 独立管理显存,支持多 GPU 下的显存分配和调度。pytorch显存管理机制优化参考。
2024-09-21 22:48:59
1984
原创 pytorch 同步机制
在 PyTorch 中,当多个算子(operators)和内核(kernels)被并行执行时,PyTorch 通过 CUDA 的和机制来管理并发和同步。CUDA 是一个异步计算平台,计算任务会被放入一个队列中异步执行,PyTorch 为了确保不同算子之间的依赖关系正确,使用了流和事件来管理任务的调度和同步。
2024-09-21 22:48:18
1639
原创 pytorch 算子调用kernel示例(MINIST)
当进行 MNIST 分类任务时,PyTorch 中的每一个算子会根据设备类型(CPU 或 CUDA)自动选择合适的内核(kernel)进行计算。本文以GPU为例,介绍算子调用kernel的过程。
2024-09-21 22:47:11
1446
原创 pytorch的动态计算图机制
Pytorch的计算图由节点和边组成,节点表示张量或者Function,边表示张量和Function之间的依赖关系。Pytorch中的计算图是动态图。这里的动态主要有两重含义。第一层含义是:计算图的正向传播是立即执行的。无需等待完整的计算图创建完毕,每条语句都会在计算图中动态添加节点和边,并立即执行正向传播得到计算结果。第二层含义是:计算图在反向传播后立即销毁。下次调用需要重新构建计算图。
2024-09-21 22:46:21
1222
原创 pytorch 架构结构分析
Pytorch是一个基于Torch框架的,开源的Python深度学习库。Torch框架一开始是不支持Python的,后来成功把Torch移植到python上,所以叫它Pytorch。Torch是一个科学计算框架,广泛支持将GPU放在首位的机器学习算法。
2024-09-21 22:44:07
2504
原创 mxnet 的显存分配机制
MXNet 的显存分配机制在性能优化和资源管理方面起着至关重要的作用。它通过高效的内存管理和调度机制来分配和释放显存,确保在训练深度学习模型时最大限度地利用 GPU 的资源。MXNet 的显存分配机制类似于其他深度学习框架(如 PyTorch 和 TensorFlow),但它有自己的实现细节,主要依赖于(Memory Pool)机制来避免频繁的显存分配和释放。
2024-09-21 22:38:11
1067
原创 mxnet同步机制
在 MXNet 中,多个算子和多个内核(kernel)的同步机制依赖于和,以及其内部的。这些机制确保了在 GPU 上进行深度学习任务时,能够有效地管理算子之间的并行执行、同步和调度。
2024-09-21 22:37:07
954
原创 mxnet算子调用kernel示例(MINIST)
在使用 MXNet 执行 MNIST 任务时,每个步骤都会调用相应的算子,这些算子最终会调度到对应的 GPU kernel(内核)。MXNet 支持异步执行和自动微分,能够通过 GPU 的加速来提高深度学习任务的性能。在 GPU 上执行卷积、全连接等操作时,MXNet 通常会调用 NVIDIA 提供的 cuDNN 库来实现这些操作。首先,定义一个简单的卷积神经网络来处理 MNIST 数据集:2. 数据加载与模型训练在实际训练过程中,我们会加载 MNIST 数据集,并将数据传输到 GPU 上进行训练:3
2024-09-21 22:36:11
1071
原创 mxnet系统架构
到目前为止,我们基本上涵盖了定义一个 Operator 的全部接口。使用 Operator 接口来实现你的计算逻辑 (Forward 和 Backward)。使用 OperatorProperty 接口来:向运算符类传递参数(可以使用 Init 接口)使用 CreateOperator 接口来创建运算符正确地实现描述操作符的接口,例如参数名,等等正确地实现 InferShape 接口来设置输出张量的形状。
2024-09-21 22:34:33
1453
原创 神经网络构建原理(以MINIST为例)
Adam 优化器通过结合动量和自适应学习率进行参数更新。详细的更新公式在上面的回答中已经给出。计算当前梯度∇θL∇θL的加权平均,用来估计梯度的期望。这个一阶动量主要是累积之前的梯度,使得更新方向更加平滑。mtβ1mt−11−β1∇θLmtβ1mt−11−β1∇θLβ1\beta_1β1是一阶动量的衰减率,通常取值为 0.9。mtm_tmt是当前的动量(梯度的指数加权平均)。
2024-09-21 22:29:35
1414
原创 cuda与机器学习
CUDA是由NVIDIA开发的并行计算平台和编程模型,允许开发者利用支持CUDA的NVIDIA GPU来加速计算密集型任务。CUDA提供了扩展的C/C++语言,以及用于在GPU上执行并行计算的API。线程线程块线程的集合:线程块是多个线程的集合,组成一个可在 GPU 上执行的基本调度单元。线程块索引:通过 、、 获取线程块的索引。线程块大小:通过 、、 获取线程块的维度大小。全局线程索引:结合线程块索引和线程索引,可以计算线程在整个网格中的全局索引。网格线程块的集合:网格是线程块的集合,用于组
2024-09-19 09:37:00
1948
原创 第一章 基于CUDA的异构并行计算:异构计算
指的是,使用一个处理器来执行一个应用,为任务选择适合它的架构,比如CPU适合复杂的逻辑计算,GPU适合大量简单重复的计算。
2024-08-17 16:41:55
547
原创 使用dcoker部署hadoop集群时ssh localhost 一直出现Permission denied, please try again.
我在使用docker部署hadoop集群时,想测试三台节点的ssh连接情况,ssh一直不通,甚至ssh lcoalhost 也会出现Permission denied, please try again的问题,后来想到这三台节点是从同一个镜像运行出来的容器,是不是没有设置密码(类似于Linux第一次进入root时需要sudo passwd 设置新密码),后来设置密码后,过来ssh 成功了。如果这样还不行的话建议检查一下/etc/ssh/sshd_config 文件是否允许远程密码登录。
2024-04-21 16:20:58
412
原创 java: error while loading shared libraries: libjli.so: cannot open shared object file: No such file
【代码】java: error while loading shared libraries: libjli.so: cannot open shared object file: No such file。
2024-04-18 22:38:53
2027
原创 ubuntu 更新国内源 apt-get update报错 E: Unable to correct problems, you have held broken packages.
题主在使用ubuntu安装openssh-server时,国外源使用不了,更新完国内源也不行 ,update一直过不去,之前也碰到这个问题,今天看到一位博主的文章。Ubuntu 12.04 (LTS)代号为precise。Ubuntu 14.04 (LTS)代号为trusty。Ubuntu 16.04 (LTS)代号为xenial。Ubuntu 18.04 (LTS)代号为bionic。Ubuntu 20.04 (LTS)代号为focal。Ubuntu 15.04 代号为vivid。
2024-04-17 23:27:12
517
原创 root@localhost‘s password: Permission denied, please try again.
编辑、etc/ssh/sshd_config文件 ,将PermitRootLogin这行改为yesroot@ubuntu:/home/ubuntu# vim /etc/ssh/sshd_config重新加载改文件 /etc/init.d/ssh restart
2024-04-04 17:19:18
552
原创 将jupyter notebook文件导出为pdf(简单有效)
(可能有少部分图片显示不了)网上也有其他方法,比如将其转换为.tex再转为PDF等,但个人觉得这是最简单的一种。
2024-03-27 23:58:50
11986
9
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人