OpenMP
-牧野-
这个作者很懒,什么都没留下…
展开
-
并行编程OpenMP基础及简单示例
OpenMP基本概念OpenMP是一种用于共享内存并行系统的多线程程序设计方案,支持的编程语言包括C、C++和Fortran。OpenMP提供了对并行算法的高层抽象描述,特别适合在多核CPU机器上的并行程序设计。编译器根据程序中添加的pragma指令,自动将程序并行处理,使用OpenMP降低了并行编程的难度和复杂度。当编译器不支持OpenMP时,程序会退化成普通(串行)程序。程序中已有原创 2016-12-24 22:30:16 · 46481 阅读 · 5 评论 -
OpenMP编程的任务调度控制
在OpenMP的for任务分担中,各个线程的任务划分是可以由程序员控制调整的。考虑这样一种情况,当在一个循环中每次迭代的计算量不相等时,如果根据系统默认简单的给每个线程分配相同次数的迭代量的话,会导致有些线程先执行玩,有些线程后执行完,造成CPU核的空闲,降低程序的运行效率。这种情况下就有必要人为的对各个线程的任务划分进行分配。例如对如下的循环:#pragma omp parall原创 2016-12-26 20:18:23 · 2260 阅读 · 0 评论 -
OpenMP中的同步和互斥
在多线程编程中必须考虑到不同的线程对同一个变量进行读写访问引起的数据竞争问题。如果线程间没有互斥机制,则不同线程对同一变量的访问顺序是不确定的,有可能导致错误的执行结果。OpenMP中有两种不同类型的线程同步机制,一种是互斥机制,一种是事件同步机制。互斥锁机制的设计思路是对一块共享的存储空间进行保护,保证任何时候最多只能有一个线程对这块存储空间进行访问,从而保证数据的完整性,这块存原创 2016-12-26 22:41:21 · 15154 阅读 · 0 评论 -
OpenMP并行编程应用—加速OpenCV图像拼接算法
OpenMP是一种应用于多处理器程序设计的并行编程处理方案,它提供了对于并行编程的高层抽象,只需要在程序中添加简单的指令,就可以编写搞笑的并行程序,而不用关心具体的并行实现细节,降低了并行编程的难度和复杂度。也正因为OpenMP的简单易用性,它并不适合于需要复杂的线程间同步和互斥的场合。OpenCV中使用Sift或者Surf特征进行图像拼接的算法,需要分别对两幅或多幅图像进行特征提取和特征描述原创 2017-01-11 07:17:33 · 9717 阅读 · 6 评论