ngsolve 6.2.2506.post75.dev0__cp311-cp311-manylinux_2_28_x86_64.whl → 6.2.2506.post168.dev0__cp311-cp311-manylinux_2_28_x86_64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ngsolve-6.2.2506.post168.dev0.data/data/bin/ngs_nvcc +22 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/bin/ngs_nvlink +4 -1
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/bdbequations.hpp +2 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/bilinearform.hpp +3 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/code_generation.hpp +2 -2
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/complex_wrapper.hpp +30 -2
- ngsolve-6.2.2506.post168.dev0.data/data/include/netgen/cuda_core.hpp +173 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/cuda_linalg.hpp +4 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/cuda_ngbla.hpp +99 -8
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/cuda_ngstd.hpp +1 -114
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/elementbyelement.hpp +5 -2
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/expr.hpp +13 -6
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/gridfunction.hpp +1 -1
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/kernels.hpp +24 -62
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/linalg_kernels.hpp +0 -32
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/matrix.hpp +8 -3
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/meshaccess.hpp +1 -1
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/mycomplex.hpp +1 -1
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/ngblas.hpp +3 -3
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/prolongation.hpp +6 -3
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/sparsecholesky.hpp +6 -2
- ngsolve-6.2.2506.post168.dev0.data/data/include/netgen/sparsefactorization_interface.hpp +159 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/sparsematrix.hpp +2 -2
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/sparsematrix_impl.hpp +33 -11
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/statushandler.hpp +8 -8
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/tscalarfe.hpp +1 -1
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/vector.hpp +220 -35
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/cmake/ngsolve/NGSolveConfig.cmake +3 -3
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/cmake/ngsolve/ngsolve-targets.cmake +16 -9
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/netgen_mesher.libs/libngbla.so +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/netgen_mesher.libs/libngcomp.so +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/netgen_mesher.libs/libngfem.so +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/netgen_mesher.libs/libngla.so +0 -0
- ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/netgen_mesher.libs/libngsbem.so +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/netgen_mesher.libs/libngscudalib.so +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/netgen_mesher.libs/libngsolve.so +0 -0
- ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/netgen_mesher.libs/libngstd.so +0 -0
- ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/ngsolve/__init__.pyi +236 -0
- ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/ngsolve/bla.pyi +1041 -0
- ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/ngsolve/bvp.pyi +32 -0
- ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/ngsolve/comp/__init__.pyi +5443 -0
- ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/ngsolve/comp/pml.pyi +89 -0
- ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/ngsolve/config/__init__.pyi +43 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/config/config.py +5 -5
- ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/ngsolve/config/config.pyi +45 -0
- ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/ngsolve/directsolvers.py +14 -0
- ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/ngsolve/directsolvers.pyi +12 -0
- ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/ngsolve/eigenvalues.pyi +30 -0
- ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/ngsolve/fem.pyi +1647 -0
- ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/ngsolve/krylovspace.pyi +301 -0
- ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/ngsolve/la.pyi +1235 -0
- ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/ngsolve/ngscuda.so +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/ngslib.so +0 -0
- ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/ngsolve/ngstd.pyi +59 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/nonlinearsolvers.py +2 -2
- ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/ngsolve/nonlinearsolvers.pyi +98 -0
- ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/ngsolve/preconditioners.pyi +7 -0
- ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/ngsolve/solve.pyi +109 -0
- ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/ngsolve/solve_implementation.pyi +42 -0
- ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/ngsolve/solvers/__init__.pyi +14 -0
- ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/ngsolve/solvers/cudss.py +110 -0
- ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/ngsolve/timestepping.pyi +27 -0
- ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/ngsolve/timing.pyi +54 -0
- ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/ngsolve/utils.pyi +273 -0
- {ngsolve-6.2.2506.post75.dev0.dist-info → ngsolve-6.2.2506.post168.dev0.dist-info}/METADATA +2 -2
- ngsolve-6.2.2506.post168.dev0.dist-info/RECORD +327 -0
- ngsolve-6.2.2506.post75.dev0.data/data/bin/ngs_nvcc +0 -14
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.11/site-packages/netgen_mesher.libs/libngsbem.so +0 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.11/site-packages/netgen_mesher.libs/libngstd.so +0 -0
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.11/site-packages/ngsolve/directsolvers.py +0 -26
- ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.11/site-packages/ngsolve/ngscuda.so +0 -0
- ngsolve-6.2.2506.post75.dev0.dist-info/RECORD +0 -303
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/bin/ngscxx +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/bin/ngsld +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/bin/ngsolve.tcl +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/bin/ngspy +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/analytic_integrals.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/arnoldi.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/bandmatrix.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/basematrix.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/basevector.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/bdbintegrator.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/bem_diffops.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/bessel.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/bla.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/blockalloc.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/blockjacobi.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/bspline.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/calcinverse.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/cg.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/chebyshev.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/cholesky.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/clapack.h +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/coefficient.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/coefficient_impl.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/coefficient_stdmath.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/commutingAMG.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/comp.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/compatibility.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/compressedfespace.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/contact.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/cuda_profiler.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/diagonalmatrix.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/differentialoperator.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/diffop.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/diffop_impl.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/diffopwithfactor.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/discontinuous.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/dump.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/ectypes.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/eigen.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/eigensystem.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/elasticity_equations.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/elementtopology.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/elementtransformation.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/evalfunc.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/facetfe.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/facetfespace.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/facethofe.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/facetsurffespace.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/fe_interfaces.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/fem.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/fesconvert.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/fespace.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/finiteelement.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/globalinterfacespace.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/globalspace.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/h1amg.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/h1hofe.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/h1hofe_impl.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/h1hofefo.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/h1hofefo_impl.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/h1hofespace.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/h1lofe.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/h1lumping.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hcurl_equations.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hcurlcurlfe.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hcurlcurlfespace.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hcurlfe.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hcurlfe_utils.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hcurlhdiv_dshape.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hcurlhdivfes.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hcurlhofe.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hcurlhofe_impl.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hcurlhofespace.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hcurllofe.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hdiv_equations.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hdivdivfe.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hdivdivsurfacespace.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hdivfe.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hdivfe_utils.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hdivfes.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hdivhofe.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hdivhofe_impl.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hdivhofefo.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hdivhofespace.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hdivhosurfacefespace.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hdivlofe.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hidden.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/householder.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hypre_ams_precond.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/hypre_precond.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/integrator.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/integratorcf.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/interpolate.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/intrule.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/intrules_SauterSchwab.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/irspace.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/jacobi.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/l2hofe.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/l2hofe_impl.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/l2hofefo.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/l2hofespace.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/la.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/linearform.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/memusage.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/mgpre.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/mp_coefficient.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/mptools.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/multigrid.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/multivector.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/mumpsinverse.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/ng_lapack.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/ngs_defines.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/ngs_stdcpp_include.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/ngs_utils.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/ngsobject.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/ngsstream.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/ngstd.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/nodalhofe.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/nodalhofe_impl.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/normalfacetfe.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/normalfacetfespace.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/normalfacetsurfacefespace.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/order.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/parallel_matrices.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/paralleldofs.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/parallelngs.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/parallelvector.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/pardisoinverse.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/periodic.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/plateaufespace.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/pml.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/pmltrafo.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/postproc.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/potentialtools.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/precomp.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/preconditioner.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/python_comp.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/python_fem.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/python_linalg.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/python_ngstd.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/recursive_pol.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/recursive_pol_tet.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/recursive_pol_trig.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/reorderedfespace.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/sample_sort.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/scalarfe.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/shapefunction_utils.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/simd_complex.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/smoother.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/solve.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/sparsematrix_dyn.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/special_matrix.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/specialelement.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/stringops.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/superluinverse.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/symbolicintegrator.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/symmetricmatrix.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/tangentialfacetfe.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/tangentialfacetfespace.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/tensor.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/tensorcoefficient.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/tensorproductintegrator.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/thcurlfe.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/thcurlfe_impl.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/thdivfe.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/thdivfe_impl.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/tpdiffop.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/tpfes.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/tpintrule.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/triangular.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/tscalarfe_impl.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/umfpackinverse.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/unifiedvector.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/voxelcoefficientfunction.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/vtkoutput.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/vvector.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/include/netgen/webgui.hpp +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/cmake/ngsolve/ngsolve-targets-release.cmake +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/TensorProductTools.py +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/__console.py +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/__expr.py +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/__init__.py +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/_scikit_build_core_dependencies.py +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/bvp.py +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/config/__init__.py +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/config/__main__.py +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/TensorProduct/__init__.py +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/TensorProduct/tp_dg_1d_1d.py +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/TensorProduct/tp_dg_1d_2d.py +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/TensorProduct/tp_dg_2d_1d.py +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/TensorProduct/tp_dg_2d_2d.py +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/__init__.py +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/howto/__init__.py +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/howto/hhj.py +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/howto/hybrid_dg.py +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/howto/mixed.py +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/howto/nonlin.py +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/howto/pickling.py +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/howto/pml.py +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/howto/taskmanager.py +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/howto/tdnns.py +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/howto/timeDG-skeleton.py +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/howto/timeDG.py +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/howto/timeDGlap.py +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/howto/timeDGwave.py +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/intro/__init__.py +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/intro/adaptive.py +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/intro/cmagnet.py +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/intro/elasticity.py +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/intro/navierstokes.py +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/intro/poisson.ipynb +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/intro/poisson.py +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/mpi/__init__.py +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/mpi/mpi_cmagnet.py +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/mpi/mpi_navierstokes.py +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/mpi/mpi_poisson.py +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/demos/mpi/mpi_timeDG.py +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/eigenvalues.py +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/internal.py +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/krylovspace.py +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/meshes.py +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/ngs2petsc.py +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/ngscxx.py +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/preconditioners.py +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/solve_implementation.py +0 -0
- /ngsolve-6.2.2506.post75.dev0.data/data/lib/python3.11/site-packages/ngsolve/solvers.py → /ngsolve-6.2.2506.post168.dev0.data/data/lib/python3.11/site-packages/ngsolve/solvers/__init__.py +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/timestepping.py +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/timing.py +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/utils.py +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/lib/python3.11/site-packages/ngsolve/webgui.py +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/beam.geo +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/beam.vol +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/chip.in2d +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/chip.vol +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/coil.geo +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/coil.vol +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/coilshield.geo +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/coilshield.vol +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/cube.geo +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/cube.vol +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/d10_DGdoubleglazing.pde +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/d11_chip_nitsche.pde +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/d1_square.pde +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/d2_chip.pde +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/d3_helmholtz.pde +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/d4_cube.pde +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/d5_beam.pde +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/d6_shaft.pde +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/d7_coil.pde +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/d8_coilshield.pde +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/d9_hybridDG.pde +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/doubleglazing.in2d +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/doubleglazing.vol +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/piezo2d40round4.vol.gz +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/shaft.geo +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/shaft.vol +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/square.in2d +0 -0
- {ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/share/ngsolve/square.vol +0 -0
- {ngsolve-6.2.2506.post75.dev0.dist-info → ngsolve-6.2.2506.post168.dev0.dist-info}/WHEEL +0 -0
- {ngsolve-6.2.2506.post75.dev0.dist-info → ngsolve-6.2.2506.post168.dev0.dist-info}/licenses/LICENSE +0 -0
- {ngsolve-6.2.2506.post75.dev0.dist-info → ngsolve-6.2.2506.post168.dev0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
#!/usr/bin/bash
|
|
2
|
+
NGSCXX_DIR=$( cd $(dirname $0); pwd )
|
|
3
|
+
PY_INCLUDE_FLAGS=-I$(python3 -c"import sysconfig;print(sysconfig.get_path('include'))")
|
|
4
|
+
if [ -f /opt/rh/gcc-toolset-14/root/usr/bin/c++ ]
|
|
5
|
+
then NGSCXX=/opt/rh/gcc-toolset-14/root/usr/bin/c++
|
|
6
|
+
else NGSCXX=c++
|
|
7
|
+
fi
|
|
8
|
+
export CCACHE_NOHASHDIR=1
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
if [ -f /usr/local/cuda/bin/nvcc ]
|
|
12
|
+
then NVCC=/usr/local/cuda/bin/nvcc
|
|
13
|
+
else NVCC=nvcc
|
|
14
|
+
fi
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
if [ -f /usr/bin/ccache ]
|
|
18
|
+
then /usr/bin/ccache $NVCC -DHAVE_NETGEN_SOURCES -DHAVE_DLFCN_H -DHAVE_CXA_DEMANGLE -DUSE_TIMEOFDAY -DTCL -DLAPACK -DUSE_PARDISO -DNGS_PYTHON -D_GLIBCXX_USE_CXX11_ABI=1 -DNETGEN_PYTHON -DNG_PYTHON -DPYBIND11_SIMPLE_GIL_MANAGEMENT -DPARALLEL -DNG_MPI_WRAPPER -arch=native --expt-relaxed-constexpr --extended-lambda --diag-suppress=611 --diag-suppress=20011 --diag-suppress=20012 --diag-suppress=20013 --diag-suppress=20014 --diag-suppress=20015 -rdc=true -Xcompiler -std=c++17 -Xcompiler -DMAX_SYS_DIM=3 -Xcompiler -march=core-avx2 -Xcompiler -fabi-version=17 -Xcompiler -fPIC -I/opt/_internal/cpython-3.11.13/include -I/opt/_internal/cpython-3.11.13/include/python3.11 -I$NGSCXX_DIR/../include/netgen -I$NGSCXX_DIR/../include/netgen/include $PY_INCLUDE_FLAGS $*
|
|
19
|
+
|
|
20
|
+
else $NVCC -DHAVE_NETGEN_SOURCES -DHAVE_DLFCN_H -DHAVE_CXA_DEMANGLE -DUSE_TIMEOFDAY -DTCL -DLAPACK -DUSE_PARDISO -DNGS_PYTHON -D_GLIBCXX_USE_CXX11_ABI=1 -DNETGEN_PYTHON -DNG_PYTHON -DPYBIND11_SIMPLE_GIL_MANAGEMENT -DPARALLEL -DNG_MPI_WRAPPER -arch=native --expt-relaxed-constexpr --extended-lambda --diag-suppress=611 --diag-suppress=20011 --diag-suppress=20012 --diag-suppress=20013 --diag-suppress=20014 --diag-suppress=20015 -rdc=true -Xcompiler -std=c++17 -Xcompiler -DMAX_SYS_DIM=3 -Xcompiler -march=core-avx2 -Xcompiler -fabi-version=17 -Xcompiler -fPIC -I/opt/_internal/cpython-3.11.13/include -I/opt/_internal/cpython-3.11.13/include/python3.11 -I$NGSCXX_DIR/../include/netgen -I$NGSCXX_DIR/../include/netgen/include $PY_INCLUDE_FLAGS $*
|
|
21
|
+
|
|
22
|
+
fi
|
{ngsolve-6.2.2506.post75.dev0.data → ngsolve-6.2.2506.post168.dev0.data}/data/bin/ngs_nvlink
RENAMED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
#!/usr/bin/bash
|
|
1
2
|
NGSCXX_DIR=$( cd $(dirname $0); pwd )
|
|
2
3
|
PY_INCLUDE_FLAGS=-I$(python3 -c"import sysconfig;print(sysconfig.get_path('include'))")
|
|
3
4
|
if [ -f /opt/rh/gcc-toolset-14/root/usr/bin/c++ ]
|
|
@@ -6,9 +7,11 @@ if [ -f /opt/rh/gcc-toolset-14/root/usr/bin/c++ ]
|
|
|
6
7
|
fi
|
|
7
8
|
export CCACHE_NOHASHDIR=1
|
|
8
9
|
|
|
10
|
+
|
|
9
11
|
if [ -f /usr/local/cuda/bin/nvcc ]
|
|
10
12
|
then NVCC=/usr/local/cuda/bin/nvcc
|
|
11
13
|
else NVCC=nvcc
|
|
12
14
|
fi
|
|
13
15
|
|
|
14
|
-
$
|
|
16
|
+
$NVCC -rdc=true -arch=native $*
|
|
17
|
+
|
|
@@ -2783,9 +2783,11 @@ namespace ngfem
|
|
|
2783
2783
|
extern template class NGS_DLL_HEADER T_DifferentialOperator<DiffOpGradVectorH1<2> >;
|
|
2784
2784
|
extern template class NGS_DLL_HEADER T_DifferentialOperator<DiffOpGradVectorH1<3> >;
|
|
2785
2785
|
|
|
2786
|
+
extern template class NGS_DLL_HEADER T_DifferentialOperator<DiffOpGradientBoundary<1> >;
|
|
2786
2787
|
extern template class NGS_DLL_HEADER T_DifferentialOperator<DiffOpGradientBoundary<2> >;
|
|
2787
2788
|
extern template class NGS_DLL_HEADER T_DifferentialOperator<DiffOpGradientBoundary<3> >;
|
|
2788
2789
|
|
|
2790
|
+
extern template class NGS_DLL_HEADER T_DifferentialOperator<DiffOpGradBoundaryVectorH1<1> >;
|
|
2789
2791
|
extern template class NGS_DLL_HEADER T_DifferentialOperator<DiffOpGradBoundaryVectorH1<2> >;
|
|
2790
2792
|
extern template class NGS_DLL_HEADER T_DifferentialOperator<DiffOpGradBoundaryVectorH1<3> >;
|
|
2791
2793
|
|
|
@@ -952,6 +952,9 @@ namespace ngcomp
|
|
|
952
952
|
size_t GetDimX() const { return dimx; }
|
|
953
953
|
size_t GetDimY() const { return dimy; }
|
|
954
954
|
size_t GetNIP() const { return nip; }
|
|
955
|
+
|
|
956
|
+
FlatMatrix<double> GetPoints() const { return points; }
|
|
957
|
+
FlatMatrix<double> GetNormals() const { return normals; }
|
|
955
958
|
};
|
|
956
959
|
|
|
957
960
|
|
|
@@ -57,7 +57,7 @@ namespace ngfem
|
|
|
57
57
|
|
|
58
58
|
string pointer;
|
|
59
59
|
|
|
60
|
-
NGS_DLL_HEADER string AddPointer(const void *p );
|
|
60
|
+
NGS_DLL_HEADER string AddPointer(const void *p, string name = "", string type = "void *", string qualifiers = "");
|
|
61
61
|
|
|
62
62
|
void AddLinkFlag(string flag);
|
|
63
63
|
|
|
@@ -287,7 +287,7 @@ namespace ngfem
|
|
|
287
287
|
}
|
|
288
288
|
|
|
289
289
|
std::filesystem::path CreateTempDir();
|
|
290
|
-
unique_ptr<SharedLibrary> CompileCode(const std::vector<std::variant<filesystem::path, string>> &codes, const std::vector<string> &link_flags, bool keep_files = false );
|
|
290
|
+
unique_ptr<SharedLibrary> CompileCode(const std::vector<std::variant<filesystem::path, string>> &codes, const std::vector<string> &link_flags, bool keep_files = false, optional<string> compiler = nullopt, optional<string> linker = nullopt);
|
|
291
291
|
namespace detail {
|
|
292
292
|
string GenerateL2ElementCode(int order);
|
|
293
293
|
}
|
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
#ifndef COMPLEX_WRAPPER
|
|
2
2
|
#define COMPLEX_WRAPPER
|
|
3
3
|
|
|
4
|
+
|
|
5
|
+
|
|
4
6
|
#include <complex>
|
|
5
7
|
|
|
8
|
+
|
|
6
9
|
#ifdef USE_MYCOMPLEX
|
|
7
10
|
#include <mycomplex.hpp>
|
|
8
11
|
#endif
|
|
9
12
|
|
|
10
13
|
|
|
11
14
|
|
|
12
|
-
|
|
13
15
|
// #ifdef __clang__
|
|
14
16
|
#if defined(__GNUC__) && !defined(__INTEL_COMPILER)
|
|
15
17
|
namespace std
|
|
@@ -25,18 +27,44 @@ namespace std
|
|
|
25
27
|
|
|
26
28
|
|
|
27
29
|
|
|
30
|
+
|
|
28
31
|
namespace ngcore
|
|
29
32
|
{
|
|
33
|
+
|
|
30
34
|
#ifdef USE_MYCOMPLEX
|
|
31
35
|
typedef ngstd::MyComplex<double> Complex;
|
|
32
36
|
using std::fabs;
|
|
33
|
-
|
|
37
|
+
INLINE double fabs (Complex v) { return ngstd::abs (v); }
|
|
34
38
|
#else
|
|
35
39
|
typedef std::complex<double> Complex;
|
|
36
40
|
using std::fabs;
|
|
37
41
|
inline double fabs (Complex v) { return std::abs (v); }
|
|
38
42
|
#endif
|
|
43
|
+
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
#if defined(__CUDA_ARCH__)
|
|
48
|
+
namespace ngcore
|
|
49
|
+
{
|
|
50
|
+
__device__ inline Complex conj(Complex a)
|
|
51
|
+
{
|
|
52
|
+
return Complex (a.real(), -a.imag());
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
__device__ inline Complex operator+ (Complex a, Complex b) {
|
|
56
|
+
return Complex(a.real()+b.real(), a.imag()+b.imag());
|
|
57
|
+
}
|
|
58
|
+
__device__ inline Complex& operator+= (Complex& a, Complex b) {
|
|
59
|
+
a = a+b;
|
|
60
|
+
return a;
|
|
61
|
+
}
|
|
39
62
|
}
|
|
63
|
+
#endif
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
|
|
40
68
|
|
|
41
69
|
|
|
42
70
|
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
#ifndef CUDA_CORE_HPP
|
|
2
|
+
#define CUDA_CORE_HPP
|
|
3
|
+
|
|
4
|
+
#include <cuda_runtime.h>
|
|
5
|
+
|
|
6
|
+
#include <core/array.hpp>
|
|
7
|
+
#include <core/exception.hpp>
|
|
8
|
+
|
|
9
|
+
namespace ngs_cuda
|
|
10
|
+
{
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
// from CUDA C++ Programming Guide:
|
|
14
|
+
// https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#atomic-functions
|
|
15
|
+
#ifdef __CUDA_ARCH__
|
|
16
|
+
#if __CUDA_ARCH__ < 600
|
|
17
|
+
inline __device__ double atomicAdd(double* address, double val)
|
|
18
|
+
{
|
|
19
|
+
unsigned long long int* address_as_ull =
|
|
20
|
+
(unsigned long long int*)address;
|
|
21
|
+
unsigned long long int old = *address_as_ull, assumed;
|
|
22
|
+
|
|
23
|
+
do {
|
|
24
|
+
assumed = old;
|
|
25
|
+
old = atomicCAS(address_as_ull, assumed,
|
|
26
|
+
__double_as_longlong(val +
|
|
27
|
+
__longlong_as_double(assumed)));
|
|
28
|
+
|
|
29
|
+
// Note: uses integer comparison to avoid hang in case of NaN (since NaN != NaN)
|
|
30
|
+
} while (assumed != old);
|
|
31
|
+
|
|
32
|
+
return __longlong_as_double(old);
|
|
33
|
+
}
|
|
34
|
+
#endif
|
|
35
|
+
#endif
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
// Kernel wrapper only available if we are compiling the current file with the cuda compiler
|
|
40
|
+
#ifdef __CUDACC__
|
|
41
|
+
|
|
42
|
+
template<class F> __global__
|
|
43
|
+
void CUDA_forall(int n, F f)
|
|
44
|
+
{
|
|
45
|
+
int tid = blockIdx.x*blockDim.x+threadIdx.x;
|
|
46
|
+
for (int i = tid; i < n; i += blockDim.x*gridDim.x)
|
|
47
|
+
f(i);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
template<class F> __global__
|
|
51
|
+
void CUDA_forall2(int n, F f)
|
|
52
|
+
{
|
|
53
|
+
int tid = (blockIdx.x*blockDim.y+threadIdx.y)*blockDim.x+threadIdx.x;
|
|
54
|
+
for (int i = tid; i < n; i += blockDim.x*blockDim.y*gridDim.x)
|
|
55
|
+
f(i);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
#define DEVICE_LAMBDA __device__
|
|
59
|
+
|
|
60
|
+
template <class F>
|
|
61
|
+
inline void DeviceParallelFor (int n, F f)
|
|
62
|
+
{
|
|
63
|
+
// CUDA_forall<<<512,256>>> (n, f);
|
|
64
|
+
CUDA_forall<<<n/256+1,256>>> (n, f);
|
|
65
|
+
// CUDA_forall<<<4096,32>>> (n, f); // slower
|
|
66
|
+
// CUDA_forall2<<<512,dim3(16,16)>>> (n, f); // same performance
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
#endif // __CUDACC__
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
template <typename T>
|
|
78
|
+
class Dev
|
|
79
|
+
{
|
|
80
|
+
T data;
|
|
81
|
+
|
|
82
|
+
public:
|
|
83
|
+
__host__ __device__ Dev() = delete;
|
|
84
|
+
|
|
85
|
+
static Dev<T> * Malloc(size_t size)
|
|
86
|
+
{
|
|
87
|
+
Dev<T> * ptr;
|
|
88
|
+
if (auto err = cudaMalloc (&ptr, size*sizeof(T)))
|
|
89
|
+
throw ngstd::Exception("cudaMalloc error, ec="+ngcore::ToString(err));
|
|
90
|
+
return ptr;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
static void Free(Dev<T> * data)
|
|
94
|
+
{
|
|
95
|
+
cudaFree (data);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
T D2H() const
|
|
102
|
+
{
|
|
103
|
+
T res;
|
|
104
|
+
cudaMemcpy (&res, &data, sizeof(T), cudaMemcpyDeviceToHost);
|
|
105
|
+
return res;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
void H2D (T val)
|
|
109
|
+
|
|
110
|
+
{
|
|
111
|
+
cudaMemcpy (this, &val, sizeof(T), cudaMemcpyHostToDevice);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
void D2H (ngcore::FlatArray<T> hosta)
|
|
115
|
+
{
|
|
116
|
+
cudaMemcpy (hosta.Data(), &data, hosta.Size()*sizeof(T), cudaMemcpyDeviceToHost);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
void H2D (ngcore::FlatArray<T> hosta)
|
|
120
|
+
{
|
|
121
|
+
cudaMemcpy (&data, hosta.Data(), hosta.Size()*sizeof(T), cudaMemcpyHostToDevice);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
__host__ __device__ Dev<T> & operator= (T d2)
|
|
125
|
+
{
|
|
126
|
+
#ifdef __CUDA_ARCH__
|
|
127
|
+
data = d2;
|
|
128
|
+
#else
|
|
129
|
+
H2D(d2);
|
|
130
|
+
#endif
|
|
131
|
+
return *this;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
__host__ __device__ operator T() const
|
|
135
|
+
{
|
|
136
|
+
#ifdef __CUDA_ARCH__
|
|
137
|
+
return data;
|
|
138
|
+
#else
|
|
139
|
+
return D2H();
|
|
140
|
+
#endif
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
__device__ const T& operator*() const { return data; }
|
|
144
|
+
|
|
145
|
+
template <typename T2>
|
|
146
|
+
__device__ auto & operator+= (T2 other) { data += other; return *this; }
|
|
147
|
+
template <typename T2>
|
|
148
|
+
__device__ auto & operator-= (T2 other) { data -= other; return *this; }
|
|
149
|
+
template <typename T2>
|
|
150
|
+
__device__ auto & operator*= (T2 other) { data *= other; return *this; }
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
template <typename T>
|
|
155
|
+
Dev<T> * Host2Device (const T& val)
|
|
156
|
+
{
|
|
157
|
+
auto ptr = Dev<T>::Malloc(1);
|
|
158
|
+
ptr->H2D(val);
|
|
159
|
+
return ptr;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
template <typename T>
|
|
163
|
+
void Free(Dev<T> * dp)
|
|
164
|
+
{
|
|
165
|
+
Dev<T>::Free (dp);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
#endif
|
|
173
|
+
|
|
@@ -101,8 +101,10 @@ namespace ngla
|
|
|
101
101
|
|
|
102
102
|
bool disjoint_rows, disjoint_cols;
|
|
103
103
|
size_t numblocks;
|
|
104
|
+
bool output_onto = false;
|
|
104
105
|
public:
|
|
105
106
|
DevConstantElementByElementMatrix (const T_ConstEBEMatrix & mat);
|
|
107
|
+
void Mult (const BaseVector & x, BaseVector & y) const override;
|
|
106
108
|
void MultAdd (double s, const BaseVector & x, BaseVector & y) const override;
|
|
107
109
|
void MultTransAdd (double s, const BaseVector & x, BaseVector & y) const override;
|
|
108
110
|
|
|
@@ -120,7 +122,9 @@ namespace ngla
|
|
|
120
122
|
Array<Dev<int>> indices, indices_trans;
|
|
121
123
|
public:
|
|
122
124
|
DevBlockDiagonalMatrixSoA (const BlockDiagonalMatrixSoA & mat);
|
|
125
|
+
void Mult (const BaseVector & x, BaseVector & y) const override;
|
|
123
126
|
void MultAdd (double s, const BaseVector & x, BaseVector & y) const override;
|
|
127
|
+
void MultTrans (const BaseVector & x, BaseVector & y) const override;
|
|
124
128
|
void MultTransAdd (double s, const BaseVector & x, BaseVector & y) const override;
|
|
125
129
|
int VHeight() const override { return dimy*blocks; }
|
|
126
130
|
int VWidth() const override { return dimx*blocks; }
|
|
@@ -1,9 +1,22 @@
|
|
|
1
1
|
#ifndef CUDA_NGBLA
|
|
2
2
|
#define CUDA_NGBLA
|
|
3
3
|
|
|
4
|
+
#include <cuda_runtime.h>
|
|
5
|
+
#include <cublas_v2.h>
|
|
6
|
+
|
|
7
|
+
#include <vector.hpp>
|
|
8
|
+
#include <matrix.hpp>
|
|
9
|
+
|
|
4
10
|
#include "cuda_ngstd.hpp"
|
|
5
11
|
#include "linalg_kernels.hpp"
|
|
6
12
|
|
|
13
|
+
|
|
14
|
+
namespace ngla
|
|
15
|
+
{
|
|
16
|
+
cublasHandle_t Get_CuBlas_Handle ();
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
|
|
7
20
|
namespace ngbla
|
|
8
21
|
{
|
|
9
22
|
using namespace ngs_cuda;
|
|
@@ -15,15 +28,15 @@ namespace ngbla
|
|
|
15
28
|
template <typename T>
|
|
16
29
|
class Vector<Dev<T>> : public FlatVector<Dev<T>>
|
|
17
30
|
{
|
|
18
|
-
using FlatVector<Dev<T>>::
|
|
19
|
-
using FlatVector<Dev<T>>::
|
|
31
|
+
using FlatVector<Dev<T>>::Size;
|
|
32
|
+
using FlatVector<Dev<T>>::Data;
|
|
20
33
|
|
|
21
34
|
public:
|
|
22
35
|
Vector (Vector&) = delete;
|
|
23
36
|
Vector (Vector&&v2)
|
|
24
37
|
: FlatVector<Dev<T>>(v2.Size(), v2.Data())
|
|
25
38
|
{
|
|
26
|
-
v2.
|
|
39
|
+
v2.layout = { nullptr, 0 };
|
|
27
40
|
}
|
|
28
41
|
|
|
29
42
|
Vector (size_t asize)
|
|
@@ -37,22 +50,31 @@ namespace ngbla
|
|
|
37
50
|
|
|
38
51
|
~Vector()
|
|
39
52
|
{
|
|
40
|
-
Dev<T>::Free(
|
|
53
|
+
Dev<T>::Free(Data());
|
|
41
54
|
}
|
|
42
|
-
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
template<typename TB>
|
|
58
|
+
Vector & operator= (const Expr<TB> & v)
|
|
59
|
+
{
|
|
60
|
+
MatExpr<FlatVector<Dev<T>> >::operator= (v);
|
|
61
|
+
return *this;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
|
|
43
65
|
void D2H (FlatVector<T> vec) const
|
|
44
66
|
{
|
|
45
|
-
cudaMemcpy (vec.Data(),
|
|
67
|
+
cudaMemcpy (vec.Data(), Data(), sizeof(T)*Size(), cudaMemcpyDeviceToHost);
|
|
46
68
|
}
|
|
47
69
|
|
|
48
70
|
void H2D (FlatVector<T> vec)
|
|
49
71
|
{
|
|
50
|
-
cudaMemcpy (
|
|
72
|
+
cudaMemcpy (Data(), vec.Data(), sizeof(T)*Size(), cudaMemcpyHostToDevice);
|
|
51
73
|
}
|
|
52
74
|
|
|
53
75
|
Vector<T> D2H() const
|
|
54
76
|
{
|
|
55
|
-
Vector<T> vh(
|
|
77
|
+
Vector<T> vh(Size());
|
|
56
78
|
D2H (vh);
|
|
57
79
|
return vh;
|
|
58
80
|
}
|
|
@@ -64,8 +86,74 @@ namespace ngbla
|
|
|
64
86
|
cudaMemcpy (hvec.Data(), dvec.Data(), sizeof(double)*hvec.Size(), cudaMemcpyDeviceToHost);
|
|
65
87
|
return hvec;
|
|
66
88
|
}
|
|
89
|
+
|
|
90
|
+
#ifdef OLDOLD
|
|
91
|
+
#ifdef __CUDACC__
|
|
92
|
+
template <typename TS, typename TD>
|
|
93
|
+
__global__ void kernel_Assign (size_t n, TD pod_dst, TS pod_src)
|
|
94
|
+
{
|
|
95
|
+
auto dst = *pod_dst;
|
|
96
|
+
auto src = *pod_src;
|
|
97
|
+
|
|
98
|
+
int tid = blockIdx.x*blockDim.x+threadIdx.x;
|
|
99
|
+
for (int i = tid; i < n; i += blockDim.x*gridDim.x)
|
|
100
|
+
if (i < 5)
|
|
101
|
+
dst(i) = src.S();
|
|
102
|
+
else
|
|
103
|
+
dst(i) = src.A()(i);
|
|
104
|
+
}
|
|
105
|
+
#endif
|
|
106
|
+
|
|
107
|
+
template <typename T>
|
|
108
|
+
class AsPOD
|
|
109
|
+
{
|
|
110
|
+
std::array<char, sizeof(T)> data;
|
|
111
|
+
public:
|
|
112
|
+
AsPOD(const AsPOD&) = default;
|
|
113
|
+
INLINE AsPOD (const T & adata)
|
|
114
|
+
{
|
|
115
|
+
char * pdata = (char*)(void*)&adata;
|
|
116
|
+
for (int i = 0; i < sizeof(T); i++)
|
|
117
|
+
data[i] = pdata[i];
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
INLINE const T & operator* () const
|
|
121
|
+
{
|
|
122
|
+
T * val = (T*)(void*)&data[0];
|
|
123
|
+
return *val;
|
|
124
|
+
}
|
|
125
|
+
INLINE int operator[] (int i) const { return data[i]; }
|
|
126
|
+
};
|
|
127
|
+
#endif
|
|
128
|
+
|
|
67
129
|
|
|
68
130
|
|
|
131
|
+
template <typename TOP, typename T, typename TS, typename TDIST, typename TB>
|
|
132
|
+
class assign_trait<TOP, VectorView<T,TS,TDIST>, TB,
|
|
133
|
+
enable_if_t < std::is_same<std::invoke_result_t<VectorView<T,TS,TDIST>,size_t>, Dev<double>&>::value, int>>
|
|
134
|
+
{
|
|
135
|
+
public:
|
|
136
|
+
static INLINE VectorView<T,TS,TDIST> & Assign (MatExpr<VectorView<T,TS,TDIST>> & self, const Expr<TB> & v)
|
|
137
|
+
{
|
|
138
|
+
|
|
139
|
+
#ifdef __CUDACC__
|
|
140
|
+
|
|
141
|
+
ngs_cuda::DeviceParallelFor
|
|
142
|
+
(self.Height(),
|
|
143
|
+
[devself=self.Spec(), devv=v.Spec()] DEVICE_LAMBDA (auto tid) -> void
|
|
144
|
+
{
|
|
145
|
+
// devself(tid) = devv(tid);
|
|
146
|
+
TOP()(devself(tid),devv(tid));
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
#endif
|
|
150
|
+
|
|
151
|
+
return self.Spec();
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
|
|
69
157
|
|
|
70
158
|
|
|
71
159
|
template <typename T>
|
|
@@ -137,6 +225,9 @@ namespace ngbla
|
|
|
137
225
|
SliceMatrix<Dev<double>, ORDERING::ColMajor> c,
|
|
138
226
|
double alpha, double beta)
|
|
139
227
|
{
|
|
228
|
+
static Timer t("cublasDgemm");
|
|
229
|
+
CudaRegionTimer rt(t);
|
|
230
|
+
|
|
140
231
|
cublasStatus_t stat =
|
|
141
232
|
cublasDgemm(ngla::Get_CuBlas_Handle(),
|
|
142
233
|
ORDA==ORDERING::RowMajor ? CUBLAS_OP_T : CUBLAS_OP_N,
|
|
@@ -4,94 +4,18 @@
|
|
|
4
4
|
#include <cuda_runtime.h>
|
|
5
5
|
#include <ngstd.hpp>
|
|
6
6
|
|
|
7
|
+
#include "cuda_core.hpp"
|
|
7
8
|
#include "cuda_profiler.hpp"
|
|
8
9
|
|
|
9
10
|
namespace ngs_cuda
|
|
10
11
|
{
|
|
11
12
|
using namespace ngstd;
|
|
12
13
|
|
|
13
|
-
// from CUDA C++ Programming Guide:
|
|
14
|
-
// https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#atomic-functions
|
|
15
|
-
#ifdef __CUDA_ARCH__
|
|
16
|
-
#if __CUDA_ARCH__ < 600
|
|
17
|
-
inline __device__ double atomicAdd(double* address, double val)
|
|
18
|
-
{
|
|
19
|
-
unsigned long long int* address_as_ull =
|
|
20
|
-
(unsigned long long int*)address;
|
|
21
|
-
unsigned long long int old = *address_as_ull, assumed;
|
|
22
|
-
|
|
23
|
-
do {
|
|
24
|
-
assumed = old;
|
|
25
|
-
old = atomicCAS(address_as_ull, assumed,
|
|
26
|
-
__double_as_longlong(val +
|
|
27
|
-
__longlong_as_double(assumed)));
|
|
28
|
-
|
|
29
|
-
// Note: uses integer comparison to avoid hang in case of NaN (since NaN != NaN)
|
|
30
|
-
} while (assumed != old);
|
|
31
|
-
|
|
32
|
-
return __longlong_as_double(old);
|
|
33
|
-
}
|
|
34
|
-
#endif
|
|
35
|
-
#endif
|
|
36
14
|
|
|
37
15
|
|
|
38
16
|
extern int gpu_clock;
|
|
39
17
|
void InitCUDA (int verbose = 2);
|
|
40
18
|
|
|
41
|
-
|
|
42
|
-
template <typename T>
|
|
43
|
-
class Dev
|
|
44
|
-
{
|
|
45
|
-
public:
|
|
46
|
-
T data;
|
|
47
|
-
static Dev<T> * Malloc(size_t size)
|
|
48
|
-
{
|
|
49
|
-
Dev<T> * ptr;
|
|
50
|
-
if (auto err = cudaMalloc (&ptr, size*sizeof(T)))
|
|
51
|
-
throw Exception("cudaMalloc error, ec="+ToString(err));
|
|
52
|
-
return ptr;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
static void Free(Dev<T> * data)
|
|
56
|
-
{
|
|
57
|
-
cudaFree (data);
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
T D2H() const
|
|
61
|
-
{
|
|
62
|
-
T res;
|
|
63
|
-
cudaMemcpy (&res, &data, sizeof(T), cudaMemcpyDeviceToHost);
|
|
64
|
-
return res;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
void H2D (T val)
|
|
68
|
-
{
|
|
69
|
-
cudaMemcpy (&data, &val, sizeof(T), cudaMemcpyHostToDevice);
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
void D2H (FlatArray<T> hosta)
|
|
74
|
-
{
|
|
75
|
-
cudaMemcpy (hosta.Data(), &data, hosta.Size()*sizeof(T), cudaMemcpyDeviceToHost);
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
void H2D (FlatArray<T> hosta)
|
|
79
|
-
{
|
|
80
|
-
cudaMemcpy (&data, hosta.Data(), hosta.Size()*sizeof(T), cudaMemcpyHostToDevice);
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
__device__ Dev<T> & operator= (T d2) { data = d2; return *this; }
|
|
85
|
-
__device__ operator T() const { return data; }
|
|
86
|
-
|
|
87
|
-
template <typename T2>
|
|
88
|
-
__device__ auto & operator+= (T2 other) { data += other; return *this; }
|
|
89
|
-
template <typename T2>
|
|
90
|
-
__device__ auto & operator-= (T2 other) { data -= other; return *this; }
|
|
91
|
-
template <typename T2>
|
|
92
|
-
__device__ auto & operator*= (T2 other) { data *= other; return *this; }
|
|
93
|
-
};
|
|
94
|
-
|
|
95
19
|
}
|
|
96
20
|
|
|
97
21
|
namespace ngcore {
|
|
@@ -105,43 +29,6 @@ namespace ngcore {
|
|
|
105
29
|
namespace ngs_cuda
|
|
106
30
|
{
|
|
107
31
|
|
|
108
|
-
/*
|
|
109
|
-
template <typename T>
|
|
110
|
-
class DevVar
|
|
111
|
-
{
|
|
112
|
-
T * ptr;
|
|
113
|
-
public:
|
|
114
|
-
DevVar()
|
|
115
|
-
{
|
|
116
|
-
cudaMalloc (&ptr, sizeof(T));
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
DevVar(T val)
|
|
120
|
-
{
|
|
121
|
-
cudaMalloc (&ptr, sizeof(T));
|
|
122
|
-
cudaMemcpy (ptr, &val, sizeof(T), cudaMemcpyHostToDevice);
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
operator T () const
|
|
126
|
-
{
|
|
127
|
-
T tmp;
|
|
128
|
-
cudaMemcpy (&tmp, ptr, sizeof(T), cudaMemcpyDeviceToHost);
|
|
129
|
-
return tmp;
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
T * DevPtr() const { return ptr; }
|
|
133
|
-
T & DevRef() const { return *ptr; }
|
|
134
|
-
|
|
135
|
-
};
|
|
136
|
-
|
|
137
|
-
template <typename T>
|
|
138
|
-
inline ostream & operator<< (ostream & ost, DevVar<T> & var)
|
|
139
|
-
{
|
|
140
|
-
ost << T(var);
|
|
141
|
-
return ost;
|
|
142
|
-
}
|
|
143
|
-
*/
|
|
144
|
-
|
|
145
32
|
// TODO: Resize + error checking
|
|
146
33
|
class DevStackMemory
|
|
147
34
|
{
|
|
@@ -131,10 +131,13 @@ namespace ngla
|
|
|
131
131
|
{
|
|
132
132
|
size_t h, w;
|
|
133
133
|
Matrix<SCAL> matrix;
|
|
134
|
-
Table<int> col_dnums;
|
|
135
|
-
Table<int> row_dnums;
|
|
134
|
+
Table<int> col_dnums; // output
|
|
135
|
+
Table<int> row_dnums; // input
|
|
136
136
|
bool disjoint_rows, disjoint_cols;
|
|
137
137
|
Table<int> row_coloring, col_coloring;
|
|
138
|
+
bool output_onto = false;
|
|
139
|
+
bool output_matrix = false;
|
|
140
|
+
bool output_matrix_trans = false;
|
|
138
141
|
public:
|
|
139
142
|
ConstantElementByElementMatrix (size_t ah, size_t aw, Matrix<SCAL> amatrix,
|
|
140
143
|
Table<int> acol_dnums, Table<int> arow_dnums);
|