《OpenACC并行程序设计:性能优化实践指南》一 1.2 简单的任务并行示例

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

1.2 简单的任务并行示例

接下来的示例accTask.cpp演示如何在OpenACC设备上并行执行单个任务。
使用任务并行时必须小心,因为OpenACC设备可能有不利于发挥性能的性能约束。一般来说,最好所有的OpenACC线程在相同时刻执行相同的任务,这样并行任务可以很好地映射到GPU SIMD流多处理器和常见的多核处理器的向量单元。高级程序员希望使用OpenACC async()子句和流,这使他们能实现更复杂的任务并行。特别是,感兴趣的读者应该研究并行任务分解和依赖图。推荐阅读《并行计算导论》(Grama, Abshul, Karypis&Kumar, 2003),在网络上也有很多讨论和教程。
accTask.cpp如图1-9所示,假定内联方式声明task()函数,或将task函数与注记结合来告诉编译器这是OpenACC例程。

screenshot

screenshot

在主函数中唯一介绍的新概念是使用C++高精度时间类,用最小的滴答周期来报告时间以及task()函数时间。
图1-10提供了一个忙循环(busy-loop)的例子。

screenshot

这个函数利用OpenACC routine指令。OpenACC 2.0引入了#pragma acc routine,用来指导编译器编译设备区域内调用的设备端函数或子程序。worker子句告诉编译器例程内的任何代码和task内调用的其他例程将会在一个工作项内执行。使用C++ inline关键字包含短的代码。

相关文章
|
网络协议 Linux 网络架构
【Cisco Packet Tracer】IP数据包的分组转发与路由实验
【Cisco Packet Tracer】IP数据包的分组转发与路由实验
287 1
|
Java 中间件 流计算
Flink 如何分流数据
Flink 如何分流数据,3种分流方式
4273 0
|
监控 安全
通过 Io 语言,怎么监控员工电脑有发现
在现代企业管理中,确保员工合理使用公司资源及保障信息安全至关重要。Io语言凭借其简洁而强大的特性,能高效地开发出监控解决方案。通过监测网络活动、软件使用情况及文件访问等,企业可有效管理电脑使用情况,及时发现安全风险与不当行为,同时需确保遵守相关法规以保护员工隐私。总之,Io语言为企业提供了强有力的技术支持。
122 11
|
存储 JavaScript
解锁Vuex高级玩法:模块化与插件共舞,让你的Vue项目状态管理如虎添翼!
【8月更文挑战第27天】Vuex是一款专为Vue.js应用程序设计的状态管理模式及库,它通过集中管理组件状态来确保状态变更的可预测性。在大型应用中,采用模块化管理可以让代码结构更加清晰,同时利用插件增强功能。模块化管理允许将store拆分为包含各自state、mutations、actions和getters的独立模块。插件则能监听状态变化,实现诸如日志记录或数据持久化等功能。本文通过具体示例介绍了如何在Vuex中实现模块化管理和插件的高级应用。
189 1
计算机组成原理(6)-----指令执行过程
计算机组成原理(6)-----指令执行过程
907 0
|
存储
73年前,香农已经给大模型发展埋下一颗种子
【7月更文挑战第13天】克劳德·香农1951年的论文《印刷英语的预测和熵》预示了大模型的未来。他探索了语言统计特性在预测下一个字母出现中的作用,开创性地计算了语言熵,为信息传输效率提供了评估手段。香农的工作虽限于英语和单个字母预测,但其思想为现代大模型的训练、评估和应用奠定了基础。[🔗](https://www.princeton.edu/~wbialek/rome/refs/shannon_51.pdf)**
167 9
|
机器学习/深度学习 运维 算法
[ICDE2024]多正常模式感知的频域异常检测算法MACE
阿里云计算平台大数据基础工程技术团队主导,与浙江大学合作的论文《Learning Multi-Pattern Normalities in the Frequency Domain for Efficient Time Series Anomaly Detection》被ICDE2024收录,该论文解决了云服务环境中不同服务存在不同正常模式,而传统神经网络一个训练好的模型只能较好捕捉一种或少数几种正常模式的问题,该论文提出的方法可以使用一个统一模型对不同服务进行检测,就达到比为每一个服务定制一个模型的SOTA方法更好的效果。
|
缓存 Linux 程序员
深入理解Linux内核内存管理机制与实现(上)
深入理解Linux内核内存管理机制与实现
|
消息中间件 自然语言处理 Kubernetes
知乎团队在 Istio 使用 Opentelemetry 做可观测的最佳实践
云原生架构下,可观测领域的 OpenTelemetry 无疑是新时代的可观测标准。它提供的一些组件与工具极大地帮助了企业构建供应商无关的观测架构。
1225 1
知乎团队在 Istio 使用 Opentelemetry 做可观测的最佳实践
|
存储 缓存 前端开发
IndexDB实现一个本地数据库的增删查改
在客户端,我们所接触到的绝大部分本地缓存方案主要有localStorage以及sessionStorage,其实Storage除了这两大高频api,另外还有IndexDB、cookies、WebSQL,Trust Token(信任令牌),cookies相对来说在前端接触比另外几个多点
622 0
IndexDB实现一个本地数据库的增删查改