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. 【CPU100%排查】CPU100%问题排查方案

    1.使用top -c 查看CPU 占用情况 ,按P(大写)可以倒序查看占CPU占用率  2.找到占用率高的进程以后,再定位到具体线程 比如 此时进程ID 14724 CPU占用高,进一步使用top - ...

  2. 【转】如何用MTR诊断网络问题

    MTR 是一个强大的网络诊断工具,管理员能够用它诊断和隔离网络错误,并向上游提供商提供有关网络状态的有用报告.MTR 通过更大的采样来跟踪路由,就像 traceroute + ping 命令的组合.本 ...

  3. 病毒木马查杀实战第021篇:Ring3层主动防御之编程实现

    前言 我们这次会依据上次的内容,编程实现一个Ring3层的简单的主动防御软件.整个程序使用MFC实现,程序开始监控时,会将DLL程序注入到explorer.exe进程中,这样每当有新的进程创建,程序首 ...

  4. Service Started!!!-end In Service while

    将原先的win7换成了xp,用体验换来更好的兼容 问题如下: 在虚拟机器中运行了DebugView后,就一直重复出现Service Started!!!-end In Service while, 虽 ...

  5. 学习Canvas绘图与动画基础 canvas入门(一)

    一.创建canvas 1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <meta char ...

  6. <JVM中篇:字节码与类的加载篇>04-再谈类的加载器

    笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...

  7. 源码分析SpringCloud Gateway如何加载断言(predicates)与过滤器(filters)

    我们今天的主角是Gateway网关,一听名字就知道它基本的任务就是去分发路由.根据不同的指定名称去请求各个服务,下面是Gateway官方的解释: https://spring.io/projects/ ...

  8. SpringBoot 项目 部署 war方式

    SpringBoot部署 –war方式 步骤1部署方式 Springboot 和我们之前学习的web 应用程序不一样,其本质上是一个 Java 应用程序,那么又如何部署呢? 通常来说,Springbo ...

  9. 【报错】No converter found for return value of type: class java.util.HashMap

    ssm开发碰到的错误 @ResponseBody的作用是是将java对象转为json格式的数据 @ResponseBody注解标识该方法的返回值直接写回到HTTP响应体中去(而不会被被放置到Model ...

  10. CM5.11与CDH5.11安装使用说明

    1.cdh5 支持jdk7和jdk82.cloudera只支持oracle发布的jdk3.集群中所有主机的jdk版本必须一致4.生态圈中用到的所有组件所依赖的jdk版本必须一致5.cloudera m ...