|
1 | | -[](https://github.com/pratiktech28/gprmax_Ascan/actions/workflows/main.yml) |
2 | | - |
3 | | - |
4 | | -**⚡ ASCN: Asynchronous Scalable Computing Node for gprMax** |
5 | | -**🎯 Overview** |
6 | | -ASCN is the core execution engine of the Trident Pipeline. It handles heavy-duty gprMax physics simulations asynchronously, ensuring high availability and fault-tolerant processing. By decoupling task submission from execution, ASCN allows the system to scale horizontally across distributed cloud nodes._ |
7 | | ---- |
8 | | -**🏗️ Technical Architecture** |
9 | | -The ASCN node operates as a high-performance worker that consumes simulation tasks from a distributed message broker. |
| 1 | +# 🔱 ASCN: Asynchronous Scalable Computing Node |
10 | 2 |
|
11 | | -**🔌 Key Components:** |
12 | | -Task Broker (RabbitMQ): Orchestrates asynchronous message passing between the CI/CD pipeline and the worker nodes. |
13 | | -In-Memory Cache (Redis): Manages transient task states, ensuring real-time monitoring of simulation progress. |
14 | | -Data Persistence (PostgreSQL): Stores detailed metadata and regression results for long-term analysis. |
15 | | -Workflow Engine (Airflow): Schedules and monitors the end-to-end simulation DAGs. |
| 3 | +<div align="center"> |
| 4 | + <img src="https://img.shields.io/badge/GSoC-2026-orange?style=for-the-badge&logo=google" /> |
| 5 | + <img src="https://img.shields.io/badge/RabbitMQ-FF6600?style=for-the-badge&logo=rabbitmq&logoColor=white" /> |
| 6 | + <img src="https://img.shields.io/badge/Kubernetes-326ce5?style=for-the-badge&logo=kubernetes&logoColor=white" /> |
| 7 | +</div> |
16 | 8 |
|
| 9 | +--- |
17 | 10 |
|
18 | | -<img width="300" height="300" alt="ascan_comparison" src="https://github.com/user-attachments/assets/a3a55861-d91a-4cd1-9b19-04206214d11f" /> |
| 11 | +## 🚀 Project Overview |
| 12 | +The **ASCN (Asynchronous Scalable Computing Node)** is the core engine of the Trident Pipeline. It leverages a distributed architecture to handle high-intensity **gprMax** simulations asynchronously. |
19 | 13 |
|
| 14 | +### 🏗️ Technical Architecture flow |
| 15 | +<div align="center"> |
| 16 | + <img src="image_5ab864.png" width="800px" alt="ASCN Logic Flow"> |
| 17 | + <p><i>Figure 1: High-Level ASCN Logic & Task Queue Flow</i></p> |
| 18 | +</div> |
20 | 19 |
|
21 | | -**🛠️ The "Asynchronous" Logic** |
22 | | -Producer: The Trident CI pipeline (GitHub Actions) pushes a simulation job into the Simulation_Queue. |
23 | | -Consumer (ASCN Worker): Multiple Dockerized workers listen to the queue. |
24 | | -Execution: An available worker pulls the job, runs the gprMax solver in an isolated container, and streams logs. |
25 | | -Validation: Results are pushed to the validation engine, and the task status is updated in Redis/Postgres. |
26 | 20 | --- |
27 | | -📈 Scalability (10x to 100x) |
28 | | -ASCN is designed for Elastic Scaling. Using Kubernetes HPA, the number of ASCN worker nodes automatically increases based on the number of pending messages in RabbitMQ, allowing for massive parallelization of electromagnetic wave simulations. |
29 | 21 |
|
30 | | -**🚀 Deployment** |
31 | | -Local Development (Docker) |
32 | | -Bash |
33 | | -# Build and run the ASCN worker environment |
34 | | -docker-compose up --build |
35 | | -Environment Variables |
36 | | -Ensure you have the following configured: |
| 22 | +## 📊 A-scan Comparison & Validation |
| 23 | +Automation is meaningless without precision. ASCN performs real-time A-scan comparison to ensure every simulation matches the **"Golden Truth"** metadata. |
| 24 | + |
| 25 | +<div align="center"> |
| 26 | + <img src="ascan_comparison.png" width="700px" alt="A-scan Comparison Graph"> |
| 27 | + <p><i>Figure 2: Physics-Based Validation (Simulated vs. Reference Data)</i></p> |
| 28 | +</div> |
37 | 29 |
|
38 | | -RABBITMQ_URL: Connection string for the message broker. |
| 30 | +--- |
| 31 | + |
| 32 | +## 🛠️ Tech Stack & Role |
| 33 | +| Component | Technology | Role in Trident Pipeline | |
| 34 | +| :--- | :--- | :--- | |
| 35 | +| **Message Broker** | `RabbitMQ` | Decoupling task submission from execution. | |
| 36 | +| **State Management** | `Redis` | Real-time tracking of node health & task status. | |
| 37 | +| **Task Scheduling** | `Airflow` | Managing complex simulation DAGs. | |
| 38 | +| **Elastic Scaling** | `K8s HPA` | Dynamic scaling from 10x to 100x nodes. | |
39 | 39 |
|
40 | | -REDIS_HOST: Tracking server address. |
| 40 | +--- |
41 | 41 |
|
42 | | -DB_CONNECTION: Postgres link for regression metadata. |
| 42 | +## ⚡ Core Technical Logic |
| 43 | +By implementing an **Asynchronous Model**, we eliminate system timeouts and resource starvation. The system is designed for **high-throughput** processing, ensuring 100% reliability for researchers worldwide. |
43 | 44 |
|
44 | | -**👨💻 Author** |
45 | | -**Prateek Sharma** GSoC '26 Applicant | Cloud-Native Infrastructure Engineer |
| 45 | +<p align="center"> |
| 46 | + <b>Developed by Prateek Sharma | GSoC '26 Applicant @gprMax</b> |
| 47 | +</p> |
0 commit comments