Changes between Version 56 and Version 57 of Next-GenOpenMPTransformation
- Timestamp:
- 11/06/19 16:27:52 (7 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Next-GenOpenMPTransformation
v56 v57 627 627 {{{ 628 628 // global 629 $ _omp_helper_semaphore critical_ = $omp_helper_semaphore_create(0);630 $ _omp_helper_semaphore critical_x = $omp_helper_semaphore_create(0);629 $omp_helper_semaphore critical_ = $omp_helper_semaphore_create(0); 630 $omp_helper_semaphore critical_x = $omp_helper_semaphore_create(0); 631 631 ... 632 632 … … 634 634 $yield(); 635 635 $check_data_race(team); 636 $ _omp_helper_semaphore_p(critical_, 0);637 $ _omp_helper_semaphore_v(critical_, 1);636 $omp_helper_semaphore_p(critical_, 0); 637 $omp_helper_semaphore_v(critical_, 1); 638 638 translate(BLOCK_A) 639 $ _omp_helper_semaphore_v(critical_, 0);639 $omp_helper_semaphore_v(critical_, 0); 640 640 641 641 // critical block with specified name 642 642 $yield(); 643 643 $check_data_race(team); 644 $ _omp_helper_semaphore_p(critical_x, 0);645 $ _omp_helper_semaphore_v(critical_x, 1);644 $omp_helper_semaphore_p(critical_x, 0); 645 $omp_helper_semaphore_v(critical_x, 1); 646 646 translate(BLOCK_X); 647 $ _omp_helper_semaphore_v(critical_x, 0);647 $omp_helper_semaphore_v(critical_x, 0); 648 648 }}} 649 649 … … 683 683 {{{ 684 684 // global helper lock 685 $ _omp_helper_semaphore ordered_0 = $omp_helper_semaphore_create(INIT);685 $omp_helper_semaphore ordered_0 = $omp_helper_semaphore_create(INIT); 686 686 .. 687 687 { … … 694 694 $yield(); 695 695 // wait until hs0->val is i 696 $ _omp_helper_semaphore_p(ordered_0, i);696 $omp_helper_semaphore_p(ordered_0, i); 697 697 translate(BLOCK); 698 698 // set hs0->val as i_next 699 $ _omp_helper_semaphore_v(ordered_0, i_next);699 $omp_helper_semaphore_v(ordered_0, i_next); 700 700 ... 701 701 } … … 719 719 {{{ 720 720 // global helper semaphore 721 $ _omp_helper_semaphore ordered_0 = $omp_helper_semaphore_create(I_INIT);722 $ _omp_helper_semaphore ordered_1 = $omp_helper_semaphore_create(J_INIT);723 $ _omp_helper_semaphore ordered_2 = $omp_helper_semaphore_create(K_INIT);721 $omp_helper_semaphore ordered_0 = $omp_helper_semaphore_create(I_INIT); 722 $omp_helper_semaphore ordered_1 = $omp_helper_semaphore_create(J_INIT); 723 $omp_helper_semaphore ordered_2 = $omp_helper_semaphore_create(K_INIT); 724 724 725 725 { // worksharing-loop construct (begin) … … 731 731 732 732 $yield(); 733 $ _omp_helper_semaphore_p(ordered_0, i);734 $ _omp_helper_semaphore_p(ordered_1, j);735 $ _omp_helper_semaphore_p(ordered_2, k);733 $omp_helper_semaphore_p(ordered_0, i); 734 $omp_helper_semaphore_p(ordered_1, j); 735 $omp_helper_semaphore_p(ordered_2, k); 736 736 737 737 translate(BLOCK); 738 738 739 739 if (k_next < K_COND) // hit bound 740 $ _omp_helper_semaphore_v(ordered_2, k_next); // incr740 $omp_helper_semaphore_v(ordered_2, k_next); // incr 741 741 else { 742 $ _omp_helper_semaphore_v(ordered_2, K_INIT); // reset742 $omp_helper_semaphore_v(ordered_2, K_INIT); // reset 743 743 744 744 if (j_next < J_COND) // hit bound 745 $ _omp_helper_semaphore_v(ordered_1, j_next); // incr745 $omp_helper_semaphore_v(ordered_1, j_next); // incr 746 746 else { 747 $ _omp_helper_semaphore_v(ordered_1, J_INIT); // reset748 749 $ _omp_helper_semaphore_v(ordered_0, i_next); // incr747 $omp_helper_semaphore_v(ordered_1, J_INIT); // reset 748 749 $omp_helper_semaphore_v(ordered_0, i_next); // incr 750 750 } 751 751 }
