|
1 | | -<!DOCTYPE html> |
2 | | -<html lang="en"> |
3 | | -<head> |
4 | | - <meta charset="UTF-8"> |
5 | | - <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
6 | | - <title>ASCN Architecture | Trident Pipeline</title> |
7 | | - <style> |
8 | | - body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; line-height: 1.6; color: #333; max-width: 900px; margin: auto; padding: 20px; background-color: #f4f7f6; } |
9 | | - .header { background: #24292e; color: white; padding: 20px; text-align: center; border-radius: 8px; } |
10 | | - .section { background: white; padding: 20px; margin-top: 20px; border-radius: 8px; box-shadow: 0 2px 5px rgba(0,0,0,0.1); } |
11 | | - h2 { color: #0366d6; border-bottom: 2px solid #eaecef; padding-bottom: 10px; } |
12 | | - table { width: 100%; border-collapse: collapse; margin: 20px 0; } |
13 | | - th, td { border: 1px solid #dfe2e5; padding: 12px; text-align: left; } |
14 | | - th { background-color: #f6f8fa; } |
15 | | - .img-container { text-align: center; margin: 20px 0; } |
16 | | - .img-container img { max-width: 100%; border-radius: 5px; border: 1px solid #ddd; box-shadow: 0 4px 8px rgba(0,0,0,0.2); } |
17 | | - .badge { background: #28a745; color: white; padding: 5px 10px; border-radius: 20px; font-size: 0.8em; } |
18 | | - </style> |
19 | | -</head> |
20 | | -<body> |
| 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. |
21 | 10 |
|
22 | | - <div class="header"> |
23 | | - <h1>🔱 ASCN: Asynchronous Scalable Computing Node</h1> |
24 | | - <p>Architecting Physics-Based Regression at Scale | GSoC 2026</p> |
25 | | - </div> |
| 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. |
26 | 16 |
|
27 | | - <div class="section"> |
28 | | - <h2>🚀 Project Overview</h2> |
29 | | - <p>The <strong>ASCN (Asynchronous Scalable Computing Node)</strong> is a critical component of the Trident Pipeline. It leverages a distributed architecture to handle high-intensity <strong>gprMax</strong> simulations without blocking the main CI/CD workflow.</p> |
30 | | - |
31 | | - <div class="img-container"> |
32 | | - <img src="ascan_logic_flow.png" alt="ASCN Architecture Flow"> |
33 | | - <p><em>Figure 1: High-Level ASCN Logic & Task Queue Flow</em></p> |
34 | | - </div> |
35 | | - </div> |
36 | 17 |
|
37 | | - <div class="section"> |
38 | | - <h2>📊 A-scan Comparison & Validation</h2> |
39 | | - <p>Automation is meaningless without precision. ASCN performs real-time A-scan comparison to ensure that every simulation matches the "Golden Truth" metadata stored in our SQL database.</p> |
40 | | - |
41 | | - <div class="img-container"> |
42 | | - <img src="ascan_comparison.png" alt="A-scan Comparison Graph"> |
43 | | - <p><em>Figure 2: Physics-Based Validation (Simulated vs. Reference Data)</em></p> |
44 | | - </div> |
| 18 | +<img width="300" height="300" alt="ascan_comparison" src="https://github.com/user-attachments/assets/a3a55861-d91a-4cd1-9b19-04206214d11f" /> |
45 | 19 |
|
46 | | - <table> |
47 | | - <thead> |
48 | | - <tr> |
49 | | - <th>Component</th> |
50 | | - <th>Technology Stack</th> |
51 | | - <th>Role in Trident Pipeline</th> |
52 | | - </tr> |
53 | | - </thead> |
54 | | - <tbody> |
55 | | - <tr> |
56 | | - <td>Message Broker</td> |
57 | | - <td><strong>RabbitMQ</strong></td> |
58 | | - <td>Decoupling task submission from execution.</td> |
59 | | - </tr> |
60 | | - <tr> |
61 | | - <td>Task Scheduling</td> |
62 | | - <td><strong>Apache Airflow</strong></td> |
63 | | - <td>Managing complex simulation DAGs.</td> |
64 | | - </tr> |
65 | | - <tr> |
66 | | - <td>State Management</td> |
67 | | - <td><strong>Redis</strong></td> |
68 | | - <td>Real-time tracking of node health & task status.</td> |
69 | | - </tr> |
70 | | - <tr> |
71 | | - <td>Elastic Scaling</td> |
72 | | - <td><strong>Kubernetes HPA</strong></td> |
73 | | - <td>Dynamic scaling from 10x to 100x nodes.</td> |
74 | | - </tr> |
75 | | - </tbody> |
76 | | - </table> |
77 | | - </div> |
78 | 20 |
|
79 | | - <div class="section"> |
80 | | - <h2>🛠️ Core Technical Logic</h2> |
81 | | - <p>By implementing an asynchronous model, we eliminate system timeouts and resource starvation. The system is designed for <strong>high-throughput</strong> processing of electromagnetic wave models, ensuring 100% reliability for researchers worldwide.</p> |
82 | | - </div> |
| 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 | +--- |
| 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. |
83 | 29 |
|
84 | | - <footer style="text-align: center; margin-top: 40px; font-size: 0.9em; color: #666;"> |
85 | | - <p>Developed by <strong>Prateek Sharma</strong> | GSoC '26 Applicant @gprMax</p> |
86 | | - </footer> |
| 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: |
87 | 37 |
|
88 | | -</body> |
89 | | -</html> |
| 38 | +RABBITMQ_URL: Connection string for the message broker. |
| 39 | + |
| 40 | +REDIS_HOST: Tracking server address. |
| 41 | + |
| 42 | +DB_CONNECTION: Postgres link for regression metadata. |
| 43 | + |
| 44 | +**👨💻 Author** |
| 45 | +**Prateek Sharma** GSoC '26 Applicant | Cloud-Native Infrastructure Engineer |
0 commit comments