SG++
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
SG++: General Sparse Grid Toolbox

SG++ is a universal toolbox for spatially adaptive sparse grid methods and the combination technique. It provides various low-level and high-level sparse grid functionality allowing one to start using sparse grids with minimal initial implementation effort. The functionality ranges from interpolation and quadrature via the solution of differential equations to regression, classification, and more. The SG++ toolbox supports multiple operating systems and multiple programming languages. You can use SG++ with Python, MATLAB, Java, and C++.

Our development focuses on providing an efficient and flexible sparse grid toolbox to support a broad spectrum of users and applications. To ensure efficiency at run-time, we use C++ for all performance critical parts. Considering flexibility, the software architecture of the SG++ toolbox ensures modularity, reusability, and encapsulation of data structures and algorithms.

SG++ is an open source software and delivered as source code. If you use any parts of the software or any resources of this webpage and/or documentation, you implicitly accept the copyright (see the Copyright). In this case, please give us credit by citing the SG++ toolbox in your publications. For the appropriate citation of SG++ in your publications, please refer to the section How to Cite.

The current version of SG++ can be found at Downloads and Version History and the online version of this documentation at http://sgpp.sparsegrids.org.

Getting Started

Start by reading the installation instructions for your operating system: Linux (GCC/Clang/ICC), OSX (GCC/ICC), or Windows (MinGW).

If you are going to use SG++ in your application, please consult the User Manual for an overview of the toolbox structure and helpful examples.

If you are going to extend and develop SG++, please consult the Developer Manual to get familiar with the coding guidelines and conventions. The Development Manual contains the styleguide, the references to useful tools and utilities, as well as a collection of some current issues.

You can find these pages and more in the menu to the left. If you do not see a menu, please activate the JavaScript support in your web-browser.

Features

Functionality of the toolbox include

  • function interpolation,
  • quadrature,
  • partial differential equations,
  • data mining and machine learning,
  • uncertainty quantification,
  • function optimization.

Technical features include:

  • 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.

Questions and Issues

We appreciate any feedback regarding the improvement of documentation, user experience, and application support. We are always looking for new collaborations to extend functionality and include new applications.

How to Cite

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.
  • For spatially adaptive refinement:
    • 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,
    address = {M{\"{u}}nchen},
    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,
    address = {Berlin Heidelberg},
    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},
    title = {Spatially Adaptive Refinement},
    year = {2012},
    URL = {http://www5.in.tum.de/pub/pflueger12spatially_preprint.pdf}
}
@article{pflueger10spatially,
    address = {Orlando, FL, USA},
    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},
    publisher = {Academic Press, Inc.},
    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,
    address = {New York, USA},
    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}
}