What does Fusion mean for HPC?

Size: px
Start display at page:

Download "What does Fusion mean for HPC?"

Transcription

1 What does Fusion mean for HPC? Casey Battaglino Aparna Chandramowlishwaran Jee Choi Kent Czechowski Cong Hou Chris McClanahan Dave S. Noble, Jr. Richard (Rich) Vuduc AMD Fusion Developers Summit Bellevue, Washington June 14, 2011

2 Two scales

3 CONTEXT: MOBO ( MOVING BOUNDARIES ) Citation: A. Rahimian, I. Lashuk, A. Chandramowlishwaran, D. Malhotra, L. Moon, R. Sampath, A. Shringarpure, S. Veerapaneni, J. Vetter, R. Vuduc, D. Zorin, and G. Biros. Petascale direct numerical simulation of blood flow on 200k cores and heterogeneous architectures. In SC 10. Winner, Gordon Bell Prize.

4 CONTEXT: MOBO ( MOVING BOUNDARIES ) Citation: A. Rahimian, I. Lashuk, A. Chandramowlishwaran, D. Malhotra, L. Moon, R. Sampath, A. Shringarpure, S. Veerapaneni, J. Vetter, R. Vuduc, D. Zorin, and G. Biros. Petascale direct numerical simulation of blood flow on 200k cores and heterogeneous architectures. In SC 10. Winner, Gordon Bell Prize.

5 First principles: Balance Kung (1986); Callahan & Kennedy (1988); McCalpin (1995)

6 Which swim lane will win for (3D) FFTs at exascale? vs. Swim lane 1 Swim lane 2 + =? 3D FFT

7 Year=2020: n= Time (sec) Pflop/s 5.8 Pflop/s Communication Network CPU 1M sockets Peak = 3.98 EF/s Bisection = 273 TB/s GPU 131k sockets Peak = 3.98 EF/s Bisection = 70.2 TB/s

8 Two costs: Tnetwork + Tmemory

9 Two costs: Tnetwork + Tmemory

10 Two costs: Tnetwork + Tmemory

11 Two costs: Tnetwork + Tmemory Mem For a fixed problem size and fixed machine peak, faster s mean: fewer s smaller network and lower bisection bandwidth larger local-problem size Trend: Easier to scale network bandwidth than memory bandwidth More time communicating, both on the and in the network

12 Two costs: Tnetwork + Tmemory Mem For a fixed problem size and fixed machine peak, faster s mean: flop/s Let B memory bandwidth T mem O(B) T net O B (d 1)/d (d-dimensional torus)

13

14 Compute-intensive I/O-intensive

15 Compute-intensive I/O-intensive

16

17 Compute-intensive I/O-intensive

18 Desiderata, for hardware Balanced procs APUs provide reconfigurable balance High-bandwidth to APU GDDRx, stacked memory Integrated network I/O Shared cache or cache coherence within APU For software Unified address space Support for asynchronous parallel execution (task graphs) Less verbose programming models (next slide) Useful and interpretable counters

19 cl_mem d_a, d_b, d_c; clgpucontext = clcreatecontextfromtype(0, CL_DEVICE_TYPE_GPU, NULL, NULL, &errcode); shrcheckerror(errcode, CL_SUCCESS); errcode = clgetcontextinfo(clgpucontext, CL_CONTEXT_DEVICES, 0, NULL, &databytes); cl_device_id *cldevices = (cl_device_id *)malloc(databytes); errcode = clgetcontextinfo(clgpucontext, CL_CONTEXT_DEVICES, databytes, cldevices, NULL); shrcheckerror(errcode, CL_SUCCESS); clcommandque = clcreatecommandqueue(clgpucontext, cldevices [0], 0, &errcode); shrcheckerror(errcode, CL_SUCCESS); d_c = clcreatebuffer(clgpucontext, CL_MEM_READ_WRITE, mem_size_a, NULL, &errcode); d_a = clcreatebuffer(clgpucontext, CL_MEM_READ_WRITE CL_MEM_COPY_HOST_PTR, mem_size_a, h_a, &errcode); d_b = clcreatebuffer(clgpucontext, CL_MEM_READ_WRITE CL_MEM_COPY_HOST_PTR, mem_size_b, h_b, &errcode); char *clmatrixmul = oclloadprogsource("kernel.cl", "// My comment\n", &kernellength); shrcheckerror(clmatrixmul!= NULL, shrtrue); clprogram = clcreateprogramwithsource(clgpucontext, 1, (const char **)&clmatrixmul, &kernellength, &errcode); shrcheckerror(errcode, CL_SUCCESS); errcode = clbuildprogram(clprogram, 0, NULL, NULL, NULL, NULL); shrcheckerror(errcode, CL_SUCCESS); clkernel = clcreatekernel(clprogram, "matrixmul", &errcode); shrcheckerror(errcode, CL_SUCCESS); size_t localworksize[2], globalworksize[2]; int wa = WA; int wc = WC; errcode = clsetkernelarg(clkernel, 0, sizeof(cl_mem), (void *) &d_c); errcode = clsetkernelarg(clkernel, 1, sizeof(cl_mem), (void *)&d_a); errcode = clsetkernelarg(clkernel, 2, sizeof(cl_mem), (void *)&d_b); errcode = clsetkernelarg(clkernel, 3, sizeof(int), (void *) &wa); errcode = clsetkernelarg(clkernel, 4, sizeof(int), (void *) &wc); shrcheckerror(errcode, CL_SUCCESS); localworksize[0] = 16; localworksize[1] = 16; globalworksize[0] = 1024; globalworksize[1] = 1024; errcode = clenqueuendrangekernel(clcommandque, clkernel, 2, NULL, globalworksize, localworksize, 0, NULL, NULL); shrcheckerror(errcode, CL_SUCCESS); // 8. Retrieve result from device errcode = clenqueuereadbuffer(clcommandque, d_c, CL_TRUE, 0, mem_size_c, h_c, 0, NULL, NULL); shrcheckerror(errcode, CL_SUCCESS); // kernel void matrixmul( global float* C, global float* A, global float* B, int wa, int wb) { int bx = get_group_id(0); int by = get_group_id(1); int tx = get_local_id(0); int ty = get_local_id(1); int abegin = wa * BLOCK_SIZE * by; int aend = abegin + wa - 1; int astep = BLOCK_SIZE; int bbegin = BLOCK_SIZE * bx; int bstep = BLOCK_SIZE * wb; for (int a = abegin, b = bbegin; a <= aend; a += astep, b += bstep) { local float As[BLOCK_SIZE][BLOCK_SIZE]; local float Bs[BLOCK_SIZE][BLOCK_SIZE]; } } As[ty][tx] = A[a + wa * ty + tx]; Bs[ty][tx] = B[b + wb * ty + tx]; barrier(clk_local_mem_fence); for (int k = 0; k < BLOCK_SIZE; ++k) Csub += As[ty][k] * Bs[k][tx]; barrier(clk_local_mem_fence); int c = wb * BLOCK_SIZE * by + BLOCK_SIZE * bx; C[c + wb * ty + tx] = Csub;

