您的位置:首页 > 其它

MIC中示例程序计算π

2015-01-07 20:41 197 查看
mic中编程十分简单,只需在普通程序中简单加几句就可以,使用 lspci|grep -i -co-processor 命令可以查看机器中是否插入MIC卡以及MIC卡的数目,MIC编程环境的配置这里就不讲了,下面是一个示例程序,

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(){
float pi=0.0f;
int count=10000;
int i;
#pragma offload target(mic)
for(i=0;i<count;i++){
float t=(float)((i+0.5f)/count)    ;
pi+=4.0f/(1.0f+t*t);

}
pi/=count;
if(fabs(pi-3.14)<=0.01f)
#ifdef DEBUG
printf("PASS Sample01 PI=%f\n",pi);
else
printf("***FAIL Sample01 Pi=%f\n",pi);
#else
printf("PASS Sample01\n");
else
printf("***FAIL Sample01\n");
#endif
}


进行编译 icc -o PI PI.c -DDEBUG

执行 ./PI

代码成功就会显示

PASS Sample01 PI=3.141593
对上面代码进行简单更改就可以与openMP一起使用,代码如下:

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(){
float pi=0.0f;
int count=10000;
int i;
#pragma offload target(mic)
#pragma omp parallel for reduction(+:pi)
for(i=0;i<count;i++){
float t=(float)((i+0.5f)/count)    ;
pi+=4.0f/(1.0f+t*t);

}
pi/=count;
if(fabs(pi-3.14)<=0.01f)
#ifdef DEBUG
printf("PASS Sample01 PI=%f\n",pi);
else
printf("***FAIL Sample01 Pi=%f\n",pi);
#else
printf("PASS Sample01\n");
else
printf("***FAIL Sample01\n");
#endif
}


进行编译 icc -fopenmp -o PI PI.c -DDEBUG

执行 ./PI

代码成功就会显示

PASS Sample01 PI=3.141593
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: