Stay up-to-date on the latest news, events and resources for the OpenACC community. This month’s highlights covers highlights from the OpenACC Annual Meeting, SC19, recent GPU Hackathons and more!
2. 2
WHAT IS OPENACC?
main()
{
<serial code>
#pragma acc kernels
{
<parallel code>
}
}
Add Simple Compiler Directive
POWERFUL & PORTABLE
Directives-based
programming model for
parallel
computing
Designed for
performance and
portability on
CPUs and GPUs
SIMPLE
Open Specification Developed by OpenACC.org Consortium
3. 3
silica IFPEN, RMM-DIIS on P100
OPENACC GROWING MOMENTUM
Wide Adoption Across Key HPC Codes
ANSYS Fluent
Gaussian
VASP
LSDalton
MPAS
GAMERA
GTC
XGC
ACME
FLASH
COSMO
Numeca
200 APPS* USING OpenACC
Prof. Georg Kresse
Computational Materials Physics
University of Vienna
For VASP, OpenACC is the way forward for GPU
acceleration. Performance is similar to CUDA, and
OpenACC dramatically decreases GPU
development and maintenance efforts. We’re
excited to collaborate with NVIDIA and PGI as an
early adopter of Unified Memory.
“ “
VASP
Top Quantum Chemistry and Material Science Code
* Applications in production and development
4. 4
READ ARTICLE
Hosted by RIKEN Center for Computational Science (RIKEN R-
CCS) in Kobe, Japan, the 2019 OpenACC Annual Meeting was
one of our most successful meetings yet.
SEMINAL EVENT FOR OPENACC:
2019 ANNUAL MEETING
Key statistics include:
• 70+ attendees
• Opening remarks from Duncan Poole, OpenACC, and
Matsuhisa Sato, RIKEN R-CCS.
• 2 Keynotes: Satoshi Matsuoka, RIKEN R-CCS, and Jack
Wells, ORNL.
• 11 invited talks from recognized experts across multiple
disciplines of science.
• GPU Bootcamp
• OpenACC User Group Networking event
5. 5
DON’T MISS OPENACC AT SC19:
SHARE. LEARN. NETWORK.
LEARN MORE
Built on a diverse community, SC is the yearly "must
attend" forum for stakeholders throughout the
technical computing community.
OpenACC will be represented by our members and
users across a variety of activities, including talks,
tutorials, Birds of a Feather (BoF) discussion,
workshops and a User Group Reception.
Join us to learn about the latest developments and
share your insights and experiences.
6. 6
YOU’RE INVITED:
OPENACC USER GROUP RECEPTION
RSVP Today
SC19 is just around the corner, promising to
bring some of the best technical
presentations, papers and activities across
the HPC community.
We invite you to join us for the OpenACC
User Group Reception at SC19. Enjoy great
company in a great atmosphere as you
network with your colleagues, share best
practices and discuss recent projects.
Space is limited. RSVP today!
7. 7
OPENACC AT SC19: SIXTH WORKSHOP ON
ACCELERATOR PROGRAMMING USING DIRECTIVES
LEARN MORE
Co-located with SC19, WACCPD has been one of the
major forums to bring together programming model
users, developers, and tools community to share
knowledge and experiences to tackle emerging
complex parallel computing systems.
The workshop highlights the state-of-art through
accepted papers, showcases all aspects of
heterogeneous systems, and discusses innovative
features, techniques and lessons learned.
8. 8
OPENACC AT SC19: FIFTH INTERNATIONAL
WORKSHOP ON HETEROGENEOUS HIGH-
PERFORMANCE RECONFIGURABLE COMPUTING
LEARN MORE
Co-located with SC19, this workshop will bring
together application experts, software developers, and
hardware engineers, both from industry and
academia, to share experiences and best practices to
leverage the practical application of reconfigurable
logic to Scientific Computing, Machine/Deep Learning,
and “Big Data” applications.
The workshop will focus on sharing experiences and
techniques for accelerating applications and/or
improving energy efficiency with FPGAs using
OpenCL, OpenMP, OpenACC, SYCL, C, C++, and
other high-level design flows.
9. 9
ACCELERATING SCIENCE ACROSS
DISCIPLINES AT PRINCETON UNIVERSITY
READ BLOG
Together with the Princeton Institute for Computational Science
and Engineering (PICSciE), the Research Software Engineering
Group of the Research Computing department hosted
Princeton’s first GPU Hackathon during the week of June 24th,
2019. Eight teams of developers, representing a myriad of
scientific domains, attended the five-day event to optimize and
port their codes to GPUs.
“Given the current architectural trends in HPC, this kind of
event provides a huge opportunity to accelerate and
advance science in ways that research groups alone
sometimes can’t achieve.”
~Ian Cosden, Manager
Research Software Engineering Group at Princeton
10. 10
THE FULL MONTY: FULL HACKATHON SPEEDS
SCIENTIFIC CODES ACROSS DOMAINS
READ BLOG
The University of Sheffield partnered with NVIDIA
and Oak Ridge Leadership Computing Facility
(OLCF) to hold its first GPU hackathon where
seven applications teams worked alongside
mentors with GPU-programming expertise to
accelerate their scientific codes using GPUs.
11. 11
RESOURCES
Paper: OpenACC Routine Directive Propagation Using
Interprocedural Analysis
Aniket Shivam and Michael Wolfe
VIEW NOW
Accelerator programming today requires the programmer to specify what data to place in device
memory, and what code to run on the accelerator device. When programming with OpenACC,
directives and clauses are used to tell the compiler what data to copy to and from the device, and
what code to compile for and run on the device. In particular, the programmer inserts directives
around code regions, typically loops, to identify compute constructs to be compiled for and run on the
device. If the compute construct calls a procedure, that procedure also needs to be marked for device
compilation, as does any routine called in that procedure, and so on transitively. In addition, the
marking needs to include the kind of parallelism that is exploited within the procedure, or within
routines called by the procedure. When using separate compilation, the marking where the procedure
is defined must be replicated in any file where it is called. This causes much frustration when first
porting existing programs to GPU programming using OpenACC.
This paper presents an approach to partially automate this process. The approach relies on
interprocedural analysis (IPA) to analyze OpenACC regions and procedure definitions, and to
propagate the necessary information forward and backward across procedure calls spanning all the
linked files, generating the required accelerator code through recompilation at link time. This
approach can also perform correctness checks to prevent compilation or runtime errors. This method
is implemented in the PGI OpenACC compiler.
12. 12
RESOURCES
Paper: Exploiting OpenMP & OpenACC to
Accelerate a Molecular Docking Mini-App in
Heterogeneous HPC Nodes
Emanuele Vitali, Davide Gadioli, Gianluca Palermo, Andrea
Beccari, Carlo Cavazzoni, and Cristina Silvano
In drug discovery, molecular docking is the task in charge of estimating the position
of a molecule when interacting with the docking site. This task is usually used to
perform screening of a large library of molecules, in the early phase of the process.
Given the amount of candidate molecules and the complexity of the application, this
task is usually performed using High-Performance Computing (HPC) platforms. In
modern HPC systems, heterogeneous platforms provide a better throughput with
respect to homogeneous platforms. In this work, we ported and optimized a
molecular docking application to a heterogeneous system, with one or more GPU
accelerators, leveraging a hybrid OpenMP and OpenACC approach. We prove that
our approach has a better exploitation of the node compared to pure CPU/GPU data
splitting approaches, reaching a throughput improvement up to 36% while
considering the same computing node.
VIEW NOW
Fig. 2. Overview of the GPU implementation of the docking algorithm. Each
box represents a computational part of the application that might be executed
independently. The optimization phase must evaluate each fragment
sequentially and the whole procedure might be repeated to refine the final
result
13. 13
STAY IN THE KNOW:
JOIN THE OPENACC COMMUNITY
JOIN TODAY
The OpenACC specification is designed for, and
by, users meaning that the OpenACC organization
relies on our users’ active participation to shape
the specification and to educate the scientific
community on its use.
Take an active role in influencing the future of both
the OpenACC specification and the organization
itself by becoming a member of the community.