openmp使用体验报告(概述)(代码片段)

WellMax WellMax     2022-11-09     158

关键词:

(本文原创,首次使用OpenMP,将使用体会记录下来供学习)


 

OpenMP是啥玩意???

多核多线程处理器的出现,让并行计算成为可能。在此之前,单核处理器并不能并行计算,这是很显然的,只有一个核心只能做到并发处理(与并行处理区别),这是一种虚拟化的技术,让用户感觉计算机在同时处理多任务,而事实上是通过分时算法来分割、分配任务,从而给用户多任务同时处理的错觉

现在的个人机可以进行真正的并行处理,但是几乎低段位的程序员会主动创建、销毁线程来实现并行计算,因为这要进行算法设计,但是程序员比较懒。为此,OpenMP的一帮高阶程序员开发了一套工具,试图让多线程并行计算变得轻松简单。就像IDE是为了让程序员更轻松的开发程序,省去分开编辑、编译、链接、调试的麻烦,集成化的环境让Coding变得轻松一点。

 因此,OpenMP是一套工具,用以轻松地实现并行计算

启示录:计算机行业的名言——”不要重复造轮子“,代码复用、泛型程序设计、各种API、SDK、框架... 因此学习计算机技术很重要的一点就是搞清楚什么是轮子、什么是车子,轮子不用重造,但是车子的原理要清楚,这中间的平衡很难办到。


 

并行计算怎么办到的?

如果要深入分析怎么实现并行化的,这其实是OpenMP的工程师干的事情,他们就是想把这些底层的实现封装起来。除非你确有必要知道底层实现,否则就和我一样,只需要知道OpenMP怎么用,这也是本文讨论的内容。

讲两个概念:运行时库函数和编译指导语句

运行时库是动态链接库,在程序运行过程中进行动态链接,确保并行算法顺利运行。这和静态库差不多,不用特别关注。

而编译指导语句是程序从源代码到可执行文件过程中,用来指导编译的语句。顾名思义即可。在我看来这是学习OpenMP最重要的部分,理解并合理使用编译指导语句,才能有效、高效的实现串行程序到并行程序的转换。

例如下面这句编译指导语句,就是用来指导符合条件的for循环从串行运行转换为并行运行。

#pragma omp parallel for

没有很复杂的技术,只是这次学习OpenMP有所感悟,觉得计算机从技术角度来看,有很多整体性的思考。比如学习一种技术的学习路径如何制定,这是很有必要花时间思考的。就如软件工程中主要的时间花在了需求分析和设计上,真正用来编程实现的部分倒是次要的。

开心每一天!

阿里云移动研发平台体验报告(代码片段)

...本篇文章涉及Android/iOS两大移动端,将从产品优势和使用方式两大角度解读阿里云移动研发平台(EMAS)。一、产品优势阿里云平台所提供的移动研发平台,英文简称为EMAS,意为EnterpriseMobileApplicationStudio。从名... 查看详情

阿里云移动研发平台体验报告(代码片段)

...本篇文章涉及Android/iOS两大移动端,将从产品优势和使用方式两大角度解读阿里云移动研发平台(EMAS)。一、产品优势阿里云平台所提供的移动研发平台,英文简称为EMAS,意为EnterpriseMobileApplicationStudio。从名... 查看详情

通过gcc学习openmp框架(代码片段)

 OpenMP框架是使用C、C++和Fortran进行并发编程的一种强大方法。GNUCompilerCollection(GCC)V4.4.7支持OpenMP3.0标准,而GCC4.9.3支持OpenMP4标准。包括VS在内的其他编译器也支持OpenMP。你可以学习使用OpenMP编译指示(pragma),寻找对OpenMP提供的... 查看详情

子牙钓鱼用户体验分析报告

子牙钓鱼体验报告目录一、产品概述体验环境产品定位用户需求市场现状二、产品分析产品结构图核心功能流程图三、竞品分析基本信息对比主要功能对比四、个人建议功能上活动上总结 一、产品概述1.体验环境:  系统... 查看详情

极智coding|openmp多线程使用(代码片段)

...记分享 大家好,我是极智视界,本文讲解一下OpenMP多线程使用方法。 OpenMP是一种用于共享内存并行系统的多线程程序设计方案,其提供了对并行算法的高层抽象描述,特别适合在多核CPU机器上的并行程序设计... 查看详情

