cuGraph-GPU图形分析

所述RAPIDS cuGraph库是GPU的集合加速图形算法,在GPU DataFrames中发现过程数据。cuGraph的愿景是使图分析无处不在,以至于用户只是根据分析而不是技术或框架来思考。为了实现这一构想,cuGraph操作时,在Python的层,在GPU上DataFrames,从而允许无缝传递ETL任务之间的数据的cuDF和机器学习任务cuML。熟悉Python的数据科学家将迅速了解cuGraph如何与cuDF的类似Pandas的API集成。同样,熟悉NetworkX的用户将迅速认识cuGraph中提供的类似NetworkX的API,其目标是允许以最小的努力将现有代码移植到RAPIDS中。对于熟悉C ++ / CUDA和图形结构的用户,还提供了C ++ API。但是,C ++层的类型和结构检查较少。

有关更多项目详细信息,请参见Rapids.ai

注意:有关最新的稳定README.md,确保位于最新的分支上。

进口 书法

#使用read_csv数据读入一个cuDF数据帧

GDF  =  cudf。read_csv(“ graph_data.csv”,名称= [ “ src”,“ dst” ],dtype = [ “ int32”,“ int32” ])

import cugraph

# read data into a cuDF DataFrame using read_csv

gdf = cudf.read_csv("graph_data.csv", names=["src", "dst"], dtype=["int32", "int32"])

# We now have data as edge pairs

# create a Graph using the source (src) and destination (dst) vertex pairs

G = cugraph.Graph()

G.from_cudf_edgelist(gdf, source='src', destination='dst')

# Let's now get the PageRank score of each vertex by calling cugraph.pagerank

df_page = cugraph.pagerank(G)

# Let's look at the PageRank Score (only do this on small graphs)

for i in range(len(df_page)):

print("vertex " + str(df_page['vertex'].iloc[i]) +

" PageRank is " + str(df_page['pagerank'].iloc[i]))

支持的算法

支持图

支持的数据类型

cuGraph支持创建几种数据类型的图形:

  • cuDF DataFrame
  • Pandas DataFrame

cuGraph支持执行来自不同图形对象的图形算法

  • cuGraph图类
  • NetworkX图类
  • CuPy稀疏矩阵
  • SciPy稀疏矩阵

cuGraph尝试根据输入类型匹配返回类型。因此,NetworkX输入将返回与NetworkX相同的数据类型。

cuGraph注意

当前版本的cuGraph有一些限制:

  • 顶点ID应该是从0开始的连续整数。

cuGraph提供了重新编号功能来缓解此问题,默认情况下,将数据添加到图形时会自动调用该功能。重编号函数的输入顶点ID可以是任何类型,可以是非连续的,可以是多列,并且可以从任意数字开始。重新编号功能将提供的输入顶点ID映射到从0开始的32位连续整数。cuGraph仍然要求重新编号的顶点ID必须以32位整数表示。这些限制已得到解决,将很快修复。

此外,使用自动重编号功能时,结果中的顶点会自动取消编号。

cuGraph不断更新和改进。如果新版本遇到错误,请参阅《Transition Guide》

图形大小和GPU内存大小

所需的内存量取决于图形结构和执行的分析。根据一条简单的经验法则,GPU内存量应约为数据大小的两倍。这给CSV 数据读取和其它转换功能带来了开销。有很多方法可以使用规则,但是使用较小的数据块。

使用托管内存进行超额预订也可以超出上述内存限制。

获取cuGraph

介绍

有三种获取cuGraph的方法:

Quick start with Docker Demo Repo

Conda Installation

Build from Source

快速开始

参阅Demo Docker Repository,根据运行的NVIDIA CUDA版本选择一个标签。这提供了一个带有示例笔记和数据的可立即运行的Docker容器,展示了如何利用所有RAPIDS库:cuDF,cuML和cuGraph。

Conda

使用conda安装cuGraph很容易。可以使用Miniconda进行最小的conda安装,也可以使用Anaconda进行完整的安装。

使用conda命令安装和更新cuGraph:

# CUDA 10.1

conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults cugraph cudatoolkit=10.1

# CUDA 10.2

conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults cugraph cudatoolkit=10.2

# CUDA 11.0

conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults cugraph cudatoolkit=11.0

注意:此conda安装仅适用于Linux和Python版本3.7 / 3.8。

https://github.com/rapidsai/cugraph

