Skip to content

Implementation of IProductWRTBaseMatFree

BOYANG XIA requested to merge xby2233/redesign-prototypes:iproductWRTbase into master

A complete design of IProductWRTBaseMatFree, should work with all types of elements. This merge-request is based on the previous merge-request !22 (merged).

Add new methods GetVectorizedGeomFactorSize() SetVectorizedJacobian() to Operator.hpp, which returns the std::vector<vec_t>. They will be called only once when calling the Create() and the Jacobian data will be cached in the m_jac for later use. Basis data is still fetched on the fly, same as !22 (merged).

Here is a simple benchmark:

  • Platform: KCL CREATE HPC, Intel(R) Xeon(R) Gold 6142 CPU @ 2.60GHz, serial run.
  • Configuration: Build=Release AVX2=ON MPI=OFF.
  • Test case: 32^3 hex in a cubic domain, regular shape, np = nm + 1 (default),
  • Use LibUtilities::Timer to record the time used by apply(), See main.cpp
        BwdTransStdMat     BwdTransMatfree     IproductWRTBaseStdMat    IproductWRTBaseMatFree
nm = 3  0.0364164 s         0.0543076 s             0.0655327 s             0.0913291 s
nm = 4  0.175829 s          0.119707 s              0.312965 s              0.225187 s
nm = 5  0.577169 s          0.238487 s              0.726944 s              0.477724 s
nm = 6  1.54373 s           0.425927 s              1.7487 s                0.888869 s
nm = 7  3.64499 s           0.70719 s               3.9742 s                1.50973 s
Edited by BOYANG XIA

Merge request reports

Loading