zoukankan      html  css  js  c++  java
  • MIC中示例程序计算π

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

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 #include<math.h>
     4 int main(){
     5     float pi=0.0f;
     6     int count=10000;
     7     int i;
     8     #pragma offload target(mic)
     9         for(i=0;i<count;i++){
    10             float t=(float)((i+0.5f)/count)    ;
    11             pi+=4.0f/(1.0f+t*t);
    12             
    13         }
    14     pi/=count;
    15     if(fabs(pi-3.14)<=0.01f)
    16     #ifdef DEBUG
    17         printf("PASS Sample01 PI=%f
    ",pi);
    18     else
    19         printf("***FAIL Sample01 Pi=%f
    ",pi);
    20     #else
    21         printf("PASS Sample01
    ");
    22     else
    23         printf("***FAIL Sample01
    ");
    24     #endif
    25 }

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

    执行 ./PI 

    代码成功就会显示

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

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 #include<math.h>
     4 int main(){
     5     float pi=0.0f;
     6     int count=10000;
     7     int i;
     8     #pragma offload target(mic)
     9     #pragma omp parallel for reduction(+:pi)
    10         for(i=0;i<count;i++){
    11             float t=(float)((i+0.5f)/count)    ;
    12             pi+=4.0f/(1.0f+t*t);
    13             
    14         }
    15     pi/=count;
    16     if(fabs(pi-3.14)<=0.01f)
    17     #ifdef DEBUG
    18         printf("PASS Sample01 PI=%f
    ",pi);
    19     else
    20         printf("***FAIL Sample01 Pi=%f
    ",pi);
    21     #else
    22         printf("PASS Sample01
    ");
    23     else
    24         printf("***FAIL Sample01
    ");
    25     #endif
    26 }

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

    执行 ./PI 

    代码成功就会显示

    PASS Sample01 PI=3.141593

  • 相关阅读:
    Flask 服务器设置host=0.0.0.0之后外部仍然无法访问
    HTB::Sauna
    VulnHub::DC-4
    【CTFHub 技能树】RCE
    【CTFHub 技能树】反射型XSS
    VulnHub::DC-3
    HashMap中add()方法的源码学习
    equals和HashCode深入理解(转)
    AQS原理分析
    初步认识线程安全性
  • 原文地址:https://www.cnblogs.com/sdxk/p/4209390.html
Copyright © 2011-2022 走看看