`
lovnet
  • 浏览: 6823487 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

OpenMP并行程序设计(一)

阅读更多
OpenMP并行程序设计(一)
OpenMP是一个支持共享存储并行设计的库,特别适宜多核CPU上的并行程序设计。今天在双核CPU机器上试了一下OpenMP并行程序设计,发现效率方面超出想象,因此写出来分享给大家。
在VC8.0中项目的属性对话框中,左边框里的“配置属性”下的“C/C++”下的“语言”页里,将OpenMP支持改为“是/(OpenMP)”就可以支持OpenMP了。
先看一个简单的使用了OpenMP程序
int main(int argc, char* argv[])
{
#pragma omp parallel for
for (int i = 0; i < 10; i++ )
{
printf("i = %d\n", i);
}
return 0;
}
这个程序执行后打印出以下结果:
i = 0
i = 5
i = 1
i = 6
i = 2
i = 7
i = 3
i = 8
i = 4
i = 9
可见for 循环语句中的内容被并行执行了。(每次运行的打印结果可能会有区别)
这里要说明一下,#pragma omp parallel for 这条语句是用来指定后面的for循环语句变成并行执行的,当然for循环里的内容必须满足可以并行执行,即每次循环互不相干,后一次循环不依赖于前面的循环。
有关#pragma omp parallel for 这条语句的具体含义及相关OpenMP指令和函数的介绍暂时先放一放,只要知道这条语句会将后面的for循环里的内容变成并行执行就行了。
将for循环里的语句变成并行执行后效率会不会提高呢,我想这是我们最关心的内容了。下面就写一个简单的测试程序来测试一下:
void test()
{
int a = 0;
clock_t t1 = clock();
for (int i = 0; i < 100000000; i++)
{
a = i+1;
}
clock_t t2 = clock();
printf("Time = %d\n", t2-t1);
}
int main(int argc, char* argv[])
{
clock_t t1 = clock();
#pragma omp parallel for
for ( int j = 0; j < 2; j++ ){
test();
}
clock_t t2 = clock();
printf("Total time = %d\n", t2-t1);
test();
return 0;
}
在test()函数中,执行了1亿次循环,主要是用来执行一个长时间的操作。
在main()函数里,先在一个循环里调用test()函数,只循环2次,我们还是看一下在双核CPU上的运行结果吧:
Time = 297
Time = 297
Total time = 297
Time = 297
可以看到在for循环里的两次test()函数调用都花费了297ms, 但是打印出的总时间却只花费了297ms,后面那个单独执行的test()函数花费的时间也是297ms,可见使用并行计算后效率提高了整整一倍。
下一篇文章中将介绍OpenMP的具体指令和用法。
分享到:
评论

相关推荐

    MPI与OpenMP并行程序设计(C语言版)美国教授写的

    《MPI与OpenMP并行程序设计(C语言版)》是美国Oregon州立大学的Michael J.Quinn教授在多年讲授“并行程序设计”课程的基础上编写而成的,主要介绍用C语言,并结合使用MPI和OpenMP进行并行程序设计,内容包括并行体系...

    MPI与OpenMP并行程序设计:C语言版,mpi和openmp混合编程,C,C++

    在“MPI与OpenMP并行程序设计:C语言版”这本书中,读者可以深入学习如何结合这两种技术,创建高效的并行程序。内容可能包括如何设置并行环境、使用MPI进行进程间通信、OpenMP的并行化策略、混合编程的实践示例以及...

    MPI与OpenMP并行程序设计pdf

    MPI与OpenMP并行程序设计中文电子书,讲得很不错

    mpi与openmp并行程序设计ppt

    这些PPT为学习和理解MPI和OpenMP提供了一个良好的起点,涵盖了并行程序设计的基础知识,同时也展示了如何将这些知识应用于实际问题中。通过深入研究这些材料,开发者能够掌握并行计算的基本原理,从而在高性能计算...

    MPI与OpenMP并行程序设计

    《MPI与OpenMP并行程序设计》是一本深入探讨并行计算领域中两种主流技术——Message Passing Interface(MPI)和OpenMP的书籍。并行计算是解决大规模计算问题的关键技术,尤其是在高性能计算、数据分析和机器学习等...

    OpenMP并行程序设计

    OpenMP(Open Multi-Processing)是一种用于编写多线程并行程序的API,主要应用于共享内存的多处理器系统。它的核心特点在于通过编译器指令、运行时库和环境变量来实现并行化,允许程序员在不牺牲可移植性的前提下,...

    MPI与OpenMP并行程序设计:C语言版.pdf

    MPI与OpenMP并行程序设计:C语言版.pdf 希望对大家有帮助

    MPI与OpenMP并行程序设计:C语言版

    ### MPI与OpenMP并行程序设计:C语言版 #### MPI与OpenMP简介 在现代高性能计算领域,利用多核处理器或分布式系统进行并行计算是提高计算效率的关键技术之一。其中,MPI(Message Passing Interface)和OpenMP是两...

    MPI与OpenMP并行计算的实验报告及源程序

    "MPI实验报告.doc"很可能是对使用MPI进行并行计算的实验过程、结果和分析的详细记录,可能涵盖了如何设置MPI环境、编写并行程序、运行并行程序以及性能评估等内容。实验可能涉及矩阵乘法、求解线性方程组等典型问题...

    openmp并行程序设计教程

    ### OpenMP并行程序设计教程知识点详解 #### 一、OpenMP简介 ##### 1.1 什么是OpenMP? OpenMP是一种应用编程接口(API),主要用于显式地指导多线程共享内存并行计算。它由三个主要部分组成: - **编译器指令**...

    OpenMP 并行算法设计

    1. **并行区域(Parallel Regions)**:OpenMP并行编程的基础是`#pragma omp parallel`指令,它定义了一个并行区域,编译器会将这个区域内的代码转换为多线程执行。并行区域可以包含一个或多个任务,并且可以根据...

    基于OpenMP的并行程序设计

    随着计算机技术的发展,多核处理器已经成为了主流,对于开发者来说,掌握OpenMP并行程序设计是提高程序性能和开发效率的有效手段。许多学术论文和研究成果都表明了OpenMP在多核并行程序设计中的有效性。例如,上述...

    MPI与OpenMP并行程序设

    《MPI与OpenMP并行程序设计:C语言版》是一本深入浅出的并行计算入门书籍,专注于介绍两种主流的并行编程模型——Message Passing Interface(MPI)和Open Multi-Processing(OpenMP)。这两者在现代高性能计算领域...

    OpenMP并行计算程序设计基础

    ### OpenMP并行计算程序设计基础 #### 一、一个简单的OpenMP例子 在这个部分,作者通过一个具体的示例展示了如何使用OpenMP实现一个简单的并行程序。该例子使用了C++语言,并通过Visual Studio 2010进行了实现。 ...

    MPI与OpenMP并行程序设计:C语言版,mpi和openmp混合编程,C,C++源码.zip

    《MPI与OpenMP并行程序设计:C语言版,mpi和openmp混合编程,C,C++源码》这个资源是关于并行计算领域的,主要聚焦在MPI(Message Passing Interface)和OpenMP两种并行编程模型的结合使用,尤其针对C语言进行讲解。...

    并行程序设计导论课后答案_2.7z

    并行程序设计是计算机科学中的一个重要领域,它涉及到如何利用多处理器或多核心系统来同时执行多个任务或同一任务的不同部分,以提高计算效率和性能。本主题主要关注并行编程的基础概念、方法和技术,以及与C语言...

    并行程序设计导论课后答案(英文版含代码)

    并行程序设计是计算机科学中的一个重要领域,它涉及到如何利用多核处理器或分布式系统来同时执行多个任务,以提高计算效率。"并行程序设计导论"这门课程旨在教授学生如何有效地设计、实现和优化并行程序。课后答案...

Global site tag (gtag.js) - Google Analytics