issues
search
yt-project
/
libyt
In-situ analysis with yt
https://libyt.readthedocs.io/
BSD 3-Clause "New" or "Revised" License
9
stars
3
forks
source link
Paper
#9
Open
hyschive
opened
3 years ago
hyschive
commented
3 years ago
Tasks
[ ] Release the code (#8)
[ ] Work with Matt
[ ] Where to submit (e.g., ApJS)?
cindytsai
commented
2 years ago
Example Papers
ApJS
yt
Trident
Galaxy Cluster Merger Catalog
JOSS
ytree
Enzo
cindytsai
commented
2 years ago
Outline of the Paper
TODO
[ ] Check do I miss any citations.
[ ] Add Enzo in Section 4.
Need Discussions:
How to show memory consumption in
libyt
?
ABSTRACT
1. INTRODUCTION
Why develop libyt? Motivation.
Some other situ-analyze tool sets. (ex: Catalyst)
Advantage and usage of libyt?
Introducing libyt:
libyt originated in Enzo.
Mention libyt has already and can be implemented in simulation codes (ex: Gamer, Enzo).
Basic idea of libyt.
libyt is built with C++ and Python. It is aimed for all C++ simulation codes that are supported by yt.
Example.
A time series of very big data sets.
Original Python script and Inline script are basically the same. (Section 3)
Outline of this paper.
2. CODE METHOD
2.1 Big Picture of libyt
2.2 Embedding Python in C++ Application
Brief description of Python and NumPy API.
Creation of libyt Python module and its C extended Python methods.
Loading user's inline Python script.
How it loads data from C++ to Python.
2.3 Connecting libyt to yt
View libyt as another yt frontend.
How libyt inherit other frontend's field definitions and yt's field definitions.
2.4 Supported yt Functionalities
Supported yt functionalities.
Table.
2.5 Parallelism
Structure of libyt and Python under MPI.
How libyt is paralleled is heavily rely on yt.
Some distribute jobs according to where the grids data are stored. (ex: Projection)
Others. (ex: Slice)
How to deal with getting non-local data and restrictions.
RMA MPI
C++ class
2.6 Collecting Grid Information
Collecting hierarchy from each rank.
2.7 Loading Intrinsic Fields
Definition of in-memory field data.
Connect in-memory field data to Python.
Supporting ghost zone.
2.8 Computing Derived Fields
Definition of derived fields.
Why do we need this?
Some calculations cannot be done in yt. (ex: EoS, #19 )
Save memory space. (ex: MHD face-centered to cell-centered.)
Face-centered data.
How required data is generated and passed back to Python.
2.9 Supporting Particle Data
Particle data type may be discrete and is not a contiguous array in memory space.
How to collect discrete data and pass back to Python.
3. DEMONSTRATION: HOW TO IMPLEMENT LIBYT TO SIMULATION CODE
A C++ library for yt.
Pseudo-code or procedure graph of simulation code combined with libyt.
A list of libyt APIs.
[x] Display code block.
3.1 Initialization
3.2 Setting yt Parameters
3.3 Setting Code-Specific Parameters
3.4 Setting Fields Information
3.5 Adding Derived Field
3.6 Setting Particles Information
3.7 Setting Local Grids Information
3.8 Committing Your Settings
3.9 Performing Inline-Analysis
How to use
yt_inline
and
yt_inline_argument
How to convert your post-processing script to inline script.
Distinguishing libyt fields and yt defined fields
3.10 Freeing Resource
3.11 Finalization
4. SCIENTIFIC APPLICATIONS
Gamer
19
CCSN simulations
Vortex Run.
Enzo
Time Consumption - Number of Nodes graph.
Inline vs No-inline
Inline vs Post-process (
plan B
)
Memory Consumption - Number of Nodes Graph
5. DISCUSSION AND FUTURE WORK
Open Source Software
Build test on GitHub Action with Python 3.7, 3.8, 3.9, 3.10.
Performance
Time-Number of Processors Graph.
Limitations of libyt
Description and what causes the limitations.
Some yt functionalities still needs additional data when saving figure. Ex: Annotations.
Some yt functionalities has asymmetric data IO like volume rendering.
Support Fortran (ex: Flash).
Supporting Dask
Support ParaView for inline-rendering. libyt has the potential to give another way for simulation codes to support inline-analysis in ParaView.
Reference
bibliography
Tasks