nektar++: library design - nektar++ – spectral/hp ... · nektar++: library design chris cantwell,...

43
Nektar++: Library design Chris Cantwell , David Moxey, Mike Kirby, Spencer Sherwin Nektar++ Workshop Imperial College London 7th July 2015

Upload: others

Post on 24-May-2020

11 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Nektar++: Library design - Nektar++ – Spectral/hp ... · Nektar++: Library design Chris Cantwell, David Moxey, Mike Kirby, Spencer Sherwin Nektar++ Workshop Imperial College London

Nektar++: Library design

Chris Cantwell, David Moxey, Mike Kirby, Spencer Sherwin

Nektar++ WorkshopImperial College London

7th July 2015

Page 2: Nektar++: Library design - Nektar++ – Spectral/hp ... · Nektar++: Library design Chris Cantwell, David Moxey, Mike Kirby, Spencer Sherwin Nektar++ Workshop Imperial College London

Overview

• Library design overview

• Collections

• Developer Practice

• User Guide and Developer Guide

Page 3: Nektar++: Library design - Nektar++ – Spectral/hp ... · Nektar++: Library design Chris Cantwell, David Moxey, Mike Kirby, Spencer Sherwin Nektar++ Workshop Imperial College London

Nektar++: Objectives1

Expose different discretisations (CG, DG) by combiningand reusing low-level elemental mathematical constructs.

Mathematical Construction

Cross-dimensional support: 1D, 2D and 3D

Retain and exploit domain symmetries andembeddings (homogeneous, cylindrical, manifold)

==

Challenge high-/low-order boundaries whilemaintaining efficiency.

Computational Implementation

Bridge current and future hardware diversity.

Achieve flexible HPC scalability and performance through hybrid parallelism.

Page 4: Nektar++: Library design - Nektar++ – Spectral/hp ... · Nektar++: Library design Chris Cantwell, David Moxey, Mike Kirby, Spencer Sherwin Nektar++ Workshop Imperial College London

Nektar++: Design

MultiRegions

LocalRegions

-1

-1

1

1

SpatialDomains

StdRegions

LibUtilities

SolverUtils

SPECTRAL ELEMENT METHOD

AUXILIARY

APPLICATION DOMAIN • Stack of libraries

• Build up the spectral/hp elementmethod systematically

• Core mathematical abstractions atbottom

• Complete physical domaindescription and operators at top

• Encapsulate complexities of thespectral/hp element formulation atthe top levels to improveaccessibility of methods

• Allow users to still engage atlower level depending on theirrequirements (e.g. for methodsresearch)

Page 5: Nektar++: Library design - Nektar++ – Spectral/hp ... · Nektar++: Library design Chris Cantwell, David Moxey, Mike Kirby, Spencer Sherwin Nektar++ Workshop Imperial College London

Nektar++: Design

MultiRegions

LocalRegions

-1

-1

1

1

SpatialDomains

StdRegions

LibUtilities

SolverUtils

SPECTRAL ELEMENT METHOD

AUXILIARY

APPLICATION DOMAIN • Stack of libraries

• Build up the spectral/hp elementmethod systematically

• Core mathematical abstractions atbottom

• Complete physical domaindescription and operators at top

• Encapsulate complexities of thespectral/hp element formulation atthe top levels to improveaccessibility of methods

• Allow users to still engage atlower level depending on theirrequirements (e.g. for methodsresearch)

Page 6: Nektar++: Library design - Nektar++ – Spectral/hp ... · Nektar++: Library design Chris Cantwell, David Moxey, Mike Kirby, Spencer Sherwin Nektar++ Workshop Imperial College London

Nektar++: Design

MultiRegions

LocalRegions

-1

-1

1

1

SpatialDomains

StdRegions

LibUtilities

SolverUtils

SPECTRAL ELEMENT METHOD

AUXILIARY

APPLICATION DOMAIN • Stack of libraries

• Build up the spectral/hp elementmethod systematically

• Core mathematical abstractions atbottom

• Complete physical domaindescription and operators at top

• Encapsulate complexities of thespectral/hp element formulation atthe top levels to improveaccessibility of methods

• Allow users to still engage atlower level depending on theirrequirements (e.g. for methodsresearch)

