30
National Center for Supercomputing Applications University of Illinois at Urbana-Champaign GPU Clusters for High- Performance Computing Jeremy Enos Innovative Systems Laboratory

GPU Clusters for High- Performance Computing › ... › ppac09_presentation.pdf · •Sets thread affinity to CPU core nearest the gpu device • Shared host, multi-gpu device fencing

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

Page 1: GPU Clusters for High- Performance Computing › ... › ppac09_presentation.pdf · •Sets thread affinity to CPU core nearest the gpu device • Shared host, multi-gpu device fencing

National Center for Supercomputing Applications

University of Illinois at Urbana-Champaign

GPU Clusters for High-

Performance Computing

Jeremy Enos

Innovative Systems Laboratory

Page 2: GPU Clusters for High- Performance Computing › ... › ppac09_presentation.pdf · •Sets thread affinity to CPU core nearest the gpu device • Shared host, multi-gpu device fencing

Presentation OutlineNVIDIA GPU technology overview

GPU clusters at NCSA

• AC

• Lincoln

GPU power consumption

Programming tools

• CUDA C

• OpenCL

• PGI x86+GPU

Application performance

GPU cluster management software

• The need for new tools

• CUDA/OpenCL wrapper library

• CUDA memtest

Balanced GPU accelerated system design considerations

Conclusions

Page 3: GPU Clusters for High- Performance Computing › ... › ppac09_presentation.pdf · •Sets thread affinity to CPU core nearest the gpu device • Shared host, multi-gpu device fencing

Why Clusters for HPC?

• Clusters are a major workforce in HPC

• Q: How many systems in top500 are clusters?

• A: 410 out of 500

Top 500: Architecture Top 500: Performance

Source: http://www.top500.org

Page 4: GPU Clusters for High- Performance Computing › ... › ppac09_presentation.pdf · •Sets thread affinity to CPU core nearest the gpu device • Shared host, multi-gpu device fencing

0

200

400

600

800

1000

1200

9/22/02 2/4/04 6/18/05 10/31/06 3/14/08

GF

lop

/s

NVIDIA GPU

Intel CPU

7900 GTX

8800 GTX

8800 Ultra

GTX 285

Intel Xeon Quad-core 3 GHz

GTX 280

Why GPUs in HPC Clusters?

58005950 Ultra

6800 Ultra

7800 GTX

Courtesy of NVIDIA

GPU Performance Trends

Page 5: GPU Clusters for High- Performance Computing › ... › ppac09_presentation.pdf · •Sets thread affinity to CPU core nearest the gpu device • Shared host, multi-gpu device fencing

NVIDIA Tesla T10 GPU Architecture

• T10 architecture

• 240 streaming

processors arranged

as 30 streaming

multiprocessors

• At 1.3 GHz this

provides

• 1 TFLOP SP

• 86.4 GFLOP DP

• 512-bit interface to

off-chip GDDR3

memory

• 102 GB/s bandwidth

TPC 1

Geometry controller

SMC

SM

Shared memory

SFU SFU

SP SP

SP SP

SP SP

SP SP

C cache

MT issue

I cache

SM

Shared memory

SFU SFU

SP SP

SP SP

SP SP

SP SP

C cache

MT issue

I cache

SM

Shared memory

SFU SFU

SP SP

SP SP

SP SP

SP SP

C cache

MT issue

I cache

Texture units

Texture L1

TPC 10

Geometry controller

SMC

SM

Shared memory

SFU SFU

SP SP

SP SP

SP SP

SP SP

C cache

MT issue

I cache

SM

Shared memory

SFU SFU

SP SP

SP SP

SP SP

SP SP

C cache

MT issue

I cache

SM

Shared memory

SFU SFU

SP SP

SP SP

SP SP

SP SP

C cache

MT issue

I cache

Texture units

Texture L1

Thread execution managerInput assemblerPCIe interface

L2ROPL2 ROP

512-bit memory interconnect

DRAM DRAM DRAM DRAM DRAM DRAM DRAM DRAM

Page 6: GPU Clusters for High- Performance Computing › ... › ppac09_presentation.pdf · •Sets thread affinity to CPU core nearest the gpu device • Shared host, multi-gpu device fencing

