
OpenMP
熊叫大雄
雁归时,佳期如梦。
展开
-
OpenMP笔记(一)
原文:https://www.bearoom.xyz/2019/02/17/openmp1/并行技术有很多种,OpenMP算是比较简单可用的一种,OpenMP全称是 Open Multi-Processing ,是一个支持共享存储并行设计的库.OpenMP 支持的编程语言有C、C++和Fortran,支持OpenMP的编译器包括Sun Compiler,GNU Compiler和Intel C...原创 2019-08-22 18:03:55 · 468 阅读 · 0 评论 -
OpenMP笔记(二)
原文:https://www.bearoom.xyz/2019/02/18/openmp2/ OpenMP是由三部分组成的:指令、库函数和环境变量。 一、指令 在C/C++中使用OpenMP需要用到的指令一般是: #pragma omp 指令 [子句[子句]…]指令有以下常见的11种:atomic 内存位置将会原子更新(Specifies that a memor...原创 2019-08-22 18:17:20 · 2020 阅读 · 0 评论 -
OpenMP笔记(三)
个人博客地址:http://www.bearoom.xyz/2019/02/21/openmp3/这一部分主要记录一些指令的使用。一、parallel的使用parallel是用于构造并行块的,也可以和for、sections等指令一起使用。在C/C++中,parallel的使用方法如下 :```#pragma omp parallel [for | sections] [子句[子句]…]...原创 2019-08-27 22:54:32 · 298 阅读 · 0 评论 -
OpenMP笔记(四)
个人博客地址:http://www.bearoom.xyz/2019/02/22/openmp4/一、privateprivate子句用于将一个或多个变量声明成线程私有的变量,这样每个线程都有该变量的副本,不同线程的操作不会改变其他线程中的同名变量副本,且并行块的所有操作都不会影响外面的同名共享变量。 例子: int k = 11;printf("k=%d, &k=%d\...原创 2019-08-28 21:23:40 · 315 阅读 · 0 评论 -
OpenMP笔记(五)
任务调度主要用于并行的for循环中,当循环中每次迭代的计算量不相等时,如果简单地给各个线程分配相同次数的迭代的话,会造成各个线程计算负载不均衡,这会使得有些线程先执行完,有些后执行完,造成某些CPU核空闲,影响程序性能。在OpenMP中,对for循环并行化的任务调度使用schedule子句来实现。一、Scheduleschedule子句的使用格式为:schedule(type[,si...原创 2019-09-01 18:15:38 · 867 阅读 · 0 评论 -
OpenMP笔记(六)
OpenMP有三种常见的加锁操作:critical是OpenMP的指令,它规定其后的代码为临界块,任何时候只允许一个线程访问;omp_set_lock是OpenMP的库函数,要跟omp_unset_lock一起使用;atomic也是指令,其后的内存位置将会原子更新例子:int main(){ int i, nVar = 0, n = 5000000; omp...原创 2019-09-01 21:27:59 · 327 阅读 · 0 评论