《OpenACC并行程序设计:性能优化实践指南》一 1.6 控制并行资源

简介: 本节书摘来自华章出版社《OpenACC并行程序设计:性能优化实践指南》一 书中的第1章,第1.6节,作者:[美] 罗布·法伯(Rob Farber),更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.6 控制并行资源

accParaCounter.cpp中的嵌套循环结构可以用来控制循环并行性,因此可以控制并行资源消耗。
大多数并行编程人员遵循在系统中利用最大并行性来实现最高性能的方法。
大量线程背后的思路是给予并行调度器尽可能多的线程以供调度,从而最大化地利用所有计算资源。GPU编程人员喜欢用占有率(occupancy)作为线程并行度的度量。高占有率意味着调度器有更多的激活线程以供调用,因此有机会实现更高性能。
高占有率并不一定转为最快的应用性能。指令级并行(Instruction level parallelism,ILP)通过较少的线程来保持处理器(或GPU)忙碌以隐藏线程等待时间,线程数越少,消耗的资源和开销越少。指令级并行同样可以获得高性能。但是,编程人员必须安排好计算以确保最好地使用并行硬件。使用ILP的原因简单却有效:使用较少的线程意味着每个线程可以使用更多的资源(Volkov, 2010)。
这个结论同样适用于OpenACC,用来控制并行资源的使用。不同于OpenMP,OpenACC不提供类似omp_get_thread_num()机制来确定线程的身份,也不提供类似omp_get_num_thread()机制来找出并发线程总数。因此,无法写出可以控制其并行资源使用的类。相反,至少OpenACC 2.5规范中,OpenACC开发人员必须使用嵌套循环结构来显式控制在其程序中如何使用并行资源。
例如,程序accParaRNG.cpp并行地利用多个顺序随机数生成器。为了成功执行,程序必须保证同时只有一个线程使用随机数生成器。否则的话,内部更新的随机数生成器状态信息可能会损坏。不能用单个原子操作来更新种子区域,在OpenACC中唯一确保正确的操作是使用一个嵌套循环集。
如图1-23和1-24所示,accParaNRG.cpp代码使用任务并行和本章讨论的OpenACC构建,以及带进位乘法(multiply-with-carry, MWC)随机数生成器。George Marsaglia发明了MWC随机数生成器,基于从两个到数千个随机选择的种子值的初始集合来生成随机整数序列(Marsaglia & Zaman,1991)。MWC方法的主要优势是可以用少量C++代码实现,并且只有整数运算。MWC仍然主导快速生成随机数序列。读者可以用其他更精细的随机数生成器来替换accParaNRG.cpp中的算法,例如广泛使用的梅森绞扭器(Matsumoto & Nishinura, 1998)和Dieharder随机数测试套件(Brown, 2016)。

screenshot

screenshot

screenshot

screenshot

组合图1-23和图1-24中的代码,放到accParaRNG.cpp中。编译accParaRNG.cpp成PGI统一的二进制,在CPU和GPU上的测试结果如图1-25所示:

screenshot

相关文章
|
6月前
|
数据采集 存储 弹性计算
高并发Java爬虫的瓶颈分析与动态线程优化方案
高并发Java爬虫的瓶颈分析与动态线程优化方案
|
7月前
|
存储 机器学习/深度学习 缓存
阿里云企业级九代云服务器:c9i、g9i、r9i实例的收费标准、性能与选型攻略
计算型c9i、通用型g9i和内存型r9i实例是阿里云专为需要高性能云服务器的用户推出的第九代新品云服务器实例规格,适用于机器学习推理应用,数据分析等场景。本文为大家介绍阿里云服务器的新品实例——计算型c9i、通用型g9i、内存型r9i实例各自的性能参数与适用场景,再到最新的活动价格与其他实例的对比选型指南,以供参考。
|
9月前
|
机器学习/深度学习 编解码 文字识别
小米又放大招!MiMo-VL 多模态大模型开源,魔搭推理微调全面解读来了!
今天,小米开源发布两款 7B 规模视觉-语言模型 MiMo-VL-7B-SFT 和 MiMo-VL-7B-RL。
1265 9
|
人工智能 前端开发 算法
TopView.ai 技术栈
`Topview.ai` 是一个集成AI的视频编辑平台,利用OpenAI的GPT 4.0V和Gemini算法提供服务。其网站基于前沿的前端框架`Next.js`和`React`构建,后端基础设施依托于`AWS`云服务。[AI Video Editor](https://www.topview.ai)结合先进技术和用户友好的界面,为创意工作流程赋能。
|
5天前
|
人工智能 安全 API
CoPaw:5分钟部署你的 AI助理
源自阿里巴巴开源生态的个人 AI 助理——CoPaw。作为阿里倾力打造的开源力作,CoPaw 完美打通钉钉、飞书、Discord 等多平台对话通道,支持定时任务自动化。内置 PDF/Office 深度处理、新闻摘要等强大技能,更开放自定义扩展接口。坚持数据全程私有化部署,绝不上传云端,让每一位用户都能在大厂技术加持下,拥有安全、专属的智能助手。
|
8天前
|
人工智能 自然语言处理 JavaScript
2026年Windows+Ollama本地部署OpenClaw保姆级教程:本地AI Agent+阿里云上快速搭建
2026年OpenClaw凭借本地部署、私有化运行的特性,成为打造个人智能体的核心工具,而Ollama作为轻量级本地大模型管理工具,能让OpenClaw摆脱对云端大模型的依赖,实现**本地推理、数据不泄露、全流程私有化**的智能体验。本文基于Windows 11系统,从硬件环境准备、Ollama安装与模型定制、OpenClaw部署配置、技能扩展到常见问题排查,打造保姆级本地部署教程,同时补充阿里云OpenClaw(Clawdbot)快速部署步骤,兼顾本地私有化需求与云端7×24小时运行需求,文中所有代码命令均可直接复制执行,确保零基础用户也能快速搭建属于自己的本地智能体。
9335 75
|
6天前
|
人工智能 安全 JavaScript
阿里云上+本地部署OpenClaw(小龙虾)新手攻略:解锁10大必备Skills,零基础也能玩转AI助手
2026年,开源AI代理工具OpenClaw(昵称“小龙虾”)凭借“能实际做事”的核心优势,在GitHub斩获25万+星标,成为现象级AI工具。它最强大的魅力在于可扩展的Skills(技能包)系统——通过ClawHub插件市场的数百个技能,能让AI助手从简单聊天升级为处理办公、学习、日常事务的全能帮手。
4734 12
|
7天前
|
人工智能 自然语言处理 机器人
保姆级教程:Mac本地搭建OpenClaw及阿里云上1分钟部署OpenClaw+飞书集成实战指南
OpenClaw(曾用名Clawdbot、Moltbot)作为2026年最热门的开源个人AI助手平台,以“自然语言驱动自动化”为核心,支持对接飞书、Telegram等主流通讯工具,可替代人工完成文件操作、日历管理、邮件处理等重复性工作。其模块化架构适配多系统环境,既可以在Mac上本地化部署打造私人助手,也能通过阿里云实现7×24小时稳定运行,完美兼顾隐私性与便捷性。
4826 11
|
9天前
|
人工智能 JSON JavaScript
手把手教你用 OpenClaw + 飞书,打造专属 AI 机器人
手把手教你用 OpenClaw(v2026.2.22-2)+ 飞书,10分钟零代码搭建专属AI机器人!内置飞书插件,无需额外安装;支持Claude等主流模型,命令行一键配置。告别复杂开发,像聊同事一样自然对话。
5170 13
手把手教你用 OpenClaw + 飞书,打造专属 AI 机器人