Changes between Initial Version and Version 1 of Insieme


Ignore:
Timestamp:
05/24/16 16:36:58 (10 years ago)
Author:
zmanchun
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Insieme

    v1 v1  
     1A simple OpenMP program
     2{{{
     3#include <omp.h>
     4#define N 10
     5
     6int main (int argc, char * argv[]){
     7  double a[N];
     8  int i;
     9
     10#pragma omp parallel
     11#pragma omp for
     12  for(i=0; i<N; i++)
     13      a[i] = 0;
     14}
     15}}}
     16
     17Insieme IR:
     18{{{
     19let fun000 = fun(ref<vector<real<8>,10>> v87, int<4> v88, int<4> v89, int<4> v90) -> unit {
     20    for(decl int<4> v64 = v88 .. v89 : v90) {
     21        ((ref_vector_to_ref_array(v87)&[int_to_uint(v64, 4)]) := 0.0);
     22    };
     23};
     24
     25let fun001 = fun(ref<array<int<4>,1>> v1, uint<8> v2, uint<8> v3) -> unit {
     26    return unit;
     27};
     28
     29let fun002 = fun(ref<vector<real<8>,10>> v103) -> unit {
     30    {
     31        pfor(getThreadGroup(0), 0, 10, 1, bind(v91, v92, v93){fun000(v103, v91, v92, v93)});
     32        (barrier());
     33    };
     34    mergeAll();
     35};
     36
     37let fun003 = fun(ref<int<4>> v105) -> unit {
     38    {
     39        (v105 := 10);
     40    };
     41    mergeAll();
     42};
     43
     44let fun004 = fun(int<4> v2, ref<array<ref<array<char,1>>,1>> v3) -> int<4> {
     45    decl ref<vector<real<8>,10>> v4 = ( var(undefined(type<vector<real<8>,10>>)));
     46    decl ref<int<4>> v54 = ( var(undefined(type<int<4>>)));
     47    {
     48        merge(parallel(job(([1-inf])){
     49            bind(){fun002(v4)}
     50        }));
     51    };
     52    merge(parallel(job(([1-inf])){
     53        bind(){fun003(v54)}
     54    }));
     55    return 0;
     56};
     57
     58// Inspire Program
     59//  Entry Point:
     60fun004
     61}}}
     62
     63No OpenMP transformation (ignoring OpenMP pragma):
     64{{{
     65let fun000 = fun(int<4> v2, ref<array<ref<array<char,1>>,1>> v3) -> int<4> {
     66    decl ref<vector<real<8>,10>> v4 = ( var(undefined(type<vector<real<8>,10>>)));
     67    decl ref<int<4>> v54 = ( var(undefined(type<int<4>>)));
     68    for(decl int<4> v64 = 0 .. 10 : 1) {
     69        ((ref_vector_to_ref_array(v4)&[int_to_uint(v64, 4)]) := 0.0);
     70    };
     71    (v54 := 10);
     72    return 0;
     73};
     74
     75// Inspire Program
     76//  Entry Point:
     77fun000
     78}}}