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原理概述的更多相关文章

  1. linux软中断与硬中断实现原理概述

    linux软中断与硬中断实现原理概述. 1.软中断通过open_softirq注册一个软中断处理函数,即在软中断向量表softirq_vec数组中添加新的软中断处理action函数. 2.调用rais ...

  2. InspectIT_EUM 实现原理概述

    在Git上查看 InspectIT 实现原理概述: 实现原理详解:  1.jsAgent如何注入到浏览器 通过ASM框架修改HttpService.service()方法,加入相关逻辑,对每一个Htt ...

  3. MOOC 编译原理笔记(一):编译原理概述以及程序设计语言的定义

    编译原理概述 什么是编译程序 编译程序指:把某一种高级语言程序等价地转换成另一张低级语言程序(如汇编语言或机器代码)的程序. 高级语言程序-翻译->机器语言程序-运行->结果. 其中编译程 ...

  4. kvo原理概述

    kvo概述 kvo,全称Key-Value Observing,它提供了一种方法,当对象某个属性发生改变时,允许监听该属性值变化的对象可以接受到通知,然后通过kvo的方法响应一些操作. kvo实现原理 ...

  5. 基于 EntityFramework 的数据库主从读写分离架构(1) - 原理概述和基本功能实现

        回到目录,完整代码请查看(https://github.com/cjw0511/NDF.Infrastructure)中的目录:      src\ NDF.Data.EntityFramew ...

  6. mysql之 MySQL 主从基于 GTID 复制原理概述

    一. 什么是GTID ( Global transaction identifiers ):MySQL-5.6.2开始支持,MySQL-5.6.10后完善,GTID 分成两部分,一部分是服务的UUid ...

  7. MySQL 索引原理概述及慢查询优化实战

    MySQL凭借着出色的性能.低廉的成本.丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库.虽然性能出色,但所谓“好马配好鞍”,如何能够更好的使用它,已经成为开发工程师的必修课,我们经常会从职位 ...

  8. LCD常用接口原理概述

    Android LCD(5)  平台信息:内核:linux2.6/linux3.0系统:android/android4.0 平台:samsung exynos 4210.exynos 4412 .e ...

  9. Linux的七个运行级别原理概述

    所谓运行级别,简单点来说,运行级别就是操作系统当前正在运行的功能级别.级别是从0到6,具有不同的功能.这些级别定义在/ect/inittab文件中.这个文件是init程序寻找的主要文件,最先运行的服务 ...

随机推荐

  1. LA3177长城守卫

    题意:      有n个人围成一个圈,每个人都有r[i]个礼物,任意两个相邻的人的礼物不能有重复的,问满足所有相邻不重复的最少礼物种数是多少?就是问最少多少种礼物能让任意相邻的两个人的礼物不重复. 思 ...

  2. Python爬虫之requests库的使用

    requests库 虽然Python的标准库中 urllib模块已经包含了平常我们使用的大多数功能,但是它的 API 使用起来让人感觉不太好,而 Requests宣传是 "HTTP for ...

  3. Windows PE 第四章 导入表

    第四章 导入表 导入表是PE数据组织中的一个很重要的组成部分,它是为实现代码重用而设置的.通过分析导入表数据,可以获得诸如OE文件的指令中调用了多少外来函数,以及这些外来函数都存在于哪些动态链接库里等 ...

  4. SpringBoot程序后台运行

    使用nohup命令让进程后台运行 nohup java -jar 自己的springboot项目.jar >日志文件名.log 2>&1 & >日志文件名.log : ...

  5. js 实现 bind 的这五层,你在第几层?

    最近在帮朋友复习 JS 相关的基础知识,遇到不会的问题,她就会来问我. 这不是很简单?三下五除二,分分钟解决. function bind(fn, obj, ...arr) { return fn.a ...

  6. SparkSQL电商用户画像(五)之用户画像开发(客户基本属性表)

    7.电商用户画像开发 7.1用户画像--数据开发的步骤 u 数据开发前置依赖 -需求确定 pv uv topn -建模确定表结构 create table t1(pv int,uv int,topn ...

  7. MySQL binlog_ignore_db 参数最全解析

    前言: 经过前面文章学习,我们知道 binlog 会记录数据库所有执行的 DDL 和 DML 语句(除了数据查询语句select.show等).注意默认情况下会记录所有库的操作,那么如果我们有另类需求 ...

  8. [bug] Junit initializationError

    原因 导包错误 解决 先删除 import org.junit.Test; 再导入正确的包 参考 https://blog.csdn.net/javae100/article/details/7978 ...

  9. 【转载】认识SSD的SATA、mSATA 、PCIe和M.2四种主流接口

    认识SSD的SATA.mSATA .PCIe和M.2四种主流接口 2018-09-25 • 工具 • 评论关闭 认识SSD的SATA.mSATA .PCIe和M.2四种主流接口

  10. Nginx——Docker下安装部署

    前言 Nginx 是一个高性能的 HTTP 和反向代理 web 服务器,同时也提供了 IMAP/POP3/SMTP 服务 . 一. 环境说明 docker: 18.09.9-ce nginx: 1.1 ...