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


OpenMP是啥玩意???

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

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

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

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


并行计算怎么办到的?

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

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

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

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

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

#pragma omp parallel for

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

开心每一天!

OpenMP使用体验报告(概述)的更多相关文章

  1. sitecore系列教程之Sitecore个性化-体验概况概述

    SITECORE 8:体验概况概述 什么是体验简介? 体验配置文件是Sitecore中的仪表板应用程序,它说明了客户体验和交互的关键区域,例如访问者详细信息,访问,活动,目标,配置文件,自动化等等. ...

  2. ArcGIS earth 1.0 beta体验报告——给我一个按钮我将转动整个地球

    随着Esri研发中心的ArcGIS earth 1.0 beta版本的全新发布,声势浩大,很多人为之好奇静待观摩其阵容.抽出五分钟体验,良心用户,必得出炉一份体验报告了. -------------- ...

  3. ETH Dapp 体验报告

    Dapp 体验报告 Dapp是分散式的应用程序.DApp运行在去中心化的网络上,也就是区块链网络中.网络中不存在中心化的节点可以完整的控制DApp. 必须依赖合约部署,没有一个中心化的服务器托管. 对 ...

  4. EOS Dapp体验报告

    EOS Dapp体验报告 EOS通过并行链和DPOS的方式解决了延迟和数据吞吐量的难题. EOS能够实现每秒百万级的处理量,而目前比特币是每秒7笔,以太坊是30-40笔,EOS的这一超强能力吊打比特币 ...

  5. Kindle阅读产品体验报告-随时随地畅享阅读

    产品入门-第一份产品体验报告Kindle阅读-随时随地畅享阅读时间:2018/11/18-11/22   Kindle阅读 一.产品概括 (1)体验环境 机型:荣耀8 系统:EMUI 8.0(Andr ...

  6. 3个微信小程序体验报告

    1.小程序摩拜单车.腾讯视频.JD的体报告 2.小程序的入口存在不公平 3.小程序2.0会怎么样?WSO浅谈 KEVIN常用的APP是以摩拜单车与JD商城和大众点评等,那么今天也就通过这上个进行对比 ...

  7. Windows Phone 8.1不完全体验报告

    在Build 2014中,微软倾心打造的Windows Phone 8.1终于粉墨登场,会场掌声不断.在大会结束后一周,经过漫长的等待,终于等到了开发者预览的推送,迫不及待地体验这一跨时代的移动系统. ...

  8. 用户体验报告(Echo)

    班级:软件工程1916|W 作业:项目Beta冲刺(团队) 团队名称:Echo 团队博客汇总 队员学号 队员姓名 个人博客地址 备注 221600136 张至锋 https://www.cnblogs ...

  9. 体验报告:微信小程序在安卓机和苹果机上的区别

    很多人可能会问:微信小程序和在微信里面浏览一个网页有什么区别? 首先,小程序的运行是全屏的,界面跟进入了一个APP很像,更为沉浸跟在微信里面访问h5不一样:其次,它的浏览体验更为稳定. 不过,这还不够 ...

随机推荐

  1. MYSQL系列-Mysql存储引擎选择

    MYSQL系列-Mysql存储引擎选择 //查看当前数据库支持的存储引擎 show engines \G; 创建表的时候可以通过engine=MyISAM指定存储引擎 MyISAM: .MYISAM不 ...

  2. Table 边框合并(collapse)

    border-collapse:collapse 用于表格属性, 表示表格的两边框合并为一条; <style type="text/css"> table { bord ...

  3. Linux的find命令实例详解和mtime ctime atime

    这次解释一下三个Linux文件显示的三个时间,然后展示一下find命令的各个功能 在linux操作系统中,每个文件都有很多的时间参数,其中有三个比较主要,分别是ctime,atime,mtime mo ...

  4. PAT 1043 Is It a Binary Search Tree

    #include <cstdio> #include <climits> #include <cstdlib> #include <vector> co ...

  5. scss-null在@mixin传参中的应用

    可以给混合器声明参数,以便灵活的配置相关属性值,看如下scss代码: @mixin antzone-div($color, $font-size) { color:$color; font-size: ...

  6. 【Android】2.0 Android开发环境的搭建——Eclipse

    1.0 eclipse,这可不算谷歌开发的,是IBM公司开发的,而且是Java语言写的 2.0 eclipse怎么下.百度“eclipse”,进入eclipse官网 然后,瞎几把下吧……,实在不行百度 ...

  7. jquery获取transform里面的值

    用transform的translateX写了一个侧滑效果,如何获取它改变的值是多少呢? 获取translateX值的方法: $('div').css("transform").r ...

  8. toMapFromStage layerDefinitions ClassBreakRenderer

    class Map 方法 toMapFromStage 用于把屏幕坐标转换为地理坐标 public function toMapFromStage(stageX:Number, stageY:Numb ...

  9. bit byte 字 字节 关系 简列

    字 word 字节 byte 位 bit 字长是指字的长度 1字=2字节(1 word = 2 byte = 16bit) 1字节=8比特(1 byte = 8bit) 1比特=1位 一个字的字长为1 ...

  10. gamemakerstudio:加载精灵

    如果精灵图片不是单一图片(拥有子图)可以称它为长条图,当gamemakerstudio加载这类精灵图片时,我们给图片名字命名为*_strip列数.*,这样当加载图片时gamemakerstudio会自 ...