⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test7.c

📁 shpf 1.9一个并行编译器
💻 C
字号:

//   !hpf$ processors p(3, 2)
// 
//   !hpf$ template t(24, 8)
//   !hpf$ distribute t(block, cyclic) onto p
// 
//   integer a(8, 4, 10)
// 
//   !hpf$ align a(i, *, k) with t(4 + 2 * k, i)
// 
//   !hpf$ processors q(2, 3)
// 
//   !hpf$ template s(10, 4)
//   !hpf$ distribute s(block, block) onto q
// 
//   integer b(6, 4, 12)
//   !hpf$ align b(i, j, *) with s(8 - i, j)
// 
//   integer u(6), v(12)
//   !hpf$ align u(i) with b(i, *, *)
// 
//   integer i, j, k
// 
//   do i = 1, 8
//     do j = 1, 4
//       do k = 1, 10
//         a(i, j, k) = 100 * (i - 1) + 10 * (j - 1) + (k - 1)
//       enddo
//     enddo
//   enddo
// 
//   do i = 1, 6
//     u(i) = 1 + mod((i - 1) * 5, 8)
//   enddo
// 
//   do k = 1, 12
//     v(k) = 1 + (k - 1) / 2 + 1
//   enddo
// 
//   b = a(u, :, v) 
// 
//   do i = 1, 6
//     do j = 1, 4
//       do k = 1, 12
//         print "(i3, i3, i3, i10)", i - 1, j - 1, k - 1, b(i, j, k)
//       enddo
//     enddo
//   enddo
// 
// end


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


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

  Procs2 p(3, 2) ;

  Range x(8, p.dim(1), CYC) ;
  Range y(4) ;
  Range z = Range(24, p.dim(0), BLK).subrng(10, 5, 2) ;

  Array3<int> a(p, x, y, z) ;

  Procs2 q(2, 3) ;

  Range rr(10, q.dim(0), BLK) ;
  Range r = Range(10, q.dim(0), BLK).subrng(6, 6, -1) ;
  Range s(4, q.dim(1), BLK) ;
  Range t(12) ;

  Array3<int> b(q, r, s, t) ;
  Array1<int> u(q, r) ;
  Array1<int> v(q, t) ;

  on(p) {
    where(x) {
      where(y) {
	where(z) {
	  a(x, y, z) = 100 * x + 10 * y + z ;
	} erewh(z) ;
      } erewh(y) ;
    } erewh(x) ;
  } no(p) ;

  on(q) {
    where(r) {
      u(r) = (r * 5) % 8 ;
    } erewh(r) ;

    where(t) {
      v(t) = t / 2 + 1 ;
    } erewh(t) ;
  } no(q) ;

  vecGather(b, a, u, Array1<int>(), v) ;

  aprintf("%3R0%3R1%3R2%10d\n", b) ;

  AdlibFinalize() ;
}


⌨️ 快捷键说明

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