cuGraph-GPU图形分析的更多相关文章

  1. Cacti 是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具

    Cacti 是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具. mysqlreport是mysql性能监测时最常用的工具,对了解mysql运行状态和配置调整都有很大 ...

  2. openerp学习笔记 统计、分析、报表(过滤条件向导、分组报表、图形分析、比率计算、追加视图排序)

    待解决:图形中当改变分组时,图例不正确            存储比率计算时,分组合计不正确 wizard:过滤条件向导,用于输入过滤条件 wizard/sale_chart.py # -*- cod ...

  3. GPU图形绘制管线简介

    (阅读GPU+编程与CG+语言之阳春白雪下里巴人所得总结) GPU图形绘制管线是描述GPU渲染(把三维世界显示为屏幕上的二维图像)的流程,主要分为三个主要阶段应用程序阶段.几何阶段.光栅阶段. 1.应 ...

  4. (转)GPU图形绘制管线

    摘抄“GPU Programming And Cg Language Primer 1rd Edition” 中文名“GPU编程与CG语言之阳春白雪下里巴人”第二章. 图形绘制管线描述GPU渲染流程, ...

  5. 浅谈 GPU图形固定渲染管线

    图形渲染管道被认为是实时图形渲染的核心,简称为管道.管道的主要功能是由给定的虚拟摄像机.三维物体.灯源.光照模型.纹理贴图或其他来产生或渲染一个二维图像.由此可见,渲染管线是实时渲染技术的底层工具.图 ...

  6. 西川善司【神秘海域(Uncharted)】的图形分析

          本文是为传播0月8日发售的[神秘海域 合集]魅力而短篇连载的第2回,这次主要集中在神秘海域系列的图形的技术方面.原文链接在 http://weekly.ascii.jp/elem/000/ ...

  7. CAD和GIS绘制图形分析

    开发CAD和GIS绘图系统有些区别,自己试着分析一下. ♠ 首先CAD图形绘制主要管理图形,因此会有一个抽象的Geometry对象,软件维护一个Geometry对象的集合.如果以图层来管理几何图形,则 ...

  8. tableau中图形分析相关设置

    1.柱形堆叠图单元格顶部显示总计值(可通过参考线实现) 2.调节图形单元格的宽窄度 (ctrl + 右键/左键) 3.折线图预测区间 趋势区间线 分析中预测并不是针对所有的日期格式均其作用,比如日期格 ...

  9. mesos支持gpu代码分析以及capos支持gpu实现

    这篇文章涉及mesos如何在原生的mesoscontainerizer和docker containerizer上支持gpu的,以及如果自己实现一个mesos之上的framework capos支持g ...

随机推荐

  1. hdu4530 水题

    题意: 小Q系列故事--大笨钟 Time Limit: 600/200 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Total ...

  2. Linux中Tomcat和Jboss的安装和部署

    目录 JDK环境 yum源安装JDK 源码包安装JDK Tomcat的安装 yum源安装 目录结构: 源码包安装 目录结构: 目录中主要的文件: JBoss的安装 目录结构: Tomcat是Apach ...

  3. 8.PHP图像处理

    PHP图像处理 GD2 Jpgraph 创建一个画布: <?php    header('content-type:image/gif');    //echo "你好";  ...

  4. node-多进程

    Node.js 是以单线程的模式运行的,但它使用的是事件驱动来处理并发,这样有助于我们在多核 cpu 的系统上创建多个子进程,从而提高性能. 每个子进程总是带有三个流对象: child.stdin, ...

  5. WPF中属性经动画处理后无法更改的问题

    在WPF的Animation中,有一个属性为FillBehavior,用于指定时间线在其活动周期结束后但其父时间线仍处于活动周期或填充周期时的行为方式.如果希望动画在活动周期结束时保留其值,则将动画F ...

  6. 【SpringMVC】添加操作时返回400

    本博客老魏原创,如需转载请留言 问题描述: springmvc向数据库添加新的记录时,发生400错误,控制台没有抛出异常. 问题原因: 视图中的提交数据的某一个字段不不匹配导致. 解决方法: 不要怀疑 ...

  7. Hive解析Json数组超全讲解

    在Hive中会有很多数据是用Json格式来存储的,如开发人员对APP上的页面进行埋点时,会将多个字段存放在一个json数组中,因此数据平台调用数据时,要对埋点数据进行解析.接下来就聊聊Hive中是如何 ...

  8. 一个入门级CTF的Reverse

    这道题是XCTF攻防世界上的一道新手入门题目! 年前刚接触逆向时IDA,OD了这些工具都不会用(负基础),当时做这些题的时候觉得挺难(主要是缺少练习,没思路无从下手).现在回头再来看这些题目感觉确实是 ...

  9. leetcode 1081

    开始的思路是遍历存储每个字符的所有位置,再进行扫描处理,但是实际操作并没有很熟练,于是在讨论区学习后,有了下面的解法! 首先需要知道不同的字符在字符串中的最后的位置(理论上的最优位置) 然后扫描字符串 ...

  10. [操作系统知识储备,进程相关概念,开启进程的两种方式、 进程Queue介绍]

    [操作系统知识储备,进程相关概念,开启进程的两种方式.进程Queue介绍] 操作系统知识回顾 为什么要有操作系统. 程序员无法把所有的硬件操作细节都了解到,管理这些硬件并且加以优化使用是非常繁琐的工作 ...