AI专题精讲
这个作者很懒,什么都没留下…
展开
-
CUDA专题14—解锁GPU极致性能:CUDA图的结构设计与创建全攻略
CUDA 图提出了一种新的工作提交模型。在CUDA中,图是由一系列操作(如内核启动)组成,并通过依赖关系连接,这些操作的定义与执行是分开的。这样,图可以定义一次,然后重复启动。将图的定义与执行分开可以实现许多优化:首先,与流相比,CPU的启动开销减少,因为大部分设置工作提前完成;其次,将整个工作流呈现给CUDA,使得某些优化成为可能,这些优化在流的逐步工作提交机制中可能无法实现。原创 2025-04-03 09:08:06 · 9 阅读 · 0 评论 -
CUDA专题13— CUDA编程式依赖启动全解析:从技术背景到高阶应用
编程式依赖启动机制允许在其依赖的主内核(位于同一CUDA流中)执行完成前启动。该技术自计算能力9.0及以上的设备开始支持,当次级内核可完成大量不依赖主内核结果的工作时,能显著提升性能。原创 2025-04-03 09:07:15 · 9 阅读 · 0 评论 -
CUDA专题12—深度解析CUDA异步并发执行:高效利用GPU计算与数据传输
这些操作之间所能实现的并发级别,取决于设备的特性集和计算能力(如下所述)。原创 2025-04-02 10:58:38 · 14 阅读 · 0 评论 -
CUDA专题11—告别内存等待:深度解析CUDA同步域的原理与实战
部分CUDA应用程序可能因内存栅栏/刷新操作需等待超出CUDA内存一致性模型要求范围的内存事务,从而导致性能下降。以观察上述示例。根据CUDA内存一致性模型的保证,断言条件必然成立,这意味着线程1对变量x的写入必须在线程2对b的写入之前,对线程3可见。通过原子变量a的release-acquire操作所提供的内存序仅能确保x对线程2可见(因其作用域限于设备内部),而无法保证对线程3的可见性。原创 2025-04-02 10:57:43 · 12 阅读 · 0 评论 -
CUDA专题10—从原理到实践:CUDA页锁定内存的可移植性、写合并与映射技术全指南
运行时提供了以下函数来支持使用页锁定(也称为固定)主机内存(与通过malloc()malloc():对于某些设备,页锁定主机内存与设备内存之间的拷贝可以与内核执行并发进行(如异步并发执行部分所述)。:在某些设备上,页锁定主机内存可以映射到设备的地址空间中,从而无需在设备内存之间来回复制数据(详见映射内存部分)。:在前端总线系统中,如果主机内存分配为页锁定(尤其是进一步分配为写合并内存时),主机内存与设备内存之间的带宽会更高(如写合并内存部分所述)原创 2025-04-01 09:30:50 · 344 阅读 · 0 评论 -
CUDA专题9—CUDA共享内存 vs 分布式共享内存:架构解析与性能优化实战
这段代码展示了。原创 2025-04-01 09:29:47 · 182 阅读 · 0 评论 -
CUDA专题8—CUDA L2缓存完全指南:从持久化策略到性能优化实战
当CUDA内核反复访问全局内存中的某个数据区域时,此类数据访问可视为持久化(persisting)访问。反之,若数据仅被访问一次,则可视为流式(streaming)访问。从CUDA 11.0开始,计算能力8.0及以上的设备能够调控L2缓存中数据的持久性,从而可能实现更高的全局内存访问带宽和更低的延迟。原创 2025-03-31 18:46:23 · 318 阅读 · 0 评论 -
CUDA专题7—CUDA Runtime完全指南:从内存管理到初始化最佳实践
CUDA Runtime 通过 cudart 库实现,该库可以静态链接(使用 cudart.lib 或 libcudart.a)或动态链接(使用 cudart.dll 或 libcudart.so)到应用程序。依赖动态链接 cudart.dll 或 libcudart.so 的应用程序通常需要将它们包含在安装包中。只有链接到同一个 CUDA Runtime 实例的组件之间传递 CUDA Runtime 符号地址才是安全的。所有 CUDA Runtime 的 API 入口点均以cuda作为前缀。原创 2025-03-31 10:56:14 · 108 阅读 · 0 评论 -
CUDA专题6—CUDA开发者必备:NVCC编译兼容性深度指南
CUDA C++为熟悉C++编程语言的用户提供了一条便捷路径由一组极简的C++语言扩展和一个运行时库构成。核心语言扩展已在"编程模型"章节中介绍。这些扩展允许程序员将内核定义为C++函数,并通过新增语法指定每次调用函数时的网格(grid)和线程块(block)维度。任何包含这些扩展的源文件必须按照使用NVCC编译中所述方式用nvcc编译。运行时库在CUDA运行时章节引入。它提供了在主机上执行的C和C++函数,用于分配/释放设备内存、在主机内存与设备内存间传输数据、管理多设备系统等。原创 2025-03-31 09:09:33 · 98 阅读 · 0 评论 -
CUDA专题5—从理论到实践:解锁CUDA异构计算与异步SIMT的高性能奥秘
研究显示,Ampere架构中PCIe 4.0 x16的理论带宽为31.5GB/s,而设备内存(如A100的HBM2e)带宽达1555GB/s,相差近50倍,凸显优化数据传输的重要性。具有相同主版本号的设备采用相同核心架构:基于NVIDIA Hopper GPU架构的设备主版本号为9,Ampere架构为8,Volta架构为7,Pascal架构为6,Maxwell架构为5,Kepler架构为3。线程作用域(Thread Scope)是CUDA内存模型的核心抽象,它定义了多级同步粒度与硬件架构的映射关系。原创 2025-03-30 15:00:02 · 141 阅读 · 0 评论 -
CUDA专题4—解锁GPU算力:深入理解CUDA内核、线程与内存三层次优化
在计算能力为9.0的GPU中,簇内的所有线程块都被保证在同一个GPU处理簇(GPC)上共同调度,并且线程块可以使用Cluster Group API提供的cluster.sync()进行硬件支持的同步。每个线程块都有一个共享内存(shared memory),该内存对该线程块内的所有线程可见,并且其生命周期与线程块相同。每个线程块的线程数量存在限制,因为一个线程块的所有线程都应当位于同一个流式多处理器核心上,并且必须共享该核心有限的存储资源。线程块的维度在内核中通过内置的blockDim变量访问。原创 2025-03-30 14:53:22 · 17 阅读 · 0 评论 -
CUDA专题3:为什么GPU能改变计算?深度剖析架构、CUDA®与可扩展编程
图形处理器(GPU)在相近的成本和功耗范围内,能够提供比中央处理器(CPU)更高的指令吞吐量和内存带宽。许多应用程序利用这些优势,在 GPU 上的运行速度远超 CPU(参见《GPU 应用》)。其他计算设备(如 FPGA)虽然能效也很高,但其编程灵活性远不及 GPU。GPU 与 CPU 的能力差异源于它们的设计目标不同。CPU 旨在以最快速度执行单个线程(即一系列操作),并可并行执行数十个线程;而 GPU 则专为并行执行数千个线程优化(通过牺牲单线程性能来换取更高的整体吞吐量)。原创 2025-03-29 17:57:00 · 385 阅读 · 0 评论 -
CUDA专题2:Makefile入门(Part3)
这段代码的作用是根据目标架构自动设置合适的目标位数,以便编译过程中使用正确的位数配置。,并对不支持的架构做出错误提示。只会在第一次赋值时执行一次,之后无论引用多少次。它的作用是将右侧的表达式。,那么它的值将被自动设置为。,每次引用时都会重新执行。例如,若当前主机架构为。,都会得到同样的结果。原创 2025-02-26 11:12:15 · 32 阅读 · 0 评论 -
CUDA专题2:Makefile入门(Part2)
就会在终端中看到这个警告。原创 2025-02-26 10:56:49 · 35 阅读 · 0 评论 -
CUDA专题2:Makefile入门(Part1)
下面是一个基本的 ,用于编译 C 语言程序,并提供清理功能:代码解释1. 变量定义:指定编译器为 。:最终生成的可执行文件名称。:源代码文件。2. 目标 时,会触发 目标,也就是 。3. 生成可执行文件 时,会执行 ,编译 生成 可执行文件。4. 清理目标 用于删除编译生成的可执行文件 ,避免旧文件影响新的编译。使用方法编译代码:这会调用 ,生成 可执行文件。运行程序:清理文件:这会删除 可执行文件,保持目录整洁。这个原创 2025-02-26 10:47:10 · 30 阅读 · 0 评论 -
CUDA专题1:CUDA介绍
图形处理单元(GPU)提供比中央处理单元(CPU)更高的指令吞吐量和内存带宽,且在相似的价格和功率范围内。许多应用程序利用这些更高的能力,使得在GPU上运行的速度比在CPU上更快(参见GPU应用)。其他计算设备,如现场可编程门阵列(FPGA),也具有较高的能效,但它们在编程灵活性上远不如GPU。GPU和CPU之间的这种能力差异源于它们的设计目标不同。原创 2025-02-23 23:04:16 · 89 阅读 · 0 评论 -
Chameleon:混合模态早期融合基础模型
我们推出了Chameleon,这是一个基于早期融合标记的混合模态模型家族,能够理解和生成任意序列的图像和文本。我们从初始阶段就制定了一种稳定的训练方法、一种对齐方案,以及一种专为早期融合、基于标记的混合模态设置量身定制的架构参数化方法。这些模型在广泛的任务上进行了评估,包括视觉问答、图像描述、文本生成、图像生成以及长篇混合模态生成。原创 2025-02-22 10:39:17 · 50 阅读 · 0 评论 -
使用文本和图像提示进行图像分割
图像分割通常通过为固定的对象类别集训练模型来解决。在后续引入更多类别或更复杂的查询时,成本较高,因为这需要在包含这些表达的数据集上重新训练模型。本文提出了一种系统,能够在测试时基于任意提示生成图像分割结果。提示可以是文本或图像。这种方法使我们能够为三种常见的分割任务创建一个统一的模型(只需训练一次),这些任务分别面临不同的挑战:指代表达式分割、零样本分割和单样本分割。我们以CLIP模型为骨干网络,并通过基于Transformer的解码器扩展其功能,以实现密集预测。原创 2025-02-14 08:55:11 · 193 阅读 · 0 评论 -
Emu3: 下一词预测即一切
这期。原创 2025-02-21 09:34:43 · 48 阅读 · 0 评论 -
表格理解专题(五)表头和数据项定义
表头通常是位于表格顶端或左侧的文本,它们用来描述数据的类别或维度。原创 2024-11-16 17:02:47 · 377 阅读 · 0 评论 -
表格理解专题(五)表头和数据项定义
表头通常是位于表格顶端或左侧的文本,它们用来描述数据的类别或维度。原创 2024-11-13 22:36:11 · 868 阅读 · 0 评论 -
表格理解专题(四)单元格之间的关系表示
根据不同类型的单元格(如表头单元格、数据单元格、分类单元格等),可以根据这些单元格之间的关系进行分类。以下是对这些单元格类型之间关系的分类和定义。原创 2024-11-13 19:48:58 · 122 阅读 · 0 评论 -
表格理解专题(三):单元格的特征提取举例
下面我们构建一个示例,其中结合了 RoBERTa、相对位置编码、数据类型和邻居单元格信息 来提取单元格信息。假设我们要处理一个包含文本、数值和日期等数据的表格,目的是为每个单元格提取特征,以便用于后续的 GNN 模型。原创 2024-11-11 23:19:01 · 87 阅读 · 0 评论 -
表格理解专题(二):单元格的特征提取
在构建 GNN 模型时,节点特征可以由文本内容、位置编码、数据类型、上下文信息等多方面信息组成。使用上述方法组合构建一个初始节点特征向量,再结合 GNN 层级联操作和多任务学习,模型可以更加准确地捕捉到单元格的类型和关系。原创 2024-11-11 23:07:03 · 156 阅读 · 0 评论 -
表格理解专题(一):单元格元数据表示
类型描述示例表头单元格描述列或行的内容“姓名”、“年龄”、“职位”数据单元格包含实际数据“25岁”、“张三”、“经理”分类单元格划分数据的类别“部门”、“产品类型”汇总单元格表示汇总信息,如总和、平均值等“总计”、“平均值”索引单元格标识每行或列的序号备注单元格含有注释或说明“数据为估计值”空单元格无数据的占位单元格表格中的空白单元格这些类型的划分有助于在表格数据分析中识别和处理不同类型的单元格,从而更有效地进行信息提取和关系建模。原创 2024-11-11 22:14:58 · 333 阅读 · 0 评论