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

Performance of partitioning and joining #179

Open
davidscn opened this issue Oct 25, 2023 · 2 comments
Open

Performance of partitioning and joining #179

davidscn opened this issue Oct 25, 2023 · 2 comments

Comments

@davidscn
Copy link
Member

We have precice-aste-partition and precice-aste-join as part of the toolchain to partition/join mesh files. However, for a large core count or large mesh files, their python implementation is rather slow. A canonical alternative to investigate here is Julia as programming language, as the interface/implementation could be considered similar while gaining performance upgrades. However, as of now, the Julia wrapping of the VTK libraries is not flexible enough for such purposes. Instead of one VTK package (python), there are two packages available in Julia, ReadVTK and WriteVTK. Reading VTK files comes with a few constraints (see also the what does not work section of the docs):

appended data is assumed to be stored as raw
header_type is hardcoded to UInt64

both constraints don't apply to our current 'frequently used' mapping meshes and are also not compatible with precice-aste-evaluate, which would then also require a porting to Julia. Reading the files is mostly compatible with the corresponding VTK writer. It could become a valid approach though, once the reader becomes more general.

For the joining part, there is still an open PR which features a C++ implementation #156

@kursatyurt
Copy link
Collaborator

For partitioning, I still recommend keeping the implementation in C++. The naming convention in the precice-aste-partition is somewhat not so clear. The meshfree algorithm is basically a k-means partitioning which is easy to handle within the VTK library. The topology option uses the metis library and, again can be directly implemented in C++ without any problem. Honestly, I have zero intuition about uniform option, the implementation does not have any reference to the algorithm used there.

@kursatyurt
Copy link
Collaborator

@davidscn I might have a chance to stitch my prototypes for partitioning as well in the coming days. Would you give an insight about the uniform option in the partitioner? Do we need it or a C++ version without it would still be useful?

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

No branches or pull requests

2 participants