(本文原创,首次使用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. 构建标准OpenStack API接口文档

    1.构建API接口文档标准参考: http://docs.openstack.org/contributor-guide/api-guides.html 2.构建API接口文档步骤参考下面的Patch ...

  2. pycharm + git实现两台电脑代码同步

    说明:此篇文章是作者方便日后查阅所有,请不要按本文的方法搭建 1.下载msysygit,https://git-for-windows.github.io/ 点击download获取下载链接,可能由于 ...

  3. 现学现卖】IntelliJ+EmmyLua 开发调试Unity中Xlua

    http://blog.csdn.net/u010019717/article/details/77510066?ref=myread http://blog.csdn.NET/u010019717 ...

  4. NETCDF入门

    转载自:http://www.cnblogs.com/davidgu/p/3572317.html 一.概述  NetCDF全称为network Common Data Format,中文译法为“网络 ...

  5. mysql用户操作

    一, 创建用户: 命令:CREATE USER 'username'@'host' IDENTIFIED BY 'password'; 说明:username - 你将创建的用户名, host - 指 ...

  6. JavaScript各类型变量和对象

    一.javascript支持的数据类型: var x=1 数字 var x=0.1   小数 var x=true/false bool var x="abc"      字符串 ...

  7. 02.List泛型集合

    List泛型可以转换成数组 List泛型和数组的相同点: List泛型的数据类型必须是指定的,数组的数据类型也必须是指定的. List泛型和数组的不同点: List泛型的长度是随意的,而数组的长度必须 ...

  8. mysql三:表操作

    一.存储引擎介绍 存储引擎即表类型,mysql根据不同的表类型会有不同的处理机制. 详见:点击查看 二.表的介绍 表相当于文件,表中的一条记录就相当于文件的一行内容,不同的是,表中的一条记录有对应的标 ...

  9. scss-@mixin传参

    混合器一个很重要特性就是可以传递参数,可以根据不同场景来定制css代码的复用.极大提高了混合器的适用性,看如下scss代码实例: @mixin makeradius($radius) { border ...

  10. SQLAlchemy的使用---数据库的创建与连接

    # 1. 导入SQLAlchemy from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Col ...