Page 7: Nektar++: Library design - Nektar++ – Spectral/hp ... · Nektar++: Library design Chris Cantwell, David Moxey, Mike Kirby, Spencer Sherwin Nektar++ Workshop Imperial College London

Nektar++: Operator construction

Helmholtz problem:

Nektar++ is a spectral/hp element toolkit written in C++.

Weak form + IBP:

MultiRegions LocalRegions

StdRegions

-1-1

1

1

SpatialDomains

Collections

-1-1

1

1

Page 8: Nektar++: Library design - Nektar++ – Spectral/hp ... · Nektar++: Library design Chris Cantwell, David Moxey, Mike Kirby, Spencer Sherwin Nektar++ Workshop Imperial College London

Nektar++: Operator construction

Helmholtz problem:

Nektar++ is a spectral/hp element toolkit written in C++.

Weak form + IBP:

MultiRegions LocalRegions

StdRegions

-1-1

1

1

SpatialDomains

Collections

-1-1

1

1

Page 9: Nektar++: Library design - Nektar++ – Spectral/hp ... · Nektar++: Library design Chris Cantwell, David Moxey, Mike Kirby, Spencer Sherwin Nektar++ Workshop Imperial College London

Nektar++: Operator construction

Helmholtz problem:

Nektar++ is a spectral/hp element toolkit written in C++.

Weak form + IBP:

MultiRegions

LocalRegions

StdRegions

-1-1

1

1

SpatialDomains

Collections

-1-1

1

1

Page 10: Nektar++: Library design - Nektar++ – Spectral/hp ... · Nektar++: Library design Chris Cantwell, David Moxey, Mike Kirby, Spencer Sherwin Nektar++ Workshop Imperial College London

Nektar++: Operator construction

Helmholtz problem:

Nektar++ is a spectral/hp element toolkit written in C++.

Weak form + IBP:

MultiRegions LocalRegions

StdRegions

-1-1

1

1

SpatialDomains

Collections

-1-1

1

1

Page 11: Nektar++: Library design - Nektar++ – Spectral/hp ... · Nektar++: Library design Chris Cantwell, David Moxey, Mike Kirby, Spencer Sherwin Nektar++ Workshop Imperial College London

Nektar++: Operator construction

Helmholtz problem:

Nektar++ is a spectral/hp element toolkit written in C++.

Weak form + IBP:

MultiRegions LocalRegions

StdRegions

-1-1

1

1

SpatialDomains

Collections

-1-1

1

1

Page 12: Nektar++: Library design - Nektar++ – Spectral/hp ... · Nektar++: Library design Chris Cantwell, David Moxey, Mike Kirby, Spencer Sherwin Nektar++ Workshop Imperial College London

Nektar++: Operator construction

Helmholtz problem:

Nektar++ is a spectral/hp element toolkit written in C++.

Weak form + IBP:

MultiRegions LocalRegions

StdRegions

-1-1

1

1

SpatialDomains

Collections

-1-1

1

1

Page 13: Nektar++: Library design - Nektar++ – Spectral/hp ... · Nektar++: Library design Chris Cantwell, David Moxey, Mike Kirby, Spencer Sherwin Nektar++ Workshop Imperial College London

Nektar++: Operator construction

Helmholtz problem:

Nektar++ is a spectral/hp element toolkit written in C++.

Weak form + IBP:

MultiRegions LocalRegions

StdRegions

-1-1

1

1

SpatialDomains

Collections

-1-1

1

1

Page 14: Nektar++: Library design - Nektar++ – Spectral/hp ... · Nektar++: Library design Chris Cantwell, David Moxey, Mike Kirby, Spencer Sherwin Nektar++ Workshop Imperial College London

Implementation strategies

=

Global Strategy

=

Local Strategy

=Sum-factorisation

Page 15: Nektar++: Library design - Nektar++ – Spectral/hp ... · Nektar++: Library design Chris Cantwell, David Moxey, Mike Kirby, Spencer Sherwin Nektar++ Workshop Imperial College London

Implementation strategies

=

Global Strategy

=

Local Strategy

=Sum-factorisation

Page 16: Nektar++: Library design - Nektar++ – Spectral/hp ... · Nektar++: Library design Chris Cantwell, David Moxey, Mike Kirby, Spencer Sherwin Nektar++ Workshop Imperial College London

