zoukankan      html  css  js  c++  java
  • OpenACC例子

     timeinfo1.c代码

     1 #include<stdio.h>
     2 #define N 100
     3 int main()
     4 {
     5     int A[N];
     6     #pragma acc kernels
     7     {
     8         for(int i=0; i<N; i++) A[i] = 2;
     9     }
    10     printf("A[2]=%d
    ",A[2]);
    11     return 0;
    12 }

    编译信息:

    编译器给出的信息表明, 编译器识别到了第6行的 OpenACC 导语,并生成了相应的数据传递代码; 第 9 行的 for 循环也被成功并行化。运行代码前,需要将 PGI 编译器特有的环境变量 export PGI_ACC_TIME 赋值为 1, 打开时间统计功能, 该功能默认是关闭的。

    PGI$ export PGI_ACC_TIME=1

    运行编译好的可执行文件

    PGI$ ./timeinfo1.exe

    (如下解释定有疏忽,待改正)

    6: region entered 1 time 意为在第 6 行进入加速区域,该区域被执行 1 次。

    8: kernel launched 1 times 表明内核函数被启动了 1

    grid: [1]  block: [128]明,内核使用的线程网络(grid)包含 1 个线程块(block),每个线程块里包含 128 个线程。

    time(us):total=3max=3min=3avg=3这一行表明内核运行的总时间为 3微秒,最大、最小、平均时间都是 3微秒,这是因为只有一个内核函数。


    timeinfo2.c代码

     1 #include<stdio.h>
     2 #define N 100
     3 int main()
     4 {
     5 int A[N];
     6 for(int i=0; i<N; i++) A[i]=0;
     7 #pragma acc data copy(A)
     8 {
     9 for(int i=0; i<N; i++)
    10 {
    11 #pragma acc kernels
    12 {
    13 for(int i=0; i<N; i++) A[i] += 2;
    14 }
    15 }
    16 printf("A[1]=%d
    ",A[1]);
    17 }
    18 printf("A[2]=%d
    ",A[2]);
    19 return 0;
    20 }

    编译信息:

    (如下解释定有疏忽,待改正)

    7: region entered 1 time 含义为在第 7 行的 data 导语处进入加速器区域, 该区域被执行1 次。

    11: region entered 100 times 含义为第 11 行的导语区域被执行了 100 次, time(us):total=8,000 含义为导语区域的执行总时间为 8000 微秒

    13: kernel launched 100 times 含义为 13 行的循环生成的内核被启动了 100 次,

    grid: [1] block: [128]含义为内核使用的线程网格(grid)包含 1 个线程块,每个线程块(block)包含 128 个线程。

    time(us): total=8,000 max=1000 min=0 avg=80 含义为,在 100 内核中, 单个内核花费的时间最长为 8000 微秒,最小为 0 微秒,平均为 80 微秒, 100 个内核执行的总时间为 409 微秒。

  • 相关阅读:
    一行代码轻松修改 Text Field 和 Text View 的光标颜色 — By 昉
    六种手势识别,你用了哪些?——董鑫
    Mac 屏幕录制Gif 制作 By-胡罗
    利用ICMP协议的PING命令获取客户端当前网络质量 by徐文棋
    iOS加载Gif图片的N种方式 By-H罗
    [手游项目3]-10-Go语言atomic原子操作
    [手游项目3]-9-Go语言sync.Map(在并发环境中使用的map)
    LRU原理和Redis实现
    Cleanup failed to process the following paths错误的解决
    [手游项目3]-8-排行榜redis实现
  • 原文地址:https://www.cnblogs.com/liangliangdetianxia/p/4359697.html
Copyright © 2011-2022 走看看