cuda new features and updates - nvidia · 2019-11-22 · 4 cuda 10.2 platform support new os and...

33
Stephen Jones, SC’19 CUDA NEW FEATURES AND UPDATES

Upload: others

Post on 25-May-2020

9 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CUDA NEW FEATURES AND UPDATES - NVIDIA · 2019-11-22 · 4 CUDA 10.2 PLATFORM SUPPORT New OS and Host Compilers PLATFORM OS VERSION COMPILERS Linux 18.04.3 LTS 16.04.6 LTS GCC 8.x

Stephen Jones, SC’19

CUDA NEW FEATURES AND UPDATES

Page 2: CUDA NEW FEATURES AND UPDATES - NVIDIA · 2019-11-22 · 4 CUDA 10.2 PLATFORM SUPPORT New OS and Host Compilers PLATFORM OS VERSION COMPILERS Linux 18.04.3 LTS 16.04.6 LTS GCC 8.x

2

ANNOUNCING CUDA 10.2Download today at: https://developer.nvidia.com/cuda-downloads

Plus Compiler, Tools and Library Enhancements & Performance Improvements

See Release Notes for details: https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html#title-new-features

Standard LanguageSupport

Task GraphEnhancements

Low-LevelMemory Management

Page 3: CUDA NEW FEATURES AND UPDATES - NVIDIA · 2019-11-22 · 4 CUDA 10.2 PLATFORM SUPPORT New OS and Host Compilers PLATFORM OS VERSION COMPILERS Linux 18.04.3 LTS 16.04.6 LTS GCC 8.x

3HPC Apps: AMBER, Chroma, GROMACS, GTC, LAMMPS, MILC, NAMD, QE, RTM, SPECFEM3D, VASP

0x

4x

8x

12x

16x

20x

24x

Nov-16 Mar-17 Nov-17 Mar-18 Nov-18

HPC Applications Speedup

CUDA 8CUBLAS 8CUFFT 8

CUDA 10CUBLAS 10CUFFT 10

2x Broadwell vs 4xP100 2x Broadwell vs 4xV100

2Xon same hardware

ACCELERATED COMPUTINGIS FULL-STACK OPTIMIZATION

2X More Performance With Software Optimizations Alone

Page 4: CUDA NEW FEATURES AND UPDATES - NVIDIA · 2019-11-22 · 4 CUDA 10.2 PLATFORM SUPPORT New OS and Host Compilers PLATFORM OS VERSION COMPILERS Linux 18.04.3 LTS 16.04.6 LTS GCC 8.x

4

CUDA 10.2 PLATFORM SUPPORTNew OS and Host Compilers

PLATFORM OS VERSION COMPILERS

Linux

18.04.3 LTS

16.04.6 LTS

GCC 8.x

PGI 19.x

Clang 7.0.x

Clang 8

ICC 19

XLC 16.1.x (POWER)

CentOS 7.7

RHEL 8.1

SLES 15.1

SLES 12.4

Fedora 29

Leap 15.x

Windows Windows Server

2019

2016

2012 R2

Microsoft

Visual Studio 2017 (15.x)

Microsoft Visual Studio 2019

Mac macOS 10.13.6 Xcode 10.2

Page 5: CUDA NEW FEATURES AND UPDATES - NVIDIA · 2019-11-22 · 4 CUDA 10.2 PLATFORM SUPPORT New OS and Host Compilers PLATFORM OS VERSION COMPILERS Linux 18.04.3 LTS 16.04.6 LTS GCC 8.x

5

NVIDIA ACCELERATES HPC APPLICATIONS ON ARM For more information: https://developer.nvidia.com/cuda-toolkit/arm

Benchmark Application [Dataset]: GROMACS [ADH Dodec- Dev Sandbox], LAMMPS [LJ 2.5], MILC [Apex Medium], NAMD [apoa1_npt_cuda], Quantum

Espresso [AUSURF112-jR], Relion [Plasmodium Ribosome] , SPECFEM3D [four_material_simple_model];

CPU node: 2x ThunderX2 9975; GPU node: 2x ThunderX2 + 2x V100 32GB PCIe. GROMACS and MILC data is for 1x V100 32GB PCIe

