TechPack Educators

From Education

Jump to: navigation, search

Note: This document was pulled from EAPF's shared folder on June 2, 2010, and may not accurately reflect its current state.

Charge for subgroup:

  1. Identify Target audience
    1. College Faculty - Graduate, undergraduate upper division, undergraduate lower division
    2. 9-12 Faculty - Check with CSTA for appropriateness.
    3. Workshop Instructors (for faculty and for students)
  2. Identify Capability (Tool/Knowledge) requirements for each target audience.
    1. Knowledge (categories)
    2. Languages, types of parallelism, Architecture, etc.
    3. Lay out foundation of parallelism, build out application areas from there.
    4. Identify range of topics, resources
    5. A lot of material already in existence, we need to get it organized
      1. Especially examples with lab/exercises
    6. Organization:
      1. Keyword/Tag based (”search box”) or thin categorical hierarchies?
      2. Bisection of the two models?
  3. Fill in examples of sources for material to fulfill requirements
    1. Existing websites, books, ACM course material, etc.
    2. Course material -- providing examples for “how” to teach these models
      1. E.g. short notes, video clips, etc. for teaching methods exemplars


Targets

Architecture/Operating Systems

Graphics/Visualization

Web/Internet/Database

PL/Software Engineering


(NOTE: Feel free to disregard -- maybe a community college/4-year private/ 4-year state/research breakdown makes more sense?)

Capabilities

Introductory Usage Exemplars:

  • Parallelism for PC game
    • data vs. task parallelism
  • CS1/CS2
  • OS courses
  • Graphics courses

Educator Bike Tours

  • CS1/2
  • ALG
  • Data Struct


The Bike Shop We are the owners and employees of the shop, we decide on the inventory, layout, etc. Customers (educators) come to the shop to see which bikes we have available and what tours you can take on those bikes. Our job is to decide which bikes we should sell, how to match customers to bikes, and how to support the touring activities.

  1. Need for a lexicon at a high level -- define scalability, parallelism, etc.
  2. What about entry for those who have a performance problem? “I’m only able to use 2 of my 100 cores,...”
  3. What resources do I need?
    1. Hardware
      1. multicore hardware - Almost all laptops and works tations are now dual core or better. These provide an adequate base to teach parallelism at san undergrduate level
      2. network of workstations -
      3. GPU -
      4. remote resources - pointers to places to go
    2. Tools/platforms
      1. shmem tools - OpenMP, TBB etc. Etc.
      2. dist tools - MPI, Fortan stuff
      3. GPU tools
  4. Books -
  5. Basic pedagogocal concepts - what is parallelism?


Sally’s Journeyman Bike Tour (Sally is a 4th year student, preparing for a capstone project)

  1. Introduction
    1. Parallelism- what it is, why, myths and misconceptions, Parallelism “gotcha’s”
    2. Architecture motivation (eg. shared memory parallelism, distributed memory parallelism)
    3. Scalability and Performance Portability
    4. Heterogeneous architectures (eg. GPU’s)
    5. Concurrency Vs Parallelism
      1. Concurrency and parallelism are not the same! Concurrency is a programming abstraction that
    6. Design Considerations
      1. Policies/ Best Practices/Licensing
  2. Parallelism Patterns
    1. (Define the parallel abstractions that will be used for Programming Models)
    2. Task parallelism
      1. Pull examples from motifs/dwarves
    3. Data Parallelism
    4. Pipeline Parallelism
  3. Programming Languages
    1. (Need explicit reference to what parallel models are common/well maintained for each of the languages)
    2. C, C++, Fortran - Programs written in these language can be parallelised through a number of Models - Depending on the needs of your program, you could consider . . . .
    3. Python
    4. C#, .Net -
    5. Java - Has threading and parallel APIs built into the platform . see Link


Parallel Programming Models/Libs/Interfaces

    1. OpenMP --
      1. Tutorial presentation -- http://www.nic.uoregon.edu/iwomp2005/iwomp2005_tutorial_openmp_rvdp.pdf
      2. Community site -- www.openmp.org
      3. Code example -- openmp.org -- MD example
      4. Cheat sheet -- Fortran & C/C++
      5. Book reference
    2. Open Compute Language (OpenCL) is a low-level host API and device programming model language for programming heterogeneous many-core architectures, supporting data and task parallelism. OpenCL is an open standard developed by the Khronos OpenCL working group with implementations available from wide selection of hardware and software vendors, including AMD, Apple, and NVIDIA.
      1. Introduction Tutorial --
        1. http://developer.amd.com/GPU/ATISTREAMSDK/pages/TutorialOpenCL.aspx
      2. Community site - www.khronos.org/opencl
      3. Quick reference guide - http://www.khronos.org/files/opencl-quick-reference-card.pdf
    3. Cuda
      1. NVIDIA site - http://www.nvidia.com/object/cuda_home_new.html
    4. Frameworks -
      1. Intel Threading Building Blocks (TBB) - TBB is a threading library to introduce parallelism into C/C++. TBB is a relatively easy way to introduce parallelism, especially for programmers familiar with templated code. TBB is available both as an open source project and also as commercial product from the Intel Corporation.
  1. Tutorial
  2. Reference Manual
  3. Example Codes(http://www.threadingbuildingblocks.org/codesamples.php)
      1. Ct, ConcRT, TPL, GCD
    1. Win32 threads - Still the default method used to introduce paralleism into code, native threading can be difficult implement and maintain. Microsfot corporation has a rich body of materila http://msdn.com
      1. Hart, Windows System Programming, 3rd ed.
    2. Posix
      1. Butenhof, Programming with POSIX Threads
      2. Programmers might consider using models such as OpenMP, TBB etc.
    3. Graphics API and languages - OpenGL, DirectX, WebGL
    4. Map/Reduce


  1. Compound Applications of Parallelism
    1. nested/hybrid
    2. Real example
  2. Parallel Algorithms
    1. Sort
      1. O(NlnN) vs Parallel vs GPU
    2. Spanning Tree/ Shortest Path
      1. Branch&Bound/ Divide & Conquer
    3. Parallel For
      1. Master/Worker
    4. Sparse Matrix
    5. FFT
    6. Finite Difference/Stencil methods
  3. Data Structures
    1. critical sections
    2. lock free implementations
  4. Dwarves/Motifs/Patterns
SC Education sites