【CUDA開發】Thrust庫

Thrust庫從C++的STL中得到靈感,將最簡單的類似于STL的結構放在Thrust庫中,比如STL中的vector。此外,Thrust庫還包含STL中的算法和迭代器。
????????Thrust函數庫提供了兩個向量容器,分別為主機和設備提供了向量類并且分別駐留在主機和設備的全局內存中。向量可以使用數組下標進行讀取或者修改。然而,如果向量在設備上,那么對于每個這樣的訪問,Thrust通過PCI-E總線在后臺執行單獨的傳輸,因此,將這樣一個結構放在循環里不是一個好的主意。
????????Thrust提供了大量的函數類型集合,包括:轉換(transformation),規約(reduction),前綴求和(prefix?sum),再排序(reordering),排序(sorting)。Thrust并不是傳統意義上的函數庫,因為它的所有內容都在所包含的頭文件中。因此,要避免包含所有的文件。只要包含需要的頭文件就行了。
????????通過如下代碼,我們可以創建對應的host_vector和device_vector向量對象:
C/C++ code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include?<thrust/host_vector.h>?
#include?<thrust/device_vector.h>
#include?<iostream>?
int?main(void)?{?
????//?H?has?storage?for?4?integers?
????thrust::host_vector<int>?H(4);?
????//?initialize?individual?elements?
????H[0]?=?14;?
????H[1]?=?20;?
????H[2]?=?38;?
????H[3]?=?46;?
????//?H.size()?returns?the?size?of?vector?H?
????std::cout?<<?"H?has?size?"?<<?H.size()?<<?std::endl;?
????//?print?contents?of?H?
????for(int?i?=?0;?i?<?H.size();?i++)?
????????std::cout?<<?"H["?<<?i?<<?"]?=?"?<<?H[i]?<<?std::endl;?
????//?resize?H?
????H.resize(2);?
????std::cout?<<?"H?now?has?size?"?<<?H.size()?<<?std::endl;?
????//?Copy?host_vector?H?to?device_vector?D
????thrust::device_vector<int>?D?=?H;?
????//?elements?of?D?can?be?modified
????D[0]?=?99;?
????D[1]?=?88;?
????//?print?contents?of?D?
????for(int?i?=?0;?i?<?D.size();?i++)?
????????std::cout?<<?"D["?<<?i?<<?"]?=?"?<<?D[i]?<<?std::endl;?
????//?H?and?D?are?automatically?deleted?when?the?function?returns?
????return?0;?
????}?

????????從代碼中可以看出,聲明一個host_vector和device_vector是很容易的,只要添上對應的頭文件,并加上命名空間就可以了。Thrust的vector同C++?STL標準庫中vector類似,可以動態改變大小。其它的一些操作可以參看官方文檔。

????????一旦數據在Thrust設備向量或主機向量容器中,我們就可以使用大量Thrust提供的標準函數。比如,Thrust提供了一個簡單的排序函數,該函數只需要提供向量開頭和結尾的索引。它把任務分配到不同的線程塊上并且執行任何規約和線程間的通信操作。下面舉個排序函數的例子:
C/C++ code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include?<thrust/host_vector.h>
#include?<thrust/device_vector.h>
#include?<thrust/generate.h>
#include?<thrust/sort.h>
#include?<thrust/copy.h>
#include?<cstdlib>
#define?NUM_ELEM?(1024?*?1024)
int?main(void)
{
????thrust::host_vector<int>?host_array(NUM_ELEM);
????thrust::generate(host_array.begin(),?host_array.end(),?rand);
????thrust::device_vector<int>?device_array?=?host_array;
????thrust::sort(device_array.begin(),?device_array.end());
????thrust::sort(host_array.begin(),?host_array.end());
????thrust::host_vector<int>?host_array_sorted?=?device_array;
????return?0;
}

轉載于:https://www.cnblogs.com/huty/p/8517917.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/270782.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/270782.shtml
英文地址,請注明出處:http://en.pswp.cn/news/270782.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

硬件:臺式機老式鍵盤知識科普