Implementation strategies

=

Global Strategy

=

Local Strategy

=Sum-factorisation

Page 17: Nektar++: Library design - Nektar++ – Spectral/hp ... · Nektar++: Library design Chris Cantwell, David Moxey, Mike Kirby, Spencer Sherwin Nektar++ Workshop Imperial College London

Collections: Design

=

=

=

Local Matrix StdMat

1. Apply Jacobian (L1)

2. L3 Multiply by ref. matrix

=

IterPerExp

1. Apply Jacobian (L1)2. L2 multiply by ref. matrix

for i = 1:N

...

SumFac (Quad)

1. Apply Jacobian (L1)2. L2 multiply for first dim ref. matrix

... =

for i = 1:N

3. L2 multiply for second dim ref. matrix

=

Page 18: Nektar++: Library design - Nektar++ – Spectral/hp ... · Nektar++: Library design Chris Cantwell, David Moxey, Mike Kirby, Spencer Sherwin Nektar++ Workshop Imperial College London

Collections: Design

=

=

=

Local Matrix StdMat

1. Apply Jacobian (L1)

2. L3 Multiply by ref. matrix

=

IterPerExp

1. Apply Jacobian (L1)2. L2 multiply by ref. matrix

for i = 1:N

...

SumFac (Quad)

1. Apply Jacobian (L1)2. L2 multiply for first dim ref. matrix

... =

for i = 1:N

3. L2 multiply for second dim ref. matrix

=

Page 19: Nektar++: Library design - Nektar++ – Spectral/hp ... · Nektar++: Library design Chris Cantwell, David Moxey, Mike Kirby, Spencer Sherwin Nektar++ Workshop Imperial College London

Collections: Design

=

=

=

Local Matrix StdMat

1. Apply Jacobian (L1)

2. L3 Multiply by ref. matrix

=

IterPerExp

1. Apply Jacobian (L1)2. L2 multiply by ref. matrix

for i = 1:N

...

SumFac (Quad)

1. Apply Jacobian (L1)2. L2 multiply for first dim ref. matrix

... =

for i = 1:N

3. L2 multiply for second dim ref. matrix

=

Page 20: Nektar++: Library design - Nektar++ – Spectral/hp ... · Nektar++: Library design Chris Cantwell, David Moxey, Mike Kirby, Spencer Sherwin Nektar++ Workshop Imperial College London

Test Case

Intercostal Pair41k tets21k prisms

0

0.5

1

1.5

2

2.5

3

1 2 3 4 5 6 7 8P

Tet IProduct

LocalSumFacIterPerExp

StdMatSumFac

0

0.5

1

1.5

2

2.5

3

1 2 3 4 5 6 7 8P

Tet PhysDeriv

LocalSumFacIterPerExp

StdMatSumFac

0

0.5

1

1.5

2

2.5

3

1 2 3 4 5 6 7 8

T / T

IterP

erEx

p

P

Tet BwdTrans

LocalSumFacIterPerExp

StdMatSumFac

0

0.5

1

1.5

2

2.5

3

1 2 3 4 5 6 7 8

T / T

IterP

erEx

p

P

Tet IProductWRTDerivBase

LocalSumFacIterPerExp

StdMatSumFac

StdMat most effective at low order

Collections less effective at high order for most operators

Similar trends observed for Prisms

PhysDeriv benefits from SumFac even at low P

Page 21: Nektar++: Library design - Nektar++ – Spectral/hp ... · Nektar++: Library design Chris Cantwell, David Moxey, Mike Kirby, Spencer Sherwin Nektar++ Workshop Imperial College London

Test Case

Intercostal Pair41k tets21k prisms

0

0.5

1

1.5

2

2.5

3

1 2 3 4 5 6 7 8P

Tet IProduct

LocalSumFacIterPerExp

StdMatSumFac

0

0.5

1

1.5

2

2.5

3

1 2 3 4 5 6 7 8P

Tet PhysDeriv

LocalSumFacIterPerExp

StdMatSumFac

0

0.5

1

1.5

2

2.5

3

1 2 3 4 5 6 7 8

T / T

IterP

erEx

