Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions FEATURE_LIST.md
Original file line number Diff line number Diff line change
Expand Up @@ -233,6 +233,9 @@ result = mw.Simulation.fdtd(scene, frequencies=[200e12]).run()
- Time-domain simulation through `Simulation.fdtd(...)`
- CUDA-only solver execution; `Simulation.fdtd(...)` requires `Scene(device="cuda")`
- Compiled native CUDA kernels are the only FDTD runtime backend; the Torch reference path has been retired from the runtime and relocated to the CUDA parity tests
- Engineering-preview multi-GPU joint solves through public `FDTDParallelConfig` and `Simulation.fdtd(..., parallel=...)`: Python remains the control plane, and `DistributedFDTD` owns an independent distributed coordinator/time loop for x-slab ownership, P2P halos, streams, and events. Single- and multi-GPU execution share the same native CUDA numerical core; the six bounded standard real-field operations and legacy full-domain wrappers invoke the same implementations with different x ranges
- Monitor-first multi-GPU result semantics: `gather_fields=False` returns supported point/time and assembled plane/flux/mode payloads on `result_device` without a global field, while `gather_fields=True` preflights and gathers global electric last-step or DFT fields. y/z-normal `PlaneMonitor`/`FinitePlaneMonitor`/`FluxMonitor`/`ModeMonitor` payloads are tiled across owned x intervals; x-normal planes have one owner, with an explicit guard for ordinary `Ex` planes exactly on an internal split. Gathered `Result.save/load` and manifest-based `save_sharded/load_sharded` provide eager or lazy/gathered persistence without restoring live transport state
- Qualification remains limited to two RTX A6000 GPUs connected by NV4 and a guarded real-valued forward subset: no three/four-GPU or PCIe-only qualification, Nsight trace, NCCL/multi-node execution, distributed adjoint, peer-aware CUDA Graph, advanced source families, x periodic/Bloch/symmetry, nonlinear/full-off-diagonal media, or SIBC claim is made. The final CUDA 13 acceptance observed 1.97385x strong speedup for the `257^3` vacuum case and exact single/two-GPU diagnostics, while the `129 x 65 x 65` case remained below break-even; see the [FDTD multi-GPU joint-solve guide](docs/reference/fdtd-multi-gpu-joint-solve.md) for the complete support matrix, persistence contract, test checkpoints, and benchmark table
- Single- or multi-frequency DFT extraction through `frequency=` or `frequencies=[...]`
- Source temporal frequency (`source_time.frequency`) remains distinct from simulation / monitor extraction frequencies; Maxwell does not infer extraction frequencies implicitly
- ADE-based electric and magnetic dispersive-material updates for Debye, Drude, and Lorentz media
Expand Down
26 changes: 26 additions & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Documentation

The documentation tree is organized by document purpose. Solver and feature names stay in filenames rather than creating another directory layer.

## Active documentation

- [`plans/`](plans/): implementation plans and functional roadmaps that still have open work.
- [`memory/`](memory/): current implementation notes and durable engineering context.
- [`assessments/`](assessments/): current audits, gap analyses, and capability evaluations.
- [`reference/`](reference/): maintained technical facts, capability matrices, and code-linked inventories, including the [FDTD multi-GPU joint-solve guide](reference/fdtd-multi-gpu-joint-solve.md).
- [`releases/`](releases/): release notes.
- [`validation/`](validation/): stable release-validation records.

The active functional roadmap is indexed in [`plans/next-functional-2026-07/README.md`](plans/next-functional-2026-07/README.md).

## Archive

[`archive/`](archive/) contains completed or superseded plans, historical assessments, implementation snapshots, and design records. Archived material preserves engineering history but is not the current source of truth.

## Placement rules

1. Choose the directory from the document's purpose, not its solver backend.
2. Use a descriptive filename such as `fdtd-cuda-graph-option-b.md`; do not add solver-specific directory layers.
3. Move a document to `archive/` when its work is complete, its implementation model no longer exists, or a newer document supersedes its facts.
4. Keep repository-wide user documents such as `README.md`, `CHANGELOG.md`, and `FEATURE_LIST.md` at the repository root.
5. Keep executable development utilities under `scripts/`, never under `docs/`.
315 changes: 315 additions & 0 deletions docs/reference/fdtd-multi-gpu-joint-solve.md

Large diffs are not rendered by default.

5 changes: 4 additions & 1 deletion scripts/build_fdtd_cuda_prebuilt.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ def main() -> None:
build_dir = Path(
os.environ.get(
"WITWIN_MAXWELL_FDTD_CUDA_BUILD_DIR",
Path(tempfile.gettempdir()) / "witwin_maxwell_fdtd_cuda_wheel" / "stable_abi_v1",
Path(tempfile.gettempdir()) / "witwin_maxwell_fdtd_cuda_wheel" / "stable_abi_v2",
)
)
os.environ["WITWIN_MAXWELL_FDTD_CUDA_BUILD_DIR"] = str(build_dir)
Expand All @@ -61,6 +61,9 @@ def main() -> None:
existing.unlink()
target = cuda_build.prebuilt_extension_path()
shutil.copy2(module_file, target)
marker = cuda_build.prebuilt_abi_marker_path(target)
marker.write_text(f"{cuda_build.STABLE_ABI_VERSION}\n", encoding="utf-8")

print(f"Built prebuilt FDTD CUDA extension: {target}")


Expand Down
Loading
Loading