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程序寻找的主要文件,最先运行的服务 ...
随机推荐
- 【JavaScript】Leetcode每日一题-移除元素
[JavaScript]Leetcode每日一题-移除元素 [题目描述] 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度. 不要使用 ...
- Eureka讲解与应用
Eureka[juˈriːkə] 简介 Eureka是Netflix服务发现的服务端与客户端,Eureka提供服务注册以及服务发现的能力,当是Eureka Server时(注册中心),所有的客户端会向 ...
- 多线程-4.wait() notify() notifyAll() 生产者消费者模型
1.wait()方法 该方法继承于Object类.在调用obj.wait()方法后,当前线程会失去obj的锁.待其他线程调用obj.notify()或notifyAll()方法后进入锁等待池,争抢到锁 ...
- 【2020BUAA软件工程】个人博客作业
个人作业博客 项目 内容 北航2020软工 班级博客 作业要求 具体要求 我的课程目标 学习软件工程,掌握团队合作,锻炼自我 作业在哪个方面帮助我实现目标 通读<构建之法>,尝试理解软件工 ...
- 6.注册CRT 以及SecureCRT访问
1.什么是 SecureCRT SecureCRT是一款支持SSH(SSH1和SSH2)的终端仿真程序,简单地说是Windows下登录Unix或Linux服务器主 机的软件. 1)准备工作:安装好Se ...
- 探索专有领域的端到端ASR解决之道
摘要:本文从<Shallow-Fusion End-to-End Contextual Biasing>入手,探索解决专有领域的端到端ASR. 本文分享自华为云社区<语境偏移如何解决 ...
- 查看 swappiness 值
Swap的使用频率 发表于 2017-06-02 | 分类于 Linux | 评论数: 通过调整swappiness的值, 可以调整系统使用 swap 的频率 该值越小, 表示越大限度的使用物理 ...
- 拉勾、Boss直聘、内推、100offer
BOSS直聘 拉勾.Boss直聘.内推.100offer
- python基础之python牛逼的设计模式
七大设计原则: 1.单一职责原则[SINGLE RESPONSIBILITY PRINCIPLE]:一个类负责一项职责. 2.里氏替换原则[LISKOV SUBSTITUTION PRINCIPLE] ...
- IDEA 全局搜索 Jar 包中源码内容
引言 项目开发过程中,经常遇到需要在依赖的 Jar 包查看源码,查找类方法和属性,介绍两种在 IDEA 中搜索 Jar 包内容的方式 方式一:双击 SHIFT 快捷键 输入需要查询的类名或方法名 方式 ...