Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Parallel RBF for large set of nodes #449

Open
hzyhrbeu opened this issue Feb 26, 2024 · 2 comments
Open

Parallel RBF for large set of nodes #449

hzyhrbeu opened this issue Feb 26, 2024 · 2 comments
Labels

Comments

@hzyhrbeu
Copy link

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
Copy link
Member

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
Copy link
Contributor

kgkara commented Feb 29, 2024

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants