NVIDIA Lib

NVIDIA官网提供四大类的帮助文档,其中本文以这四类为基础提供有可能在高性能计算上使用的library。

1. CUDA Toolkit Documentation

==========================

1.1 AmgX


AmgX提供了一个简单路径来加速对英伟达 GPU核心solver技术。它是一种高性能、以及包括柔性 state-of-the-art函数库求解器的组合系统 ,用户可以轻松地构建复杂的嵌套迭代法求解等。AmgX库提供很多优化方法,灵活地选择solver的构造方法,而且通过基于C的并行API来加速。通过使用AmgX库的method和tool,开发者能够很容易地创建指定的solver。

1.2 cuDNN


NVIDIA CUDA Deep Neural Network library(cuDNN)原始是一个为深度神经网络(deep neuralnetworks)的GPU加速库。它强调性能、易用性和低内存开销。NVIDIAcuDNN可以集成到更高级别的机器学习框架中,如加州大学伯克利分校的流行CAFFE软件。简单的,插入式设计可以让开发人员专注于设计和实现神经网络模型,而不是调整性能,同时还可以在GPU上实现高性能现代并行计算。

1.3 cuFFT


NVIDIA CUDA Fast Fourier Transform library(cuFFT) 可提供一个简单的接口,让计算 FFT的速度最高提升 10 倍。 通过利用英伟达 GPU 中数以百计的处理器核心,cuFFT让开发者无需开发自己的定制 GPU FFT 软件,即可实现 GPU 的浮点性能。

1.4 NPP


NVIDIA Performance Primitives library (NPP)是一系列 GPU 加速的图像、视频以及信号处理函数,与同级别的纯 CPU函数相比,这些函数最高可实现 5 - 10 倍性能提升。 利用 NPP,开发者能够利用 (CUDA4.1 中) 2000多个图像处理与信号处理基元,在数小时之内即可实现应用程序的大幅性能提升。
无论用 GPU 加速的版本代替 CPU 基元还是将 NPP 基元与现有的 GPU加速流水线相结合,NPP 都能够实现极高的性能,同时可缩短开发时间。

1.5 CHOLMOD


CHOLMOD是一个针对sparse Choleskyfactorization的高性能库,CHOLMOD是线性代数SuiteSparse包的一部分,在工业界和学术界已经非常普遍的使用SuiteSparse和CHOLMOD。

1.6 cuBLAS-XT


cuBLAS-XT是一款 GPU 加速版本的完整标准BLAS 库,与最新的 MKL BLAS 相比,可实现 6 - 17 倍性能提升。CULA Tools 和 MAGMA等异构 LAPACK 库是在 cuBLAS 库中 GPU 加速 BLAS例程的基础上开发的,因而开发者也能够使用到这些内容。

1.7 CULA


CULA是一个基于GPU加速的线性代数库,其利用CUDA并行计算框架来提升对复杂的数学运算速度。因为它不需要cuda编程经验,所以CULA很容易使用。CULA有三个版本:Basic, Premium,Commercial。每个版本提供的功能、特性和支持都不相同。

1.8 MAGMA


MAGMA是下一代线性代数例程的一个合集。这些例程专为异构 GPU 架构而设计。 支持当前的 LAPACK 和 BLAS 标准。

1.9 IMSL


IMSL Fortran Numerical Library是由RogueWave 开发,能够将计算工作移交给 GPU 的一套广泛的数学与统计函数。

1.10 cuSPARSE