GPU

Speedup

ThunderX2 + V100 Application Performance

7x

20x

7x

13x

10x

15x

0x

5x

10x

15x

20x

25x

GROMACS LAMMPS MILC NAMD QE Relion

Page 6: CUDA NEW FEATURES AND UPDATES - NVIDIA · 2019-11-22 · 4 CUDA 10.2 PLATFORM SUPPORT New OS and Host Compilers PLATFORM OS VERSION COMPILERS Linux 18.04.3 LTS 16.04.6 LTS GCC 8.x

6

TESLA DRIVERS AND COMPATIBILITY

Long Term Service Branch (LTSB)

One per GPU architecture (i.e. major CUDA release such as CUDA 10.0)

Supported for up to 3 years

R418 is the first LTSB

CUDA compatibility will be supported for the lifetime of the LTSB

Run New Versions Of CUDA Without Upgrading Kernel Drivers

Driver BranchCUDA 10

CompatibleCUDA 10.2 Compatible

CUDA 9.0 Yes Yes

CUDA 9.1 No No

CUDA 9.2 No Yes

CUDA 10.0 - Yes

CUDA 10.1 - Yes

Full compatibility matrix: https://docs.nvidia.com/deploy/cuda-compatibility/index.html

Page 7: CUDA NEW FEATURES AND UPDATES - NVIDIA · 2019-11-22 · 4 CUDA 10.2 PLATFORM SUPPORT New OS and Host Compilers PLATFORM OS VERSION COMPILERS Linux 18.04.3 LTS 16.04.6 LTS GCC 8.x

7

CUDA CONTAINERS ON NVIDIA GPU CLOUD

CUDA containers available from NGC Registry at nvcr.io/nvidia/cuda

Three different flavors:

Base

Contains the minimum components required to run CUDA applications

Runtime

Contains base + CUDA libraries (e.g. cuBLAS, cuFFT)

Devel

Contains runtime + CUDA command line developer tools. Some devel tags also include cuDNN

Page 8: CUDA NEW FEATURES AND UPDATES - NVIDIA · 2019-11-22 · 4 CUDA 10.2 PLATFORM SUPPORT New OS and Host Compilers PLATFORM OS VERSION COMPILERS Linux 18.04.3 LTS 16.04.6 LTS GCC 8.x

8

GRAPH UPDATE: MUTABLE PARAMETERSNew In CUDA 10.2

Stream Launch Graph Re-Launch

A

B

C

A

B

C

repeat 10 times

?

launchgraph

iterate 10 times

Define

Graph

A

B

C

Parameters: may change

Topology: may change

Parameters: may not change

Topology: may not change

Page 9: CUDA NEW FEATURES AND UPDATES - NVIDIA · 2019-11-22 · 4 CUDA 10.2 PLATFORM SUPPORT New OS and Host Compilers PLATFORM OS VERSION COMPILERS Linux 18.04.3 LTS 16.04.6 LTS GCC 8.x

9

GRAPH UPDATE: MUTABLE PARAMETERSNew In CUDA 10.2

Stream Launch Graph Update Graph Re-Launch

A

B

C

A

B

C

repeat 10 times

? iterate 10 times ?

launchgraph

iterate 10 times

A

B

C

Update

Graph

launchgraph

Define

Graph

A

B

C

Parameters: may change

Topology: may change

Parameters: may change

Topology: may not change

Parameters: may not change

Topology: may not change

Page 10: CUDA NEW FEATURES AND UPDATES - NVIDIA · 2019-11-22 · 4 CUDA 10.2 PLATFORM SUPPORT New OS and Host Compilers PLATFORM OS VERSION COMPILERS Linux 18.04.3 LTS 16.04.6 LTS GCC 8.x

10

GRAPH PERFORMANCEPerformance Gains For Both CPU & GPU

2.10

0.29

0.96

0.76

0.56

0.00

0.50

1.00

1.50

2.00

2.50

Stream Launch Graph Relaunch Update 100% +Launch

Update 50% +Launch

Update 0% +Launch

Mic

rose

cond

s

CPU Launch Time Per Kernel(Large node count, Straight-line graph, Quadro GV100 + Skylake 3.5GHz)

