Training program on gpu programming with cuda
This presentation is the property of its rightful owner.
Sponsored Links
1 / 32

Training Program on GPU Programming with CUDA PowerPoint PPT Presentation


  • 70 Views
  • Uploaded on
  • Presentation posted in: General

Training Program on GPU Programming with CUDA. 31 st July, 7 th Aug, 14 th Aug 2011 CUDA Teaching Center @ UoM. Day 1, Session 1 Introduction. Training Program on GPU Programming with CUDA. Sanath Jayasena CUDA Teaching Center @ UoM. Outline. Training Program Description

Download Presentation

Training Program on GPU Programming with CUDA

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Training program on gpu programming with cuda

Training Program onGPU Programming with CUDA

31st July, 7th Aug, 14th Aug 2011

CUDA Teaching Center @ UoM


Training program on gpu programming with cuda1

Day 1, Session 1

Introduction

Training Program on GPU Programming with CUDA

Sanath Jayasena

CUDA Teaching Center @ UoM


Outline

Outline

  • Training Program Description

  • CUDA Teaching Center at UoM

    Subject Matter

  • Introduction to GPU Computing

  • GPU Computing with CUDA

  • CUDA Programming Basics

CUDA Training Program


Overview of training program

Overview of Training Program

  • 3 Sundays, starting 31st July

  • Schedule and program outline

  • Main resource persons

    • Sanath Jayasena, Jayathu Samarawickrama, Kishan Wimalawarna, Lochandaka Ranathunga

      • Dept of Computer Science & Eng, Dept of Electronic & Telecom. Engineering (of Faculty of Engineering) and Faculty of IT

CUDA Training Program


Cuda teaching center

CUDA Teaching Center

  • UoM was selected as a CTC

    • A group of people from multiple Depts

    • http://research.nvidia.com/content/cuda-teaching-centers

  • Benefits

    • Donation of hardware by NVIDIA (GeForce GTX480s and Tesla C2070)

    • Access to other resources

  • Expectations

    • Use of the resources for teaching/research, industry collaboration

CUDA Training Program


Gpu computing introduction

GPU Computing: Introduction

  • Graphics Processing Units (GPUs)

    • high-performance many-core processors that can be used to accelerate a wide range of applications

  • GPGPU - General-Purpose computation on Graphics Processing Units

  • GPUs lead the race for floating-point performance since start of 21st century

  • GPUs are being used as parallel processors

CUDA Training Program


Gpu computing introduction1

GPU Computing: Introduction

  • General computing, until end of 20th century

    • Relied on the advances in hardware to increase the speed of software/apps

  • Slowed down since then due to

    • Power consumption issues

    • Limited productivity within a single processor

  • Switch to multi-core and many-core models

    • Multiple processing units (processor cores) used in each chip to increase the processing power

    • Impact on software developers?

CUDA Training Program


Gpu computing introduction2

GPU Computing: Introduction

  • A sequential program will only run on one of the cores, which will not become any faster

  • With each new generation of processors

    • Software that will continue to enjoy performance improvement will be parallel programs

    • Where, multiple threads of execution cooperate to achieve the functionality faster

CUDA Training Program


Cpu gpu performance gap

CPU-GPU Performance Gap

Source: CUDA Prog. Guide 4.0

CUDA Training Program


Cpu gpu performance gap1

CPU-GPU Performance Gap

Source: CUDA Prog. Guide 4.0

CUDA Training Program


Gpgpu cuda

GPGPU & CUDA

  • GPU designed as a numeric computing engine

    • Will not perform well on some tasks as CPUs

    • Most applications will use both CPUs and GPUs

  • CUDA

    • NVIDIA’s parallel computing architecture aimed at increasing computing performance by harnessing the power of the GPU

    • A programming model

CUDA Training Program


More details on gpus

More Details on GPUs

  • GPU is typically a computer card, installed into a PCI Express 16x slot

  • Market leaders: NVIDIA, Intel, AMD (ATI)

    • Example NVIDIA GPUs (donated to UoM)

GeForce GTX 480

Tesla 2070

CUDA Training Program


Example specifications

Example Specifications

CUDA Training Program


Cpu vs gpu architecture

CPU vs. GPU Architecture

The GPU devotes more transistors for computation

CUDA Training Program


Cpu gpu communication

CPU-GPU Communication

CUDA Training Program


Cuda architecture

