Vasileios Karakasis from CSCS gave this talk at the the Directive Based GPU Programming Workshop. “Directives-based programming facilitates the task of parallelizing your application by letting you focus on its parallel logic rather than on the very details and the low-level intricacies of the GPU architecture. In this course, we will introduce the OpenACC programming paradigms for the GPU. We will cover the parallel execution model and how it can be used to leverage parallelism, the memory model and how this differs from the classic CPU paradigm.”
OpenACC Helps Scientists Port their code at the Center for Application Readiness (CARR)
In this video, Jack Wells from the Oak Ridge Leadership Computing Facility and Duncan Poole from NVIDIA describe how OpenACC enabled them to port their codes to the new Summit supercomputer. “In preparation for next-generation supercomputer Summit, the Oak Ridge Leadership Computing Facility (OLCF) selected 13 partnership projects into its Center for Accelerated Application Readiness (CAAR) program. A collaborative effort of application development teams and staff from the OLCF Scientific Computing group, CAAR is focused on redesigning, porting, and optimizing application codes for Summit’s hybrid CPU–GPU architecture.”
Programming Many Tasks for Many Cores
“Tasks keep the CPUs busy. When a core is working, rather than waiting for work to be sent to it, the application progresses towards it conclusion. A caveat to all of this is to remember that tasking and threading models remain on the system it was created on. Tasks that use a shared memory space only work within the shared memory segment that the processing cores can get to. Shared memory on the CPU side of the system is separate from the shared memory on the coprocessor. The threads created will remain on the part of the system where it started.”
Compiler Directives for High Performance Computing
“Directives can be used as hints to the compiler to vectorize a loop. The developer would have better knowledge of any dependencies that a compiler, which must adhere to a number of rules when deciding if a loop can be vectorized. Directives force the compiler to vectorize, based on the knowledge of the developer, thus, if something does not work correctly, it is the responsibility of the developer to fix it, rather than blame the compiler.”
Users Accelerate their Own Code at EuroHack
“Despite what the name “EuroHack” may lead people to believe, no external systems were hacked during the EuroHack workshop in Lugano. In actual fact, the aim of the event was for experts to design computer codes that would exploit computer architectures more efficiently.”
Video: An Introduction to OpenACC
In this video, Bronson Messer from ORNL presents: An Introduction to OpenACC. “OpenACC is gaining momentum and adoption,” said Duncan Poole, President of the OpenACC Standards Group. “Developers benefit because using OpenACC directives makes parallel programming more productive and collaboration easier. Large, legacy codes are easier to maintain and accelerated code is more portable across HPC systems.”