并行计算高性能计算HPC — OpenMP
文章平均质量分 72
gengshenghong
这个作者很懒,什么都没留下…
展开
-
OpenMP Tutorial学习笔记(5)OpenMP指令之共享工作构造(Work-Sharing)
OpenMP Tutorial:https://computing.llnl.gov/tutorials/openMP/#WorkSharing共享工作构造:Work-Sharing Constructs(1)Work-Sharing Constructs的特点和类型:共享工作构造的基本特点:1. 共享工作构造将它作用的代码段拆分到进入此区域的线程team的成员执行。2.原创 2011-11-10 22:15:47 · 3458 阅读 · 0 评论 -
OpenMP中数据属性相关子句详解(3): reduction子句
reduction的作用:A private copy for each list variable is created for each thread. At the end of the reduction, the reduction variable is applied to all private copies of the shared variable, and the fina原创 2011-11-22 16:12:19 · 17967 阅读 · 5 评论 -
OpenMP并行构造的schedule子句详解
schedule子句是专门为循环并行构造的时候使用的子句,只能用于循环并行构造(parallel for)中。根据OpenMP Spec(http://openmp.org/mp-documents/OpenMP3.1-CCard.pdf)可以知道:schedule的语法为:schedule(kind[, chunk_size])kind:• static: Iteration原创 2011-11-22 23:22:51 · 34610 阅读 · 0 评论 -
OpenMP中几个容易混淆的函数(线程数量/线程ID/线程最大数)以及并行区域线程数量的确定
说明:这部分内容比较基础,主要是分析几个容易混淆的OpenMP函数,加以理解。(1)并行区域数量的确定:在这里,先回顾一下OpenMP的parallel并行区域线程数量的确定,对于一个并行区域,有一个team的线程去执行,那么该分配多少个线程去执行呢?OpenMP的遇到parallel指令后创建的线程team的数量由如下过程决定:1. if子句的结果2. num原创 2011-11-23 10:56:55 · 55076 阅读 · 6 评论 -
OpenMP中omp_set_dynamic()和OMP_DYNAMIC环境变量详解
理解这部分内容之前,先要理解omp_get_num_threads()和omp_get_max_threads()的含义和区别,参考:http://blog.csdn.net/gengshenghong/article/details/7003110(1)OMP_DYNAMIC环境变量:取值为TRUE和FALSE,定义是否动态设定并行区域执行的线程,默认为false。根据MSDN的说明原创 2011-11-23 14:40:07 · 7106 阅读 · 0 评论 -
OpenMP中omp_set_nested()和OMP_NESTED环境变量详解
(1)类似于omp_set_dynamic(http://blog.csdn.net/gengshenghong/article/details/7003688),omp_set_nested()的参数实际是一个表示布尔的变量,可以覆盖OMP_NESTED的设置。(2)OpenMP的嵌套并行和默认设置omp_set_nested()用于设置是否允许OpenMP进行嵌套并行,默认的设置为fa原创 2011-11-23 15:16:26 · 4671 阅读 · 0 评论 -
OpenMP Tutorial学习笔记(1)OpenMP介绍
OpenMP Tutorial: http://www.llnl.gov/computing/tutorials/openMP1. 摘要:OpenMP provides a portable, scalable model for developers ofshared memory parallel applications.The API supports C/C++ an原创 2011-11-10 14:24:31 · 1908 阅读 · 0 评论 -
OpenMP Tutorial学习笔记(3)OpenMP指令之指令格式和指令范围
OpenMP Tutorial:https://computing.llnl.gov/tutorials/openMP/#DirectivesOpenMp Directives(1)OpenMP指令格式指令基本规则:大小写敏感;每个指令只能指定一个directive-name(指令名称);每一个指令最多应用于一个后继语句,语句必须是一个结构块(structured原创 2011-11-10 16:10:46 · 2210 阅读 · 0 评论 -
OpenMP Tutorial学习笔记(2)OpenMP编程模型
OpenMP Tutorial:https://computing.llnl.gov/tutorials/openMP/#ProgrammingModel理解OpenMP的编程模型是学习好OpenMP的第一步。(1)Shared Memory, Thread Based Parallelism:OpenMP是基于共享内存和线程的并行模型。(2)Explicit Parall原创 2011-11-10 14:55:36 · 2372 阅读 · 0 评论 -
OpenMP Tutorial学习笔记(11)OpenMP指令和子句的总结
OpenMP Tutorial:https://computing.llnl.gov/tutorials/openMP/#ClausesDirectives(1)下面是哪些指令能接受哪些子句的表格:ClauseDirectivePARALLELDO/forSECTIONSSINGLEPARALLEL DO/原创 2011-11-14 21:39:06 · 2964 阅读 · 0 评论 -
OpenMP中数据属性相关子句详解(2):shared/default/copyin/copyprivate子句的使用
(1) sharedshared子句可以用于声明一个或多个变量为共享变量。所谓的共享变量,是值在一个并行区域的team内的所有线程只拥有变量的一个内存地址,所有线程访问同一地址。所以,对于并行区域内的共享变量,需要考虑数据竞争条件,要防止竞争,需要增加对应的保护,这是程序员需要自行考虑的。下面的例子是一个求和的并行实现,使用共享变量,由于没有采取保护,会有数据竞争:#define原创 2011-11-22 14:29:39 · 10204 阅读 · 7 评论 -
OpenMP中数据属性相关子句详解(1):private/firstprivate/lastprivate/threadprivate之间的比较
private/firstprivate/lastprivate/threadprivate,首先要知道的是,它们分为两大类,一类是private/firstprivate/lastprivate子句,另一类是threadprivate,为指令。(PS:有些地方把threadprivate说成是子句,但是实际来讲,它是一个指令。)可以参考http://blog.csdn.net/gengshe原创 2011-11-22 11:11:56 · 26933 阅读 · 19 评论 -
OpenMP Tutorial学习笔记(13)OpenMP环境变量(Environment Variables)
OpenMP Tutorial:https://computing.llnl.gov/tutorials/openMP/#EnvironmentVariables(1)Summary:除了库函数,OpenMP提供了一些环境变量,用于控制并行代码的执行。所以环境变量都是大写的,对其赋值是大小写不敏感的。(2)OpenMP的环境变量:OMP_SCHEDULEOMP_NUM_TH原创 2011-11-16 14:50:25 · 1757 阅读 · 0 评论 -
OpenMP Tutorial学习笔记(6)OpenMP指令之组合共享工作构造(Combined Work-Sharing)
OpenMP Tutorial:https://computing.llnl.gov/tutorials/openMP/#Combined组合共享工作构造:Combined Work-Sharing Constructs这部分本身没有新的内容。为了简化和方便,OpenMP提供了一些简化的编译器指令。在前面的WorkSharing构造中,for和sections都原创 2011-11-14 18:57:49 · 1368 阅读 · 0 评论 -
OpenMP Tutorial学习笔记(7)OpenMP指令之任务构造(Task Constructs)
OpenMP Tutorial:https://computing.llnl.gov/tutorials/openMP/#Combined任务构造:Task Constructs(1)任务构造的作用:任务构造是OpenMP3.0新加的功能,其定义一个显式的任务,其执行依赖于任务调度(task scheduling)。具体其特征,参考OpenMP3.0的spec文原创 2011-11-14 19:08:11 · 4158 阅读 · 0 评论 -
OpenMP Tutorial学习笔记(9)OpenMP指令之THREADPRIVATE指令
OpenMP Tutorial:https://computing.llnl.gov/tutorials/openMP/#THREADPRIVATE(1)指令作用:threadprivate指令用于指定文件范围的全局变量成为线程在多个并行块之间执行的本地变量或持久变量。简单的理解,对于一些全局变量,可以用此指令指定全局变量,使得每一个线程都能有此全局变量的独立的拷贝,并且互原创 2011-11-14 20:30:58 · 4306 阅读 · 0 评论 -
OpenMP Tutorial学习笔记(10)OpenMP指令之数据范围属性的子句
OpenMP Tutorial:https://computing.llnl.gov/tutorials/openMP/#Clauses(1)Summary:在OpenMP的指令中,有一系列的子句,子句中一大部分子句是和数据属性相关的,也是指令很重要的一部分。称之为”Data Scope Attribute Clauses“,或者称之为”Data-sharing Attribute原创 2011-11-14 21:35:42 · 1646 阅读 · 0 评论 -
OpenMP Tutorial学习笔记(4)OpenMP指令之同步构造(Parallel)
OpenMP Tutorial:https://computing.llnl.gov/tutorials/openMP/#ParallelRegionParallel指令。(1)Parallel指令作用(并行构造Parallel Construct)parallel指令,用于构造一个并行块,在并行块中的代码会被多个线程执行,parallel是最基本的OpenMP中构造并行的方法。在原创 2011-11-10 19:41:19 · 6422 阅读 · 0 评论 -
OpenMP Tutorial学习笔记(8)OpenMP指令之同步构造(Synchronization Constructs)
OpenMP Tutorial:https://computing.llnl.gov/tutorials/openMP/#Synchronization同步构造:Synchronization Constructs(1)什么是同步构造?OpenMP用于并行编程,自然,就会有“数据竞争”等相关问题。所以,OpenMP也提供了一些同步构造的指令,用于进行同步(synchroni原创 2011-11-14 20:07:25 · 2184 阅读 · 0 评论 -
OpenMP Tutorial学习笔记(14)OpenMP Tutorial总结
在学习完OpenMP Tutorial后,对OpenMP就有了一个大概的了解了。(1)OpenMP主要包括编译器指令、库函数和环境变量。其中,编译器指令是OpenMP的核心。库函数和环境变量主要功能是进行一些设置性工作。(2)OpenMP是一个开放标准,本身并不提供实现。实现依赖于编译器,不同的编译器实现的OpenMP的性能等可能不一样。(3)OpenMP适用于共享内存(shared原创 2011-11-16 14:54:52 · 1099 阅读 · 0 评论 -
OpenMP Tutorial学习笔记(12)OpenMP运行库函数(Run-Time Library Routines)
OpenMP Tutorial:https://computing.llnl.gov/tutorials/openMP/#RunTimeLibrary(1)Summary:OpenMP标准定义了一系列的API用于实现以下功能:1. 查询线程/处理器数量,设置要使用的线程数。2. 用于实现锁的函数(信号量)3. 可移植的计时函数4. 执行环境的设置(如是否动态线程,是否嵌套并原创 2011-11-16 14:43:49 · 3292 阅读 · 0 评论 -
OpenMP学习资源
Summary:整理OpenMP学习资源和常用参考。(1)OpenMP官网http://openmp.org/wp/OpenMP官网是一个不错的学习OpenMP的地方,其中不仅仅提供了关于OpenMP的一些news和spec,还提供了学习的资源resources。OpenMP spec:http://openmp.org/wp/openmp-specificatio原创 2011-11-16 15:01:42 · 1479 阅读 · 0 评论 -
OpenMP3.0的新特性Task指令基础
从OpenMP3.0开始,OpenMP增加了task指令,这是OpenMP3.0中最激动人心的一个新特性。本文的”术语“大多数是根据个人理解用词,不保证用词准确性。(1)task基础OpenMP Tutorials: 任务构造https://computing.llnl.gov/tutorials/openMP/#Task从功能上说:1. The TASK construc原创 2011-11-23 23:22:23 · 8897 阅读 · 2 评论