pP

Tet BwdTrans

LocalSumFacIterPerExp

StdMatSumFac

0

0.5

1

1.5

2

2.5

3

1 2 3 4 5 6 7 8

T / T

IterP

erEx

p

P

Tet IProductWRTDerivBase

LocalSumFacIterPerExp

StdMatSumFac

StdMat most effective at low order

Collections less effective at high order for most operators

Similar trends observed for Prisms

PhysDeriv benefits from SumFac even at low P

Page 22: Nektar++: Library design - Nektar++ – Spectral/hp ... · Nektar++: Library design Chris Cantwell, David Moxey, Mike Kirby, Spencer Sherwin Nektar++ Workshop Imperial College London

Test Case

Intercostal Pair41k tets21k prisms

0

0.5

1

1.5

2

2.5

3

1 2 3 4 5 6 7 8P

Tet IProduct

LocalSumFacIterPerExp

StdMatSumFac

0

0.5

1

1.5

2

2.5

3

1 2 3 4 5 6 7 8P

Tet PhysDeriv

LocalSumFacIterPerExp

StdMatSumFac

0

0.5

1

1.5

2

2.5

3

1 2 3 4 5 6 7 8

T / T

IterP

erEx

pP

Tet BwdTrans

LocalSumFacIterPerExp

StdMatSumFac

0

0.5

1

1.5

2

2.5

3

1 2 3 4 5 6 7 8

T / T

IterP

erEx

p

P

Tet IProductWRTDerivBase

LocalSumFacIterPerExp

StdMatSumFac

StdMat most effective at low order

Collections less effective at high order for most operators

Similar trends observed for Prisms

PhysDeriv benefits from SumFac even at low P

Page 23: Nektar++: Library design - Nektar++ – Spectral/hp ... · Nektar++: Library design Chris Cantwell, David Moxey, Mike Kirby, Spencer Sherwin Nektar++ Workshop Imperial College London

Collection Size Dependence

0

0.5

1

1.5

2

2.5

1 2 3 4 5 6 7 8

T (s

econ

ds)

P

Max 10Max 100

Max 1000All (41000)

Tet IterPerExp PhysDeriv

Limit size of collections to 10, 100 or 1000 elements

Negligible dependence on collection size for < 1000 elements

Reduced performance for large numbers of elements

Page 24: Nektar++: Library design - Nektar++ – Spectral/hp ... · Nektar++: Library design Chris Cantwell, David Moxey, Mike Kirby, Spencer Sherwin Nektar++ Workshop Imperial College London

BLAS Implementation

0

0.5

1

1.5

2

2.5

3

1 2 3 4 5 6 7 8

T / T

IterP

erEx

p

P

Tet BwdTrans

LocalSumFacIterPerExp

StdMatSumFac

0

0.5

1

1.5

2

2.5

3

1 2 3 4 5 6 7 8P

Tet BwdTrans (OpenBLAS)

LocalSumFacIterPerExp

StdMatSumFac

OpenBLAS performs best for large matrix operations

Significant gains for StdMat and SumFac at high P

Importance of auto-tuning

Page 25: Nektar++: Library design - Nektar++ – Spectral/hp ... · Nektar++: Library design Chris Cantwell, David Moxey, Mike Kirby, Spencer Sherwin Nektar++ Workshop Imperial College London

Developer PracticeWhat development practices support a large multi-plaform

collaborative software project such as Nektar++?

Version-control (Git + GitLab)

git clone https://gitlab.nektar.info/nektar/nektar.git

http://gitlab.nektar.info

Tests & Continuous Integration (Buildbot) http://buildbot.nektar.info

Builds (latest on right)

Build

ers

(diff

ere

nt

OSs

/ co

nfig)

Success

Currentlybuilding

Failed

Click fordetails

Issue tracking (Trac) http://www.nektar.info

Documentation (PDF + doxygen) http://doc.nektar.info

Page 26: Nektar++: Library design - Nektar++ – Spectral/hp ... · Nektar++: Library design Chris Cantwell, David Moxey, Mike Kirby, Spencer Sherwin Nektar++ Workshop Imperial College London

Developer PracticeWhat development practices support a large multi-plaform

collaborative software project such as Nektar++?

