共享内存 共享内存和L1缓存同属为一块物理内存,所以他的访问和写入速度是和L1缓存相当的。并且可以通过CUDA提供的API,设置L1缓存和共享内存的大小,调整他们所占的比例,如果你几乎用不到共享内存,就可以将共享内存的大小调到最小,这样可以获得更大的L1缓存。 共享内存对线程束占用率的影响 和L1缓存一样,共享内存也是每个SM单元都独有一块共享内存块,并且在核函数被调用时,共享内存是在线程块中被共享的。 也就是说: ​ 共享内存使用量 = 每个SM单元中线程块的数量 X 核函数中用到的共享内存大小 如果共享内存资源…

2024年3月14日 0条评论 278点热度 0人点赞 大脸猫 阅读全文

前言 NVIDIA Nsight Compute 和NVIDIA Nsight Systems作为CUDA工具包中的性能分析工具,但是他们的定位有所不同。 NVIDIA Nsight Systems 更强调的是整个程序的性能分析,不仅对于CUDA的运行信息,以及CPU中所执行的任务也是可以进行数据采样的。 NVIDIA NSight Compute 是一个专门针对核函数的性能分析工具,它对核函数的信息采集得非常详细,可以对列如缓存命中、显存吞吐量、计算吞吐量等信息进行追踪。它可以对每个核函数生成报表,这些报表中的信…

2024年3月12日 0条评论 365点热度 0人点赞 大脸猫 阅读全文

前言 NVIDIA Nsight Systems 是一个作用于CUDA的轻度性能分析工具,如果是想知道核函数的执行顺序、消耗时间、资源占用率等信息,那么这个工具很合适。 这里使用的是 2023.2.3版本的软件,软件版本不同,可能使用方法会有所不同,注意甄别。 使用之前 这个软件在CUDA 工具包中,如果安装了CUDA是随带一起安装的。 (windows)在使用之前要注意用户是否为管理员,如果是访客用户,可能会出现无法正确链接设备的情况。 开始使用 NVIDIA Nsight Systems 提供了多种链接设备的方…

2024年3月12日 0条评论 429点热度 0人点赞 大脸猫 阅读全文

前言 这是对官方文档中对占用率解释的部分的翻译。原文: 点击前往 在原文的基础上增加了自己的一些评述,不一定对,看个乐呵。 概述 在CUDA的Profile和Trace模式下记录的所有CUDA核函数启动中的Occupancy(占用率)实验详情窗格显示“理论占用率”,即由核函数启动配置和CUDA设备的能力强加的占用率上限。在Profile模式的Achieved Occupancy实验中,测量了核函数执行期间的占用率,并将实际值添加到Occupancy实验详情窗格中,与理论值一起显示。额外的图表显示每个SM的实际占用率…

2024年2月2日 0条评论 476点热度 0人点赞 大脸猫 阅读全文

前言 Stable Diffusion 的 Prompt分为两种: Prompt 正面提示,用于描述图像中需要渲染的内容 Negative Prompt 负面提示,用于描述图像中禁止出现的内容 在编写Prompt 和Negative Prompt的时候,需要知道Stable Diffusion在消化提示词的时候会根据提示词中的标签权重来区分那些标签是重要的,哪些标签是其次的,这篇文章会记录一些用于调整权重和渲染步骤的语法。 分隔符 描述一幅图像时可能会从图像的多个角度去描述,比如背景,画中的人物,动作,天气等等。S…

2023年11月6日 0条评论 876点热度 1人点赞 大脸猫 阅读全文

前言 这篇博文会从一个初学者的角度来记录一次使用Stable Diffusion WebUI的过程,并且只是记录一次使用txt2imag 的使用过程。 PS:这里并不会讲如何安装Stable Diffusion WebUI。 模型选择 我使用的模型是Majicmix-Realistic,这是一个主打写实画风的模型,下载好模型并放入WebUi的stable-diffusion-webui\models\Stable-diffusion 相对路径下即可。 点击刷新按钮可以重新读取本地的模型列表,之后使用下拉按钮选择要使…

2023年11月1日 0条评论 1279点热度 0人点赞 大脸猫 阅读全文

前言 最近折腾了一些家里的路由器,给路由器上挂了一个固态,用做微型NAS,给电视机共享一些影视文件。此前我都是开着windows的SMB文件共享然后使用电视机放映本地文件,但是这样每次看电视之前都需要给电脑开机才行十分麻烦。 使用路由器做文件共享确实方便许多,但是在硬盘有读写的情况下,路由器的CPU占用率会被拉满,随之而来的问题就是温度暴涨,AC88U作为一个已经服役了6年的老将,CPU拉满之后温度直接飙到80+,并且此时已经不是夏天,室温只有20°左右,我都不敢想当35°的室温它会怎么样。 于是开始了降温行动,最…

2023年10月15日 0条评论 1236点热度 0人点赞 大脸猫 阅读全文

前言 核函数不能像普通函数一样可以在IDE中调试,在运行时发生错误时也不会中断,或者抛出错误信息。 但是CUDA提供了一些函数用于捕获这些错误信息。 错误捕捉函数 //返回运行时的最后一个错误代码,并清除掉这个错误 __host__​__device__​cudaError_t cudaGetLastError ( void ) //返回运行时的最后一个错误代码,但不清除掉这个错误 __host__​__device__​cudaError_t cudaPeekAtLastError ( void ) //通过错误…

2023年8月8日 0条评论 1320点热度 1人点赞 大脸猫 阅读全文

前言 统一内存是指只需要一次内存申请,就可以在任意的GPU或者CPU中访问这块内存中的数据,不用在手动的在设备与主机之间拷贝数据。 在了解统一内存之前,需要知道一些相关的概念。 页面错误 页面错误是计算机操作系统中的一种异常情况,它发生在程序试图访问虚拟内存中的某个页面(也称为页)时,而该页当前并未加载到物理内存中。 虚拟内存是一种使用硬盘空间模拟扩展内存的技术。在现代操作系统中,每个程序都有其虚拟地址空间,其中包含多个页面。这些页面通常是固定大小的。 当程序访问某个虚拟地址时,操作系统会检查该地址对应的页面是否已…

2023年8月8日 0条评论 1346点热度 0人点赞 大脸猫 阅读全文

CUDA GPU编程指南:内存的申请,释放与拷贝 前言 ​ 在CPU上运行的程序,会将数据存放在内存中,在C++中直接使用new delete 或者malloc free就可以管理内存的申请和释放。 ​ 在GPU上运行的程序,会将数据放入显存中,需要CUDA提供的API来管理内存,并且在显存中存放的数据,是不能被CPU直接访问的。 主机内存(host)和设备内存(device) ​ 主机内存指在CPU上运行的代码所使用的内存,正常C/C++代码中的使用的变量,无论是在堆还是栈上,使用的都是主机内存。 ​ 使用设备内…

2023年7月26日 2条评论 3740点热度 0人点赞 大脸猫 阅读全文
123458