Problem
GH200 Warnings are larger architectural fixes. The 50-warnings are reduce to 11 visible locations.
Root cause: host-owning Field objects are copied into host/device expressions or lambdas. Their generated device destructors then try to call the host-only Field::~Field().
Main paces:
Ideas:
-
Replace KOKKOS_CLASS_LAMBDA in LagrangeSpace with ordinary KOKKOS_LAMBDA captures of its existing lightweight DeviceStruct, views, and scalar data.
-
Make field-expression nodes store a device-safe view adapter rather than an owning Field.
-
Do not mark Field::~Field() as device-callable and do not suppress warning 20011; its host-owned members are genuinely unsuitable for device destruction.
Note
This needs extensive and careful checking beyond our test, i.e. LandauDamping with FEM solver
Problem
GH200 Warnings are larger architectural fixes. The 50-warnings are reduce to 11 visible locations.
Root cause: host-owning Field objects are copied into host/device expressions or lambdas. Their generated device destructors then try to call the host-only
Field::~Field().Main paces:
LagrangeSpace.hpp (line 1432): KOKKOS_CLASS_LAMBDA expands to
[=, *this], copying the entire LagrangeSpace, including resultField.IpplOperations.h (line 304):
meta_grad, meta_laplace, meta_curl, and meta_hessstoreconst E u_m, whereEcan be a complete Field.LaplaceHelpers.h (line 43): the Poisson expression objects have the same ownership pattern.
Ideas:
Replace
KOKKOS_CLASS_LAMBDAin LagrangeSpace with ordinaryKOKKOS_LAMBDAcaptures of its existing lightweight DeviceStruct, views, and scalar data.Make field-expression nodes store a device-safe view adapter rather than an owning Field.
Do not mark
Field::~Field()as device-callable and do not suppress warning 20011; its host-owned members are genuinely unsuitable for device destruction.Note
This needs extensive and careful checking beyond our test, i.e.
LandauDampingwithFEMsolver