CUDA学习(五十八)

简介:

CUDA动态并行:
介绍:
概括:
动态并行是对CUDA编程模型的扩展,使CUDA内核能够直接在GPU上创建和同步新的工作。 在需要的程序中动态创建并行性可以提供令人兴奋的新功能。
直接从GPU创建工作的能力可以减少在主机和设备之间传输执行控制和数据的需求,因为现在可以通过在设备上执行的线程在运行时进行启动配置决策。 此外,数据相关的并行工作可以在运行时在内核内部生成,动态利用GPU的硬件调度程序和负载平衡器,并根据数据驱动的决策或工作负载进行调整。 之前需要进行修改以消除递归,不规则循环结构或其他不符合平面单层并行性的构造的算法和编程模式可能会更加透明地表达。
本文档描述了支持动态并行机制的CUDA的扩展功能,包括对利用这些机制所必需的CUDA编程模型的修改和补充,以及利用此增加容量的指导原则和最佳实践。
动态并行性仅受计算能力3.5及更高版本的设备支持。(哈哈,感觉相对于前面的这节会很重要,和Pytorch的动态计算图名字上蛮像的,我的1060终于可以用上了)
Glossary:
本指南中使用的术语的定义;
网格(Grid):
网格(Grid)是线程(Threads)的集合。 网格中的线程执行内核功能并分为线程块(Thread Blocks)。
线程块(Thread Block):
线程块是一组在同一个多处理器(SMX)上执行的线程。 线程块内的线程可以访问共享内存,并且可以显式同步。
内核函数:
内核函数是隐式并行子例程,在CUDA执行和内存模型下为网格中的每个线程执行。
主机:
主机指的是最初调用CUDA的执行环境。 通常是在系统的CPU处理器上运行的线程。
Parent(父母):
父母线程,线程块或网格是已经启动新网格(即子网格)的网格线程。 直到其所有已启动的子网格都完成后,父级才被视为已完成。
Child(子):
子线程,块或网格是由父网格启动的线程,块或网格。 子线网格必须在父线程,线程块或网格被认为完成之前完成。
线程块范围:
带有线程块范围的对象具有单个线程块的生命周期。 它们只有在创建该对象的线程块中的线程操作时才具有已定义的行为,并且在创建它们的线程块完成时将被销毁。
设备运行时:
设备运行时指的是运行时系统和API,可以使内核函数使用动态并行。
timg

目录
相关文章
|
存储 算法 编译器
【C++ TypeName用法 】掌握C++中的TypeName:模板编程的瑞士军刀
【C++ TypeName用法 】掌握C++中的TypeName:模板编程的瑞士军刀
792 1
|
Linux 编译器 C++
C/C++性能优化:从根本上消除拷贝操作的浪费
C/C++性能优化:从根本上消除拷贝操作的浪费
1557 1
|
11月前
|
存储 机器学习/深度学习 人工智能
【AI系统】昇腾 AI 核心单元
本文深入解析了华为昇腾AI处理器的核心——AI Core及其达芬奇架构。AI Core采用特定域架构(DSA),专为深度学习算法优化,通过矩阵、向量和标量计算单元的高效协作,实现了对深度学习算法的加速。文章详细介绍了AI Core的计算单元、存储系统及控制单元的设计,展示了其如何通过优化数据通路和控制流程,显著提升计算性能。
537 3
|
存储 Java 关系型数据库
LDAP: error code 32 - No Such Object
`亲测可用,之前搜索了很多博客,啥样的都有,就是不介绍报错以及配置用处,根本不懂照抄那些配置是干啥的,稀里糊涂的按照博客搭完也跑不起来,因此记录这个。` `项目背景`:公司项目当前采用http协议+shiro+mysql的登录认证方式,而现在想支持ldap协议认证登录然后能够访问自己公司的项目网站。 `举例说明`:假设我们公司有自己的门户网站,现在我们收购了一家公司,他们数据库采用ldap存储用户数据,那么为了他们账户能登陆我们公司项目所以需要集成,而不是再把他们的账户重新在mysql再创建一遍,万一人家有1W个账户呢,不累死了且也不现实啊。
353 14
|
数据可视化
rpm 的降级安装命令是什么?
【6月更文挑战第13天】rpm 的降级安装命令是什么?
667 2
|
JavaScript 前端开发 编译器
Cmake 中 compiler_depend.ts 文件:解析和使用 C/C++ 预编译头文件
Cmake 中 compiler_depend.ts 文件:解析和使用 C/C++ 预编译头文件
306 1
|
机器学习/深度学习 人工智能 PyTorch
基于torch.nn.Dropout通过实例说明Dropout丢弃法(附代码)
基于torch.nn.Dropout通过实例说明Dropout丢弃法(附代码)
639 0
|
存储 安全 算法
【C/C++ std::memory_order 枚举】掌握 C++ 内存模型:深入理解 std::memory_order 的原理与应用
【C/C++ std::memory_order 枚举】掌握 C++ 内存模型:深入理解 std::memory_order 的原理与应用
747 0
|
弹性计算 人工智能 测试技术
从零开始使用 ROS CDK 搭建云上解决方案
本文介绍了如何使用阿里云ROS资源编排服务快速部署和管理云资源。主要内容包括:1. 工具准备:安装ROSCDK,选择合适的代码编辑器和IDE,安装AI代码生成插件等。2. 环境准备:创建工程目录,进入虚拟环境,配置阿里云凭证信息,配置ROSCDK。3. 代码编写:根据文档描述,编写ROS代码来创建VPC、VSwitch、ECS等资源。4. 运行代码:执行ROS代码,创建ECS实例并部署FTP服务。总体来说,本文通过简单的步骤,让小白也能快速上手使用ROS资源编排服务,实现自动化部署和管理阿里云资源。