??作者主頁&#xff1a;IT技術分享社區 ??作者簡介&#xff1a;大家好,我是IT技術分享社區的博主&#xff0c;從事C#、Java開發九年&#xff0c;對數據庫、C#、Java、前端、運維、電腦技巧等經驗豐富。 ??個人榮譽&#xff1a; 數據庫領域優質創作者&#x1f3c6;&#x…

高考填報志愿計算機操作技巧,高考志愿填報技巧經驗

高考志愿填報技巧經驗2020-12-30 14:43:23文/葉丹填報技巧&#xff1a;在所有科目考試結束后合理估分&#xff0c;提前參考往年錄取分數線&#xff0c;明確各項重要的時間節點&#xff0c;搜集目標院校資料&#xff0c;查詢目標院校專業近幾年的位次情況&#xff0c;有意向的學…

npz文件轉為npy_numpy的文件存儲 .npy .npz 文件

1)Numpy能夠讀寫磁盤上的文本數據或二進制數據。將數組以二進制格式保存到磁盤np.load和np.save是讀寫磁盤數組數據的兩個主要函數&#xff0c;默認情況下&#xff0c;數組是以未壓縮的原始二進制格式保存在擴展名為.npy的文件中。import numpy as npanp.arange(5)np.save(test…

DML語句

DML語句 DML 操作是指對數據庫中表記錄的操作&#xff0c;主要包括表記錄的插入&#xff08;insert&#xff09;、更新&#xff08;update&#xff09;、刪除&#xff08;delete&#xff09;和查詢&#xff08;select&#xff09;&#xff0c;是開發人員日常使用最頻繁的操作。…

第四十五篇、UITableViewCell高度計算

由于tableView:heightForRowAtIndexPath:方法的調用頻率非常高&#xff0c;如果將cell高度的計算過程放在此方法中&#xff0c;那么效率將會非常的低&#xff0c;快速tableview就會出現卡頓 1、通過代碼 (在模型當中只計算一次cell高度&#xff0c;然后在方法中直接從模型屬性當…

硬件知識:臺式電腦主機各種接口介紹

??作者主頁&#xff1a;IT技術分享社區 ??作者簡介&#xff1a;大家好,我是IT技術分享社區的博主&#xff0c;從事C#、Java開發九年&#xff0c;對數據庫、C#、Java、前端、運維、電腦技巧等經驗豐富。 ??個人榮譽&#xff1a; 數據庫領域優質創作者&#x1f3c6;&#x…

兩條曲線所圍成的面積_三個視頻搞定:求曲邊梯形面積的思想、微積分基本定理及其幾何意義、微積分理論的可視化解讀、...

● 本文適合高二下學期、高三一輪復習的同學閱讀。先看視頻再看文字&#xff0c;看視頻時注意利用暫停&#xff0c;想清楚每一步變形的依據。01曲邊梯形的面積、微積分基本定理的內容視頻講解1、曲邊梯形的概念及面積求法(1)曲邊梯形&#xff1a;由直線x&#xff1d;a&#xff…

我國對計算機信息系統安全主要是采取,附錄信息網絡安全監察法規概述二.doc...

附錄信息網絡安全監察法規概述二信息網絡安全法律法規《計算機信息系統安全保護條例》福建省公安廳網安總隊林世科10.2 《計算機信息系統安全保護條例》? 1994年2月18日&#xff0c;《中華人民共和國計算機信息系統安全保護條例》(以下簡稱《條例》)的頒布實施(國務院令第147號…

SQLServer基礎:Apply關鍵字用法介紹

1、概念介紹APPLy關鍵字是SQLServer版本中開始提供的一個系統關鍵字。APPLY的功能同聯接很類似&#xff0c;APPLY運算分左右兩個部分&#xff0c;APPLY的右表達式&#xff1a;左表達式的每一行都和右表達式進行一次計算,即右表達式需要根據左表達式提供的值進行相關計算來獲取相…

asp命令執行語句】_2分鐘教你使用ASP.NET CORE創建并發布網頁應用

>> 點擊上方 懶人MES 關注我們準備環境: 只需要下載并安裝 .NET CORE SDK 3.1(推薦3.1)微軟官方下載地址: https://dotnet.microsoft.com/download/dotnet-core不需要Visual Studio, 也不需要VS Code, 一切操作都只在CMD命令行中完成, 而且只需要執行5條命令&#xff0c;…