Version-control (Git + GitLab)

git clone https://gitlab.nektar.info/nektar/nektar.git

http://gitlab.nektar.info

Tests & Continuous Integration (Buildbot) http://buildbot.nektar.info

Builds (latest on right)

Build

ers

(diff

ere

nt

OSs

/ co

nfig)

Success

Currentlybuilding

Failed

Click fordetails

Issue tracking (Trac) http://www.nektar.info

Documentation (PDF + doxygen) http://doc.nektar.info

Page 27: Nektar++: Library design - Nektar++ – Spectral/hp ... · Nektar++: Library design Chris Cantwell, David Moxey, Mike Kirby, Spencer Sherwin Nektar++ Workshop Imperial College London

Developer PracticeWhat development practices support a large multi-plaform

collaborative software project such as Nektar++?

Version-control (Git + GitLab)

git clone https://gitlab.nektar.info/nektar/nektar.git

http://gitlab.nektar.info

Tests & Continuous Integration (Buildbot) http://buildbot.nektar.info

Builds (latest on right)

Build

ers

(diff

ere

nt

OSs

/ co

nfig)

Success

Currentlybuilding

Failed

Click fordetails

Issue tracking (Trac) http://www.nektar.info

Documentation (PDF + doxygen) http://doc.nektar.info

Page 28: Nektar++: Library design - Nektar++ – Spectral/hp ... · Nektar++: Library design Chris Cantwell, David Moxey, Mike Kirby, Spencer Sherwin Nektar++ Workshop Imperial College London

Developer PracticeWhat development practices support a large multi-plaform

collaborative software project such as Nektar++?

Version-control (Git + GitLab)

git clone https://gitlab.nektar.info/nektar/nektar.git

http://gitlab.nektar.info

Tests & Continuous Integration (Buildbot) http://buildbot.nektar.info

Builds (latest on right)

Build

ers

(diff

ere

nt

OSs

/ co

nfig)

Success

Currentlybuilding

Failed

Click fordetails

Issue tracking (Trac) http://www.nektar.info

Documentation (PDF + doxygen) http://doc.nektar.info

Page 29: Nektar++: Library design - Nektar++ – Spectral/hp ... · Nektar++: Library design Chris Cantwell, David Moxey, Mike Kirby, Spencer Sherwin Nektar++ Workshop Imperial College London

Developer PracticeWhat development practices support a large multi-plaform

collaborative software project such as Nektar++?

Version-control (Git + GitLab)

git clone https://gitlab.nektar.info/nektar/nektar.git

http://gitlab.nektar.info

Tests & Continuous Integration (Buildbot) http://buildbot.nektar.info

Builds (latest on right)

Build

ers

(diff

ere

nt

OSs

/ co

nfig)

Success

Currentlybuilding

Failed

Click fordetails

Issue tracking (Trac) http://www.nektar.info

Documentation (PDF + doxygen) http://doc.nektar.info

Page 30: Nektar++: Library design - Nektar++ – Spectral/hp ... · Nektar++: Library design Chris Cantwell, David Moxey, Mike Kirby, Spencer Sherwin Nektar++ Workshop Imperial College London

Developer PracticeWhat development practices support a large multi-plaform

collaborative software project such as Nektar++?

Version-control (Git + GitLab)

git clone https://gitlab.nektar.info/nektar/nektar.git

http://gitlab.nektar.info

Tests & Continuous Integration (Buildbot) http://buildbot.nektar.info

Builds (latest on right)

Build

ers

(diff

ere

nt

OSs

/ co

nfig)

Success

Currentlybuilding

Failed

Click fordetails

Issue tracking (Trac) http://www.nektar.info

Documentation (PDF + doxygen) http://doc.nektar.info

Page 31: Nektar++: Library design - Nektar++ – Spectral/hp ... · Nektar++: Library design Chris Cantwell, David Moxey, Mike Kirby, Spencer Sherwin Nektar++ Workshop Imperial College London

Developer PracticeWhat development practices support a large multi-plaform

collaborative software project such as Nektar++?

Version-control (Git + GitLab)

git clone https://gitlab.nektar.info/nektar/nektar.git

http://gitlab.nektar.info

Tests & Continuous Integration (Buildbot) http://buildbot.nektar.info