GPU Computing with CUDA

GPU Computing with CUDA GPU Computing with CUDA Hands-on: Shared Memory Use (Dot Product, Matrix Multiplication) Dan Melanz & Dan Negrut Simulation-Based Engineering Lab Wisconsin Applied Computing Center Department of Mechanical

More information

Device Memories and Matrix Multiplication

Device Memories and Matrix Multiplication Device Memories and Matrix Multiplication 1 Device Memories global, constant, and shared memories CUDA variable type qualifiers 2 Matrix Multiplication an application of tiling runningmatrixmul in the

More information

To Co-Run, or Not To Co-Run: A Performance Study on Integrated Architectures

To Co-Run, or Not To Co-Run: A Performance Study on Integrated Architectures To Co-Run, or Not To Co-Run: A Performance Study on Integrated Architectures Feng Zhang, Jidong Zhai, Wenguang Chen Tsinghua University, Beijing, 100084, China Bingsheng He and Shuhao Zhang Nanyang Technological

More information

Performing Reductions in OpenCL

Performing Reductions in OpenCL Performing Reductions in OpenCL Mike Bailey mjb@cs.oregonstate.edu opencl.reduction.pptx Recall the OpenCL Model Kernel Global Constant Local Local Local Local Work- ItemWork- ItemWork- Item Here s the

More information

Introduction to GPGPU and GPU-architectures

Introduction to GPGPU and GPU-architectures Introduction to GPGPU and GPU-architectures Henk Corporaal Gert-Jan van den Braak http://www.es.ele.tue.nl/ Contents 1. What is a GPU 2. Programming a GPU 3. GPU thread scheduling 4. GPU performance bottlenecks

More information

GPU programming: CUDA. Sylvain Collange Inria Rennes Bretagne Atlantique

GPU programming: CUDA. Sylvain Collange Inria Rennes Bretagne Atlantique GPU programming: CUDA Sylvain Collange Inria Rennes Bretagne Atlantique sylvain.collange@inria.fr This lecture: CUDA programming We have seen some GPU architecture Now how to program it? 2 Outline GPU

More information

How to use OpenMP within TiViPE

How to use OpenMP within TiViPE TiViPE Visual Programming How to use OpenMP within TiViPE Technical Report: Version 1.0.0 Copyright c TiViPE 2011. All rights reserved. Tino Lourens TiViPE Kanaaldijk ZW 11 5706 LD Helmond The Netherlands

More information

GPU Computing Master Clss. Development Tools

GPU Computing Master Clss. Development Tools GPU Computing Master Clss Development Tools Generic CUDA debugger goals Support all standard debuggers across all OS Linux GDB, TotalView and DDD Windows Visual studio Mac - XCode Support CUDA runtime

More information

PPAR: CUDA basics. Sylvain Collange Inria Rennes Bretagne Atlantique PPAR

PPAR: CUDA basics. Sylvain Collange Inria Rennes Bretagne Atlantique PPAR PPAR: CUDA basics Sylvain Collange Inria Rennes Bretagne Atlantique sylvain.collange@inria.fr http://www.irisa.fr/alf/collange/ PPAR - 2018 This lecture: CUDA programming We have seen some GPU architecture

More information

CS/EE 217 GPU Architecture and Parallel Programming. Lecture 22: Introduction to OpenCL

CS/EE 217 GPU Architecture and Parallel Programming. Lecture 22: Introduction to OpenCL CS/EE 217 GPU Architecture and Parallel Programming Lecture 22: Introduction to OpenCL Objective To Understand the OpenCL programming model basic concepts and data types OpenCL application programming

More information

Lecture 7: Caffe: GPU Optimization. boris.

Lecture 7: Caffe: GPU Optimization. boris. Lecture 7: Caffe: GPU Optimization boris. ginzburg@intel.com 1 Agenda 1. Practical intro to CUDA Programming model Memory model Exercises 2. Caffe: CUDA part SynchedMemory Forward_gpu( ); 3. Projects 2

More information

CS : Many-core Computing with CUDA

