SG++
SG++ Documentation

Welcome to the SG++ documentation.
The current version of SG++ can be found at Downloads and Version History.

If you use any part of the software or any resource of this webpage and/or documentation, you implicitly accept the copyright (see the Copyright). This includes that you have to cite one of the papers dealing with sparse grids when publishing work with the help of SG++ (see below).
Images taken from [1]

[1] D. Pflüger, Spatially Adaptive Sparse Grids for Higher-Dimensional Problems. Verlag Dr. Hut, München, 2010. ISBN 9-783-868-53555-6.

# Overview

SG++ is a toolbox allowing to employ spatially adaptive sparse grids straightforward, flexibly, and without the vast initial overhead that has to be spent when implementing sparse grids and the corresponding algorithms. To be able to deal with different kinds of problems in a spatially adaptive way—ranging from interpolation and quadrature via the solution of differential equations to regression, classification, and more—a main motivation behind the development and all considerations was to create a toolbox which can be used in a very flexible and modular way by different users in different applications.

The main features of the sparse grid toolbox are efficiency and flexibility, both of which can sometimes be nasty rivals, for example if the reusability of an algorithm for different purposes requires extra data structures or control mechanisms, thus slowing down special algorithmic variants. To ensure performance at run-time, we use C++ for all performance critical parts. Considering flexibility, we have spent a great deal in ensuring modularity, reusability and the separation of data structures and algorithms. Furthermore, we provide the means to use the SG++ toolbox from within Python, MATLAB, Java, and C++, of course.

To name a few special features:

• Different types of basis functions are supported which enable to cope with the characteristics of special applications.
• Modern shared-memory multi-core systems are supported to speed-up computations for some performance critical operations.
• Adaptive refinement criteria can easily specified as functor objects.
• The underlying data structure (which is, per default, hash-based) is encapsulated so that it can be exchanged by other choices.
• Template-based support for fast realizations of typical sparse-grid algorithms are provided that make use of the tensor product structure of the underlying basis.

The documentation of the SG++ toolbox is structured in two main parts. The first one, Manual, is dedicated to users of SG++. For example, installation instructions are provided as well as short use cases as a quick start to using SG++.

The second one, Development How-To, addresses all those who want to contribute to SG++ or who are involved in its development. There, the styleguide can be found, references to useful tools and utilities are provided, and a few current issues are gathered.

You can find these pages and more in the menu to the left. If you do not see a menu, JavaScript is deactivated.

Though we do not guarantee for anything, and though we do not have the money to provide quick and fast support, we are happy about any comments, recommendations, hints on missing information, …

# Literature

Please cite one of the corresponding publications (BibTeX snippets below):

• For a general reference to SG++:
• D. Pflüger, Spatially Adaptive Sparse Grids for Higher-Dimensional Problems. Verlag Dr. Hut, München, 2010. ISBN 9-783-868-53555-6.
• D. Pflüger, Spatially Adaptive Refinement. In J. Garcke and M. Griebel (ed.), Sparse Grids and Applications of Lecture Notes in Computational Science and Engineering, p. 243–262. Springer, Berlin Heidelberg, October 2012.
• For data mining:
• D. Pflüger, B. Peherstorfer and H.-J. Bungartz: Spatially adaptive sparse grids for high-dimensional data-driven problems. In Journal of Complexity, Volume 26(5), p. 508–522. Academic Press, Inc., Orlando, FL, USA, October 2010. Published online April 2010.
• For clustering:
• B. Peherstorfer, D. Pflüger and H.-J. Bungartz: Clustering Based on Density Estimation with Sparse Grids. In KI 2012: Advances in Artificial Intelligence, Volume 7526 of Lecture Notes in Computer Science. Springer, October 2012.
• For parallelization:
• A. Heinecke and D. Pflüger: Multi- and Many-Core Data Mining with Adaptive Sparse Grids. In Proceedings of the 8th ACM International Conference on Computing Frontiers, p. 29:1–29:10. ACM, New York, USA, May 2011.
• For B-splines or optimization:
• J. Valentin and D. Pflüger: Hierarchical Gradient-Based Optimization with B-Splines on Sparse Grids. In J. Garcke, D. Pflüger (ed.), Sparse Grids and Applications – Stuttgart 2014, Volume 109 of Lecture Notes in Computational Science and Engineering, pp. 315–336. Springer, March 2016.

## BibTeX

@book{pflueger10spatially,
author = {Pfl{\"{u}}ger, Dirk},
institution = {Institut f{\"{u}}r Informatik, Technische Universit{\"{a}}t M{\"{u}}nchen},
month = aug,
publisher = {Verlag Dr. Hut},
title = {Spatially Adaptive Sparse Grids for High-Dimensional Problems},
year = {2010},
ISBN = {9783868535556},
URL = {http://www5.in.tum.de/pub/pflueger10spatially.pdf}
}
@inproceedings{pflueger12spatially,
author = {Pfl{\"{u}}ger, Dirk},
booktitle = {Sparse Grids and Applications},
editor = {Garcke, Jochen and Griebel, Michael},
month = oct,
pages = {243--262},
publisher = {Springer},
series = {Lecture Notes in Computational Science and Engineering},
year = {2012},
URL = {http://www5.in.tum.de/pub/pflueger12spatially_preprint.pdf}
}
@article{pflueger10spatially,
author = {Pfl{\"{u}}ger, Dirk and Peherstorfer, Benjamin and Bungartz, Hans-Joachim},
journal = {Journal of Complexity},
month = oct,
note = {published online April 2010},
number = {5},
pages = {508----522},
title = {Spatially adaptive sparse grids for high-dimensional data-driven problems},
volume = {26},
year = {2010},
ISSN = {0885-064X}
}
@inproceedings{peherstorfer12clustering,
author = {Peherstorfer, Benjamin and Pfl{\"{u}}ger, Dirk and Bungartz, Hans-Joachim},
booktitle = {KI 2012: Advances in Artificial Intelligence},
month = oct,
publisher = {Springer},
series = {Lecture Notes in Computer Science},
title = {Clustering Based on Density Estimation with Sparse Grids},
volume = {7526},
year = {2012}
}
@inproceedings{heinecke11multi,
author = {Heinecke, Alexander and Pfl{\"{u}}ger, Dirk},
booktitle = {Proceedings of the 8th ACM International Conference on Computing Frontiers},
month = may,
pages = {29:1--29:10},
publisher = {ACM},
title = {Multi- and Many-Core Data Mining with Adaptive Sparse Grids},
year = {2011},
ISBN = {9781450306980}
}
@inproceedings{valentin16hierarchical,
author = {Valentin, Julian and Pfl{\"{u}}ger, Dirk},
title = {Hierarchical Gradient-Based Optimization with B-Splines on Sparse Grids},
editor = {Garcke, Jochen and Pfl{\"{u}}ger, Dirk},
booktitle = {Sparse Grids and Applications -- Stuttgart 2014},
series = {Lecture Notes in Computational Science and Engineering},
volume = {109},
publisher = {Springer},
year = {2016},
pages = {315--336}
}