Builds (latest on right)

Build

ers

(diff

ere

nt

OSs

/ co

nfig)

Success

Currentlybuilding

Failed

Click fordetails

Issue tracking (Trac) http://www.nektar.info

Documentation (PDF + doxygen) http://doc.nektar.info

Page 32: Nektar++: Library design - Nektar++ – Spectral/hp ... · Nektar++: Library design Chris Cantwell, David Moxey, Mike Kirby, Spencer Sherwin Nektar++ Workshop Imperial College London

Developer PracticeWhat development practices support a large multi-plaform

collaborative software project such as Nektar++?

Version-control (Git + GitLab)

git clone https://gitlab.nektar.info/nektar/nektar.git

http://gitlab.nektar.info

Tests & Continuous Integration (Buildbot) http://buildbot.nektar.info

Builds (latest on right)

Build

ers

(diff

ere

nt

OSs

/ co

nfig)

Success

Currentlybuilding

Failed

Click fordetails

Issue tracking (Trac) http://www.nektar.info

Documentation (PDF + doxygen) http://doc.nektar.info

Page 33: Nektar++: Library design - Nektar++ – Spectral/hp ... · Nektar++: Library design Chris Cantwell, David Moxey, Mike Kirby, Spencer Sherwin Nektar++ Workshop Imperial College London

Developer PracticeWhat development practices support a large multi-plaform

collaborative software project such as Nektar++?

Version-control (Git + GitLab)

git clone https://gitlab.nektar.info/nektar/nektar.git

http://gitlab.nektar.info

Tests & Continuous Integration (Buildbot) http://buildbot.nektar.info

Builds (latest on right)B

uild

ers

(diff

ere

nt

OSs

/ co

nfig)

Success

Currentlybuilding

Failed

Click fordetails

Issue tracking (Trac) http://www.nektar.info

Documentation (PDF + doxygen) http://doc.nektar.info

Page 34: Nektar++: Library design - Nektar++ – Spectral/hp ... · Nektar++: Library design Chris Cantwell, David Moxey, Mike Kirby, Spencer Sherwin Nektar++ Workshop Imperial College London

Developer PracticeWhat development practices support a large multi-plaform

collaborative software project such as Nektar++?

Version-control (Git + GitLab)

git clone https://gitlab.nektar.info/nektar/nektar.git

http://gitlab.nektar.info

Tests & Continuous Integration (Buildbot) http://buildbot.nektar.info

Builds (latest on right)

Build

ers

(diff

ere

nt

OSs

/ co

nfig)

Success

Currentlybuilding

Failed

Click fordetails

Issue tracking (Trac) http://www.nektar.info

Documentation (PDF + doxygen) http://doc.nektar.info

Page 35: Nektar++: Library design - Nektar++ – Spectral/hp ... · Nektar++: Library design Chris Cantwell, David Moxey, Mike Kirby, Spencer Sherwin Nektar++ Workshop Imperial College London

Developer PracticeWhat development practices support a large multi-plaform

collaborative software project such as Nektar++?

Version-control (Git + GitLab)

git clone https://gitlab.nektar.info/nektar/nektar.git

http://gitlab.nektar.info

Tests & Continuous Integration (Buildbot) http://buildbot.nektar.info

Builds (latest on right)

Build

ers

(diff

ere

nt

OSs

/ co

nfig)

Success

Currentlybuilding

Failed

Click fordetails

Issue tracking (Trac) http://www.nektar.info

Documentation (PDF + doxygen) http://doc.nektar.info

Page 36: Nektar++: Library design - Nektar++ – Spectral/hp ... · Nektar++: Library design Chris Cantwell, David Moxey, Mike Kirby, Spencer Sherwin Nektar++ Workshop Imperial College London

Developer PracticeWhat development practices support a large multi-plaform

collaborative software project such as Nektar++?

Version-control (Git + GitLab)

git clone https://gitlab.nektar.info/nektar/nektar.git

http://gitlab.nektar.info

Tests & Continuous Integration (Buildbot) http://buildbot.nektar.info

Builds (latest on right)

Build

ers

(diff

ere

nt

OSs

/ co

nfig)

Success

Currentlybuilding

Failed

Click fordetails

