const int SIZE = 10000000 ; // Ishlovchi sinf klassi CalculationTask




Download 166,2 Kb.
bet5/5
Sana25.05.2024
Hajmi166,2 Kb.
#253830
1   2   3   4   5
const int SIZE = 10000000 ;


  • // Ishlovchi

  • sinf klassi CalculationTask { vektor < double > & myArray ; public : // Operator () iteratsiya bo'shlig'idan bir diapazonda bajariladi void operator ()( const tbb :: blocked_range < int > & r ) const { for ( int i = r . begin (); i != r . end () ; i ++ ) Hisoblash ( myArray [ i ]); }


















  • // Konstruktorni

  • hisoblash vazifasi ( vektor < double > &a a ) : myArray ( a ) { } };



  • int main () { vektor < double > myArray ( SIZE );







  • // tbb uchun parallel algoritmni ishga tushirish :: parallel_for ( tbb :: blocked_range < int > ( 0 , SIZE ), CalculationTask ( myArray ));


  • qaytish 0 ; }


  • C++ 11 dan lambda funksiyalaridan foydalanish:

  • // Kerakli sarlavha fayllari kiritilgan

  • #include “tbb/blocked_range.h”

  • #include “tbb/parallel_for.h”


  • #o'z ichiga


  • // Vektor elementlari soni

  • const size_t SIZE = 10000000 ;


  • int main ( ) { std :: vektor myArray ( SIZE ) ;







  • // tbb uchun parallel algoritmni ishga tushirish :: parallel_for ( tbb :: blocked_range < size_t > ( 0 , SIZE ), // Lambda funktsiyasi [ & myArray ]( const tbb :: blocked_range < size_t > & r ) { for ( size_t i = r . start (); i != r . end (); i ++ ) Hisoblash ( myArray [ i ]); });














  • qaytish 0 ; }

    Download 166,2 Kb.
  • 1   2   3   4   5




    Download 166,2 Kb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    const int SIZE = 10000000 ; // Ishlovchi sinf klassi CalculationTask

    Download 166,2 Kb.