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. JavaScript动态设置div的样式的方法

    有时候需要根据需要动态设置div的样式,当然对于稍有经验的javascript开发者来说,这一切都是那么的简单,但是对于初学者或者说没有相关经验的开发者来说可能就是一个不大不小的难关,下面就通过实例简 ...

  2. POJ3070矩阵快速幂简单题

    题意:       求斐波那契后四位,n <= 1,000,000,000. 思路:        简单矩阵快速幂,好久没刷矩阵题了,先找个最简单的练练手,总结下矩阵推理过程,其实比较简单,关键 ...

  3. hdu3374最小表示法+KMP

    题意:       给你一个最长100W的串,然后让你找到最小同构子串,还有最大同构子串的下标,最小同构子串就是把字符串连接成一个环,然后选择一个地方断开,得到的一个ASCII最小的子串(求最大同理) ...

  4. UVA11174村民排队问题

    题意:      有n个人要排队,给你一些父子关系,要求儿子不能站在自己的父亲前面,问有多少种排队方式? 思路:       白书上的题目,首先我们可以把关系建成树,这样我们就有可能得到一个森林(或者 ...

  5. c# 通过 p/invoke 使用 c的加密程序 参数传递问题

    最近项目中使用需要上位机和下位机通过rs232通信,涉及到通讯加密问题, 硬件那边主要是pcb layout的,于是我就把加密的活拦了过来,锻炼锻炼 首先说明问题: 在c中,加密解密都测试通过,然后在 ...

  6. ERROR: Symbol file could not be found 寒江孤钓<<windows 内核安全编程>> 学习笔记

    手动下载了Symbols,设置好了Symbols File Path,串口连接上了以后,出现ERROR: Symbol file could not be found, 并且会一直不停的出现windb ...

  7. Hack The Box - Archetype

    攻略的话在靶场内都有,也有官方的攻略,我作为一个技术小白,只是想把自己的通关过程记录下来,没有网站内大佬们写得好 我们获得了一个IP: 尝试访问了一下,应该不存在web页面: 对常规端口进行一个扫描: ...

  8. Form-OCR & CSDNAPP初体验

    项目 内容 课程:北航2020春软件工程 博客园班级博客 作业:阅读并撰写博客回答问题 软件案例分析 我在这个课程的目标是 全面地评价一个软件 这个作业在哪个具体方面帮助我实现目标 明确软件开发过程中 ...

  9. Dart 2.13 版现已发布

    作者 / Kevin Moore & Michael Thomsen Dart 2.13 版现已发布,其中新增了类型别名功能,这是目前用户呼声第二高的语言功能.Dart 2.13 还改进了 D ...

  10. C#类中方法的执行顺序

    有些中级开发小伙伴还是搞不太明白在继承父类以及不同场景实例化的情况下,父类和子类的各种方法的执行顺序到底是什么,下面通过场景的举例来重新认识下方法的执行顺序: (下面内容涉及到了C#中的继承,构造函数 ...