The parallel programming workshop on Oct 29 has been cancelled. Stay tuned for additional workshops in early 2020.

OpenMP Multicore Parallel Programming

Doing multicore programming at all is not difficult.
The tricky part is doing multicore well.

—Professor Mike Bailey, Oregon State University

Oregon State University is proud to offer a short course on the OpenMP multicore programming paradigm — a foundational skill for machine learning, cryptography, game programming, and many other cutting-edge technologies. Parallel programming skills will enable you to write code that runs several times faster by making better use of the hardware in your computer.

This course will include a 3-hour in-person workshop from 1:00-4:00pm, Tuesday October 29, at the OSU Portland Center. Leading into the in-person workshop, the course will include 2-3 hours of preparatory self-paced online video-based training available beginning October 22.

There will be short low-stakes quizzes to be sure that you are keeping up with the material (but no exams). There will be no required programming assignments. The course instructor, Professor Mike Bailey, will provide ample material in the online and in-person instruction for you to try out your new cutting-edge skills!


Topics Covered

  1. Introduction
  2. Multithreading and Multicore
  3. What is OpenMP All About?
  4. More Detail on Using OpenMP
  5. Using OpenMP Threads in for-loops
  6. Another Approach to Looping -- Single Program Multiple Data
  7. Running OpenMP Programs
  8. Running a Specific OpenMP Example Program
  9. Tips for Avoiding Problems in Multicore Programs
  10. Reduction Operations Among Threads
  11. OpenMP Synchronization
  12. Using OpenMP's "Parallel Sections"
  13. Using OpenMP's "Tasks"
  14. Speedups and Amdahl's Law
  15. Data Decomposition
  16. Functional Decomposition
  17. Sometimes You Might Have to Make Your Own Barrier Function
  18. The Cache
  19. An Example of Why You Need to Know How Cache Works, even without Multicore
  20. False Sharing
  21. Course Summary
  22. Good Multicore References


This course is targeted at working professionals who need to add multicore programming to their software developer's toolbelt. You don't need a lot of experience to take this course -- just be familiar with C/C++. There will be some mention of assembly language, but not much, so some familiarity with any assembly language will be advantageous.

To get the most out of the course in terms of applying what we'll cover, you should ideally have a laptop with a multicore CPU that you can bring to the Portland Center on October 29. (Most laptops have such a CPU.) Even if you don't know whether your laptop has a multicore CPU, you still will be able to learn and apply the concepts covered in this course, but you won't be able to measure for yourself the tremendous speed-up that a program can gain when you apply the skills taught in this course.

Registration and Timeline



Regarding course content...
Professor Mike Bailey

Regarding registration...
Associate School Head Chris Scaffidi

Oregon State University
School of Computer Science
1148 Kelley Engineering Center
Corvallis, OR 97331-5501