CS : Many-core Computing with CUDA CS4402-9535: Many-core Computing with CUDA Marc Moreno Maza University of Western Ontario, London, Ontario (Canada) UWO-CS4402-CS9535 (Moreno Maza) CS4402-9535: Many-core Computing with CUDA UWO-CS4402-CS9535

More information

Heterogeneous Computing

Heterogeneous Computing OpenCL Hwansoo Han Heterogeneous Computing Multiple, but heterogeneous multicores Use all available computing resources in system [AMD APU (Fusion)] Single core CPU, multicore CPU GPUs, DSPs Parallel programming

More information

GPU programming: Code optimization part 1. Sylvain Collange Inria Rennes Bretagne Atlantique

GPU programming: Code optimization part 1. Sylvain Collange Inria Rennes Bretagne Atlantique GPU programming: Code optimization part 1 Sylvain Collange Inria Rennes Bretagne Atlantique sylvain.collange@inria.fr Outline Host-side task and memory management Recap: the GPU memory hierarchy Asynchronism

More information

On the limits of (and opportunities for?) GPU acceleration

On the limits of (and opportunities for?) GPU acceleration On the limits of (and opportunities for?) GPU acceleration Aparna Chandramowlishwaran, Jee Choi, Kenneth Czechowski, Murat (Efe) Guney, Logan Moon, Aashay Shringarpure, Richard (Rich) Vuduc HotPar 10,

More information

OpenCL on the GPU. San Jose, CA September 30, Neil Trevett and Cyril Zeller, NVIDIA

OpenCL on the GPU. San Jose, CA September 30, Neil Trevett and Cyril Zeller, NVIDIA OpenCL on the GPU San Jose, CA September 30, 2009 Neil Trevett and Cyril Zeller, NVIDIA Welcome to the OpenCL Tutorial! Khronos and industry perspective on OpenCL Neil Trevett Khronos Group President OpenCL

More information

Neil Trevett Vice President, NVIDIA OpenCL Chair Khronos President. Copyright Khronos Group, Page 1

Neil Trevett Vice President, NVIDIA OpenCL Chair Khronos President. Copyright Khronos Group, Page 1 Neil Trevett Vice President, NVIDIA OpenCL Chair Khronos President Copyright Khronos Group, 2009 - Page 1 Introduction and aims of OpenCL - Neil Trevett, NVIDIA OpenCL Specification walkthrough - Mike

More information

What GPU Computing Means for High-End Systems

What GPU Computing Means for High-End Systems Prolegomena... What GPU Computing Means for High-End Systems RICHARD VUDUC AND KENT CZECHOWSKI Georgia Institute of Technology...Between 2018 and 2020, the first exascale supercomputers will come online.

More information

Introduction to Parallel Programming & Cluster Computing GPGPU: Number Crunching in Your Graphics Card

Introduction to Parallel Programming & Cluster Computing GPGPU: Number Crunching in Your Graphics Card Introduction to Parallel Programming & Cluster Computing GPGPU: Number Crunching in Your Graphics Card Josh Alexander, University of Oklahoma Ivan Babic, Earlham College Andrew Fitz Gibbon, Shodor Education

More information

GPU Computing with CUDA

GPU Computing with CUDA GPU Computing with CUDA Dan Negrut Simulation-Based Engineering Lab Wisconsin Applied Computing Center Department of Mechanical Engineering University of Wisconsin-Madison Dan Negrut, 2012 UW-Madison Milano

More information

OpenCL The Open Standard for Heterogeneous Parallel Programming

OpenCL The Open Standard for Heterogeneous Parallel Programming OpenCL The Open Standard for Heterogeneous Parallel Programming March 2009 Copyright Khronos Group, 2009 - Page 1 Close-to-the-Silicon Standards Khronos creates Foundation-Level acceleration APIs - Needed

More information

ME964 High Performance Computing for Engineering Applications

ME964 High Performance Computing for Engineering Applications ME964 High Performance Computing for Engineering Applications Memory Layout in CUDA Execution Scheduling in CUDA February 15, 2011 Dan Negrut, 2011 ME964 UW-Madison They have computers, and they may have

More information

OpenCL. Dr. David Brayford, LRZ, PRACE PATC: Intel MIC & GPU Programming Workshop

OpenCL. Dr. David Brayford, LRZ, PRACE PATC: Intel MIC & GPU Programming Workshop OpenCL Dr. David Brayford, LRZ, brayford@lrz.de PRACE PATC: Intel MIC & GPU Programming Workshop 1 Open Computing Language Open, royalty-free standard C-language extension For cross-platform, parallel

More information

Introduction OpenCL Code Exercices. OpenCL. Tópicos em Arquiteturas Paralelas. Peter Frank Perroni. November 25, 2015

Introduction OpenCL Code Exercices. OpenCL. Tópicos em Arquiteturas Paralelas. Peter Frank Perroni. November 25, 2015 Code Tópicos em Arquiteturas Paralelas November 25, 2015 The Device Code GPU Device Memory Access Thread Management Private Private Thread1 Thread M Streaming Processor 0... Private Private Thread1 Thread

More information

Multicore Processors and GPUs: Programming Models and Compiler Optimizations

Multicore Processors and GPUs: Programming Models and Compiler Optimizations Multicore Processors and GPUs: Programming Models and Compiler Optimizations J. Ram Ramanujam P. Saday Sadayappan http://www.ece.lsu.edu/jxr/pact12tut/ 1 Tutorial Outline Technology Trends => Multi-core

More information

Tuning Algorithms and Data

