Master's ThesisAvailable

Designing and supporting "fluid computing"

Design and implement a system for automatic code partitioning that transforms monolithic applications into distributed pico-services optimized for fluid computing environments.

EdgeSystems

Background and Motivation

Modern distributed computing environments require applications to dynamically adapt to varying resource availability, network conditions, and computational demands. Traditional static deployment models fail to exploit the full potential of heterogeneous computing resources across edge-cloud continuum. Fluid computing represents a paradigm where application logic can be automatically decomposed and redistributed across computing nodes to optimize performance, reduce latency, and improve resource utilization.

Current serverless and container orchestration systems rely on manual partitioning decisions by developers, who must explicitly define function boundaries and deployment strategies. This approach becomes increasingly complex as applications grow in size and computational requirements. Recent advances in WebAssembly (WASM) provide a promising intermediate representation that enables portable, secure, and efficient execution across diverse hardware platforms. WASM's deterministic execution model and compact bytecode format make it an ideal candidate for automatic code partitioning and migration.

The challenge lies in developing automated techniques to analyze application code, identify optimal partitioning points, and generate executable components that maintain semantic correctness while optimizing for distributed execution. This involves complex trade-offs between network communication overhead, computation locality, and state management across partitioned components.

Expected Outcomes

The thesis aims to design and implement a system for automatic code partitioning that transforms monolithic applications into distributed "pico-services" optimized for fluid computing environments. The system will analyze control flow graphs and data dependencies to identify natural partition boundaries, leveraging program analysis techniques to ensure correctness and performance.

Key deliverables include developing a WebAssembly-based partitioning framework that automatically decomposes applications into executable components. The system will analyze loop structures, function call patterns, and data flow to determine optimal splitting points that minimize inter-component communication while maximizing parallelization opportunities. Static analysis will identify shared state requirements and generate appropriate synchronization mechanisms.

The research will implement checkpointing and migration capabilities for WebAssembly modules, enabling dynamic rebalancing of computational load across distributed nodes. This includes developing state serialization mechanisms and ensuring execution integrity during component migration. The system will incorporate formal verification techniques to guarantee that partitioned applications maintain the same functional properties as their monolithic counterparts.

Performance evaluation will compare the proposed automatic partitioning against manual decomposition strategies across various application domains, including scientific computing, data processing, and edge computing scenarios. The study will quantify trade-offs between communication overhead and computational parallelism, providing guidance for optimal partition granularity based on network characteristics and application requirements.

Requirements

• Strong background in compiler design and program analysis techniques • Proficiency in WebAssembly specification and runtime systems • Experience with distributed systems and containerization technologies • Knowledge of formal verification methods and static analysis tools • Programming skills in Rust, C++, and WebAssembly toolchain

[1] Istemi Ekin Akkus, Ruichuan Chen, Ivica Rimac, Manuel Stein, Klaus Satzke, Andre Beck, Paarijaat Aditya, and Volker Hilt. 2018. SAND: Towards High-Performance Serverless Computing. In Proceedings of the 2018 USENIX Annual Technical Conference (USENIX ATC 18). USENIX Association, Boston, MA, USA, 923–935.

[2] Tianqi Chen, Thierry Moreau, Ziheng Jiang, Lianmin Zheng, Eddie Yan, Haichen Shen, Meghan Cowan, Leyuan Wang, Yuwei Hu, Luis Ceze, Carlos Guestrin, and Arvind Krishnamurthy. 2018. TVM: An Automated End-to-End Optimizing Compiler for Deep Learning. In Proceedings of the 13th USENIX Symposium on Operating Systems Design and Implementation (OSDI 18). USENIX Association, Carlsbad, CA, USA, 578–594.

[3] Vikram Sreekanti, Chenggang Wu, Xiayue Charles Lin, Johann Schleier-Smith, Joseph E. Gonzalez, Joseph M. Hellerstein, and Alexey Tumanov. 2020. Cloudburst: Stateful Functions-as-a-Service. In Proceedings of the 46th International Conference on Very Large Data Bases (VLDB '20). VLDB Endowment, 2438–2452.

[4] Dmitrii Ustiugov, Plamen Petrov, Marios Kogias, Edouard Bugnion, and Boris Grot. 2021. Benchmarking, Analysis, and Optimization of Serverless Function Snapshots. In Proceedings of the 26th ACM International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS '21). Association for Computing Machinery, New York, NY, USA, 559–572. https://doi.org/10.1145/3445814.3446714

Interested in This Topic?

Contact the supervisor with your CV, transcript, and a brief statement of interest.