百度空间 | 百度首页 
               
 
查看文章
 
基于OpenMP的HelloWorld并行程序
2007-06-09 20:45

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

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

/* HelloWorld.c */

#include <omp.h>

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是回车。


类别:Parallel | 添加到搜藏 | 浏览() | 评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu