You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Decision Gates: The following decisions must be confirmed before dependent implementation items can proceed.
Decision 1: Adopt SYCL (AdaptiveCPP) as the GPU backend
This is the most consequential architectural decision in the roadmap. Confirmation unlocks or reframes several downstream items:
C++17 upgrade becomes a hard requirement
SoA memory layout refactor becomes higher priority
apply_bc_vel interface cleanup scope is defined by this decision
If declined, a long-term maintenance strategy for OpenACC must be separately evaluated
Implementation
Reorganize repository folder structure
Establishes clear module boundaries that reduce merge conflicts during large-scale changes
Lowers onboarding cost — directory structure serves as implicit documentation
The earlier this is completed, the less friction all downstream work encounters
Upgrade minimum C++ standard to C++17 ← Requires Decision 1
SYCL/AdaptiveCPP requires C++17 as a language prerequisite
Establishes a consistent language baseline across the codebase (if constexpr, structured bindings, std::optional, etc.)
Modern compilers provide better auto-vectorization and optimization support under C++17
Lays groundwork for future adoption of C++20 concepts for stricter template constraints
Refactor array2D memory layout from AoS to SoA ← Requires Decision 1, Item 2
SoA places fields of the same type contiguously in memory, significantly improving GPU coalesced access hit rates
A prerequisite for efficient SYCL kernel execution — irregular access patterns in AoS are especially costly on GPU
Also benefits CPU-side SIMD vectorization (AVX-512, NEON)
C++17 features make the refactor itself cleaner to express
Cleans up the existing OpenACC interface before migration, preventing technical debt from carrying into SYCL
Decouples boundary condition logic from GPU offload regions, reducing data locality issues
Improves testability — boundary logic can be unit tested independently of the GPU environment
Provides a well-defined interface boundary that simplifies the subsequent SYCL migration
Migrate GPU backend from OpenACC to SYCL (AdaptiveCPP) ← Requires Items 2, 3, 4
SYCL is an open standard (Khronos Group), vendor-neutral, and supports NVIDIA, AMD, Intel GPUs, and CPUs from a single source
AdaptiveCPP is actively developing Apple GPU support, enabling GPU workloads to run natively on Apple Silicon (M-series) — a platform OpenACC has no roadmap for
OpenACC's ecosystem has been shrinking; SYCL's toolchain and community continue to grow, reducing long-term maintenance risk
With SoA and apply_bc_vel cleanup in place, SYCL kernel memory access patterns are well-structured and easier to profile and optimize
Two-phase flow ← Requires Decision 2
Physical model validation can begin on the existing OpenACC codebase — this item does not depend on the SYCL migration and can run in parallel
Once validated, the implementation can be ported to SYCL for cross-platform and performance benefits
Parallel execution with Item 5 reduces overall project timeline risk
Periodic gravity (Tidal force) ← Requires Item 5
Implementation is relatively self-contained with low invasiveness to the existing solver — a good candidate for the first physics extension after SYCL stabilizes
Enables tidal-driven flow simulations, opening use cases in ocean engineering and estuarine dynamics
Serves as an additional correctness benchmark for validating the SYCL migration end-to-end
Eunseo
Refactoring stress update
How about grouping elements by rheology types and then starting element loop for each type?
"factory-plugin" style rheological model implementation
Output file organization
maybe outputs should be written to a folder by default?
Saving a copy of a complete input parameter file?
Policy for cleaning before writing when the same name files exist. Or leave it to users?
Documentation
More cookbooks and tutorials
Comprehensive input parameter list and description, cross-linking with cookbooks and tutorials.
I’m currently implementing poroelasticity, and one extension I’m considering is allowing injection/production at arbitrary points (or small regions) with user-defined schedules (rate/pressure vs time).
Related idea: a general framework for point/line/region source terms that can be reused across mass/energy equations.
Monitoring points / diagnostics
Adding “monitoring points” defined at arbitrary coordinates to sample nodal/cell data and write time series outputs. This is not only for validation or debugging — for large models, extracting full spatial time series can be expensive, so having time series at a few selected points is extremely helpful for quick inspection and plotting.
This is almost finished on my side.
Web / cloud workflow (UX)
A web-based workflow where users enter inputs on a website, run in a cloud/containerized environment, and view basic outputs/plots could be a nice direction.
I am currently discussing this with technician Youngchae Kim at Keygam.
Chase
Decision Gates: The following decisions must be confirmed before dependent implementation items can proceed.
Decision 1: Adopt SYCL (AdaptiveCPP) as the GPU backend
This is the most consequential architectural decision in the roadmap. Confirmation unlocks or reframes several downstream items:
apply_bc_velinterface cleanup scope is defined by this decisionImplementation
Reorganize repository folder structure
Upgrade minimum C++ standard to C++17 ← Requires Decision 1
Refactor array2D memory layout from AoS to SoA ← Requires Decision 1, Item 2
Refactor apply_bc_vel time-varying boundary velocity ← Requires Decision 1
Migrate GPU backend from OpenACC to SYCL (AdaptiveCPP) ← Requires Items 2, 3, 4
Two-phase flow ← Requires Decision 2
Periodic gravity (Tidal force) ← Requires Item 5
Eunseo
Refactoring stress update
Output file organization
Documentation
Making input file generation easier
Remeshing
Sungho
Multiphysics coupling (Thermal–Hydraulic–Mechanical)
Poroelasticity + injection/production source terms
Monitoring points / diagnostics
Web / cloud workflow (UX)