1.57

1.111.20

0.00

0.50

1.00

1.50

2.00

2.50

Stream Exec Per Kernel Relaunched Graph, Per-Kernel Execution

Overhead

Updated Graph, Per-Kernel Execution

Overhead

Mic

rose

cond

s

GPU Per Kernel Execution Overhead(Microseconds, Large node count, Straight-line graph)

Page 11: CUDA NEW FEATURES AND UPDATES - NVIDIA · 2019-11-22 · 4 CUDA 10.2 PLATFORM SUPPORT New OS and Host Compilers PLATFORM OS VERSION COMPILERS Linux 18.04.3 LTS 16.04.6 LTS GCC 8.x

11

MEMORY MAPPING & ALLOCATION CONTROL

New in CUDA 10.2

Control & reserve address ranges

Map physical memory multiple times

Fine-grained access control

Manage inter-GPU peer-to-peer sharing on a per-address basis

Inter-process sharing

Break Memory Allocation Into Its Constutent Parts

1. Reserve Virtual Address Range

cuMemAddressReserve/Free

2. Allocate Physical Memory Pages

cuMemCreate/Release

3. Map Pages To Virtual Addresses

cuMemMap/Unmap

4. Manage Access Per-Device

cuMemSetAccess

Page 12: CUDA NEW FEATURES AND UPDATES - NVIDIA · 2019-11-22 · 4 CUDA 10.2 PLATFORM SUPPORT New OS and Host Compilers PLATFORM OS VERSION COMPILERS Linux 18.04.3 LTS 16.04.6 LTS GCC 8.x

12

MEMORY MAPPING & ALLOCATION CONTROL

// Allocate memory

cuMemCreate(&handle, size, &allocProps, 0);

// Reserve address range

cuMemAddressReserve(&ptr, size, alignment,

fixedVa, 0);

// Map memory to address range

cuMemMap(ptr, size, offset, handle, 0);

// Make the memory accessible on all devices

cuMemSetAccess(ptr, size, rwOnAllDevices,

deviceCount);

Basic Memory Allocation Example

1. Reserve Virtual Address Range

cuMemAddressReserve/Free

2. Allocate Physical Memory Pages

cuMemCreate/Release

3. Map Pages To Virtual Addresses

cuMemMap/Unmap

4. Manage Access Per-Device

cuMemSetAccess

Page 13: CUDA NEW FEATURES AND UPDATES - NVIDIA · 2019-11-22 · 4 CUDA 10.2 PLATFORM SUPPORT New OS and Host Compilers PLATFORM OS VERSION COMPILERS Linux 18.04.3 LTS 16.04.6 LTS GCC 8.x

13

REMOVAL OF NON-SYNC WARP FUNCTIONS

Programs using old functions:

▪ Will no longer compile for sm_70 (Volta),or sm_75 (Turing)

▪ Will still compile as older compute_60 (Pascal) architecture, but without support for any Volta or Turing features

To compile as compute_60, add the following arguments to your compile line:

-arch=compute_60 -code=sm_70

Functions Deprecated In CUDA 9.0: Now Removed Since CUDA 10.1

RemovedFunction

Replacement Function

__ballot() __ballot_sync()

__any() __any_sync()

__all() __all_sync()

__shfl() __shfl_sync()

__shfl_up() __shfl_up_sync()

__shfl_down() __shfl_down_sync()

__shfl_xor() __shfl_xor_sync()

Page 14: CUDA NEW FEATURES AND UPDATES - NVIDIA · 2019-11-22 · 4 CUDA 10.2 PLATFORM SUPPORT New OS and Host Compilers PLATFORM OS VERSION COMPILERS Linux 18.04.3 LTS 16.04.6 LTS GCC 8.x

14

libcu++

ISO C++ == Language + Standard Library

CUDA C++ == Language + libcu++

The CUDA C++ Standard Library

Page 15: CUDA NEW FEATURES AND UPDATES - NVIDIA · 2019-11-22 · 4 CUDA 10.2 PLATFORM SUPPORT New OS and Host Compilers PLATFORM OS VERSION COMPILERS Linux 18.04.3 LTS 16.04.6 LTS GCC 8.x

