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

Paper #9

Open
3 tasks
hyschive opened this issue Jul 3, 2021 · 2 comments
Open
3 tasks

Paper #9

hyschive opened this issue Jul 3, 2021 · 2 comments
Assignees
Labels
doc Improvements or additions to documentation paper Worthy to be put in a paper pri-low Priority: low

Comments

@hyschive
Copy link
Contributor

hyschive commented Jul 3, 2021

###Tasks

  • Release the code (Code release #8)
  • Work with Matt
  • Where to submit (e.g., ApJS)?
@hyschive hyschive added doc Improvements or additions to documentation paper Worthy to be put in a paper pri-low Priority: low labels Jul 3, 2021
@hyschive hyschive added help wanted Extra attention is needed and removed help wanted Extra attention is needed labels Jul 3, 2021
@cindytsai
Copy link
Collaborator

cindytsai commented Nov 24, 2021

Example Papers

ApJS

JOSS

@cindytsai
Copy link
Collaborator

cindytsai commented Feb 4, 2022

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?
  • 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.
  • 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
  • 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

@yt-project yt-project locked and limited conversation to collaborators Jun 29, 2022
@yt-project yt-project unlocked this conversation Jun 29, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
doc Improvements or additions to documentation paper Worthy to be put in a paper pri-low Priority: low
Projects
None yet
Development

No branches or pull requests

3 participants