nvGRAPH原理概述
nvGRAPH原理概述
nvGRAPH的API參考分析。
簡介
數據分析是高性能計算的不斷增長的應用。許多高級數據分析問題可以稱為圖形問題。反過來,當今許多常見的圖形問題也可以稱為稀疏線性代數。這是NVIDIA?CUDA?8.0中新增的nvGRAPH的動機,該功能利用GPU的線性代數功能來處理最大的圖形分析和大數據分析問題。
此版本提供了圖形構造和操作原語,以及針對GPU優化的一組有用的圖形算法。核心功能是SPMV(稀疏矩陣矢量乘積),該模型使用半環模型并針對任何稀疏模式自動進行負載平衡。有關半環及其用法的更多信息,推薦Jeremy Kepner和John Gilbert所著的“線性代數語言中的圖形算法”一書。
要使用nvGRAPH,應該確保nvGRAPH庫在環境中(Windows上為PATH,Linux上為LD_LIBRARY_PATH),“#include nvgraph.h”指向引用nvGRAPH API的源文件,并在命令上使用-lnvgraph鏈接代碼行,或將libnvgraph添加到的庫依賴項中。已經在Linux,Visual Studio 2012和Windows的Visual Studio 2014上使用GCC 4.8和更高版本測試了nvGRAPH。
使用nvGRAPH的典型工作流程。首先調用nvgraphCreate()初始化庫。接下來,用戶可以繼續通過nvGRAPH的API將圖形數據上傳到庫中;如果設備內存中已經加載了圖形,則只需要一個指向圖形數據數組的指針即可。可以使用nvgraphCreateGraphDescr(),使用CSR(壓縮的稀疏行)格式和CSC(壓縮的列存儲)格式上載圖形。這將為圖形對象創建一個不透明的句柄,稱為“圖形描述符”,該句柄表示圖形拓撲及其數據。可以分別使用nvgraphSetVertexData()和nvgraphSetEdgeData()將圖形數據附加到圖形的頂點和/或邊緣。數據的多個值可以同時存在于每個邊或頂點上,每個值都由索引訪問數據集數組。然后,用戶可以對數據執行圖形算法,從數據中提取子圖,或使用nvGRAPH API重新格式化數據。用戶可以將結果下載回主機,也可以將結果復制到設備上的其它位置,完成所有計算后,用戶應調用nvgraphDestroy()釋放nvGRAPH使用的資源。從數據中提取子圖,或使用nvGRAPH API重新格式化數據。用戶可以將結果下載回主機,也可以將結果復制到設備上的其它位置,完成所有計算后,用戶應調用nvgraphDestroy()釋放nvGRAPH使用的資源。從數據中提取子圖,或使用nvGRAPH API重新格式化數據。用戶可以將結果下載回主機,也可以將結果復制到設備上的其它位置,完成所有計算后,用戶應調用nvgraphDestroy()釋放nvGRAPH使用的資源。
nvGRAPH取決于僅在CUDA功能3.0和更高版本的體系結構中提供的功能。這意味著nvGRAPH將僅在開普勒一代或更新的顯卡上運行。選擇該選項是為了提供最佳性能。
建議用戶先檢查提供的示例代碼,然后從那里進行改編以供自己使用。
總結
以上是生活随笔為你收集整理的nvGRAPH原理概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 代码生成codegen
- 下一篇: nvGRAPH API参考分析(一)