Introductory Parallel CPU Programming

By Mark Bull

Published on

Abstract


Bio

Dr Mark Bull

My principal responsibilities in EPCC are in the areas of research and education. My current research interests include the applications and benchmarking of shared memory parallel computers, and the use of Java for high performance computing. Most of my research is carried out as part of the UKHEC project. I am an active member of the Java Grande Forum and act as EPCC's representative on the OpenMP Architecture Review Board. I also chair EPCC's Futures Group, which is responsible for the centre's technical strategy.

I am a member of the team responsible for EPCC's MSc in High Performance Computing, acting as co-ordinator for the Shared Memory Programming and Aplied Computer Science modules.

(Source: http://www.epcc.ed.ac.uk/about/staff/dr-mark-bull)

Cite this work

Researchers should cite this work as follows:

  • Mark Bull (2013), "Introductory Parallel CPU Programming," https://nanohub.org/resources/19062.

    BibTex | EndNote

Time

Location

New York University, New York, NY

Submitter

NanoBio Node, Obaid Sarvana

University of Illinois at Urbana-Champaign

Tags

Introductory Parallel CPU Programming
by: Mark Bull
  • A Short Introduction to OpenMP 1. A Short Introduction to OpenMP 0
    00:00/00:00
  • Overview 2. Overview 160.30864197530863
    00:00/00:00
  • Shared memory systems 3. Shared memory systems 226.28368794326241
    00:00/00:00
  • Conceptual model 4. Conceptual model 328.86633165829141
    00:00/00:00
  • Real hardware 5. Real hardware 397.03799731783641
    00:00/00:00
  • Real hardware example 6. Real hardware example 473.84778225806451
    00:00/00:00
  • Threaded Programming Model 7. Threaded Programming Model 569.71604305484368
    00:00/00:00
  • Threads (cont.) 8. Threads (cont.) 850.39710538218
    00:00/00:00
  • Thread communication 9. Thread communication 873.14866032843554
    00:00/00:00
  • Thread Communication Thread 1 10. Thread Communication Thread 1 939.21490231712858
    00:00/00:00
  • Synchronisation 11. Synchronisation 1048.0728770885787
    00:00/00:00
  • Synchronisation example Thread 1 12. Synchronisation example Thread… 1171.7112382696268
    00:00/00:00
  • Parallel loops 13. Parallel loops 1377.6939732948395
    00:00/00:00
  • Reductions 14. Reductions 1459.07786259542
    00:00/00:00
  • What is OpenMP? 15. What is OpenMP? 1596.0000000000002
    00:00/00:00
  • Directives and sentinels 16. Directives and sentinels 1672.1499999999999
    00:00/00:00
  • Parallel region 17. Parallel region 1842.3700923170825
    00:00/00:00
  • Parallel region 18. Parallel region 1966.4047302967879
    00:00/00:00
  • Shared and private data 19. Shared and private data 2357.133653772793
    00:00/00:00
  • Parallel loops 20. Parallel loops 2459.8485999847408
    00:00/00:00
  • Synchronisation 21. Synchronisation 2727.0948187394097
    00:00/00:00
  • Compiling and running OpenMP programs 22. Compiling and running OpenMP p… 3041.5482839276337
    00:00/00:00
  • Running 23. Running 3150.5159196143013
    00:00/00:00
  • Parallel region directive 24. Parallel region directive 3158.5738221394813
    00:00/00:00
  • Parallel region directive (cont) 25. Parallel region directive (con… 3209.152656451382
    00:00/00:00
  • Useful functions 26. Useful functions 3245.3512339491144
    00:00/00:00
  • Useful functions (cont) 27. Useful functions (cont) 3310.5582605374962
    00:00/00:00
  • Clauses 28. Clauses 3372.0462551911787
    00:00/00:00
  • Shared and private variables 29. Shared and private variables 3392.8728340254906
    00:00/00:00
  • Shared and private (cont.) 30. Shared and private (cont.) 3468.6171177621845
    00:00/00:00
  • Shared and private (cont) 31. Shared and private (cont) 3717.6682896558309
    00:00/00:00
  • Reductions 32. Reductions 3871.8841472146637
    00:00/00:00
  • Reductions (cont.) Example: b = 10; 33. Reductions (cont.) Example: b … 3932.1024672872859
    00:00/00:00
  • Parallel loops 34. Parallel loops 4109.9595430747258
    00:00/00:00
  • Parallel do/for loops (cont) 35. Parallel do/for loops (cont) 4163.3474509803918
    00:00/00:00
  • Restrictions in C/C++ 36. Restrictions in C/C++ 4203.5106333255435
    00:00/00:00
  • Parallel do loops (example) 37. Parallel do loops (example) 4269.4939759036151
    00:00/00:00
  • Parallel do/for loops (cont) 38. Parallel do/for loops (cont) 4334.2939618644068
    00:00/00:00
  • SCHEDULE clause 39. SCHEDULE clause 4414.9
    00:00/00:00
  • STATIC schedule 40. STATIC schedule 4506.8236863163511
    00:00/00:00
  • STATIC schedule 41. STATIC schedule 4558.2691721686133
    00:00/00:00
  • DYNAMIC schedule 42. DYNAMIC schedule 4601.1999062573241
    00:00/00:00
  • GUIDED schedule 43. GUIDED schedule 4650.1194775695631
    00:00/00:00
  • DYNAMIC and GUIDED schedules 44. DYNAMIC and GUIDED schedules 4684.5899280575541
    00:00/00:00
  • AUTO schedule 45. AUTO schedule 4723.0377271469424
    00:00/00:00
  • Choosing a schedule 46. Choosing a schedule 4766.8089305005406
    00:00/00:00
  • Exercise Area of the Mandelbrot set 47. Exercise Area of the Mandelbro… 4998.0492957746483
    00:00/00:00