15

libcu++

ISO C++ == Language + Standard Library

CUDA C++ == Language + libcu++

▪ Opt-in heterogeneous C++ standard library for CUDA

▪ Open source; port of LLVM’s libc++; contributing upstream

▪ Version 1 (Out Now): <atomic> (Pascal+), <type_traits>

Future release priorities: C++20 sync library, <chrono>, <complex>, <tuple>, <array>,<utility>, <cmath>, ...

The CUDA C++ Standard Library

Page 16: CUDA NEW FEATURES AND UPDATES - NVIDIA · 2019-11-22 · 4 CUDA 10.2 PLATFORM SUPPORT New OS and Host Compilers PLATFORM OS VERSION COMPILERS Linux 18.04.3 LTS 16.04.6 LTS GCC 8.x

16

libcu++The CUDA C++ Standard Library

Namespace Conforming to Example

std::ISO C++, __host__ only

Provided by your host compiler

#include <atomic>std::atomic<int> x;

cuda::std::CUDA C++, __host__ __device__Strictly conforming to ISO C++

#include <cuda/std/atomic>cuda::std::atomic<int> x;

cuda::CUDA C++, __host__ __device__Conforming extensions to ISO C++

#include <cuda/atomic>cuda::atomic<int, cuda::thread_scope_block> x;

For in depth information, see booth talk: Bryce Lelbach – The CUDA C++ Standard Library, Thursday @ 2pm

Page 17: CUDA NEW FEATURES AND UPDATES - NVIDIA · 2019-11-22 · 4 CUDA 10.2 PLATFORM SUPPORT New OS and Host Compilers PLATFORM OS VERSION COMPILERS Linux 18.04.3 LTS 16.04.6 LTS GCC 8.x

17

Full C++17 | Fortran 2003/2008

Optimizing, SIMD vectorizing, OpenMP

Accelerated Computing FeaturesCUDA Fortran, OpenACC directives

Multi-platform solutionx86-64, OpenPOWER and Arm CPUs

NVIDIA Tesla GPUs

Linux, Windows, MacOS

PGI FORTRAN, C AND C++HPC Compilers for the Tesla Platform

New! Support for Arm and Rome CPUs

Page 18: CUDA NEW FEATURES AND UPDATES - NVIDIA · 2019-11-22 · 4 CUDA 10.2 PLATFORM SUPPORT New OS and Host Compilers PLATFORM OS VERSION COMPILERS Linux 18.04.3 LTS 16.04.6 LTS GCC 8.x

18

CommunityEdition

OPENACC COMPILERS ARE FREELY AVAILABLEPGI 19.10 Community Edition

PROGRAMMING MODELSOpenACC, CUDA Fortran, OpenMP,

C/C++/Fortran Compilers and Tools

PLATFORMSX86, OpenPOWER, NVIDIA GPU

UPDATES 1-2 times a year 6-9 times a year 6-9 times a year

SUPPORT User Forums PGI Support PGI Premier

Services

LICENSE Annual Perpetual Volume/Site

FREE

pgicompilers.com/community

ProfessionalEdition

EnterpriseEdition

Page 19: CUDA NEW FEATURES AND UPDATES - NVIDIA · 2019-11-22 · 4 CUDA 10.2 PLATFORM SUPPORT New OS and Host Compilers PLATFORM OS VERSION COMPILERS Linux 18.04.3 LTS 16.04.6 LTS GCC 8.x

19

THE FUTURE OF HPC GPU PROGRAMMING

Maximize GPU Performance

with CUDA C++/Fortran

GPU Accelerated

C++17 and Fortran 2018

Incremental Performance Optimization with OpenACC

do concurrent (i = 1:n)y(i) = y(i) + a*x(i)

enddo

#pragma acc data copy(x,y) {

...

std::transform(par, x, x+n, y, y,[=](float x, float y){

return y + a*x;});

...

}

__global__

void saxpy(int n, float a,

float *x, float *y) { int i = blockIdx.x*blockDim.x +

threadIdx.x;

if (i < n) y[i] += a*x[i];

}

