openMP疑问

zxm0377 2007-10-11 07:19:38
openMP是什么?和C有关系吗?
...全文
941 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
intel_iclifort 2008-04-07
  • 打赏
  • 举报
回复
另外, OpenMP 也是完全支持 Fortran语言的, 无论在 Linux, Windows 还是 Mac OS. 看看这里:
http://topic.csdn.net/u/20080407/10/6ce8642a-28d0-4dc0-999c-2dbdce09447f.html
intel_iclifort 2008-04-07
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 zcym925 的回复:]

openmp与posix线程哪种好用些?
[/Quote]

肯定是OpenMP容易使用, 特别是渐进式的并行化, 对于很多老代码还是相当有用的. 和操作系统平台也无关, 移植性好

当然它的实现也有很大的局限性, 不如Pthread或者WinThread灵活, 要具体分析才行.

zcym925 2008-04-06
  • 打赏
  • 举报
回复

openmp与posix线程哪种好用些?
intel_iclifort 2008-04-04
  • 打赏
  • 举报
回复
另外, OpenMP的规范也是完全支持 Fortran 语言的

或者可以这样说, 使用 OpenMP 对 原有的 Fortran 程序进行多线程化, 会比较容易实现, 因此在多处理器的环境中也应用得更广泛些(传统的大型机领域, 现在是多核)


intel_iclifort 2008-04-04
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 cornmoon_blue 的回复:]
private(x) reduction(+:sum)
怎么理解?
[/Quote]

并行区内所有的变量缺省都是共享的, 必须声明x为每个线程私有, 否则会有读写冲突; reduction(+:sum)表明对变量sum作求和, 相当于对所有的值进行累加
cornmoon_blue 2008-04-04
  • 打赏
  • 举报
回复
private(x) reduction(+:sum)
怎么理解?
intel_jeff 2008-03-24
  • 打赏
  • 举报
回复
OpenMP使用起来是非常方便的,我们可以很容易的吧一个算pi的程序并行化,只需要增加一行OpenMP语句(红色):

#include <stdio.h>
#include <time.h>

long long num_steps = 1000000000;
double step;

int main(int argc, char* argv[])
{
clock_t start, stop;
double x, pi, sum=0.0;
int i;
step = 1./(double)num_steps;
start = clock();
#pragma omp parallel for private(x) reduction(+:sum)
for (i=0; i<num_steps; i++)
{
x = (i + .5)*step;
sum = sum + 4.0/(1.+ x*x);
}

pi = sum*step;
stop = clock();

printf("The value of PI is %15.12f\n",pi);
printf("The time to calculate PI was %f seconds\n",((double)(stop - start)/1000.0));
return 0;
}
dsdsdds 2008-03-23
  • 打赏
  • 举报
回复
我倒是觉得使用Threading Building Block编程,比用OpenMP编程更方便啊
kphmd 2008-03-21
  • 打赏
  • 举报
回复
OpenMP原来如此好用!新手如是说。
mengmengswat 2007-10-19
  • 打赏
  • 举报
回复
OpenMP是作为共享存储标准而问世的。它是为在多处理机上编写并行程序而设计的一个应用编程接口。它包括一套编译指导语句和一个用来支持它的函数库。
工业标准OpenMP是对C语言的一个扩展,它的目的是支持并行程序设计。
书写OpenMP程序同书写C语言程序相似,只是在C程序中加入了OpenMP的编译指示。这些编译指示描述了程序应该以何种方式并行执行。加入了OpenMP指示的C程序可以由任意支持OpenMP的编译器编译,在不同平台的硬件上执行。也就是说,OpenMP程序同C语言程序一样可移植。因此,用OpenMP重写的程序库也是可移植的。
danscort2000 2007-10-17
  • 打赏
  • 举报
回复
OPENMP是个编译指示代码[指令]
指导编译器某些代码可以编译为多线程模式
一般使用不方便,远不如线程库来的灵活可掌握,但是在科学计算中,很方便
Simore 2007-10-16
  • 打赏
  • 举报
回复
OpenMP是一个支持共享存储并行设计的库,特别适宜多核CPU上的并行程序设计。C/C++相关。

看看这个:http://blog.csdn.net/drzhouweiming/archive/2006/08/28/1131537.aspx
jjjjtiger 2007-10-15
  • 打赏
  • 举报
回复
是共享储存上的并行库,在C中加入一些编译制导就可以

566

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