Changes between Version 50 and Version 51 of Next-GenOpenMPTransformation
- Timestamp:
- 11/05/19 17:58:42 (7 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Next-GenOpenMPTransformation
v50 v51 667 667 In this case the system function must return an int iterator in which the ints occur in loop order. 668 668 669 ==== Case 1: ordered for-loop without a collapse clause ==== 669 670 {{{ 670 671 #pragma omp for ordered … … 680 681 681 682 {{{ 683 int order_counter0 = INIT; //global 684 .. 682 685 { 683 686 $domain loop_domain = {INIT .. COND # INCR}; 684 687 $domain(1) loop_dist = ($domain(1))$omp_arrive_loop(team, loop_id++, loop_domain, STRATEGY); 685 int order_counter0 = INIT;686 688 687 689 $for (int i : loop_dist) { … … 695 697 } 696 698 } 699 }}} 700 701 ==== Case 1: ordered for-loop with a collapse clause ==== 702 703 {{{ 704 #pragma omp parallel for collapse(2) ordered 705 for (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 {{{ 715 int order_counter0 = I_INIT; 716 int 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) 697 734 }}} 698 735
