OpenMP
文章平均质量分 71
xiaoan_ding
这个作者很懒,什么都没留下…
展开
-
OpenMP学习(一)
一、 何为OpenMP使用C,C++,Fortran来写共享内存并行应用程序的标准API包含: 编译指令 运行时程序 环境变量二、为何使用OpenMP如果使用自动并行的编译器1.无法精确并行对数据依赖性的分析无法决定代码并行是否安全。2.粒度过大编译器缺少最大成都并行的信息三、OpenMP 非常适用于多核结构存储和线程的模型匹配自然轻量级原创 2014-03-05 01:12:32 · 658 阅读 · 0 评论 -
OpenMP 学习(二)
一、OpenMP的并行定义一个并行区域 是一段代码,被所有的线程同时执行。master线程的线程ID总是0对线程的设置要在进入并行区域之前IF 语句可以被使用来确保并行区域。当条件语句的值是“false”时,代码串行执行。语句格式#pragma omp directive [clause[clause]...]延续性:在pragma中使用 \OpenMP 子句许原创 2014-03-05 22:10:55 · 855 阅读 · 0 评论 -
OpenMP学习(三)
一、OpenMP组成由三大部分组成:1、指令 Directives2、运行时环境 Runtime Environment3、环境变量 Environment Variable二、指令 Directives指令有以下几种:并行区域 parallel regionworksharing结构 worksharing constructs任务 tasks同步原创 2014-03-06 02:30:21 · 731 阅读 · 0 评论 -
OpenMP学习(四)
一、OpenPM运行时运行时函数omp_set_num_threads设置线程数omp_get_num_threads获取线程数omp_get_max_threads并行区域最大线程数omp_get_thread_num 获取线程IDomp_get_num_procs 获取处理器数量omp_in_parallel 检查是否在并行区域o原创 2014-03-06 04:43:49 · 1135 阅读 · 0 评论 -
OpenMP学习(五)
一、first/last private 子句firstprivate(list)所有列表中的变量在进入并行区域之前被赋值初始化lastprivate(list)线程执行完上一个迭代或section后更新列表中对象的值例子:main(){ A = 10; #pragma omp parallel {原创 2014-03-08 00:07:39 · 625 阅读 · 0 评论 -
OpenMP学习(六)
一、master 指令只有主线程才执行这块代码块#pragma omp master{......}二、critical region对变量有竞争代码区和I/O操作有效 但仍然是随机的顺序注意critical region有一些时间消耗critical 和 原子结构critical:所有线程都执行这段代码,但同一时间只有一个在执行#pragma原创 2014-03-08 00:28:46 · 659 阅读 · 0 评论