《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

相关文章
|
7月前
|
数据采集 存储 弹性计算
高并发Java爬虫的瓶颈分析与动态线程优化方案
高并发Java爬虫的瓶颈分析与动态线程优化方案
|
8月前
|
存储 机器学习/深度学习 缓存
阿里云企业级九代云服务器:c9i、g9i、r9i实例的收费标准、性能与选型攻略
计算型c9i、通用型g9i和内存型r9i实例是阿里云专为需要高性能云服务器的用户推出的第九代新品云服务器实例规格,适用于机器学习推理应用,数据分析等场景。本文为大家介绍阿里云服务器的新品实例——计算型c9i、通用型g9i、内存型r9i实例各自的性能参数与适用场景,再到最新的活动价格与其他实例的对比选型指南,以供参考。
|
10月前
|
机器学习/深度学习 编解码 文字识别
小米又放大招!MiMo-VL 多模态大模型开源,魔搭推理微调全面解读来了!
今天,小米开源发布两款 7B 规模视觉-语言模型 MiMo-VL-7B-SFT 和 MiMo-VL-7B-RL。
1337 9
|
人工智能 前端开发 算法
TopView.ai 技术栈
`Topview.ai` 是一个集成AI的视频编辑平台,利用OpenAI的GPT 4.0V和Gemini算法提供服务。其网站基于前沿的前端框架`Next.js`和`React`构建,后端基础设施依托于`AWS`云服务。[AI Video Editor](https://www.topview.ai)结合先进技术和用户友好的界面,为创意工作流程赋能。
|
5天前
|
人工智能 JSON 监控
Claude Code 源码泄露:一份价值亿元的 AI 工程公开课
我以为顶级 AI 产品的护城河是模型。读完这 51.2 万行泄露的源码,我发现自己错了。
4062 12
|
16天前
|
人工智能 JSON 机器人
让龙虾成为你的“公众号分身” | 阿里云服务器玩Openclaw
本文带你零成本玩转OpenClaw:学生认证白嫖6个月阿里云服务器,手把手配置飞书机器人、接入免费/高性价比AI模型(NVIDIA/通义),并打造微信公众号“全自动分身”——实时抓热榜、AI选题拆解、一键发布草稿,5分钟完成热点→文章全流程!
11636 137
让龙虾成为你的“公众号分身” | 阿里云服务器玩Openclaw
|
4天前
|
人工智能 数据可视化 安全
王炸组合!阿里云 OpenClaw X 飞书 CLI,开启 Agent 基建狂潮!(附带免费使用6个月服务器)
本文详解如何用阿里云Lighthouse一键部署OpenClaw,结合飞书CLI等工具,让AI真正“动手”——自动群发、生成科研日报、整理知识库。核心理念:未来软件应为AI而生,CLI即AI的“手脚”,实现高效、安全、可控的智能自动化。
1420 7
王炸组合!阿里云 OpenClaw X 飞书 CLI,开启 Agent 基建狂潮!(附带免费使用6个月服务器)
|
6天前
|
人工智能 自然语言处理 数据挖掘
零基础30分钟搞定 Claude Code,这一步90%的人直接跳过了
本文直击Claude Code使用痛点,提供零基础30分钟上手指南:强调必须配置“工作上下文”(about-me.md+anti-ai-style.md)、采用Cowork/Code模式、建立标准文件结构、用提问式提示词驱动AI理解→规划→执行。附可复制模板与真实项目启动法,助你将Claude从聊天工具升级为高效执行系统。

热门文章

最新文章