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

Add Isaac Morales blog #1606

Merged
merged 2 commits into from
Nov 6, 2024
Merged

Add Isaac Morales blog #1606

merged 2 commits into from
Nov 6, 2024

Conversation

imorlxs
Copy link
Contributor

@imorlxs imorlxs commented Oct 20, 2024

@vvolkl
Copy link
Contributor

vvolkl commented Oct 22, 2024

Very nice, thanks! Giving @vgvassilev @LukasBreitwieser a chance to comment before merging

Copy link
Contributor

@vgvassilev vgvassilev left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lgtm!

Copy link
Contributor

@LukasBreitwieser LukasBreitwieser left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @imorlxs ,
Thank you very much for your work and blog. I left a few comments to strengthen the text. Let me know if you have any questions.
Best,
Lukas

particularly in fields like cancer research, epidemiology, and social sciences. It leverages
ROOT—a framework widely used in high-energy physics—for statistical analysis, random number
generation, C++ Jupyter notebooks, and I/O operations. However, enhancing BioDynaMo’s performance
remains a key challenge. This is where this Google Summer of Code 2024 (GSoC ‘24) project comes
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Be more precise in explaining which parts of BioDynaMo need performance improvements and say why.
e.g.: the listed functionalities rely on reflection information; launching the reflection subsystem on simulation startup requires a significant amount of time and memory.
Cite this paper (https://link.springer.com/article/10.1007/s00285-024-02144-2), which describes the performance issue at startup.
Your work addresses this issue fundamentally at its root, while the paper above uses a workaround (yet effective) to improve performance.

Comment on lines 34 to 35
experiences significant runtime performance and memory usage issues. The repeated parsing of library
descriptors by Cling introduces inefficiencies that slow down the startup phase and consume excessive
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Explain the steps of cling startup and dictionary loading without C++ modules in greater detail. What exactly do you mean by "repeated parsing".

Comment on lines 41 to 42
these performance issues. C++ Modules offer an efficient on-disk representation of C++ code,
reducing the need for repeated parsing of invariant code. By implementing these modules,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Give more details about C++ modules and how they address the challenges described before.

The primary goal of the GSoC project was to integrate ROOT’s C++ Modules into BioDynaMo to minimize
these performance issues. C++ Modules offer an efficient on-disk representation of C++ code,
reducing the need for repeated parsing of invariant code. By implementing these modules,
the project aimed to optimize runtime memory usage and improve overall performance
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Be more precise by what you mean with "overall performance".

Comment on lines +57 to +59
The results have been promising, showcasing significant performance gains. Benchmarking revealed
improvements ranging from 18% reduction in peak memory usage with the default modules.idx to 25% with the
updated one.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add information on the number of agents in the benchmark simulations. The higher the number of agents, the lower the reduction in peak memory consumption.
Explain what models.idx is and which kind of improvements are in the updated one. In general, explain terms before you use them, such that readers that are new to your project understand.

Cling’s parsing overhead
![Plot of the startup time in various demos](https://compiler-research.org/images/blog/bdm-startup-time.png)

As expected, the simulation time did not show an appreciable improvement. However, in the
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Explain that no change in simulation runtime is expected, because the C++ modules affect only the startup phase.

caused compatibility issues with the main build system. Also, there is a problem with the Jupyter notebooks.
Resolving these issues and finalizing the integration of C++ Modules will be essential for ensuring long-term stability and reliability.

Looking ahead, further optimizations are planned, including potential module-based optimizations for BioDynaMo’s
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What exactly do you mean with module-based optimizations for BDM's core components?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For now we are generating one big module (biodynamo.pcm). The goal is to split that into smaller ones to load them on-demand.

@vvolkl vvolkl merged commit 12f86a2 into HSF:main Nov 6, 2024
1 of 2 checks passed
@vvolkl vvolkl added the GSoC Related to Google Summer of Code activity label Nov 7, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
GSoC Related to Google Summer of Code activity
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants