test3.c

来自「shpf 1.9一个并行编译器」· C语言 代码 · 共 61 行

C
61
字号

// real a(10, 10), b(10, 10)
// 
// !hpf$ distribute a (block, block) onto p
// !hpf$ align b (i, j) with a (j, i)
// !hpf$ processors p (2, 2)
// 
// do i = 1, 10
//   do j = 1, 10
//     a (i, j) = 10 * i + j
//   enddo
// enddo
// 
// b = a + 2
// 
// do i = 1, 10
//   print "(10f7.1)", b(i, :)
// enddo
// 
// end


#include <stdio.h>
#include "ad++.h"
#include "admacros.h"


void main(int argc, char* argv[]) {
  AdlibInit(argc, argv) ;

  Procs2 p(2, 2) ;


  on(p) {
    Range x(10, p.dim(0), BLK) ;
    Range y(10, p.dim(1), BLK) ;
    Array2<float> a(x, y), b(y, x) ;

    where(x) {
      where(y) {
        a(x, y) = 10 * (1 + x) + 1 + y ;
      } erewh(y) ;
    } erewh(x) ;

    Array2<float> tmp1(x, y) ;
    where(x) {
      where(y) {
        tmp1(x, y) = a(x, y) + 2 ;
      } erewh(y) ;
    } erewh(x) ;

    remap(b, tmp1) ;

    aprintf("%7.1f%*N", b, x.size()) ;
  } no(p) ;

  AdlibFinalize() ;
}


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?