Issue tracking (Trac) http://www.nektar.info

Documentation (PDF + doxygen) http://doc.nektar.info

Page 37: Nektar++: Library design - Nektar++ – Spectral/hp ... · Nektar++: Library design Chris Cantwell, David Moxey, Mike Kirby, Spencer Sherwin Nektar++ Workshop Imperial College London

Documentation

All documentation versioned with code

User guideInstallationSolver and Utility usage

Input file referenceFAQs

Tutorials

Developer guide

Programming conceptsLibrary design

Nektar++ algorithmsCoding Standard

Nektar++ structures

Code documentationDoxygenDetailed implementationspecifics

Page 38: Nektar++: Library design - Nektar++ – Spectral/hp ... · Nektar++: Library design Chris Cantwell, David Moxey, Mike Kirby, Spencer Sherwin Nektar++ Workshop Imperial College London

Documentation

All documentation versioned with code

User guide

InstallationSolver and Utility usage

Input file referenceFAQs

Tutorials

Developer guide

Programming conceptsLibrary design

Nektar++ algorithmsCoding Standard

Nektar++ structures

Code documentationDoxygenDetailed implementationspecifics

Page 39: Nektar++: Library design - Nektar++ – Spectral/hp ... · Nektar++: Library design Chris Cantwell, David Moxey, Mike Kirby, Spencer Sherwin Nektar++ Workshop Imperial College London

Documentation

All documentation versioned with code

User guideInstallation

Solver and Utility usage

Input file referenceFAQs

Tutorials

Developer guide

Programming conceptsLibrary design

Nektar++ algorithmsCoding Standard

Nektar++ structures

Code documentationDoxygenDetailed implementationspecifics

Page 40: Nektar++: Library design - Nektar++ – Spectral/hp ... · Nektar++: Library design Chris Cantwell, David Moxey, Mike Kirby, Spencer Sherwin Nektar++ Workshop Imperial College London

Documentation

All documentation versioned with code

User guideInstallationSolver and Utility usage

Input file referenceFAQs

Tutorials

Developer guide

Programming conceptsLibrary design

Nektar++ algorithmsCoding Standard

Nektar++ structures

Code documentationDoxygenDetailed implementationspecifics

Page 41: Nektar++: Library design - Nektar++ – Spectral/hp ... · Nektar++: Library design Chris Cantwell, David Moxey, Mike Kirby, Spencer Sherwin Nektar++ Workshop Imperial College London

Documentation

All documentation versioned with code

User guideInstallationSolver and Utility usage

Input file referenceFAQs

Tutorials

Developer guide

Programming conceptsLibrary design

Nektar++ algorithmsCoding Standard

Nektar++ structures

Code documentationDoxygenDetailed implementationspecifics

Page 42: Nektar++: Library design - Nektar++ – Spectral/hp ... · Nektar++: Library design Chris Cantwell, David Moxey, Mike Kirby, Spencer Sherwin Nektar++ Workshop Imperial College London

Documentation

All documentation versioned with code

User guideInstallationSolver and Utility usage

Input file referenceFAQs

Tutorials

Developer guide

Programming conceptsLibrary design

Nektar++ algorithmsCoding Standard

Nektar++ structures

Code documentationDoxygenDetailed implementationspecifics

Page 43: Nektar++: Library design - Nektar++ – Spectral/hp ... · Nektar++: Library design Chris Cantwell, David Moxey, Mike Kirby, Spencer Sherwin Nektar++ Workshop Imperial College London

Summary• Design of the Nektar++ framework

– Stack of libraries– Code design mirrors mathematical formulation– Encapsulate complexities of spectral/hp element methods– Improve accessibility

• Collections– Multiple implementations for achieving performance across P– Collates action of operators across multiple elements– Improves efficiency on modern vector-capable CPUs– Easy to use with auto-tuning

• Developer practice– Version control (Git + Gitlab)– Regression tests (also useful as examples!)– Continuous integration (Buildbot)– Issue tracking (Trac)– Documentation (LaTeX + Doxygen)

Further information• http://www.nektar.info• Nektar++: An open-source spectral/hp element framework,

C. D. Cantwell, D. Moxey, A. Comerford, et al.,Computer Physics Communications, in press, 2015