author	 = {Nabeeh Jum'ah and Julian Kunkel},
	title	 = {{Performance Portability of Earth System Models with User-Controlled GGDML code Translation}},
	year	 = {2019},
	month	 = {01},
	booktitle	 = {{High Performance Computing: ISC High Performance 2018 International Workshops, Frankfurt/Main, Germany, June 28, 2018, Revised Selected Papers}},
	editor	 = {Rio Yokota and Michele Weiland and John Shalf and Sadaf Alam},
	publisher	 = {Springer},
	series	 = {Lecture Notes in Computer Science},
	number	 = {11203},
	pages	 = {693--710},
	conference	 = {P3MA workshop, ISC HPC},
	organization	 = {ISC Team},
	location	 = {Frankfurt, Germany},
	isbn	 = {978-3-030-02465-9},
	issn	 = {1611-3349},
	doi	 = {},
	abstract	 = {The increasing need for performance of earth system modeling and other scientific domains pushes the computing technologies in diverse architectural directions. The development of models needs technical expertise and skills of using tools that are able to exploit the hardware capabilities. The heterogeneity of architectures complicates the development and the maintainability of the models. To improve the software development process of earth system models, we provide an approach that simplifies the code maintainability by fostering separation of concerns while providing performance portability. We propose the use of high-level language extensions that reflect scientific concepts. The scientists can use the programming language of their own choice to develop models, however, they can use the language extensions optionally wherever they need. The code translation is driven by configurations that are separated from the model source code. These configurations are prepared by scientific programmers to optimally use the machine’s features. The main contribution of this paper is the demonstration of a user-controlled source-to-source translation technique of earth system models that are written with higher-level semantics. We discuss a flexible code translation technique that is driven by the users through a configuration input that is prepared especially to transform the code, and we use this technique to produce OpenMP or OpenACC enabled codes besides MPI to support multi-node configurations.},