nvGRAPH原理概述
nvGRAPH原理概述
nvGRAPH的API参考分析。
数据分析是高性能计算的不断增长的应用。许多高级数据分析问题可以称为图形问题。反过来,当今许多常见的图形问题也可以称为稀疏线性代数。这是NVIDIACUDA8.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原理概述的更多相关文章
- linux软中断与硬中断实现原理概述
linux软中断与硬中断实现原理概述. 1.软中断通过open_softirq注册一个软中断处理函数,即在软中断向量表softirq_vec数组中添加新的软中断处理action函数. 2.调用rais ...
- InspectIT_EUM 实现原理概述
在Git上查看 InspectIT 实现原理概述: 实现原理详解: 1.jsAgent如何注入到浏览器 通过ASM框架修改HttpService.service()方法,加入相关逻辑,对每一个Htt ...
- MOOC 编译原理笔记(一):编译原理概述以及程序设计语言的定义
编译原理概述 什么是编译程序 编译程序指:把某一种高级语言程序等价地转换成另一张低级语言程序(如汇编语言或机器代码)的程序. 高级语言程序-翻译->机器语言程序-运行->结果. 其中编译程 ...
- kvo原理概述
kvo概述 kvo,全称Key-Value Observing,它提供了一种方法,当对象某个属性发生改变时,允许监听该属性值变化的对象可以接受到通知,然后通过kvo的方法响应一些操作. kvo实现原理 ...
- 基于 EntityFramework 的数据库主从读写分离架构(1) - 原理概述和基本功能实现
回到目录,完整代码请查看(https://github.com/cjw0511/NDF.Infrastructure)中的目录: src\ NDF.Data.EntityFramew ...
- mysql之 MySQL 主从基于 GTID 复制原理概述
一. 什么是GTID ( Global transaction identifiers ):MySQL-5.6.2开始支持,MySQL-5.6.10后完善,GTID 分成两部分,一部分是服务的UUid ...
- MySQL 索引原理概述及慢查询优化实战
MySQL凭借着出色的性能.低廉的成本.丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库.虽然性能出色,但所谓“好马配好鞍”,如何能够更好的使用它,已经成为开发工程师的必修课,我们经常会从职位 ...
- LCD常用接口原理概述
Android LCD(5) 平台信息:内核:linux2.6/linux3.0系统:android/android4.0 平台:samsung exynos 4210.exynos 4412 .e ...
- Linux的七个运行级别原理概述
所谓运行级别,简单点来说,运行级别就是操作系统当前正在运行的功能级别.级别是从0到6,具有不同的功能.这些级别定义在/ect/inittab文件中.这个文件是init程序寻找的主要文件,最先运行的服务 ...
随机推荐
- LA3177长城守卫
题意: 有n个人围成一个圈,每个人都有r[i]个礼物,任意两个相邻的人的礼物不能有重复的,问满足所有相邻不重复的最少礼物种数是多少?就是问最少多少种礼物能让任意相邻的两个人的礼物不重复. 思 ...
- Python爬虫之requests库的使用
requests库 虽然Python的标准库中 urllib模块已经包含了平常我们使用的大多数功能,但是它的 API 使用起来让人感觉不太好,而 Requests宣传是 "HTTP for ...
- Windows PE 第四章 导入表
第四章 导入表 导入表是PE数据组织中的一个很重要的组成部分,它是为实现代码重用而设置的.通过分析导入表数据,可以获得诸如OE文件的指令中调用了多少外来函数,以及这些外来函数都存在于哪些动态链接库里等 ...
- SpringBoot程序后台运行
使用nohup命令让进程后台运行 nohup java -jar 自己的springboot项目.jar >日志文件名.log 2>&1 & >日志文件名.log : ...
- js 实现 bind 的这五层,你在第几层?
最近在帮朋友复习 JS 相关的基础知识,遇到不会的问题,她就会来问我. 这不是很简单?三下五除二,分分钟解决. function bind(fn, obj, ...arr) { return fn.a ...
- SparkSQL电商用户画像(五)之用户画像开发(客户基本属性表)
7.电商用户画像开发 7.1用户画像--数据开发的步骤 u 数据开发前置依赖 -需求确定 pv uv topn -建模确定表结构 create table t1(pv int,uv int,topn ...
- MySQL binlog_ignore_db 参数最全解析
前言: 经过前面文章学习,我们知道 binlog 会记录数据库所有执行的 DDL 和 DML 语句(除了数据查询语句select.show等).注意默认情况下会记录所有库的操作,那么如果我们有另类需求 ...
- [bug] Junit initializationError
原因 导包错误 解决 先删除 import org.junit.Test; 再导入正确的包 参考 https://blog.csdn.net/javae100/article/details/7978 ...
- 【转载】认识SSD的SATA、mSATA 、PCIe和M.2四种主流接口
认识SSD的SATA.mSATA .PCIe和M.2四种主流接口 2018-09-25 • 工具 • 评论关闭 认识SSD的SATA.mSATA .PCIe和M.2四种主流接口
- Nginx——Docker下安装部署
前言 Nginx 是一个高性能的 HTTP 和反向代理 web 服务器,同时也提供了 IMAP/POP3/SMTP 服务 . 一. 环境说明 docker: 18.09.9-ce nginx: 1.1 ...