nektar++: library design - nektar++ – spectral/hp ... · nektar++: library design chris cantwell,...
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](https://reader031.vdocuments.us/reader031/viewer/2022041019/5ecd570baa433b21953006e0/html5/thumbnails/1.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022041019/5ecd570baa433b21953006e0/html5/thumbnails/2.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022041019/5ecd570baa433b21953006e0/html5/thumbnails/3.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022041019/5ecd570baa433b21953006e0/html5/thumbnails/4.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022041019/5ecd570baa433b21953006e0/html5/thumbnails/5.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022041019/5ecd570baa433b21953006e0/html5/thumbnails/6.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022041019/5ecd570baa433b21953006e0/html5/thumbnails/7.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022041019/5ecd570baa433b21953006e0/html5/thumbnails/8.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022041019/5ecd570baa433b21953006e0/html5/thumbnails/9.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022041019/5ecd570baa433b21953006e0/html5/thumbnails/10.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022041019/5ecd570baa433b21953006e0/html5/thumbnails/11.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022041019/5ecd570baa433b21953006e0/html5/thumbnails/12.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022041019/5ecd570baa433b21953006e0/html5/thumbnails/13.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022041019/5ecd570baa433b21953006e0/html5/thumbnails/14.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022041019/5ecd570baa433b21953006e0/html5/thumbnails/15.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022041019/5ecd570baa433b21953006e0/html5/thumbnails/16.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022041019/5ecd570baa433b21953006e0/html5/thumbnails/17.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022041019/5ecd570baa433b21953006e0/html5/thumbnails/18.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022041019/5ecd570baa433b21953006e0/html5/thumbnails/19.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022041019/5ecd570baa433b21953006e0/html5/thumbnails/20.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022041019/5ecd570baa433b21953006e0/html5/thumbnails/21.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022041019/5ecd570baa433b21953006e0/html5/thumbnails/22.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022041019/5ecd570baa433b21953006e0/html5/thumbnails/23.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022041019/5ecd570baa433b21953006e0/html5/thumbnails/24.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022041019/5ecd570baa433b21953006e0/html5/thumbnails/25.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022041019/5ecd570baa433b21953006e0/html5/thumbnails/26.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022041019/5ecd570baa433b21953006e0/html5/thumbnails/27.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022041019/5ecd570baa433b21953006e0/html5/thumbnails/28.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022041019/5ecd570baa433b21953006e0/html5/thumbnails/29.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022041019/5ecd570baa433b21953006e0/html5/thumbnails/30.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022041019/5ecd570baa433b21953006e0/html5/thumbnails/31.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022041019/5ecd570baa433b21953006e0/html5/thumbnails/32.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022041019/5ecd570baa433b21953006e0/html5/thumbnails/33.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022041019/5ecd570baa433b21953006e0/html5/thumbnails/34.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022041019/5ecd570baa433b21953006e0/html5/thumbnails/35.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022041019/5ecd570baa433b21953006e0/html5/thumbnails/36.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022041019/5ecd570baa433b21953006e0/html5/thumbnails/37.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022041019/5ecd570baa433b21953006e0/html5/thumbnails/38.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022041019/5ecd570baa433b21953006e0/html5/thumbnails/39.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022041019/5ecd570baa433b21953006e0/html5/thumbnails/40.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022041019/5ecd570baa433b21953006e0/html5/thumbnails/41.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022041019/5ecd570baa433b21953006e0/html5/thumbnails/42.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022041019/5ecd570baa433b21953006e0/html5/thumbnails/43.jpg)
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