构建可扩展的GPU加速应用程序(NVIDIA HPC

研究人员、科学家和开发人员正在通过加速NVIDIA GPU上的高性能计算(HPC)应用来推进科学发展,NVIDIA GPU具有处理当今最具挑战性的科学问题的计算能力。从计算科学到人工智能,GPU加速应用正在带来突破性的科学发现。流行的语言如C、C++、FORTRAN和Python正被用来开发、优化和部署这些应用程序。

面向HPC的GPU程序设计

NVIDIA GPU可以编程得很像CPU。从替换GPU优化的数学库开始。使用标准C++并行算法和FORTRAN语言特征添加附加加速度。最后,使用pragma®优化语言性能,并最终使用pragma®来优化性能。

库文件

GPU加速库是CPU库的一个简单替代品。

多GPU和多节点感知,NVIDIA GPU加速库为HPC应用程序中最常见的模式提供最佳性能。从各种常用的计算优化库中选择。

标准语言

标准C++和FORTRAN中的并行特性可以将例程映射到多核CPU或GPU的核心。

英伟达C++ 17编译器在标准模板库(STL)上增加对执行策略的支持,英伟达2008编译器的DO并发构造允许循环迭代而不依赖于相互依赖。

指令

基于指令的编程模型为GPU、CPU和其设备上的并行计算提供了一个简单的入口。

如果标准语言不具备获得良好性能所需的灵活性或特性,可以使用指令进行扩充,并保持可移植性以供其编译器和平台使用。

CUDA

CUDA是一个并行计算平台和编程模型,旨在为GPU加速应用程序提供最大的灵活性和性能。

为了最大化性能和灵活性,通过直接在CUDA C/C++或CUDA FORTRAN中编码来获得GPU硬件的最大值。

NVIDIA HPC SDK

一套针对HPC的编译器、库和工具

NVIDIA HPC软件开发工具包(SDK)包括经过验证的编译器、库和软件工具,这些工具对于最大限度地提高开发人员的工作效率以及HPC应用程序的性能和可移植性至关重要。

NVIDIA HPC SDK C、C++和FORTRAN编译器支持HPC建模和仿真应用程序的GPU加速,标准C++和FORTRAN、OpenACC®指令和CUDA®。GPU加速数学库最大限度地提高通用HPC算法的性能,优化的通信库支持基于标准的多GPU和可伸缩系统编程。性能分析和调试工具简化了HPC应用程序的移植和优化,而容器化工具可以方便地在本地或云中部署。通过对NVIDIA GPU和运行Linux的Arm、OpenPOWER或x86-64 cpu的支持,HPC SDK提供了构建NVIDIA GPU加速HPC应用程序所需的工具。

为什么要使用NVIDIA HPC SDK?

性能

广泛使用的HPC应用程序,包括VASP、Gaussian、ANSYS Fluent、GROMACS和NAMD,使用CUDA、OpenACC和GPU加速数学库为用户提供突破性的性能。可以使用这些相同的软件工具来加速应用程序,并实现戏剧性的加速和能源效率使用NVIDIA GPU。

便携性

为超过99%的当今500强系统构建和优化应用程序,包括基于NVIDIA gpu或x86-64、Arm或OpenPOWER cpu的系统。可以使用下拉库、C++ 17并行算法和OpenACC指令来加速GPU,并确保应用程序完全可移植到其编译器和系统。

生产力

利用单个集成套件最大限度地提高科学和工程吞吐量,并最大限度地缩短编码时间,该套件允许快速移植、并行化和优化GPU加速,包括用于多GPU和可伸缩计算的行业标准通信库,以及用于分析的分析和调试工具。

支持喜爱的编程语言

C++ 17并行算法

C++ 17并行算法使用标准模板库(STL)实现了便携式并行编程。英伟达HPCSDK C++编译器支持CPU上的完全C++ 17,并将并行算法卸载到Nvidia GPU,使得GPU编程没有指令、语法或注释。使用C++ 17并行算法的程序很容易移植到Linux、Windows和Mac OS的大多数C++实现。

Fortran 2003编译器

NVIDIA Fortran编译器支持Fortran 2003和Fortran 2008的许多功能。支持NVIDIA GPU上的OpenACC和CUDA Fortran,支持多核x86-64、Arm和OpenPOWER CPU的SIMD矢量化、OpenACC和OpenMP,具有在当今异构GPU加速HPC系统上移植和优化Fortran应用程序所需的功能。

OpenACC指令

NVIDIA FORTRAN,C++,C++编译器支持基于OpenACC指令的NVIDIA GPU和多核CPU的并行编程。已经使用OpenACC启动或启用了200多个HPC应用程序端口,包括VASP、Gaussian、ANSYS Fluent、WRF和mpa等生产应用程序。OpenACC是一个性能成熟的gpu和多核cpu的便携式指令解决方案。

主要特点

GPU数学库

cuBLAS和cuSOLVER库提供了GPU优化和多GPU实现,实现了LAPACK的所有BLAS例程和核心例程,并在可能的情况下自动使用NVIDIA GPU张量核心。cuFFT包括GPU加速的用于真实和复杂数据的1D、2D和3D FFT例程,cuSPARSE为稀疏矩阵提供基本的线性代数子程序。这些库可以从CUDA和OpenC程序中调用,是用C、C++和FORTRAN编写的。

针对张量核心优化

NVIDIA GPU张量核心使科学家和工程师能够使用混合精度或双精度来显著地加速合适的算法。NVIDIA HPCSDK数学库针对张量核心和多GPU节点进行了优化,以最小的编码工作量实现系统的全部性能潜力。使用NVIDIA Fortran编译器,可以通过将转换数组内部函数自动映射到cuTENSOR库来利用张量核心。

为CPU优化

异构HPC服务器使用gpu来加速计算,并使用基于x86-64、OpenPOWER或Arm指令集架构的多核cpu。所有这些CPU都支持NVIDIA编译器和工具,并且所有编译器优化都在支持CPU上完全启用。NVIDIA HPC SDK具有统一的特性、命令行选项、语言实现、编程模型、工具和库用户界面,简化了开发人员在各种HPC环境中的体验。

多GPU编程

NVIDIA集合通信库(NCCL)使用MPI兼容的all-gather、all-reduce、broadcast、reduce和reduce-scatter例程实现高度优化的多GPU和多节点集合通信原语,以利用HPC服务器节点内和跨HPC服务器节点的所有可用GPU。NVSHMEM实现了GPU内存的OpenSHMEM标准,并提供了多GPU和多节点通信原语,这些原语可以从主机CPU或GPU启动,也可以从CUDA内核中调用。

可扩展系统编程

MPI是分布式内存可伸缩系统编程的标准。NVIDIA HPC SDK包括一个支持GPUDirect的基于openmpi的CUDA感知MPI库™ 因此,可以使用远程直接内存访问(RDMA)直接发送和接收GPU缓冲区,包括在CUDA统一内存中分配的缓冲区。CUDA感知开放MPI完全兼容CUDA C/C++、CUDA FORTRAN和英伟达OpenACC编译器。

Nsight性能分析

N光™ Systems提供HPC服务器上应用程序性能的全系统可视化,使能够优化消除瓶颈,跨多核CPU和GPU扩展并行应用程序。Nsight Compute允许通过图形或命令行用户界面深入研究GPU加速应用程序的交互式分析器中的GPU内核,并允许使用NVTX API直接检测源代码的区域来查明性能瓶颈。

部署到任何地方

容器通过将应用程序及其依赖项绑定到可移植虚拟环境中,简化了软件部署。NVIDIA HPC SDK包含使用HPC容器生成器开发、分析和部署软件的说明,以简化容器映像的创建。NVIDIA容器运行时支持几乎所有容器框架的无缝GPU支持,包括Docker和Singularity。

用户所说的

“需要Fortran、C和C++编译器,支持用户需要的所有编程模型,并期望Nvidia GPU和AMD EPCC CPU-MPI、OpenMP、OpenACC、CUDA和优化的数学库。NVIDIA HPC SDK会检查所有这些框。”

程序怎么启动vasp_构建可扩展的GPU加速应用程序(NVIDIA HPC)相关推荐

  1. 构建可扩展的GPU加速应用程序(NVIDIA HPC)

    构建可扩展的GPU加速应用程序(NVIDIA HPC) 研究人员.科学家和开发人员正在通过加速NVIDIA GPU上的高性能计算(HPC)应用来推进科学发展,NVIDIA GPU具有处理当今最具挑战性 ...

  2. oracle注册服务到监听,监听程序未启动或数据库服务未注册到该监听程序解决方法-Oracle...

    监听程序未启动或数据库服务未注册到该监听程序解决方法 oracle中遇到"监听程序未启动或数据库服务未注册到该监听程序" 如下: C:\Users\zhou>emca -re ...

  3. iOS程序的启动过程介绍

    大家在学习iPhone开发时候,都会写HelloWorld程序.大家一般都是通过向导,生成项目,然后通过模拟器启动应用程序.但是大家知道其背后的启动过程吗?也就是当点击程序图标启动程序开始到退出程序整 ...

  4. Android应用程序内部启动Activity过程(startActivity)的源代码分析

    上文介绍了Android应用程序的启动过程,即应用程序默认Activity的启动过程,一般来说,这种默认Activity是在新的进程和任务中启动的:本文将继续分析在应用程序内部启动非默认Activit ...

  5. “应用程序配置不正确,程序无法启动”的解决方法资料收集

    http://hi.baidu.com/fairysky/blog/item/e7a8366dbaa735f3431694c8.html 先鄙视一下百度空间的编辑器,实在是太差了,在word编辑的东西 ...

  6. 因为应用程序配置不对,程序未能启动”--原因及解决方法

    因为应用程序配置不对,程序未能启动"--原因及解决方法 http://moogge.spaces.live.com/blog/cns!ab9b00d806d52aed!245.entry 问 ...

  7. 由于应用程序配置不正确,程序未能启动”--原因及解决方法

    由于应用程序配置不正确,程序未能启动"--原因及解决方法 http://moogge.spaces.live.com/blog/cns!ab9b00d806d52aed!245.entry ...

  8. chrome 使用gpu 加速_DLI每周一课|用CUDA C的GPU加速库加速应用程序(新人有礼)

    课程名称:使用 CUDA C/C++ 中的 GPU 加速库加速应用程序 学习模式:随时随地在线自学,并在云端GPU服务器上进行实践练习 预备知识:"使用 CUDA C/C++ 加速应用程序& ...

  9. 嵌入式linux+程序构架,从头开始构建一个嵌入式 Linux 发行版

    开始之前 目标 本教程展示如何在一个目标系统上安装 Linux.这不是一个预先构建的 Linux 发行版,而是您从头构建发行版.虽然在不同目标系统上安装 Linux 的过程在细节上有差异,但总的原则是 ...

最新文章

  1. LIVE 预告 | CMU研究者:解放审稿人,AI可以帮我们实现自动审稿吗?
  2. java b2b2c开源商城系统源码
  3. freeCodeCamp:Find the Longest Word in a String
  4. excel柱状图堆叠图显示总和_Excel 的堆积柱形图上,怎样才能显示堆积图的总和?...
  5. 日常检查IBM P系列小型机状态的项目及其相关命令
  6. linux获取文件的md5,linux shell 获取文件md5的命令linux操作系统 -电脑资料
  7. 深度学习TF—14.WGAN原理及实战
  8. 23种设计模式(五)单一职责之装饰模式
  9. LoadRunner函数的介绍
  10. 2020低压电工模拟考试系统及低压电工考试软件
  11. 科学计算机imissyou,imissyou是什么意?imissyou – 手机爱问
  12. Presto(即席查询)笔记
  13. 在浏览器中清除缓存和 Cookies
  14. BES2300x笔记(4) -- TWS组对与蓝牙配对(Peer or Pair傻傻分不清)
  15. php实现pdhf2加密,搞了一天半了,可恶的加密代码解决方案
  16. win10共享打印机 报错 709 57
  17. 【MySQL】数据库表操作
  18. iOS - UILabel点击选中文字,部分高亮,YYLabel
  19. 阿里云视频点播的使用(SDK调用示例的运行)
  20. 支持语音记事的便签怎么将声音文件转文字保存

热门文章

  1. visual studio c/c++变量内存地址里的cc是什么意思?
  2. SpringBoot 序列化与反序列化日期类型参数
  3. 小米kali linux蓝牙,小米筆記本在Kali Linux下所遇問題部分解決方案(持續更新中)...
  4. resultset需要关闭吗_微信视频号能关闭吗?怎么操作?3秒教你搞定
  5. linux jdk安装_linux运维 - 用脚本快速安装jdk
  6. unity3d读取android文本文件,职场小白求助Unity项目Android端读取CSV文本问题
  7. 创建商品类java_SSH框架网上商城项目第9战之添加和更新商品类别功能实现
  8. spring el表达式 if else_vue指令集合:v-for,v-show,v-if等
  9. android如何设置软件的版本,假的设置软件-假的设置(型号模拟)下载v2.5 安卓版-西西软件下载...
  10. tomcat mysql eclipse_eclipse与tomcat及javaweb和mysql相关内容