CUDA Architecture

  • CUDA is NVIDA’s solution to access the GPU

  • Can be seen as an extension to C/C++

CUDA Software Stack

CUDA Training Program


Cuda architecture1

CUDA Architecture

  • There are two main parts

  • Host (CPU part)

    • -Single Program, Single Data

  • Device (GPU part)

    • -Single Program, Multiple Data

  • CUDA Training Program


    Cuda architecture2

    CUDA Architecture

    • The Grid

    • A group of threads all running

      • the same kernel

    • Can run multiple grids at once

    The Block

    Grids composed of blocks

    Each block is a logical unit containing a number of coordinating threads and some amount of shared memory

    GRID Architecture

    CUDA Training Program


    Some applications of gpgpu

    Some Applications of GPGPU

    Computational Structural Mechanics

    Bio-Informatics and Life Sciences

    Computational Electromagnetics and

    Electrodynamics

    Computational Finance

    CUDA Training Program


    Some applications

    Some Applications…

    Computational Fluid Dynamics

    Data Mining, Analytics, and Databases

    Imaging and Computer Vision

    Medical Imaging

    CUDA Training Program


    Some applications1

    Some Applications…

    Molecular Dynamics

    Numerical Analytics

    Weather, Atmospheric, Ocean Modeling

    and Space Sciences

    CUDA Training Program


    Cuda programming basics

    CUDA ProgrammingBasics


    Accessing using the cuda gpus

    Accessing/Using the CUDA-GPUs

    • You have been given access to our cluster

      • User accounts on 192.248.8.13x

      • It is a Linux system

    • CUDA Toolkit and SDK for development

      • Includes CUDA C/C++ compiler for GPUs (“nvcc”)

      • Will need C/C++ compiler for CPU code

    • NVIDIA device drivers needed to run programs

      • For programs to communicate with hardware

    CUDA Training Program


    Example program 1

    Example Program 1

    #include <cuda.h>

    #include <stdio.h>

    __global__ void kernel (void) { }

    int main (void)

    {

    kernel <<< 1, 1 >>> ();

    printf("Hello World!\n");

    return 0;

    }

    • “__global__” says the function is to be compiled to run on a “device” (GPU), not “host” (CPU)

    • Angle brackets “<<<“ and “>>>” for passing params/args to runtime

    A function executed on the GPU (device) is usually called a “kernel”

    CUDA Training Program


    Example program 2 part 1

    Example Program 2 – Part 1

    • As can be seen in next slide:

    • We can pass parameters to a kernel as we would with any C function

    • We need to allocate memory to do anything useful on a device, such as return values to the host

    CUDA Training Program


    Example program 2 part 2

    Example Program 2 – Part 2

    int main (void) {

    int c, *dev_c;

    cudaMalloc ((void **) &dev_c, sizeof (int));

    add <<< 1, 1 >>> (2,7, dev_c);

    cudaMemcpy(&c, dev_c, sizeof(int),

    cudaMemcpyDeviceToHost);

    printf(“2 + 7 = %d\n“, c);

    cudaFree(dev_c);

    return 0;

    }

    CUDA Training Program


    Example program 3

    Example Program 3

    Within host (CPU) code, call the kernel by using <<< and >>> specifying the grid size (number of blocks) and/or the block size (number of threads) - (more details later)

    CUDA Training Program


    Example program 3 contd

    Example Program 3 …contd

    Note:

    Details on threads and thread IDs will come later

    CUDA Training Program


    Example program 4

    Example Program 4

    CUDA Training Program


    Grids blocks and threads

    Grids, Blocks and Threads

    • A grid of size 6 (3x2 blocks)

    • Each block has 12 threads (4x3)

    CUDA Training Program


    Conclusion

    Conclusion

    • In this session we discussed

      • Introduction to GPU Computing

      • GPU Computing with CUDA

      • CUDA Programming Basics

    • Next session

      • Data Parallelism

      • CUDA Programming Model

      • CUDA Threads

    CUDA Training Program


    References for this session

    References for this Session

    • Chapters 1 and 2 of: D. Kirk and W. Hwu, Programming Massively Parallel Processors, Morgan Kaufmann, 2010

    • Chapters 1-4 of: E. Kandrot and J. Sanders, CUDA by Example, Addison-Wesley, 2010

    • Chapters 1-2 of: NVIDIACUDA C Programming Guide, NVIDIA Corporation, 2006-2011 (Versions 3.2 and 4.0)

    CUDA Training Program


  • Login