Tuning Algorithms and Data Tuning Algorithms and Data Rich Vuduc Students: Aparna Chandramowlishwaran, Jee Choi, Cong Hou, Aashay Shringarpure, Sundaresan Venkatasubramanian (Amazon) hpcgarage.org 1 Tuning the Data Structure: Model

More information

CS 677: Parallel Programming for Many-core Processors Lecture 12

CS 677: Parallel Programming for Many-core Processors Lecture 12 1 CS 677: Parallel Programming for Many-core Processors Lecture 12 Instructor: Philippos Mordohai Webpage: www.cs.stevens.edu/~mordohai E-mail: Philippos.Mordohai@stevens.edu CS Department Project Poster

More information

Programming with CUDA and OpenCL. Dana Schaa and Byunghyun Jang Northeastern University

Programming with CUDA and OpenCL. Dana Schaa and Byunghyun Jang Northeastern University Programming with CUDA and OpenCL Dana Schaa and Byunghyun Jang Northeastern University Tutorial Overview CUDA - Architecture and programming model - Strengths and limitations of the GPU - Example applications

More information

Copyright 2013 by Yong Cao, Referencing UIUC ECE408/498AL Course Notes. OpenCL. OpenCL

Copyright 2013 by Yong Cao, Referencing UIUC ECE408/498AL Course Notes. OpenCL. OpenCL OpenCL OpenCL What is OpenCL? Ø Cross-platform parallel computing API and C-like language for heterogeneous computing devices Ø Code is portable across various target devices: Ø Correctness is guaranteed

More information

Neil Trevett Vice President, NVIDIA OpenCL Chair Khronos President

Neil Trevett Vice President, NVIDIA OpenCL Chair Khronos President 4 th Annual Neil Trevett Vice President, NVIDIA OpenCL Chair Khronos President Copyright Khronos Group, 2009 - Page 1 CPUs Multiple cores driving performance increases Emerging Intersection GPUs Increasingly

More information

OpenCL. Computation on HybriLIT Brief introduction and getting started

OpenCL. Computation on HybriLIT Brief introduction and getting started OpenCL Computation on HybriLIT Brief introduction and getting started Alexander Ayriyan Laboratory of Information Technologies Joint Institute for Nuclear Research 05.09.2014 (Friday) Tutorial in frame

More information

OpenCL. An Introduction for HPC programmers. Benedict Gaster, AMD Tim Mattson, Intel. - Page 1

OpenCL. An Introduction for HPC programmers. Benedict Gaster, AMD Tim Mattson, Intel. - Page 1 OpenCL An Introduction for HPC programmers Benedict Gaster, AMD Tim Mattson, Intel - Page 1 Preliminaries: Disclosures - The views expressed in this tutorial are those of the people delivering the tutorial.

More information

GPU Acceleration of CFD Codes and Optimizing for GPU Memory Hierarchies

GPU Acceleration of CFD Codes and Optimizing for GPU Memory Hierarchies GPU Acceleration of CFD Codes and Optimizing for GPU Memory Hierarchies Dr. Frank Mueller Nishanth Balasubramanian North Carolina State University Infrastructure: ARC cluster at NCSU l Hardware 2x AMD

More information

Using OpenMP to Program. Systems

Using OpenMP to Program. Systems Using OpenMP to Program Embedded Heterogeneous Systems Eric Stotzer, PhD Senior Member Technical Staff Software Development Organization, Compiler Team Texas Instruments February 16, 2012 Presented at

More information

GPGPU A Supercomputer on Your Desktop

GPGPU A Supercomputer on Your Desktop GPGPU A Supercomputer on Your Desktop GPUs 2 Graphics Processing Units (GPUs) were originally designed to accelerate graphics tasks like image rendering. They became very very popular with videogamers,

More information

GPU Computing with CUDA

GPU Computing with CUDA GPU Computing with CUDA Dan Negrut Andrew Seidl Daniel Melanz Simulation-Based Engineering Lab Department of Mechanical Engineering University of Wisconsin-Madison Dan Negrut, 2012 UW-Madison Bucuresti

More information

CS 677: Parallel Programming for Many-core Processors Lecture 11

CS 677: Parallel Programming for Many-core Processors Lecture 11 1 CS 677: Parallel Programming for Many-core Processors Lecture 11 Instructor: Philippos Mordohai Webpage: www.cs.stevens.edu/~mordohai E-mail: Philippos.Mordohai@stevens.edu Project Status Update Due

More information

GPGPU COMPUTE ON AMD. Udeepta Bordoloi April 6, 2011

GPGPU COMPUTE ON AMD. Udeepta Bordoloi April 6, 2011 GPGPU COMPUTE ON AMD Udeepta Bordoloi April 6, 2011 WHY USE GPU COMPUTE CPU: scalar processing + Latency + Optimized for sequential and branching algorithms + Runs existing applications very well - Throughput

More information

Parallel programming languages:

Parallel programming languages: Parallel programming languages: A new renaissance or a return to the dark ages? Simon McIntosh-Smith University of Bristol Microelectronics Research Group simonm@cs.bris.ac.uk 1 The Microelectronics Group

More information

Martin Kruliš, v

Martin Kruliš, v Martin Kruliš 1 GPGPU History Current GPU Architecture OpenCL Framework Example Optimizing Previous Example Alternative Architectures 2 1996: 3Dfx Voodoo 1 First graphical (3D) accelerator for desktop

More information

OpenCL in Action. Ofer Rosenberg

