Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

 C++ STL szerű template könyvtár  https://thrust.github.io/ https://thrust.github.io/  Vektor struktúrák  Támogatott algoritmusok  Rendezések  Leképzések.

Hasonló előadás


Az előadások a következő témára: " C++ STL szerű template könyvtár  https://thrust.github.io/ https://thrust.github.io/  Vektor struktúrák  Támogatott algoritmusok  Rendezések  Leképzések."— Előadás másolata:

1

2  C++ STL szerű template könyvtár  https://thrust.github.io/ https://thrust.github.io/  Vektor struktúrák  Támogatott algoritmusok  Rendezések  Leképzések  Scan jellegű műveletek  Gyűjtő műveletek

3  thrust::host_vector  A központi memóriába található vektor  thrust::device_vector  A GPU memóriájában található vektor  Iterátorok támogatása  Vektorok közötti másolás  operator= bármely kombinációban  Vektor elemek elérése  operator[] bármely vektor esetén  a GPU-n található vektor esetén lassú lehet

4  thrust::fill  Adott értékkel feltölti a vektort  thrust::uninitialized_fill  Csak memóriát foglal #include... thrust::device_vector v(4); thrust::fill(thrust::device, v.begin(), v.end(), 137); // v[0] == 137, v[1] == 137, v[2] == 137, v[3] == 137

5  thrust::sequence  Növekvő sorozattal tölti fel a vektort #include... const int N = 10; int A[N]; thrust::sequence(thrust::host, A, A + 10); // A is now {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

6  thrust::generate  Paraméter nélküli függvényhívás eredményével tölti fel a vektort #include... thrust::host_vector v(10); srand(13); thrust::generate(thrust::host, v.begin(), v.end(), rand); // the elements of v are now pseudo-random numbers

7  thrust::tabulate  A kitöltendő elem sorszámával hívott függvény eredményével tölti ki a vektort #include... const int N = 10; int A[N]; thrust::tabulate(thrust::host, A, A + 10, thrust::negate ()); // A is now {0, -1, -2, -3, -4, -5, -6, -7, -8, -9}

8  thrust::transform  A kitöltendő elem értékével hívott függvény alapján tölti fel a vektort #include... int data[10] = {-5, 0, 2, -3, 2, 4, 0, -1, 2, 8}; thrust::negate op; thrust::transform(thrust::host, data, data + 10, data, op); // in-place transformation // data is now {5, 0, -2, 3, -2, -4, 0, 1, -2, -8};

9  thrust::for_each  A vektor minden elemére függvény kiértékelés #include... struct printf_functor { __host__ __device__ void operator()(int x) { printf("%d\n", x); } };... thrust::device_vector d_vec(3); d_vec[0] = 0; d_vec[1] = 1; d_vec[2] = 2; thrust::for_each(thrust::device, d_vec.begin(), d_vec.end(), printf_functor()); // 0 1 2 is printed to standard output in some unspecified order

10  thrust::partition  thrust::stable_partition  A vektor elemeinek átrendezése predikátum alapján #include... struct is_even { __host__ __device__ bool operator()(const int &x) { return (x % 2) == 0; } };... int A[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; const int N = sizeof(A)/sizeof(int); thrust::partition(thrust::host, A, A + N, is_even()); // A is now {2, 4, 6, 8, 10, 1, 3, 5, 7, 9}

11  thrust::min_element  thrust::max_element  thrust::minmax_element  A vektor szélsőértékeinek számítása #include... int data[6] = {1, 0, 2, 2, 1, 3}; thrust::pair result = thrust::minmax_element(thrust::host, data, data + 6); // result.first is data + 1 // result.second is data + 5 // *result.first is 0 // *result.second is 3

12  thrust::count  thrust::count_if  Valamely tulajdonságnak megfelelő elemek számának meghatározása #include... // put 3 1s in a device_vector thrust::device_vector vec(5,0); vec[1] = 1; vec[3] = 1; vec[4] = 1; // count the 1s int result = thrust::count(thrust::device, vec.begin(), vec.end(), 1); // result == 3

13  thrust::sort  thrust::stable_sort  A vektor elemeinek növekvő sorba rendezése #include... const int N = 6; int A[N] = {1, 4, 2, 8, 5, 7}; thrust::sort(thrust::host, A, A + N); // A is now {1, 2, 4, 5, 7, 8}

14  thrust::inclusive_scan  thrust::exclusive_scan #include... int data[6] = {1, 0, 2, 2, 1, 3}; thrust::inclusive_scan(thrust::host, data, data + 6, data); // data is now {1, 1, 3, 5, 6, 9} int data2[6] = {1, 0, 2, 2, 1, 3}; thrust::exclusive_scan(thrust::host, data2, data2 + 6, data2); // data is now {0, 1, 1, 3, 5, 6}

15  thrust::constant_iterator  Konstans értékű sorozat  thrust::transform_iterator  Transzformált sorozat  A transzformáció utáni értéket reprezentálja  thrust::permutation_iterator  Átrendezett sorozat  A permutáció eredményét reprezentálja  thrust::zip_iterator  Több sorozat összrendelése  Az összerendelt párokat reprezentálja


Letölteni ppt " C++ STL szerű template könyvtár  https://thrust.github.io/ https://thrust.github.io/  Vektor struktúrák  Támogatott algoritmusok  Rendezések  Leképzések."

Hasonló előadás


Google Hirdetések