int main(void) {

...cudaMemcpy(d_x, x, ...);

cudaMemcpy(d_y, y, ...);

saxpy<<<(N+255)/256,256>>>(...);

cudaMemcpy(y, d_y, ...);

std::transform(par, x, x+n, y, y,[=] (float x, float y) {

return y + a*x;});

GPU Programming with C++17David Olsen, 11:00am Thursday

Page 20: CUDA NEW FEATURES AND UPDATES - NVIDIA · 2019-11-22 · 4 CUDA 10.2 PLATFORM SUPPORT New OS and Host Compilers PLATFORM OS VERSION COMPILERS Linux 18.04.3 LTS 16.04.6 LTS GCC 8.x

20

CUDA FORTRAN TENSOR CORES

module mod1use params ! Define matrix m, n, kcontainsattributes(global) subroutine test1(a, b, c)use wmmareal(2), device :: a(m, k), b(k, n)real(4), device :: c(m, n)WMMASubMatrix(WMMAMatrixA, 16, 16, 16, Real, WMMAColMajor):: saWMMASubMatrix(WMMAMatrixB, 16, 16, 16, Real, WMMAColMajor):: sbWMMASubMatrix(WMMAMatrixC, 16, 16, 16, Real, WMMAKind4):: sc

call wmmaLoadMatrix(sa, a(1,1), m)call wmmaLoadMatrix(sb, b(1,1), k)call wmmaMatmul(sc, sa, sb)call wmmaStoreMatrix(c(1,1), sc, m)end subroutine

end module

Page 21: CUDA NEW FEATURES AND UPDATES - NVIDIA · 2019-11-22 · 4 CUDA 10.2 PLATFORM SUPPORT New OS and Host Compilers PLATFORM OS VERSION COMPILERS Linux 18.04.3 LTS 16.04.6 LTS GCC 8.x

21

COMPUTE-SANITIZER: CODE ANALYSIS

Tracks API calls and memory accesses during CUDA kernel execution

Support for Windows, Linux, Mac

Samples available on GitHub

https://github.com/NVIDIA/compute-sanitizer-samples

New APIs in CUDA 10.1

Page 22: CUDA NEW FEATURES AND UPDATES - NVIDIA · 2019-11-22 · 4 CUDA 10.2 PLATFORM SUPPORT New OS and Host Compilers PLATFORM OS VERSION COMPILERS Linux 18.04.3 LTS 16.04.6 LTS GCC 8.x

22

NSIGHT SYSTEMS

Observe Application Behavior: CPU threads, GPU traces, Memory Bandwidth and more

Locate Optimization Opportunities: CUDA & OpenGL APIs, Unified Memory transfers, User Annotations using NVTX

Ready for Big Data: Fast GUI capable of visualizing in excess of 10 million events on laptops, Container support, Minimum user privileges

ARM Support: Beta preview available now

System-Wide Performance Analysis

https://developer.nvidia.com/nsight-systems

Page 23: CUDA NEW FEATURES AND UPDATES - NVIDIA · 2019-11-22 · 4 CUDA 10.2 PLATFORM SUPPORT New OS and Host Compilers PLATFORM OS VERSION COMPILERS Linux 18.04.3 LTS 16.04.6 LTS GCC 8.x

23

NSIGHT SYSTEMSMPI API Trace

Page 24: CUDA NEW FEATURES AND UPDATES - NVIDIA · 2019-11-22 · 4 CUDA 10.2 PLATFORM SUPPORT New OS and Host Compilers PLATFORM OS VERSION COMPILERS Linux 18.04.3 LTS 16.04.6 LTS GCC 8.x

24

NSIGHT COMPUTE

Key Features:

• Interactive CUDA API debugging and kernel profiling

• Fast Data Collection

• Improved Workflow (Diff’ing Results)

• Fully Customizable (Programmable UI/Rules)

• Command Line, Standalone, IDE Integration

OS: Linux (x86, Power, Tegra), Windows, MacOSX (host only)

GPUs: Pascal, Volta, Turing

ARM Support: Beta/Preview Available Now

Docs/product: https://developer.nvidia.com/nsight-compute

Next-Gen Kernel Profiling Tool

Page 25: CUDA NEW FEATURES AND UPDATES - NVIDIA · 2019-11-22 · 4 CUDA 10.2 PLATFORM SUPPORT New OS and Host Compilers PLATFORM OS VERSION COMPILERS Linux 18.04.3 LTS 16.04.6 LTS GCC 8.x

25

HPC LibrariesMath and Communication

NVSHMEMCUDA Math APIcuFFT

cuSPARSE cuSOLVERcuBLAS cuTENSOR

= *

cuRAND Legate

CUTLASS

Page 26: CUDA NEW FEATURES AND UPDATES - NVIDIA · 2019-11-22 · 4 CUDA 10.2 PLATFORM SUPPORT New OS and Host Compilers PLATFORM OS VERSION COMPILERS Linux 18.04.3 LTS 16.04.6 LTS GCC 8.x

26

Template abstractions for high-performance matrix-multiplication

New in CUDA 10.2 & CUTLASS 2.0

• New PTX instructions enable maximum efficiency of Turing Tensor Cores

• Easier to use API, offering hierarchical decomposition

CUTLASS 2.0Open Source Framework for Tensor Core Programmability

0%

10%

20%

30%

40%

50%

60%

70%

80%

90%

100%

NN NT TN TT NN NT TN TT NN NT TN TT NN NT TN TT NN NT TN TT NN NT TN TT

DGEMM HGEMM IGEMM SGEMM TensorOp (f16) TensorOp (f32)

CUTLASS Performance Relative to cuBLAS2080 Ti, TitanV - CUDA 10.2

2080Ti

TitanV

Page 27: CUDA NEW FEATURES AND UPDATES - NVIDIA · 2019-11-22 · 4 CUDA 10.2 PLATFORM SUPPORT New OS and Host Compilers PLATFORM OS VERSION COMPILERS Linux 18.04.3 LTS 16.04.6 LTS GCC 8.x

27

cuTENSORA New High Performance CUDA Library for Tensor Primitives

= * +

v1.0.0 available 11/20 at developer.nvidia.com/cutensor

Tensor Contractions and Reductions

Elementwise Operations

Mixed Precision Support

Elementwise Fusion

Tensor Core Acceleration

Impact

Up to 24X application end-to-end speedup over

previously CPU-only Quantum Chemistry simulations

with contraction API 0

1000

2000

3000

4000

5000

6000

7000

8000

9000

0 100 200 300 400 500 600 700 800 900 1000

GFLO

Ps

cuTENSOR vs TBLIS1000 Random 3D-6D Contractions

cuTENSOR (GV100) TBLIS (2s Xeon Platinum 8168)

See booth talk: Paul Springer – cuTENSOR: High-Performance CUDA Tensor Primitives – Wednesday @ 5:30pm

Page 28: CUDA NEW FEATURES AND UPDATES - NVIDIA · 2019-11-22 · 4 CUDA 10.2 PLATFORM SUPPORT New OS and Host Compilers PLATFORM OS VERSION COMPILERS Linux 18.04.3 LTS 16.04.6 LTS GCC 8.x

28

TENSOR CORE ACCELERATED LINEAR SOLVERSMixed Precision Dense Linear Solvers

➢ Common HPC Solvers dominated by matrix multiplication

➢ LU, Cholesky, QR

➢ Can we accelerate with FP16 Tensor Core and retain FP64 accuracy? Yes!

7.8

15.7

125

FP64 FP32 FP16 (TC)

V100 TFLOPS

Page 29: CUDA NEW FEATURES AND UPDATES - NVIDIA · 2019-11-22 · 4 CUDA 10.2 PLATFORM SUPPORT New OS and Host Compilers PLATFORM OS VERSION COMPILERS Linux 18.04.3 LTS 16.04.6 LTS GCC 8.x

29

TENSOR CORE ACCELERATED LINEAR SOLVERSMixed Precision Dense Linear Solvers

• CUDA Toolkit 10.2

• Real & Complex FP32 & FP64LU Solver

➢ Solve dense linear system by one-sided factorizations

➢ Supports Real and Complex, FP32 and FP64 data

➢ Supports multiple right-hand sides

➢ Retain FP64 accuracy with up to 5X Speedup

0.00

5.00

10.00

15.00

20.00

25.00

30.00

35.00

2050 4100 6140 8190 10200 12000 14000 16000 18000 20000 22000 26000 28000 30000

TFLO

PS

Matr ix Size

Performance Solving Ax=b to FP64 Accuracy with Complex data on V100

FP64 zgesv FP32->FP64 zsgesv FP16-TC->FP64 zhgesv

5.2XAdditional solvers coming soon

Page 30: CUDA NEW FEATURES AND UPDATES - NVIDIA · 2019-11-22 · 4 CUDA 10.2 PLATFORM SUPPORT New OS and Host Compilers PLATFORM OS VERSION COMPILERS Linux 18.04.3 LTS 16.04.6 LTS GCC 8.x

30

LEGATEAccelerated and Distributed NumPy

#import numpy as np

import legate.numpy as np

def cg_solve(A, b):

x = np.zeros(A.shape[1])

r = b - A.dot(x)

p = r

rsold = r.dot(r)

for i in xrange(b.shape[0]):

Ap = A.dot(p)

alpha = rsold / (p.dot(Ap))

x = x + alpha * p

r = r - alpha * Ap

rsnew = r.dot(r)

if np.sqrt(rsnew) < 1e-10:

break

beta = rsnew / rsold

p = r + beta * p

rsold = rsnew

return x

Early Access launching this weekdeveloper.nvidia.com/Legate

➢ Drop-in NumPy replacement

➢ Change one line of code to program a supercomputer

➢ Automatic GPU and Tensor Core Acceleration

➢ Automatic scalability

import legate.numpy as np

Page 31: CUDA NEW FEATURES AND UPDATES - NVIDIA · 2019-11-22 · 4 CUDA 10.2 PLATFORM SUPPORT New OS and Host Compilers PLATFORM OS VERSION COMPILERS Linux 18.04.3 LTS 16.04.6 LTS GCC 8.x

31

LEGATEAccelerated and Distributed NumPy

1

10

100

1000

14641 (1

Socket)

19600 (2

Sockets)

27556 (4

Sockets)

39204 (8

Sockets)

55696 (16

Sockets)

78400 (32

Sockest)

110224 (64

Sockets)

155236

(128

Sockets)

219024

(256

Sockets)

Conjugate Gradient Performance, Iterations per Second

1 socket = 1 V100 GPU or 20c Xeon Gold 6148

NumPy IntelPy Legate (CPU) Legate (GPU)

Early Access launching this weekdeveloper.nvidia.com/Legate

➢ Drop-in NumPy replacement

➢ Change one line of code to program a supercomputer

➢ Automatic GPU and Tensor Core Acceleration

➢ Automatic scalability

import legate.numpy as np

Page 32: CUDA NEW FEATURES AND UPDATES - NVIDIA · 2019-11-22 · 4 CUDA 10.2 PLATFORM SUPPORT New OS and Host Compilers PLATFORM OS VERSION COMPILERS Linux 18.04.3 LTS 16.04.6 LTS GCC 8.x

32

LIBRARY EA PROGRAMSEarly Access to New Libraries and Extensions

NVSHMEM Early Access Program

Apply for access at developer.nvidia.com/NVSHMEM

Members gain access to pre-release versions of NVSHMEM

Legate Early Access Program

Apply for access at developer.nvidia.com/Legate

Members gain access to pre-release versions of Legate

Math Library Early Access Program

Apply for access at developer.nvidia.com/CUDAMathLibraryEA

Members gain access to pre-release versions of new math libraries and feature extensions

Currently includes

cuFFTDx

cuBLASMg

Page 33: CUDA NEW FEATURES AND UPDATES - NVIDIA · 2019-11-22 · 4 CUDA 10.2 PLATFORM SUPPORT New OS and Host Compilers PLATFORM OS VERSION COMPILERS Linux 18.04.3 LTS 16.04.6 LTS GCC 8.x

CONNECT WITH LEADERS IN HPC

The HPC Summit at GTC brings together 300-500 leaders, scientists, and developers to advance the state of the art of HPC

Explore 10 hours of content, engage with experts, and learn about new innovations

www.nvidia.com/hpc-summit