[CUDA Sparse Matrix library(https://developer.nvidia.com/cusparse) (cuSPARSE)可提供一整套用于稀疏矩阵的基本线性代数子例程,这些子例程与最新的 MKL相比最高可实现 8 倍性能提升。 cuSPARSE 库的设计目的是让开发者从 C 或 C++进行调用,最新版本包含一个稀疏三角解算器。

1.11 cuRAND


[CUDA Random Number Generation library(https://developer.nvidia.com/curand)(cuRAND) 可执行高质量的 GPU 加速随机数字生成任务,比仅使用 CPU 的一般代码快 8倍以上。

1.12 Thrust


Thrust是一款功能强大且开放源码的库,其中包含了诸多并行算法和数据结构。只需区区几行代码即可执行GPU加速的排序、扫描、转换以及约减等操作。

1.13 NVBIO


NVBIO是一款基于C++框架的GPU加速库,其能够对短和长读一致性进行高吞吐量的序列分析,并且其模块库中包含数据结构、算法和使用的应用程序。通过NVBIO可以在CPU-GPU和CPU-only上建立复杂的计算基因组学。

2. NVIDIA GameWorks Documentation

==============================

2.1 GameWorks Library


NVAPI是NVIDIA的core软件开发kit,通过其可以直接访问NVIDIA的GPU和驱动,但其只能在
Microsoft Windows平台。NVIAPI提供的功能包括如下:

  • Driver Management: Initialization and driver version controls.

  • GPU Management: Enumeration of physical and logical GPUs. Thermal and
    Cooling controls.

  • Display Management: Enumeration of NVDIA displays, display postion and
    timings controls.

  • System Management: Ability to query chipset and system specific
    information.

  • Connecting and Configuring Monitors: Ability to set views on multiple
    target monitors.

其中与高性能计算有关的API是在GPU APIs子目录下的GPU Performance State
Interface

2.2 Developer Tools


NVIDIA Developer
Tools
根据在不同平台的开发需要,提供了三种工具,分别是:

  • NVIDIA Nsight Visual Studio Edition:适用于windows平台;

  • Linux Graphics Debugger:显然是适用于Linux平台;

  • Mobile Developer Tools:适用于移动开发。

2.3 SLI


SLI是Scalable
Link
Interface的缩写,是一种多GPU配置结构,其通过增加多个GPU负载来提高表现性能。对于拥有多个GPU的计算机可能应用这种技术可以提供相应的性能。其中SLI拥有如下的五种模型,具体内容可以参考NVIDIA官网

  • Alternate Frame Rendering (AFR)

  • Split Frame Rendering (SFR)

  • Boost Performance Hybrid SLI

  • SLIAA

  • Compatibility mode

3. GPU Management & Deployment Documentation

=========================================

3.1 NVML API


NVIDIA Management Library
(NVML)是一个基于C的接口库,通过其可以管理和监控GPU的多种状态,并且NVML在多线程编程中是一种线程安全的调用。

  1. 支持的操作系统
  • Windows: Windows Server 2008 R2 64-bit, Windows Server 2012 R2 64bit,
    Windows 7-8 64-bit

  • Linux: 32-bit and 64-bit

  1. 支持的产品
  • Full Support

  • NVIDIA Tesla Line:

  • S2050, C2050, C2070, C2075,

  • M2050, M2070, M2075, M2090,

  • X2070, X2090,

  • K8, K10, K20, K20X, K20Xm, K20c, K20m, K20s, K40c, K40m, K40t, K40s, K40st,
    K40d, K80

  • NVIDIA Quadro Line:

  • 410, 600, 2000, 4000, 5000, 6000, 7000, M2070-Q

  • K2000, K2000D, K4000, K5000, K6000

  • NVIDIA GRID Line:

  • K1, K2, K340, K520

  • NVIDIA GeForce Line: None

  • Limited Support

  • NVIDIA Tesla Line: S1070, C1060, M1060 and all other previous generation
    Tesla-branded parts

  • NVIDIA Quadro Line: All other current and previous generation Quadro-branded
    parts

  • NVIDIA GeForce Line: All current and previous generation GeForce-branded
    parts

  1. 相关API

NVML API可以分为五类:

  • Support Methods:

  • Initialization and Cleanup

  • Query Methods:

  • System Queries

  • Device Queries

  • Unit Queries

  • Control Methods:

  • Unit Commands

  • Device Commands

  • Event Handling Methods:

  • Event Handling Methods

  • Error reporting Methods

  • Error Reporting

其中本文将与高性能计算有关的API列在表中。

表 1

method Description
nvmlDeviceGetAPIRestriction 查询指定API的root/admin权限。
nvmlDeviceGetAutoBoostedClocksEnabled 查询当前auto boosted clocks的状态,auto boosted clocks允许在理论值条件下运行比较高的时钟频率,从而最大率的提供性能。
nvmlDeviceGetBrand 查询设备的型号。
nvmlDeviceGetClockInfo 查询当前设备的时钟频率。
nvmlDeviceGetComputeRunningProcesses 查询运行状态的进程数量,返回的信息是动态变化的。
nvmlDeviceGetCount 查询当前系统中GPU的数量。
nvmlDeviceGetDecoderUtilization 查询Decoder的当前的使用率。
nvmlDeviceGetEncoderUtilization 查询Encoder的当前的使用率。
nvmlDeviceGetFanSpeed 查询设备的fan速。
nvmlDeviceGetGraphicsRunningProcesses 查询当前设备上下文的与graphics有关的进程。
nvmlDeviceGetMaxClockInfo 查询设备的最大时钟频率。
nvmlDeviceGetMemoryInfo 查询设备上已被使用、可被使用和总共的存储空间数量。
nvmlDeviceGetMinorNumber 查询设备的minor数量,
nvmlDeviceGetMultiGpuBoard 查询主板是否支持多GPU。
nvmlDeviceGetPerformanceState 查询当前设备的性能状态。
nvmlDeviceGetPersistenceMode 查询当前设备的持久化模型。
nvmlDeviceGetSupportedMemoryClocks 查询可以使用的memory时钟。
nvmlDeviceGetTemperature 查询当前设备的温度。
nvmlDeviceGetTemperatureThreshold 查询设备的温度极限。
nvmlDeviceGetUtilizationRates 查询设备主要子系统的当前利用率。
nvmlDeviceResetApplicationsClocks 重置设备的应用时钟。
nvmlUnitGetCount 查询系统的units数量。
nvmlUnitGetFanSpeedInfo 查询unit的fan速。
nvmlDeviceSetAPIRestriction 改变root/admin对指定API的限制。
nvmlDeviceSetComputeMode 设置设备的计算模型。
nvmlDeviceSetDriverModel 设置设备的驱动模型。
nvmlDeviceSetPersistenceMode 设置设备的持久化模型。

3.2 Multi-Process Service


Multi-Process Service
(MPS)是一个可选的、二进制兼容的CUDA
API实现。MPS运行框架的设计是为了支持交互式的多进程CUDA应用程序,特别是MPI工作,并且为了在最新版本的GPU上利用Hyper-Q能力。Hyper-Q允许CUDA核函数能在同一块GPU设备上并发执行,这样可以提供GPU的计算性能。如图
1所示。

图 1.png

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,311评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,339评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,671评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,252评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,253评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,031评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,340评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,973评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,466评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,937评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,039评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,701评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,254评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,259评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,485评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,497评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,786评论 2 345

推荐阅读更多精彩内容