zoukankan      html  css  js  c++  java
  • OpenMP使用体验报告(概述)

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


    OpenMP是啥玩意???

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

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

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

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


    并行计算怎么办到的?

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

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

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

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

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

    #pragma omp parallel for

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

    开心每一天!

  • 相关阅读:
    JQuery实现页面跳转
    CSS中让背景图片居中且不平铺
    C#后台将string="23.00"转换成int类型
    BootStrap的一些基本语法
    CSS实现文字阴影的效果
    BootStrap自定义轮播图播放速度
    BootStrap 轮播插件(carousel)支持左右手势滑动的方法(三种)
    C#常用快捷键
    jQuery hover() 方法
    鼠标移动有尾巴
  • 原文地址:https://www.cnblogs.com/hizhaolei/p/8979430.html
Copyright © 2011-2022 走看看