Changes between Version 49 and Version 50 of Next-GenOpenMPTransformation


Ignore:
Timestamp:
11/05/19 13:59:09 (7 years ago)
Author:
wuwenhao
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Next-GenOpenMPTransformation

    v49 v50  
    9595 * `seq_cst` . . . . . . . . . . . . . [Unsupported]
    9696
    97 * `ordered` . . . . . . . . . . . . . . . . . .[Unsupported]
     97* `ordered` ([https://vsl.cis.udel.edu/trac/civl/wiki/Next-GenOpenMPTransformation#Translatingordered detail])
    9898
    9999== OpenMP Types ==
     
    669669{{{
    670670#pragma omp for ordered
    671 for (i=a; i<b; i++) {
     671for (i=INIT; i<COND; i+=INCR) {
    672672  ...
    673673  #pragma omp ordered
    674   S1
     674  BLOCK
    675675  ...
    676676}
     
    681681{{{
    682682{
    683   $domain loop_domain = {a..b};
    684   $domain(1) my_iters = ($domain(1))$omp_arrive_loop(team, FOR_LOC++, loop_domain, STRATEGY);
    685   int order1=a, order2=a;
    686 
    687   $for (int i : my_iters) {
     683  $domain loop_domain = {INIT .. COND # INCR};
     684  $domain(1) loop_dist = ($domain(1))$omp_arrive_loop(team, loop_id++, loop_domain, STRATEGY);
     685  int order_counter0 = INIT;
     686
     687  $for (int i : loop_dist) {
    688688     ...
    689     $when (order1==i) {
    690       translate(S1);
    691       order1++;
     689    $yield();
     690    $when (order_counter0 == i) {
     691      translate(BLOCK);
     692      order_counter0 += INCR;
    692693    }
    693694      ...