]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
numeric (inner_product, [...]): Qualify subsequent call with __gnu_parallel instead...
authorJohannes Singler <singler@kit.edu>
Wed, 26 Jan 2011 09:18:48 +0000 (09:18 +0000)
committerJohannes Singler <singler@gcc.gnu.org>
Wed, 26 Jan 2011 09:18:48 +0000 (09:18 +0000)
2011-01-26  Johannes Singler  <singler@kit.edu>

        * include/parallel/numeric (inner_product, partial_sum):
        Qualify subsequent call with __gnu_parallel instead of
        _GLIBCXX_STD_P to reenable parallel execution without ambiguity.
        * include/parallel/algobase.h (equal): Likewise.
        * include/parallel/algo.h (find_first_of, search_n, merge,
        nth_element, partial_sort, max_element, min_element): Likewise.
        * testsuite/25_algorithms/headers/algorithm/
        parallel_algorithm_mixed1.cc (main): Add respective test cases.
        * testsuite/25_algorithms/headers/algorithm/
        parallel_algorithm_mixed2.cc (main): Likewise.
        * testsuite/26_numerics/headers/numeric/
        parallel_numeric_mixed1.cc (main): Likewise.
        * testsuite/26_numerics/headers/numeric/
        parallel_numeric_mixed2.cc (main): Likewise.

From-SVN: r169280

libstdc++-v3/ChangeLog
libstdc++-v3/include/parallel/algo.h
libstdc++-v3/include/parallel/algobase.h
libstdc++-v3/include/parallel/numeric
libstdc++-v3/testsuite/25_algorithms/headers/algorithm/parallel_algorithm_mixed1.cc
libstdc++-v3/testsuite/25_algorithms/headers/algorithm/parallel_algorithm_mixed2.cc
libstdc++-v3/testsuite/26_numerics/headers/numeric/parallel_numeric_mixed1.cc
libstdc++-v3/testsuite/26_numerics/headers/numeric/parallel_numeric_mixed2.cc

index f6a742211be150d5151fc729c20bef1520b1ace9..b755b4336b7f32940118db979fcd2305d5006f51 100644 (file)
@@ -1,3 +1,20 @@
+2011-01-26  Johannes Singler  <singler@kit.edu>
+
+        * include/parallel/numeric (inner_product, partial_sum):
+        Qualify subsequent call with __gnu_parallel instead of
+        _GLIBCXX_STD_P to reenable parallel execution without ambiguity.
+        * include/parallel/algobase.h (equal): Likewise.
+        * include/parallel/algo.h (find_first_of, search_n, merge,
+        nth_element, partial_sort, max_element, min_element): Likewise.
+        * testsuite/25_algorithms/headers/algorithm/
+        parallel_algorithm_mixed1.cc (main): Add respective test cases.
+        * testsuite/25_algorithms/headers/algorithm/
+        parallel_algorithm_mixed2.cc (main): Likewise.
+        * testsuite/26_numerics/headers/numeric/
+        parallel_numeric_mixed1.cc (main): Likewise.
+        * testsuite/26_numerics/headers/numeric/
+        parallel_numeric_mixed2.cc (main): Likewise.
+
 2011-01-24  Graham Reed  <greed@pobox.com>
 
        PR libstdc++/47387
index cc2fc679bcf5a588633b30d14003ee81955c0c61..a24e557ad90d7917045f870b3a9986bb96f37f19 100644 (file)
@@ -292,7 +292,7 @@ namespace __parallel
       typedef typename _IIterTraits::value_type _IValueType;
       typedef typename iteratorf_traits::value_type _FValueType;
 
-      return _GLIBCXX_STD_P::find_first_of(__begin1, __end1, __begin2, __end2,
+      return __gnu_parallel::find_first_of(__begin1, __end1, __begin2, __end2,
                          __gnu_parallel::_EqualTo<_IValueType, _FValueType>());
     }
 