OpenCL in Action. Ofer Rosenberg pencl in Action fer Rosenberg Working with pencl API pencl Boot Platform Devices Context Queue Platform Query int GetPlatform (cl_platform_id &platform, char* requestedplatformname) { cl_uint numplatforms;

More information

Introduction to OpenCL. Benedict R. Gaster October, 2010

Introduction to OpenCL. Benedict R. Gaster October, 2010 Introduction to OpenCL Benedict R. Gaster October, 2010 OpenCL With OpenCL you can Leverage CPUs and GPUs to accelerate parallel computation Get dramatic speedups for computationally intensive applications

More information

Porting Performance across GPUs and FPGAs

Porting Performance across GPUs and FPGAs Porting Performance across GPUs and FPGAs Deming Chen, ECE, University of Illinois In collaboration with Alex Papakonstantinou 1, Karthik Gururaj 2, John Stratton 1, Jason Cong 2, Wen-Mei Hwu 1 1: ECE

More information

CUDA GPGPU Workshop CUDA/GPGPU Arch&Prog

CUDA GPGPU Workshop CUDA/GPGPU Arch&Prog CUDA GPGPU Workshop 2012 CUDA/GPGPU Arch&Prog Yip Wichita State University 7/11/2012 GPU-Hardware perspective GPU as PCI device Original PCI PCIe Inside GPU architecture GPU as PCI device Traditional PC

More information

Towards Transparent and Efficient GPU Communication on InfiniBand Clusters. Sadaf Alam Jeffrey Poznanovic Kristopher Howard Hussein Nasser El-Harake

Towards Transparent and Efficient GPU Communication on InfiniBand Clusters. Sadaf Alam Jeffrey Poznanovic Kristopher Howard Hussein Nasser El-Harake Towards Transparent and Efficient GPU Communication on InfiniBand Clusters Sadaf Alam Jeffrey Poznanovic Kristopher Howard Hussein Nasser El-Harake MPI and I/O from GPU vs. CPU Traditional CPU point-of-view

More information

GPU programming made easier

GPU programming made easier GPU programming made easier Jacob Jepsen 6. June 2014 University of Copenhagen Department of Computer Science 6. June 2014 Introduction We created a tool that reduces the development time of GPU code.

More information

Computer Graphics Presenting The Visual Future

Computer Graphics Presenting The Visual Future Computer Graphics Presenting The Visual Future Boris Ajdin Max Planck Institut für Informatik Introduction What is computer graphics? Standard view of the field Sci-Fi like applications Multi-disciplinary

More information

Introduction to Parallel & Distributed Computing OpenCL: memory & threads

Introduction to Parallel & Distributed Computing OpenCL: memory & threads Introduction to Parallel & Distributed Computing OpenCL: memory & threads Lecture 12, Spring 2014 Instructor: 罗国杰 gluo@pku.edu.cn In this Lecture Example: image rotation GPU threads and scheduling Understanding

More information

Data Parallelism. CSCI 5828: Foundations of Software Engineering Lecture 28 12/01/2016

Data Parallelism. CSCI 5828: Foundations of Software Engineering Lecture 28 12/01/2016 Data Parallelism CSCI 5828: Foundations of Software Engineering Lecture 28 12/01/2016 1 Goals Cover the material in Chapter 7 of Seven Concurrency Models in Seven Weeks by Paul Butcher Data Parallelism

More information

Introduction à OpenCL

Introduction à OpenCL 1 1 UDS/IRMA Journée GPU Strasbourg, février 2010 Sommaire 1 OpenCL 2 3 GPU architecture A modern Graphics Processing Unit (GPU) is made of: Global memory (typically 1 Gb) Compute units (typically 27)

More information

Optimization Techniques for Parallel Code: 4: GPU code optimization

Optimization Techniques for Parallel Code: 4: GPU code optimization Optimization Techniques for Parallel Code: 4: GPU code optimization Sylvain Collange Inria Rennes Bretagne Atlantique http://www.irisa.fr/alf/collange/ sylvain.collange@inria.fr OPT 2017 Outline Host-side

More information

GPU COMPUTING RESEARCH WITH OPENCL

GPU COMPUTING RESEARCH WITH OPENCL GPU COMPUTING RESEARCH WITH OPENCL Studying Future Workloads and Devices Perhaad Mistry, Dana Schaa, Enqiang Sun, Rafael Ubal, Yash Ukidave, David Kaeli Dept of Electrical and Computer Engineering Northeastern

More information

GPU programming: Code optimization. Sylvain Collange Inria Rennes Bretagne Atlantique

GPU programming: Code optimization. Sylvain Collange Inria Rennes Bretagne Atlantique GPU programming: Code optimization Sylvain Collange Inria Rennes Bretagne Atlantique sylvain.collange@inria.fr Outline Host-side task and memory management Asynchronism and streams Compute capabilities

More information

Martin Kruliš, v

Martin Kruliš, v Martin Kruliš 1 GPGPU History Current GPU Architecture OpenCL Framework Example (and its Optimization) Alternative Frameworks Most Recent Innovations 2 1996: 3Dfx Voodoo 1 First graphical (3D) accelerator

More information

GPU acceleration on IB clusters. Sadaf Alam Jeffrey Poznanovic Kristopher Howard Hussein Nasser El-Harake

GPU acceleration on IB clusters. Sadaf Alam Jeffrey Poznanovic Kristopher Howard Hussein Nasser El-Harake GPU acceleration on IB clusters Sadaf Alam Jeffrey Poznanovic Kristopher Howard Hussein Nasser El-Harake HPC Advisory Council European Workshop 2011 Why it matters? (Single node GPU acceleration) Control

More information

Design and implementation of a highperformance. platform on multigenerational GPUs.

Design and implementation of a highperformance. platform on multigenerational GPUs. Design and implementation of a highperformance stream-based computing platform on multigenerational GPUs. By Pablo Lamilla Álvarez September 27, 2010 Supervised by: Professor Shinichi Yamagiwa Kochi University

More information

OpenCL and the quest for portable performance. Tim Mattson Intel Labs

OpenCL and the quest for portable performance. Tim Mattson Intel Labs OpenCL and the quest for portable performance Tim Mattson Intel Labs Disclaimer The views expressed in this talk are those of the speaker and not his employer. I am in a research group and know very little

More information

Lecture 15: Introduction to GPU programming. Lecture 15: Introduction to GPU programming p. 1

Lecture 15: Introduction to GPU programming. Lecture 15: Introduction to GPU programming p. 1 Lecture 15: Introduction to GPU programming Lecture 15: Introduction to GPU programming p. 1 Overview Hardware features of GPGPU Principles of GPU programming A good reference: David B. Kirk and Wen-mei

More information

AMath 483/583, Lecture 24, May 20, Notes: Notes: What s a GPU? Notes: Some GPU application areas

AMath 483/583, Lecture 24, May 20, Notes: Notes: What s a GPU? Notes: Some GPU application areas AMath 483/583 Lecture 24 May 20, 2011 Today: The Graphical Processing Unit (GPU) GPU Programming Today s lecture developed and presented by Grady Lemoine References: Andreas Kloeckner s High Performance

More information

The resurgence of parallel programming languages

The resurgence of parallel programming languages The resurgence of parallel programming languages Jamie Hanlon & Simon McIntosh-Smith University of Bristol Microelectronics Research Group hanlon@cs.bris.ac.uk 1 The Microelectronics Research Group at

More information

INTRODUCTION TO OPENCL. Jason B. Smith, Hood College May

INTRODUCTION TO OPENCL. Jason B. Smith, Hood College May INTRODUCTION TO OPENCL Jason B. Smith, Hood College May 4 2011 WHAT IS IT? Use heterogeneous computing platforms Specifically for computationally intensive apps Provide a means for portable parallelism

More information

CSCI 402: Computer Architectures. Parallel Processors (2) Fengguang Song Department of Computer & Information Science IUPUI.

CSCI 402: Computer Architectures. Parallel Processors (2) Fengguang Song Department of Computer & Information Science IUPUI. CSCI 402: Computer Architectures Parallel Processors (2) Fengguang Song Department of Computer & Information Science IUPUI 6.6 - End Today s Contents GPU Cluster and its network topology The Roofline performance

More information

LARGE-SCALE FREE-SURFACE FLOW SIMULATION USING LATTICE BOLTZMANN METHOD ON MULTI-GPU CLUSTERS

LARGE-SCALE FREE-SURFACE FLOW SIMULATION USING LATTICE BOLTZMANN METHOD ON MULTI-GPU CLUSTERS ECCOMAS Congress 2016 VII European Congress on Computational Methods in Applied Sciences and Engineering M. Papadrakakis, V. Papadopoulos, G. Stefanou, V. Plevris (eds.) Crete Island, Greece, 5 10 June

More information

Enabling GPU support for the COMPSs-Mobile framework

Enabling GPU support for the COMPSs-Mobile framework Enabling GPU support for the COMPSs-Mobile framework Francesc Lordan, Rosa M Badia and Wen-Mei Hwu Nov 13, 2017 4th Workshop on Accelerator Programming Using Directives COMPSs-Mobile infrastructure WAN

More information

GPGPU IGAD 2014/2015. Lecture 1. Jacco Bikker

GPGPU IGAD 2014/2015. Lecture 1. Jacco Bikker GPGPU IGAD 2014/2015 Lecture 1 Jacco Bikker Today: Course introduction GPGPU background Getting started Assignment Introduction GPU History History 3DO-FZ1 console 1991 History NVidia NV-1 (Diamond Edge

More information

Titan - Early Experience with the Titan System at Oak Ridge National Laboratory

Titan - Early Experience with the Titan System at Oak Ridge National Laboratory Office of Science Titan - Early Experience with the Titan System at Oak Ridge National Laboratory Buddy Bland Project Director Oak Ridge Leadership Computing Facility November 13, 2012 ORNL s Titan Hybrid

More information

ECE 574 Cluster Computing Lecture 17

ECE 574 Cluster Computing Lecture 17 ECE 574 Cluster Computing Lecture 17 Vince Weaver http://web.eece.maine.edu/~vweaver vincent.weaver@maine.edu 6 April 2017 HW#8 will be posted Announcements HW#7 Power outage Pi Cluster Runaway jobs (tried

More information

Tools for Multi-Cores and Multi-Targets

Tools for Multi-Cores and Multi-Targets Tools for Multi-Cores and Multi-Targets Sebastian Pop Advanced Micro Devices, Austin, Texas The Linux Foundation Collaboration Summit April 7, 2011 1 / 22 Sebastian Pop Tools for Multi-Cores and Multi-Targets

More information

Bifrost - The GPU architecture for next five billion

Bifrost - The GPU architecture for next five billion Bifrost - The GPU architecture for next five billion Hessed Choi Senior FAE / ARM ARM Tech Forum June 28 th, 2016 Vulkan 2 ARM 2016 What is Vulkan? A 3D graphics API for the next twenty years Logical successor

More information

OpenCL Events. Mike Bailey. Oregon State University. OpenCL Events

OpenCL Events. Mike Bailey. Oregon State University. OpenCL Events 1 OpenCL Events Mike Bailey mjb@cs.oregonstate.edu opencl.events.pptx OpenCL Events 2 An event is an object that communicates the status of OpenCL commands Event Read Buffer dc Execute Kernel Write Buffer

More information

Advanced Computing for Engineering Applications

Advanced Computing for Engineering Applications Advanced Computing for Engineering Applications Dan Negrut Simulation-Based Engineering Lab Wisconsin Applied Computing Center Department of Mechanical Engineering Department of Electrical and Computer

More information

Scaling Fast Multipole Methods up to 4000 GPUs

Scaling Fast Multipole Methods up to 4000 GPUs Scaling Fast Multipole Methods up to 4000 GPUs Rio Yokota King Abdullah University of Science and Technology 4700 KAUST, Thuwal 23955-6900, Saudi Arabia +966-2-808-0321 rio.yokota@kaust.edu.sa Lorena Barba

More information

OpenCL / OpenGL Texture Interoperability: An Image Blurring Case Study

OpenCL / OpenGL Texture Interoperability: An Image Blurring Case Study 1 OpenCL / OpenGL Texture Interoperability: An Image Blurring Case Study Mike Bailey mjb@cs.oregonstate.edu opencl.opengl.rendertexture.pptx OpenCL / OpenGL Texture Interoperability: The Basic Idea 2 Application

More information

Massively Parallel Algorithms

Massively Parallel Algorithms Massively Parallel Algorithms Introduction to CUDA & Many Fundamental Concepts of Parallel Programming G. Zachmann University of Bremen, Germany cgvr.cs.uni-bremen.de Hybrid/Heterogeneous Computation/Architecture

More information

Introduction of Fujitsu s next-generation supercomputer

Introduction of Fujitsu s next-generation supercomputer Introduction of Fujitsu s next-generation supercomputer MATSUMOTO Takayuki July 16, 2014 HPC Platform Solutions Fujitsu has a long history of supercomputing over 30 years Technologies and experience of

More information

Generating Performance Portable Code using Rewrite Rules

Generating Performance Portable Code using Rewrite Rules Generating Performance Portable Code using Rewrite Rules From High-Level Functional Expressions to High-Performance OpenCL Code Michel Steuwer Christian Fensch Sam Lindley Christophe Dubach The Problem(s)

More information

OpenCL Events. Mike Bailey. Computer Graphics opencl.events.pptx

OpenCL Events. Mike Bailey. Computer Graphics opencl.events.pptx 1 OpenCL Events This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License Mike Bailey mjb@cs.oregonstate.edu opencl.events.pptx OpenCL Events 2 An

More information

The Rise of Open Programming Frameworks. JC BARATAULT IWOCL May 2015

The Rise of Open Programming Frameworks. JC BARATAULT IWOCL May 2015 The Rise of Open Programming Frameworks JC BARATAULT IWOCL May 2015 1,000+ OpenCL projects SourceForge GitHub Google Code BitBucket 2 TUM.3D Virtual Wind Tunnel 10K C++ lines of code, 30 GPU kernels CUDA

More information

CUDA. Schedule API. Language extensions. nvcc. Function type qualifiers (1) CUDA compiler to handle the standard C extensions.

CUDA. Schedule API. Language extensions. nvcc. Function type qualifiers (1) CUDA compiler to handle the standard C extensions. Schedule CUDA Digging further into the programming manual Application Programming Interface (API) text only part, sorry Image utilities (simple CUDA examples) Performace considerations Matrix multiplication

More information

OpenCL Training Course

OpenCL Training Course OpenCL Training Course Intermediate Level Class http://www.ksc.re.kr http://webedu.ksc.re.kr INDEX 1. Class introduction 2. Multi-platform and multi-device 3. OpenCL APIs in detail 4. OpenCL C language

More information

OPENCL C++ Lee Howes AMD Senior Member of Technical Staff, Stream Computing

OPENCL C++ Lee Howes AMD Senior Member of Technical Staff, Stream Computing OPENCL C++ Lee Howes AMD Senior Member of Technical Staff, Stream Computing Benedict Gaster AMD Principle Member of Technical Staff, AMD Research (now at Qualcomm) OPENCL TODAY WHAT WORKS, WHAT DOESN T

More information

Efficient Data Transfers

Efficient Data Transfers Efficient Data fers Slide credit: Slides adapted from David Kirk/NVIDIA and Wen-mei W. Hwu, 2007-2016 PCIE Review Typical Structure of a CUDA Program Global variables declaration Function prototypes global

More information

GPGPU Training. Personal Super Computing Competence Centre PSC 3. Jan G. Cornelis. Personal Super Computing Competence Center

GPGPU Training. Personal Super Computing Competence Centre PSC 3. Jan G. Cornelis. Personal Super Computing Competence Center GPGPU Training Personal Super Computing Competence Centre PSC 3 Jan G. Cornelis 1 Levels of Understanding Level 0 Host and device Level 1 Parallel execution on the device Level 2 Device model and work

More information

Introduction to OpenCL (utilisation des transparents de Cliff Woolley, NVIDIA) intégré depuis à l initiative Kite

Introduction to OpenCL (utilisation des transparents de Cliff Woolley, NVIDIA) intégré depuis à l initiative Kite Introduction to OpenCL (utilisation des transparents de Cliff Woolley, NVIDIA) intégré depuis à l initiative Kite riveill@unice.fr http://www.i3s.unice.fr/~riveill What is OpenCL good for Anything that

More information

High Performance Computing and Data Mining

High Performance Computing and Data Mining High Performance Computing and Data Mining Performance Issues in Data Mining Peter Christen Peter.Christen@anu.edu.au Data Mining Group Department of Computer Science, FEIT Australian National University,

More information

GPGPU IGAD 2014/2015. Lecture 4. Jacco Bikker

GPGPU IGAD 2014/2015. Lecture 4. Jacco Bikker GPGPU IGAD 2014/2015 Lecture 4 Jacco Bikker Today: Demo time! Parallel scan Parallel sort Assignment Demo Time Parallel scan What it is: in: 1 1 6 2 7 3 2 out: 0 1 2 8 10 17 20 C++: out[0] = 0 for ( i

More information

Many-core Processors Lecture 11. Instructor: Philippos Mordohai Webpage:

Many-core Processors Lecture 11. Instructor: Philippos Mordohai Webpage: 1 CS 677: Parallel Programming for Many-core Processors Lecture 11 Instructor: Philippos Mordohai Webpage: www.cs.stevens.edu/~mordohai E-mail: Philippos.Mordohai@stevens.edu Outline More CUDA Libraries

More information

Fast-multipole algorithms moving to Exascale

Fast-multipole algorithms moving to Exascale Numerical Algorithms for Extreme Computing Architectures Software Institute for Methodologies and Abstractions for Codes SIMAC 3 Fast-multipole algorithms moving to Exascale Lorena A. Barba The George

More information

Exploring Emerging Technologies in the Extreme Scale HPC Co- Design Space with Aspen

Exploring Emerging Technologies in the Extreme Scale HPC Co- Design Space with Aspen Exploring Emerging Technologies in the Extreme Scale HPC Co- Design Space with Aspen Jeffrey S. Vetter SPPEXA Symposium Munich 26 Jan 2016 ORNL is managed by UT-Battelle for the US Department of Energy

More information

Acceleration of HPC applications on hybrid CPU-GPU systems: When can Multi-Process Service (MPS) help?

Acceleration of HPC applications on hybrid CPU-GPU systems: When can Multi-Process Service (MPS) help? Acceleration of HPC applications on hybrid CPU- systems: When can Multi-Process Service (MPS) help? GTC 2018 March 28, 2018 Olga Pearce (Lawrence Livermore National Laboratory) http://people.llnl.gov/olga

More information

OpenCL parallel Processing using General Purpose Graphical Processing units TiViPE software development

OpenCL parallel Processing using General Purpose Graphical Processing units TiViPE software development TiViPE Visual Programming OpenCL parallel Processing using General Purpose Graphical Processing units TiViPE software development Technical Report Copyright c TiViPE 2012. All rights reserved. Tino Lourens

More information

Heterogeneous Computing

Heterogeneous Computing Heterogeneous Computing Featured Speaker Ben Sander Senior Fellow Advanced Micro Devices (AMD) DR. DOBB S: GPU AND CPU PROGRAMMING WITH HETEROGENEOUS SYSTEM ARCHITECTURE Ben Sander AMD Senior Fellow APU:

More information

Masterpraktikum Scientific Computing

Masterpraktikum Scientific Computing Masterpraktikum Scientific Computing High-Performance Computing Michael Bader Alexander Heinecke Technische Universität München, Germany Outline Intel Cilk Plus OpenCL Übung, October 7, 2012 2 Intel Cilk

More information

Instructions for setting up OpenCL Lab

Instructions for setting up OpenCL Lab Instructions for setting up OpenCL Lab This document describes the procedure to setup OpenCL Lab for Linux and Windows machine. Specifically if you have limited no. of graphics cards and a no. of users

More information

Tiled Matrix Multiplication

Tiled Matrix Multiplication Tiled Matrix Multiplication Basic Matrix Multiplication Kernel global void MatrixMulKernel(int m, m, int n, n, int k, k, float* A, A, float* B, B, float* C) C) { int Row = blockidx.y*blockdim.y+threadidx.y;

More information

INTRODUCTION TO OPENCL TM A Beginner s Tutorial. Udeepta Bordoloi AMD

INTRODUCTION TO OPENCL TM A Beginner s Tutorial. Udeepta Bordoloi AMD INTRODUCTION TO OPENCL TM A Beginner s Tutorial Udeepta Bordoloi AMD IT S A HETEROGENEOUS WORLD Heterogeneous computing The new normal CPU Many CPU s 2, 4, 8, Very many GPU processing elements 100 s Different

More information

Programming with

Programming with Programming with OmpSs@CUDA/OpenCL Xavier Martorell, Rosa M. Badia Computer Sciences Research Dept. BSC PATC Parallel Programming Workshop July 1-2, 2015 Agenda Motivation Leveraging OpenCL and CUDA Examples

More information

HPC with Multicore and GPUs

HPC with Multicore and GPUs HPC with Multicore and GPUs Stan Tomov Electrical Engineering and Computer Science Department University of Tennessee, Knoxville COSC 594 Lecture Notes March 22, 2017 1/20 Outline Introduction - Hardware

More information

Dense Linear Algebra. HPC - Algorithms and Applications

Dense Linear Algebra. HPC - Algorithms and Applications Dense Linear Algebra HPC - Algorithms and Applications Alexander Pöppl Technical University of Munich Chair of Scientific Computing November 6 th 2017 Last Tutorial CUDA Architecture thread hierarchy:

More information

CPU-GPU Heterogeneous Computing

CPU-GPU Heterogeneous Computing CPU-GPU Heterogeneous Computing Advanced Seminar "Computer Engineering Winter-Term 2015/16 Steffen Lammel 1 Content Introduction Motivation Characteristics of CPUs and GPUs Heterogeneous Computing Systems

More information