NVIDIA Tesla S1070 GPU Computing Server

• 4 T10 GPUs

Tesla

GPU Tesla

GPU

Tesla

GPU

Tesla

GPU

4 GB GDDR3

SDRAM

4 GB GDDR3

SDRAM

4 GB GDDR3

SDRAM 4 GB GDDR3

SDRAM

NVIDIA

SWITCH

NVIDIA

SWITCH

Pow

er

supply

Th

erm

al

man

agem

ent

Syst

em

monit

ori

ng

PCI x16

PC

I x1

6

Page 7: GPU Clusters for High- Performance Computing › ... › ppac09_presentation.pdf · •Sets thread affinity to CPU core nearest the gpu device • Shared host, multi-gpu device fencing

GPU Clusters at NCSA

• Lincoln

• Production system available via

the standard NCSA/TeraGrid

HPC allocation

• AC

• Experimental system available

for anybody who is interested

in exploring GPU computing

Page 8: GPU Clusters for High- Performance Computing › ... › ppac09_presentation.pdf · •Sets thread affinity to CPU core nearest the gpu device • Shared host, multi-gpu device fencing

Intel 64 Tesla Linux Cluster Lincoln

• Dell PowerEdge 1955

server

• Intel 64 (Harpertown) 2.33

GHz dual socket quad core

• 16 GB DDR2

• Infiniband SDR

• Tesla S1070 1U GPU

Computing Server

• 1.3 GHz Tesla T10 processors

• 4x4 GB GDDR3 SDRAM

• Cluster

• Servers: 192

• Accelerator Units: 96

• Two Compute Nodes

Dell PowerEdge

1955 server

IB

Tesla S1070

T10 T10

PCIe interface

DRAM DRAM

T10 T10

PCIe interface

DRAM DRAM

Dell PowerEdge

1955 server

PCIe x8 PCIe x8

SDR IB SDR IB

Page 9: GPU Clusters for High- Performance Computing › ... › ppac09_presentation.pdf · •Sets thread affinity to CPU core nearest the gpu device • Shared host, multi-gpu device fencing

AMD Opteron Tesla Linux Cluster AC

• HP xw9400 workstation

• 2216 AMD Opteron 2.4 GHz

dual socket dual core

• 8 GB DDR2

• Infiniband QDR

• Tesla S1070 1U GPU

Computing Server

• 1.3 GHz Tesla T10 processors

• 4x4 GB GDDR3 SDRAM

• Cluster

• Servers: 32

• Accelerator Units: 32

• Compute Node

IB

Tesla S1070

T10 T10

PCIe interface

DRAM DRAM

T10 T10

PCIe interface

DRAM DRAM

HP xw9400 workstation

PCIe x16 PCIe x16

QDR IB

Nallatech

H101

FPGA

card

PCI-X

Page 10: GPU Clusters for High- Performance Computing › ... › ppac09_presentation.pdf · •Sets thread affinity to CPU core nearest the gpu device • Shared host, multi-gpu device fencing

AC Cluster

Page 11: GPU Clusters for High- Performance Computing › ... › ppac09_presentation.pdf · •Sets thread affinity to CPU core nearest the gpu device • Shared host, multi-gpu device fencing

Lincoln vs. AC: Configuration

• Lincoln

• Compute cores

• CPU cores: 1536

• GPU units: 384

• CPU/GPU ratio: 4

• Memory

• Host memory: 16 GB

• GPU Memory: 8 GB/host

• Host mem/GPU: 8 GB

• I/O

• PCI-E 2.0 (x8)

• GPU/host bandwidth: 4 GB/s

• IB bandwidth/host: 8 Gbit/s

• AC

• Compute cores

• CPU cores: 128

• GPU units: 128

• CPU/GPU ratio: 1

• Memory

• Host memory: 8 GB

• GPU Memory: 16 GB/host

• Host mem/GPU: 2 GB

• I/O

• PCI-E 1.0 (x16)

• GPU/host bandwidth: 4 GB/s

• IB bandwidth/host: 16 Gbit/s

Both systems originated as extensions of existing clusters, they were not designed

as Tesla GPU clusters from the beginning. As the result, their performance with

regards to GPUs is suboptimal.