@@ -1160,7 +1160,7 @@ namespace __parallel
              const _Tp& __val)
     {
       typedef typename iterator_traits<_FIterator>::value_type _ValueType;
-      return _GLIBCXX_STD_P::search_n(__begin, __end, __count, __val,
+      return __gnu_parallel::search_n(__begin, __end, __count, __val,
                       __gnu_parallel::_EqualTo<_ValueType, _Tp>());
     }
 
@@ -2086,7 +2086,7 @@ namespace __parallel
       typedef typename _Iterator1Traits::value_type _ValueType1;
       typedef typename _Iterator2Traits::value_type _ValueType2;
 
-      return _GLIBCXX_STD_P::merge(__begin1, __end1, __begin2, __end2,
+      return __gnu_parallel::merge(__begin1, __end1, __begin2, __end2,
                   __result, __gnu_parallel::_Less<_ValueType1, _ValueType2>());
     }
 
@@ -2128,7 +2128,7 @@ namespace __parallel
     {
       typedef iterator_traits<_RAIter> _TraitsType;
       typedef typename _TraitsType::value_type _ValueType;
-      _GLIBCXX_STD_P::nth_element(__begin, __nth, __end,
+      __gnu_parallel::nth_element(__begin, __nth, __end,
                                   std::less<_ValueType>());
     }
 
@@ -2171,7 +2171,7 @@ namespace __parallel
     {
       typedef iterator_traits<_RAIter> _TraitsType;
       typedef typename _TraitsType::value_type _ValueType;
-      _GLIBCXX_STD_P::partial_sort(__begin, __middle, __end,
+      __gnu_parallel::partial_sort(__begin, __middle, __end,
                                    std::less<_ValueType>());
     }
 
@@ -2241,7 +2241,7 @@ namespace __parallel
     max_element(_FIterator __begin, _FIterator __end)
     {
       typedef typename iterator_traits<_FIterator>::value_type _ValueType;
-      return _GLIBCXX_STD_P::max_element(__begin, __end,
+      return __gnu_parallel::max_element(__begin, __end,
                                          std::less<_ValueType>());
     }
 
@@ -2333,7 +2333,7 @@ namespace __parallel
     min_element(_FIterator __begin, _FIterator __end)
     {
       typedef typename iterator_traits<_FIterator>::value_type _ValueType;
-      return _GLIBCXX_STD_P::min_element(__begin, __end,
+      return __gnu_parallel::min_element(__begin, __end,
                                          std::less<_ValueType>());
     }
 
index 754c2814574a3ba4be57cd4623abb0b925fd1c2a..a6fd6cd43310380af877c3801680ca6d1e6fd713 100644 (file)
@@ -142,7 +142,8 @@ namespace __parallel
     inline bool
     equal(_IIter1 __begin1, _IIter1 __end1, _IIter2 __begin2)
     {
-      return mismatch(__begin1, __end1, __begin2).first == __end1;
+      return __gnu_parallel::mismatch(__begin1, __end1, __begin2).first
+              == __end1;
     }
 
   // Public interface
@@ -151,7 +152,8 @@ namespace __parallel
     equal(_IIter1 __begin1, _IIter1 __end1, _IIter2 __begin2, 
           _Predicate __pred)
     {
-      return mismatch(__begin1, __end1, __begin2, __pred).first == __end1;
+      return __gnu_parallel::mismatch(__begin1, __end1, __begin2, __pred).first
+              == __end1;
     }
 
   // Sequential fallback
index fb1fce257c4911e2a4464ca408f4fed37fa5b216..b779aae8d6d179a9342090764a44102a63dfa9fe 100644 (file)
@@ -283,7 +283,7 @@ namespace __parallel
       typedef typename
         __gnu_parallel::_Multiplies<_ValueType1, _ValueType2>::result_type
         _MultipliesResultType;
-      return _GLIBCXX_STD_P::inner_product(__first1, __last1, __first2, __init,
+      return __gnu_parallel::inner_product(__first1, __last1, __first2, __init,
                            __gnu_parallel::_Plus<_Tp, _MultipliesResultType>(),
                            __gnu_parallel::
                            _Multiplies<_ValueType1, _ValueType2>(),
@@ -303,7 +303,7 @@ namespace __parallel
       typedef typename
         __gnu_parallel::_Multiplies<_ValueType1, _ValueType2>::result_type
         _MultipliesResultType;
-      return _GLIBCXX_STD_P::inner_product(__first1, __last1, __first2, __init,
+      return __gnu_parallel::inner_product(__first1, __last1, __first2, __init,
                            __gnu_parallel::_Plus<_Tp, _MultipliesResultType>(),
                            __gnu_parallel::
                            _Multiplies<_ValueType1, _ValueType2>());
@@ -359,7 +359,7 @@ namespace __parallel
     partial_sum(_IIter __begin, _IIter __end, _OutputIterator __result)
     {
       typedef typename iterator_traits<_IIter>::value_type _ValueType;
-      return _GLIBCXX_STD_P::partial_sum(__begin, __end,
+      return __gnu_parallel::partial_sum(__begin, __end,
                                          __result, std::plus<_ValueType>());
     }
 
index cc3ebbc18f9096b194a5678a6a56c997499583d6..ab0d0ac36e52fcc18e12f793b39af1c1835a0177 100644 (file)
@@ -30,7 +30,59 @@ void test()
   
   const value_type c(0);
 
-  vector_type v(10);
+  vector_type v(10), result(20);
+
+  std::equal(v.begin(), v.end(), v.begin());
+  std::equal(v.begin(), v.end(), v.begin(), std::equal_to<value_type>());
+  __gnu_parallel::equal(v.begin(), v.end(), v.begin());
+  __gnu_parallel::equal(v.begin(), v.end(), v.begin(),
+                                            std::equal_to<value_type>());
+
   std::find(v.begin(), v.end(), c);
   __gnu_parallel::find(v.begin(), v.end(), c);
+
+  std::find_first_of(v.begin(), v.end(), v.begin(), v.end());
+  std::find_first_of(v.begin(), v.end(), v.begin(), v.end(), 
+                                                std::equal_to<value_type>());
+  __gnu_parallel::find_first_of(v.begin(), v.end(), v.begin(), v.end());
+  __gnu_parallel::find_first_of(v.begin(), v.end(), v.begin(), v.end(),
+                                                std::equal_to<value_type>());
+
+  std::search_n(v.begin(), v.end(), 5, value_type(1));
+  std::search_n(v.begin(), v.end(), 5, value_type(1),
+                                                std::equal_to<value_type>());
+  __gnu_parallel::search_n(v.begin(), v.end(), 5, value_type(1));
+  __gnu_parallel::search_n(v.begin(), v.end(), 5, value_type(1),
+                                                std::equal_to<value_type>());
+
+  std::merge(v.begin(), v.end(), v.begin(), v.end(), result.begin());
+  std::merge(v.begin(), v.end(), v.begin(), v.end(), result.begin(),
+                                                std::less<value_type>());
+  __gnu_parallel::merge(v.begin(), v.end(), v.begin(), v.end(),
+                        result.begin());
+  __gnu_parallel::merge(v.begin(), v.end(), v.begin(), v.end(),
+                        result.begin(), std::less<value_type>());
+
+  std::nth_element(v.begin(), v.begin() + 5, v.end());
+  std::nth_element(v.begin(), v.begin() + 5, v.end(), std::less<value_type>());
+  __gnu_parallel::nth_element(v.begin(), v.begin() + 5, v.end());
+  __gnu_parallel::nth_element(v.begin(), v.begin() + 5, v.end(),
+                                                      std::less<value_type>());
+
+  std::partial_sort(v.begin(), v.begin() + 5, v.end());
+  std::partial_sort(v.begin(), v.begin() + 5, v.end(),
+                                                      std::less<value_type>());
+  __gnu_parallel::partial_sort(v.begin(), v.begin() + 5, v.end());
+  __gnu_parallel::partial_sort(v.begin(), v.begin() + 5, v.end(),
+                                                      std::less<value_type>());
+
+  std::min_element(v.begin(), v.end());
+  std::min_element(v.begin(), v.end(), std::less<value_type>());
+  __gnu_parallel::min_element(v.begin(), v.end());
+  __gnu_parallel::min_element(v.begin(), v.end(), std::less<value_type>());
+
+  std::max_element(v.begin(), v.end());
+  std::max_element(v.begin(), v.end(), std::less<value_type>());
+  __gnu_parallel::max_element(v.begin(), v.end());
+  __gnu_parallel::max_element(v.begin(), v.end(), std::less<value_type>());
 }
index 5a30b0ea781c95d51f1575a7fbe2269d823e8782..56f95b6fbabbf89b37c49f6a95bb0c073a6ae0bd 100644 (file)
@@ -35,7 +35,59 @@ void test()
   
   const value_type c(0);
 
-  vector_type v(10);
+  vector_type v(10), result(20);
+
+  std::equal(v.begin(), v.end(), v.begin());
+  std::equal(v.begin(), v.end(), v.begin(), std::equal_to<value_type>());
+  __gnu_parallel::equal(v.begin(), v.end(), v.begin());
+  __gnu_parallel::equal(v.begin(), v.end(), v.begin(),
+                                            std::equal_to<value_type>());
+
   std::find(v.begin(), v.end(), c);
   __gnu_parallel::find(v.begin(), v.end(), c);
+
+  std::find_first_of(v.begin(), v.end(), v.begin(), v.end());
+  std::find_first_of(v.begin(), v.end(), v.begin(), v.end(), 
+                                                std::equal_to<value_type>());
+  __gnu_parallel::find_first_of(v.begin(), v.end(), v.begin(), v.end());
+  __gnu_parallel::find_first_of(v.begin(), v.end(), v.begin(), v.end(),
+                                                std::equal_to<value_type>());
+
+  std::search_n(v.begin(), v.end(), 5, value_type(1));
+  std::search_n(v.begin(), v.end(), 5, value_type(1),
+                                                std::equal_to<value_type>());
+  __gnu_parallel::search_n(v.begin(), v.end(), 5, value_type(1));
+  __gnu_parallel::search_n(v.begin(), v.end(), 5, value_type(1),
+                                                std::equal_to<value_type>());
+
+  std::merge(v.begin(), v.end(), v.begin(), v.end(), result.begin());
+  std::merge(v.begin(), v.end(), v.begin(), v.end(), result.begin(),
+                                                std::less<value_type>());
+  __gnu_parallel::merge(v.begin(), v.end(), v.begin(), v.end(),
+                        result.begin());
+  __gnu_parallel::merge(v.begin(), v.end(), v.begin(), v.end(),
+                        result.begin(), std::less<value_type>());
+
+  std::nth_element(v.begin(), v.begin() + 5, v.end());
+  std::nth_element(v.begin(), v.begin() + 5, v.end(), std::less<value_type>());
+  __gnu_parallel::nth_element(v.begin(), v.begin() + 5, v.end());
+  __gnu_parallel::nth_element(v.begin(), v.begin() + 5, v.end(),
+                                                      std::less<value_type>());
+
+  std::partial_sort(v.begin(), v.begin() + 5, v.end());
+  std::partial_sort(v.begin(), v.begin() + 5, v.end(),
+                                                      std::less<value_type>());
+  __gnu_parallel::partial_sort(v.begin(), v.begin() + 5, v.end());
+  __gnu_parallel::partial_sort(v.begin(), v.begin() + 5, v.end(),
+                                                      std::less<value_type>());
+
+  std::min_element(v.begin(), v.end());
+  std::min_element(v.begin(), v.end(), std::less<value_type>());
+  __gnu_parallel::min_element(v.begin(), v.end());
+  __gnu_parallel::min_element(v.begin(), v.end(), std::less<value_type>());
+
+  std::max_element(v.begin(), v.end());
+  std::max_element(v.begin(), v.end(), std::less<value_type>());
+  __gnu_parallel::max_element(v.begin(), v.end());
+  __gnu_parallel::max_element(v.begin(), v.end(), std::less<value_type>());
 }
index 59e70f6260984503133a1fd0f46c69624d5a1409..a1ce8f052ec96fc3c481f072188db0727a6d0dce 100644 (file)
@@ -32,6 +32,17 @@ void test()
   const value_type c(0);
 
   vector_type v(10);
+
   std::accumulate(v.begin(), v.end(), value_type(1));
+  std::accumulate(v.begin(), v.end(), value_type(1), std::plus<value_type>());
   __gnu_parallel::accumulate(v.begin(), v.end(), value_type(1));
+  __gnu_parallel::accumulate(v.begin(), v.end(), value_type(1),
+                                                     std::plus<value_type>());
+
+  std::inner_product(v.begin(), v.end(), v.begin(), value_type(1));
+  std::inner_product(v.begin(), v.end(), v.begin(), value_type(1),
+                     std::multiplies<value_type>(), std::plus<value_type>());
+  __gnu_parallel::inner_product(v.begin(), v.end(), v.begin(), value_type(1));
+  __gnu_parallel::inner_product(v.begin(), v.end(), v.begin(), value_type(1),
+                     std::multiplies<value_type>(), std::plus<value_type>());
 }
index 189f5b9c72ea29b56649bc2d7d34b463a8b71164..a38d92561d7a1ec8faf63a3198af984574c7a5a3 100644 (file)
@@ -37,6 +37,17 @@ void test()
   const value_type c(0);
 
   vector_type v(10);
+
   std::accumulate(v.begin(), v.end(), value_type(1));
+  std::accumulate(v.begin(), v.end(), value_type(1), std::plus<value_type>());
   __gnu_parallel::accumulate(v.begin(), v.end(), value_type(1));
+  __gnu_parallel::accumulate(v.begin(), v.end(), value_type(1),
+                                                     std::plus<value_type>());
+
+  std::inner_product(v.begin(), v.end(), v.begin(), value_type(1));
+  std::inner_product(v.begin(), v.end(), v.begin(), value_type(1),
+                     std::multiplies<value_type>(), std::plus<value_type>());
+  __gnu_parallel::inner_product(v.begin(), v.end(), v.begin(), value_type(1));
+  __gnu_parallel::inner_product(v.begin(), v.end(), v.begin(), value_type(1),
+                     std::multiplies<value_type>(), std::plus<value_type>());
 }