fortranspire.agent.translation_graph¶

Graph d’agents LangGraph pour la traduction de Fortran 90 vers JAX. Ordre : parser → explainer → translator → halo_exchange → reproducibility

→ performance → docstring → autodiff → surrogate → END

Functions

autodiff_adjoint_agent(state)

Agent 8 : Génère le modèle Adjoint via jax.grad/jax.vjp.

consolidator_agent(state)

Consolide tous les résultats des workers dans un module Python structuré.

dispatcher_agent(state)

Dispatch chaque kernel vers un worker (séquentiel pour stabilisation).

docstring_agent(state)

Agent 7 : Ajoute des docstrings scientifiques au code JAX.

explainer_agent(state)

Agent 2 (NEW) : Retourne la fonction scientifique du code Fortran et son intérêt pour la géophysique.

halo_exchange_agent(state)

Agent 4 : Rapport OpenMP/MPI + remplacement GHEX si nécessaire.

ide_interaction_agent(state)

Agent 3.5 : Ouvre le code JAX dans l'IDE et attend la validation de l'utilisateur.

init_project_agent(state)

Agent 0 (NEW) : Initialise le dossier output et génère le pyproject.toml pour orchestrer le projet JAX traduit.

parse_and_isolate_agent(state)

Agent 1 : Loki AST Parser — isole le kernel Fortran avec Scheduler.

performance_agent(state)

Agent 6 : Benchmark JAX vs Fortran — affichage CLI du speedup.

reproducibility_agent(state)

Agent 5 : Consolide les rapports de reproductibilité générés en parallèle.

should_continue_repro(state)

Décide si on continue vers perf ou si on retry le translator (feedback loop).

should_continue_translation(state)

Décide si on continue vers le halo ou si on retry le translator.

surrogate_fno_agent(state)

Agent 9 (final) : Construit un Surrogate FNO avec Sobolev Training.

translate_kernel_agent(state)

Agent 3 : Traduit le kernel Fortran vers JAX via LLM (avec boucles de correction).

translator_worker_agent(state)

Agent Worker : Traduit tous les noyaux Fortran en JAX séquentiellement.

Classes

KernelResult

TranslationState