This talk is a summary about the ongoing HPC visualization activities, as well as a description of the technologies behind the developer-zone shown in the booth.
Developing successful scientific software becomes increasingly a collaborative endeavor, joining the talents of from a multitude of disciplines. NVIDIA and ETH Zurich are forming a Co-Design Lab for Hybrid Multicore Computing as a joint effort to develop and optimize scientific applications for hybrid computing architectures. In this talk, I will introduce the lab and present some early successes of this new collaboration.
OpenACC has quickly become the standard for accelerating large code bases with GPUs. Using directives, the programmer provides hints about data locality, data dependency and control flow that allows the compiler to automatically generate efficient GPU code. While the OpenACC model is well suited for a broad range of commonly encountered software patterns, it is sometimes necessary to fine-tune an application with advanced OpenACC directives or interface to an external CUDA code to take advantage of latest hardware features. The goal of this tutorial is to present the different strategies to tune OpenACC code and introduce mechanisms to interface OpenACC with other GPU code. Based on examples, we will first present different strategies to assess and optimize the performance of an OpenACC code, and will then focus on interfacing OpenACC code with CUDA and graphics libraries.
We will present a stencil library used in the heart of the COSMO numeric weather prediction model. During the talk we'll show how we implemented an abstraction that allows easy development of new stencils and solvers on top of a framework allowing execution on both CPU and GPU. The library makes efficient use of GPU resources and we will show how to structure memory accesses and computation optimally. Developers involved in porting or writing fully-featured C++ libraries for CUDA will also be interested in attending.
The libraries distributed in the CUDA SDK and offered by third parties provide a wealth for functions commonly encountered in a GPU acceleration project. Using these libraries can often significantly shorten the development time of a GPU project while leading to high-performance, high-quality software. In this tutorial, we will provide an overview of the libraries in the CUDA SDK, including cuBLAS, cuRAND, NPP and Thurst and introduce common use cases. The audience will not only learn about the strengths of the individual libraries, but also learn about the decision making process to select the best suited library for their project.