Chinaunix首页 | 论坛 | 博客
  • 博客访问: 415972
  • 博文数量: 45
  • 博客积分: 4075
  • 博客等级: 上校
  • 技术积分: 666
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-24 18:09
个人简介

百度网页搜索部高级工程师 我的微博:http://weibo.com/pengwh85

文章分类

全部博文(45)

文章存档

2012年(3)

2011年(1)

2010年(19)

2009年(10)

2008年(12)

我的朋友

分类:

2008-04-04 23:19:15

OpenMP标准是共享存储体系结构上的一个编程模型。首先,OpenMP是基于线程的并行编程模型(Parallel Programming Model),一个共享存储的进程由多个线程组成,OpenMP就是基于已有线程的共享编程模型;其次,OpenMP是一个外部的编程模型,而不是自动编程模型,它能够使程序员完全并行化。

      OpenMP使用Fork-Join并行执行模型。下面是一个HelloWorld的并行程序:

/* HelloWorld.c */

#include

int main(int argc, char *argv[])
{   
      int nthreads,tid;
      int nprocs;
      char buf[32];
    

      /* 并行域 */

      #pragma omp parallel private(nthreads,tid)
      {
           /* 获取线程ID */
           tid = omp_get_thread_num();
           printf("Hello, world!OpenMP thread is %d\n",tid);
           /* tid为0代表是主线程 */
           if (tid == 0)
           {
               nthreads = omp_get_num_threads();
               printf("共有线程数:%d\n",nthreads);
           }
      }
      return 0;
}

      然后用SSH远程登陆HPC(高性能计算机),将HelloWorld.c复制到某一目录下,用命令:

              icc -openmp -o HelloWorld HelloWorld.c

      进行编译,然后运行:

            ./HelloWorld

      显示如下:

[pengwh@hpc OpenMP]$ ./Helloworld


Hello, world!OpenMP thread is 0
共有线程数:2
Hello, world!OpenMP thread is 1

      OpenMP语句格式是:

              #pragma omp directive-name [clause, ...] newline

      其中,“#pragma omp”是制导指令前缀,directive-name是OpenMP制导指令(上例是parallel),clause是子句,newline是回车。

阅读(1913) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~