optimad / bitpit

Open source library for scientific HPC
http://optimad.github.io/bitpit/
GNU Lesser General Public License v3.0
116 stars 33 forks source link

Parallel RBF for large set of nodes #449

Open hzyhrbeu opened 7 months ago

hzyhrbeu commented 7 months ago

I want to use the RBF module in bitpit to achieve mesh morphing. And I modified "/home/hzy/bitpit-bitpit-1.9.0/test/integration_tests/RBF/test_RBF_0004.cpp" and preliminary achieved RBF interpolation of displacement field. But when the number of control points is larger than 10000, the solver is very slow, about 20 min. Can we use MPI paralle to speed up the solving procedure. perhaps split the control points into much small sub sets or just use MPI to solve the large linear algebra system? Does anybody can provide an examples? Thanks!

andrea-iob commented 7 months ago

I don't have any experience with the RBF module, however, it seems it is using LAPACK to solve the system. There are some LAPACK implementations that are multithreaded, e.g. OpenBLAS / GotoBLAS. If you can install one of those libraries, you may be able to solve the RBF system in parallel (since those libraries are using multithreading and not MPI, you will be limited to a single node).

Before trying to install OpenBLAS/GotoBLAS I suggest you make some measurements, just to be sure the slowest part of the program is the solution of the linear system. I quickly looked at the RBF implementation and it seems there are some algorithms used by the RBF module (e.g. evaluation of distance), that don't scale well with the number of points.

@kgkara Do you have any idea on how to improve the performances of the RBF module?

kgkara commented 7 months ago

Hello @hzyhrbeu could you please provide some details about the modified example "test_RBF_0004.cpp"? Apart from the number of control points and how they are distributed, also it would be useful to know about the support radius and the RBFBasisFunction that you are using. Thanks.