Page 12: GPU Clusters for High- Performance Computing › ... › ppac09_presentation.pdf · •Sets thread affinity to CPU core nearest the gpu device • Shared host, multi-gpu device fencing

Lincoln vs. AC: Host-device Bandwidth

0

500

1000

1500

2000

2500

3000

3500

0.000001 0.0001 0.01 1 100

ba

nd

wid

th (

Mb

yte

s/se

c)

packet size (Mbytes)

Lincoln

AC (no affinity mapping)

AC (with affinity mapping)

Page 13: GPU Clusters for High- Performance Computing › ... › ppac09_presentation.pdf · •Sets thread affinity to CPU core nearest the gpu device • Shared host, multi-gpu device fencing

Lincoln vs. AC: HPL Benchmark

0%

5%

10%

15%

20%

25%

30%

35%

40%

45%

0

500

1000

1500

2000

2500

1 node 2 nodes 4 nodes 8 nodes 16 nodes 32 nodes

% o

f p

eak

ach

ieved

GF

LO

PS

system size

AC (GFLOPS)

Lincoln (GFLOPS)

AC (% of peak)

Lincoln (% of peak)

Page 14: GPU Clusters for High- Performance Computing › ... › ppac09_presentation.pdf · •Sets thread affinity to CPU core nearest the gpu device • Shared host, multi-gpu device fencing

AC GPU Cluster Power Considerations

State Host Peak (Watt)

Tesla Peak (Watt)

Host power factor

(pf)

Tesla power factor (pf)

power off 4 10 .19 .31start-up 310 182

pre-GPU use idle 173 178 .98 .96after NVIDIA driver module

unload/reload(1)

173 178 .98 .96

after deviceQuery(2) (idle) 173 365 .99 .99GPU memtest #10 (stress) 269 745 .99 .99

after memtest kill (idle) 172 367 .99 .99after NVIDIA module unload/reload(3) (idle)

172 367 .99 .99

VMD Madd 268 598 .99 .99NAMD GPU STMV 321 521 .97-1.0 .85-1.0(4)

NAMD CPU only ApoA1 322 365 .99 .99NAMD CPU only STMV 324 365 .99 .99

1. Kernel module unload/reload does not increase Tesla power2. Any access to Tesla (e.g., deviceQuery) results in doubling power consumption after the application exits3. Note that second kernel module unload/reload cycle does not return Tesla power to normal, only a complete reboot can

4. Power factor stays near one except while load transitions. Range varies with consumption swings

Page 15: GPU Clusters for High- Performance Computing › ... › ppac09_presentation.pdf · •Sets thread affinity to CPU core nearest the gpu device • Shared host, multi-gpu device fencing

Cluster Management Tools

• Deployment

• SystemImager (AC)

• Perceus (Lincoln)

• Workload Management

• Torque/MOAB

• access.conf restrictions unless node used by user job

• Job preemption config used to run GPU memtest during

idle periods (AC)

• Monitoring

• CluMon (Lincoln)

• Manual monitoring (AC)

Page 16: GPU Clusters for High- Performance Computing › ... › ppac09_presentation.pdf · •Sets thread affinity to CPU core nearest the gpu device • Shared host, multi-gpu device fencing

GPU Clusters Programming

• Programming tools

• CUDA C 2.2 SDK

• CUDA/MPI

• OpenCL 1.0 SDK

• PGI+GPU compiler

• Some Applications (that we are aware of)

• NAMD (Klaus Schulten’s group at UIUC)

• WRF (John Michalakes, NCAR)

• TPACF (Robert Brunner, UIUC)

• TeraChem (Todd Martinez, Stanford)

• …

Page 17: GPU Clusters for High- Performance Computing › ... › ppac09_presentation.pdf · •Sets thread affinity to CPU core nearest the gpu device • Shared host, multi-gpu device fencing

TPACF

88.2×

154.1×

59.1×

45.5×

30.9

6.8×

0.0×

20.0×

40.0×

60.0×

80.0×

100.0×

120.0×

140.0×

160.0×

180.0×

Quadro FX 5600

GeForce GTX 280 (SP)

Cell B./E. (SP) GeForce GTX 280 (DP)

PowerXCell 8i (DP)

H101 (DP)

speedup