蘋果計算機磁盤格式,蘋果電腦如何完全寫入NTFS格式磁盤

很多在使用Mac的用戶可能都發現了&#xff0c;Mac有時候不能正常使用NTFS格式磁盤。無論是U盤、硬盤、軟盤還是其他的NTFS格式分區&#xff0c;mac在使用它們的時候只能有訪問讀取的權限&#xff0c;但想要修改、刪除、存在文件則無法實現。為解決這一問題&#xff0c;小編今天…

事物與數據庫底層數據

事物與數據庫底層數據 在事物進行過程中&#xff0c;未結束之前&#xff0c;DML語句是不會更改底層數據&#xff0c;只是將歷史操作記錄一下&#xff0c;在內存中完成記錄。只有在事物結束的時候&#xff0c;而且是成功的結束的時候&#xff0c;才會修改底層硬盤文件中的數據

電腦知識:分享幾款常用的截屏方法,歡迎收藏

目錄 1、Windows系統自帶截圖工具 2、截屏軟件 3、聊天軟件 4、Windows系統自帶有截屏的快捷鍵 5、瀏覽器截屏 6、手機拍照 今天小編給大家介紹幾個常用截屏的方法&#xff0c;希望對大家的日常辦公能有所幫助&#xff01; 1、Windows系統自帶截圖工具 點擊左下角開始菜單在“…

R語言-排序

1 > c 2 [1] 1 2 3 4 5 6 1 3 3 > sort(c) 4 [1] 1 1 2 3 3 4 5 6 5 > order(c) 6 [1] 1 7 2 3 8 4 5 6 sort與order都是對向量排序&#xff0c;sort返回的是向量排序后的值&#xff08;小-大&#xff09;&#xff0c;order是對向量排序&#xff0c;然后返回向量的索引…

eigen 編譯_頭條 | 使用eigen實現四元數、歐拉角、旋轉矩陣、旋轉向量間的轉換...

點擊上方藍字&#xff0c;關注本公眾號&#xff0c;獲得更多資源上一篇文章介紹了四元數、歐拉角、旋轉矩陣、軸角如何相互轉換&#xff0c;本篇文章介紹如何用eigen來實現。旋轉向量1&#xff0c;初始化旋轉向量&#xff1a;旋轉角為alpha&#xff0c;旋轉軸為(x,y,z)Eigen::A…

火炬之光2找不到服務器,火炬之光2無法運行解決辦法詳細介紹

火炬之光2無法運行解決辦法詳細介紹2012-09-28 15:23:07來源&#xff1a;游戲下載編輯&#xff1a;評論(0)不少玩家在安裝了火炬之光2游戲后無法運行&#xff0c;小編特此為你找了幾種的解決辦法&#xff0c;下面一起來看一下火炬之光2無法運行的問題及解決辦法&#xff1a;如果…

Spring AOP?/?AspectJ AOP?的區別?

Spring AOP / AspectJ AOP 的區別&#xff1f; Spring AOP屬于運行時增強&#xff0c;而AspectJ是編譯時增強。 Spring AOP基于代理&#xff08;Proxying&#xff09;&#xff0c;而AspectJ基于字節碼操作&#xff08;Bytecode Manipulation&#xff09;。 AspectJ相比于Spr…

硬件知識:獨立顯卡和集成顯卡的區別

目錄 1、獨立顯卡 2、集成顯卡 3、獨立顯卡與集成顯卡性能上的區別 今天給大家介紹一下獨立顯卡和集成顯卡的區別&#xff0c;希望對大家能有所幫助&#xff01; 1、獨立顯卡 獨立顯卡是將顯示芯片及相關器件制作成一個獨立于電腦主板的板卡&#xff0c;成為專門的圖像處理硬件…

『OPEN3D』1.1 點云處理

目錄 1.open3d中的點云IO 2.點云的可視化 3 點云voxel下采樣 4. 頂點法線估計 5.最小外界矩 6. 凸包計算 7. 點云距離計算 8. DBSCAN clustering聚類 9. RANSAC(Random Sample Consensus) 10. 點云平面分割 11. 隱藏點移除 12.outliers移除 13 最遠點采樣&#xf…