百度网页搜索部高级工程师 我的微博:http://weibo.com/pengwh85
全部博文(45)
分类:
2008-04-04 23:19:15
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是回车。