Page 18: GPU Clusters for High- Performance Computing › ... › ppac09_presentation.pdf · •Sets thread affinity to CPU core nearest the gpu device • Shared host, multi-gpu device fencing

NAMD on Lincoln Cluster Performance(8 cores and 2 GPUs per node, very early results)

0

0.2

0.4

0.6

0.8

1

1.2

1.4

1.6

4 8 16 32 64 128

CPU (8ppn)

CPU (4ppn)

CPU (2ppn)

GPU (4:1)

GPU (2:1)

GPU (1:1)

2 GPUs = 24 cores

4 GPUs

8 GPUs

16 GPUs

CPU cores

ST

MV

s/s

tep

8 GPUs =

96 CPU cores

~5.6 ~2.8

Courtesy of James Phillips, UIUC

Page 19: GPU Clusters for High- Performance Computing › ... › ppac09_presentation.pdf · •Sets thread affinity to CPU core nearest the gpu device • Shared host, multi-gpu device fencing

Bovine pancreatic

trypsin inhibitor (BPTI)

3-21G, 875 atoms, 4893

basis functions

MPI timings and scalability

TeraChem

Courtesy of Ivan Ufimtsev, Stanford

GPU (computed with SP): K-matrix, J-matrix

CPU (computed with DP): the rest

Page 20: GPU Clusters for High- Performance Computing › ... › ppac09_presentation.pdf · •Sets thread affinity to CPU core nearest the gpu device • Shared host, multi-gpu device fencing

CUDA Memtest

• 4GB of Tesla GPU memory is not ECC protected

• Hunt for “soft error”

• Features

• Full re-implementation of every test included in memtest86

• Random and fixed test patterns, error reports, error addresses, test specification

• Email notification

• Includes additional stress test for software and hardware errors

• Usage scenarios

• Hardware test for defective GPU memory chips

• CUDA API/driver software bugs detection

• Hardware test for detecting soft errors due to non-ECC memory

• No soft error detected in 2 years x 4 gig of cumulative runtime

• Availability

• NCSA/UofI Open Source License

• https://sourceforge.net/projects/cudagpumemtest/

Page 21: GPU Clusters for High- Performance Computing › ... › ppac09_presentation.pdf · •Sets thread affinity to CPU core nearest the gpu device • Shared host, multi-gpu device fencing

CUDA/OpenCL Wrapper Library

• Basic operation principle:• Use /etc/ld.so.preload to overload (intercept) a subset of CUDA/OpenCL

functions, e.g. {cu|cuda}{Get|Set}Device, clGetDeviceIDs, etc

• Purpose:• Enables controlled GPU device visibility and access, extending resource

allocation to the workload manager

• Prove or disprove feature usefulness, with the hope of eventual uptake or reimplementation of proven features by the vendor

• Provides a platform for rapid implementation and testing of HPC relevant features not available in NVIDIA APIs

• Features:• NUMA Affinity mapping

• Sets thread affinity to CPU core nearest the gpu device

• Shared host, multi-gpu device fencing• Only GPUs allocated by scheduler are visible or accessible to user• GPU device numbers are virtualized, with a fixed mapping to a physical device

per user environment

• User always sees allocated GPU devices indexed from 0

Page 22: GPU Clusters for High- Performance Computing › ... › ppac09_presentation.pdf · •Sets thread affinity to CPU core nearest the gpu device • Shared host, multi-gpu device fencing

CUDA/OpenCL Wrapper Library

• Features (cont’d):

• Device Rotation (deprecated)

• Virtual to Physical device mapping rotated for each process accessing a

GPU device

• Allowed for common execution parameters (e.g. Target gpu0 with 4

processes, each one gets separate gpu, assuming 4 gpus available)

• CUDA 2.2 introduced compute-exclusive device mode, which includes

fallback to next device. Device rotation feature may no longer needed

• Memory Scrubber

• Independent utility from wrapper, but packaged with it

• Linux kernel does no management of GPU device memory

• Must run between user jobs to ensure security between users

• Availability

• NCSA/UofI Open Source License

• https://sourceforge.net/projects/cudawrapper/

Page 23: GPU Clusters for High- Performance Computing › ... › ppac09_presentation.pdf · •Sets thread affinity to CPU core nearest the gpu device • Shared host, multi-gpu device fencing

