Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaHanna Nemes Megváltozta több, mint 8 éve
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
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.