Changes between Version 50 and Version 51 of Next-GenOpenMPTransformation


Ignore:
Timestamp:
11/05/19 17:58:42 (7 years ago)
Author:
wuwenhao
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Next-GenOpenMPTransformation

    v50 v51  
    667667In this case the system function must return an int iterator in which the ints occur in loop order.
    668668
     669==== Case 1: ordered for-loop without a collapse clause ====
    669670{{{
    670671#pragma omp for ordered
     
    680681
    681682{{{
     683int order_counter0 = INIT; //global
     684  ..
    682685{
    683686  $domain loop_domain = {INIT .. COND # INCR};
    684687  $domain(1) loop_dist = ($domain(1))$omp_arrive_loop(team, loop_id++, loop_domain, STRATEGY);
    685   int order_counter0 = INIT;
    686688
    687689  $for (int i : loop_dist) {
     
    695697  }
    696698}
     699}}}
     700
     701==== Case 1: ordered for-loop with a collapse clause ====
     702
     703{{{
     704#pragma omp parallel for collapse(2) ordered
     705for (i=I_INIT; i<I_COND; i+=I_INCR)
     706  for (j=J_INIT; j<J_COND; j+=J_INCR) {
     707    #pragma omp ordered
     708      BLOCK
     709  }
     710}}}
     711
     712=>
     713
     714{{{
     715int order_counter0 = I_INIT;
     716int order_counter1 = J_INIT;
     717
     718{ // worksharing-loop construct (begin)
     719  ..
     720  $for (int i, j : loop_dist) {
     721    $yield();
     722    $when((order_counter0 == i) && (order_counter1 == j)) {
     723      translate(BLOCK);
     724
     725      order_counter1 += J_INCR;
     726      if (order_counter1 >= J_COND) {
     727        order_counter1 = J_INIT;
     728        order_counter0 += I_INCR;
     729      }
     730    }
     731  }
     732  ..
     733} // worksharing-loop construct (end)
    697734}}}
    698735