用户使用调查报告(代码片段)

...求在哪里第八次团队作业:Beta冲刺这个作业的目标用户使用调查作业正文如下1.用户调查项目概述项目名称和目标项目名称:氵水滴打卡项目目标:为学生的学习提供打卡的功能并记录数据,为用户提供分享功能。2.调查分析用... 查看详情

将静态库链接到共享库(例如openmp)是一个好主意(代码片段)

...于将部署在服务器上的Docker中的项目中。这个共享库使用openmp。因此,我想知道它是否更好(或更便携)openmp静态链接到我的共享库我应该在Docker中正确安装gcc以便找到openmp将openmp的.so与我的库一起分发如果选项1是最好的,有... 查看详情

linux初次体验(代码片段)

...辛基大学上学时出于个人爱好而编写的。Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX(可移植操作系统接口)和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。Linux能运行主要的UNIX工具软件、应用程... 查看详情

课程学习总结报告(代码片段)

目录一、linux系统概念模型1.概述2.函数调用函数调用过程概述函数调用中的硬件操作函数调用中的软件操作3.中断和异常中断和异常的区别与联系:中断上下文中断和异常的硬件级处理中断和异常的软件级处理4.系统调用5.进程管... 查看详情

gcov入门(代码片段)

索引一、概述二、gcov的安装三、gcov的使用1、编译源代码2、运行可执行程序3、通过gcov指令生成代码覆盖率报告四、生成更全面、直观的代码覆盖率报告1、LCOV2、GCOVR 五、参考一、概述代码覆盖率(Codecoverage)是衡量软件测... 查看详情

splunk入门体验(代码片段)

放一段介绍,Splunk是一款功能强大,功能强大且完全集成的软件,用于实时企业日志管理,可收集,存储,搜索,诊断和报告任何日志和机器生成的数据,包括结构化,非结构化和复杂的多行应用程序日志。​它允许您以可重复... 查看详情

用户体验报告

...队进行学习、购物的平台。1.3项目预期达到目标用户通过使用该软件在移动终端可以实现在线组队、进行组队聊天、推荐拼帖、信用评分等功能。1.4项目测试方法真实的用户对象进行相应的使用,并反馈信息。二、项目测试过程... 查看详情

yeelink初步体验(代码片段)

阅读目录(Content)环境概述正文回到顶部(gototop)环境Qemu:2.8.0开发板:vexpress-ca9回到顶部(gototop)概述   前面的博文已经使我们的虚拟开发板具备了访问外网的目的,离物联网越来越近了。要玩物联网,Yeelink不得不说... 查看详情

c_cpp启用build_with_openmp时如何解决高cpu使用率问题(代码片段)

查看详情

[javaweb]web概念概述(代码片段)

web概念概述*JavaWeb: *使用Java语言开发基于互联网的项目*软件架构: 1.C/S:Client/Server客户端/服务器端 *在用户本地有一个客户端程序,在远程有一个服务器端程序 *如:QQ,迅雷... *优点: 1.用户体验好 ... 查看详情

课程学习总结报告(代码片段)

...内存时,Linux操作系统为其分配了用户栈和内核栈,同时使用task_struct这种数据结构对进程进行描述,task_struct是Linux操作系统感知进程存在的数据结构,具体描述了进程号,进程状态,进程的调度策略和调度信息,进程打开文件... 查看详情

2.3hadoop安装与体验(代码片段)

...配置去ApacheHadoop官网下载最新版,选择二进制下载本教程使用Ubuntu18.0464位作为系统环境,请自行安装系统(可参考1.1Linux系统概述、安装与体验)。创建hadoop用户如果你安装Ubuntu的时候不是用的“hadoop”用户,那么需要增加一个... 查看详情

如何正确升级openmp版本?(代码片段)

我试图通过AmazonEC2在一些虚拟机上部署一个OpenMPI项目。每个虚拟机都在运行Ubuntu16.04,目前我有。gcc(Ubuntu5.4.0-6ubuntu1~16.04.4)5.4.020160609和相对的mpich.我在Ubuntu18.04上正确地测试了我的项目,使用了gcc(Ubuntu7.5.0-3ubuntu1~18.04)7.5.0.基本... 查看详情