GPU Node Pre/Post Allocation Sequence

• Pre-Job (minimized for rapid device acquisition)

• Assemble detected device file unless it exists

• Sanity check results

• Checkout requested GPU devices from that file

• Initialize CUDA wrapper shared memory segment with unique key for user

(allows user to ssh to node outside of job environment and have same gpu

devices visible)

• Post-Job

• Use quick memtest run to verify healthy GPU state

• If bad state detected, mark node offline if other jobs present on node

• If no other jobs, reload kernel module to “heal” node (for CUDA 2.2 driver

bug)

• Run memscrubber utility to clear gpu device memory

• Notify of any failure events with job details

• Terminate wrapper shared memory segment

• Check-in GPUs back to global file of detected devices

Page 24: GPU Clusters for High- Performance Computing › ... › ppac09_presentation.pdf · •Sets thread affinity to CPU core nearest the gpu device • Shared host, multi-gpu device fencing

Designing a Balanced Compute Host

• Consider:

• Potential performance bottlenecks

• Memcopy bandwidth is limiting factor to significant portion of

applications

• FLOP:I/O ratio increasing relative to existing general purpose clusters

• Current NVIDIA driver limited to 8 GPU support

• PCI-E lane oversubscription

• Host memory bandwidth

• User feedback

• Typically want at least as many CPU cores as GPU units

• Typically want host memory to match or surpass attached GPU total

• Get candidate test system before locking decision

Page 25: GPU Clusters for High- Performance Computing › ... › ppac09_presentation.pdf · •Sets thread affinity to CPU core nearest the gpu device • Shared host, multi-gpu device fencing

Test System

Tesla S1070

T10 T10

PCIe interface

DRAM DRAM

T10 T10

PCIe interface

DRAM DRAM

Core i7 host

PCIe x16 PCIe x16

Tesla S1070

T10 T10

PCIe interface

DRAM DRAM

T10 T10

PCIe interface

DRAM DRAM

PCIe x16 PCIe x16

• CPU cores (Intel core i7): 4

• Accelerator Units (S1070): 2

• Total GPUs: 8

• CPU cores/GPU ratio: 0.5

• Theoretical peak PCIe bandwidth: 18 GB/s

• Host Memory: 24 GB

• GPU Memory: 32 GB

Page 26: GPU Clusters for High- Performance Computing › ... › ppac09_presentation.pdf · •Sets thread affinity to CPU core nearest the gpu device • Shared host, multi-gpu device fencing

Intel X58 Chipset (Test System)

Page 27: GPU Clusters for High- Performance Computing › ... › ppac09_presentation.pdf · •Sets thread affinity to CPU core nearest the gpu device • Shared host, multi-gpu device fencing

Designing a Balanced Compute Host

36 x 500MB/sec/lane = 18GB/sec peak (1) (PCI-E Gen 2)

½ x 25.6GB/sec = 12.8 GB/sec peak (25.6 is a bi-directional bw)

1. GPU memcopy traffic is serialized

192 bits * 800MHz = 17.8 GB/sec peak (assuming 3 banks populated)

Page 28: GPU Clusters for High- Performance Computing › ... › ppac09_presentation.pdf · •Sets thread affinity to CPU core nearest the gpu device • Shared host, multi-gpu device fencing

Future Options

http://download.intel.com/pressroom/kits/events/idffall_2008/SSmith_briefing_roadmap.pdf

Page 29: GPU Clusters for High- Performance Computing › ... › ppac09_presentation.pdf · •Sets thread affinity to CPU core nearest the gpu device • Shared host, multi-gpu device fencing

Future Options

http://download.intel.com/pressroom/kits/events/idffall_2008/SSmith_briefing_roadmap.pdf

Page 30: GPU Clusters for High- Performance Computing › ... › ppac09_presentation.pdf · •Sets thread affinity to CPU core nearest the gpu device • Shared host, multi-gpu device fencing

Conclusions

• GPU acceleration producing real results

• System tools becoming GPU aware, but still some

gaps to fill

• Balanced system design depends on application

requirements, but some basic guidelines apply

Jeremy Enos [email protected]

Thank you.