Research & Publications

In addition to our work on web development features, we dedicate our time to researching parallel programming and FaaS applications on the Edge.

This stems from our education and passion for making these “high-level” features of computer science accessible to a greater community.

Increasing the accessibility of parallel and edge computing, one step at a time.

mpiPython: A Streamlined Python Collective Communication Library to MPI

Python’s popularity as an interpreted language, particularly among scientists and engineers, is due to its ease of use and flexibility, despite certain performance limitations. Enhancing Python for parallel programming opens significant opportunities in both parallel and cloud computing environments. mpiPython, a Python library designed for message-passing, enables Single Program Multiple Data (SPMD) execution and supports efficient parallel processing. One of its key advantages is its simplicity—both in installation and use—making it accessible to a wide range of users without compromising performance. This paper introduces an extended version of mpiPython, which addresses shortcomings in collective operations for parallel computing while maintaining the library’s strengths: ease of installation and minimal overhead. mpiPython is designed with a direct implementation in C, avoiding additional layers, unlike mpi4py, allowing for more efficient communication without unnecessary overhead. The latest version introduces key enhancements to collective communication, including MPI All-Gather, MPI_Send, and MPI_Receive functions. These additions significantly improve performance, particularly in large-scale distributed systems, while preserving mpiPython’s focus on being lightweight and user-friendly. Our results show that mpiPython offers competitive performance compared to other MPI libraries while remaining accessible to users who prioritize simplicity and efficiency. The latest fully functional release of mpiPython is now officially available, providing a streamlined solution for Python-based parallel computing.

Published in: (CCIOT ’24) 2024 9th International Conference on Cloud Computing and Internet of Things

https://doi.org/10.1145/3704304.3704321

mpiPython: Extensions of Collective Operations

Despite performance limitations due to its interpreted nature, Python remains a dominant language among scientists and engineers. Enhancing its capabilities for parallel programming unlocks significant potential within parallel and cloud computing environments. mpiPython, a Python binding for message-passing interfaces, empowers Python for Single Program Multiple Data (SPMD) execution, enabling efficient parallel computations. Additionally, Python’s inherent accessibility and versatility foster a growing demand for scaling and parallelizing it on distributed cloud environments. This paper extends mpiPython, bridging the gap in collective operations for parallel computing. The extension builds upon the original mpiPython’s class-based structure, emphasizing two core principles: supporting vanilla Python with MPI and focusing on a C-based CPU-focused implementation. Unlike existing implementations like mpi4py, mpiPython directly interacts with the Python C API, offering greater control. Two new functions, MPI Gather and MPI Reduce, significantly improve efficiency and streamline collective operations between working nodes. The results demonstrate mpiPython’s ability to perform at the level of other libraries while prioritizing a simple implementation accessible to a broad range of users.

Published in: (ICICT ’24) 2024 7th International Conference on Information and Computer Technologies

https://doi.org/10.1109/ICICT62343.2024.00082

HPPython: Extending Python with HPspmd for Data Parallel Programming

In light of previous endeavors and trends in the realm of parallel programming, HPPython emerges as an essential superset that enhances the accessibility of parallel programming for developers, facilitating scalability across multiple nodes. Despite Python’s popularity as a programming language in scientific and engineering applications and its native support for executing various processes, HPPython brings substantial simplification to the development of parallel programs and empowers program distribution across heterogeneous clusters consisting of multiple physical computers. HPPython leverages the MPI standard for its underlying communication, thereby harnessing the benefits of the SPMD model. Additionally, HPPython introduces novel syntax and constructs, such as parallel loops and distributed lists, while endeavoring to retain the natural essence of the original language. This paper delves into the distinct components of HPPython and elucidates their integration, establishing HPPython as a viable solution for parallel programming in today’s data-driven world.

Published in: (ISCAI ’23) 2023 2nd International Symposium on Computing and Artificial Intelligence

https://doi.org/10.1145/3640771.3643711

mpiPython: Prospects for Node Performance

Python as an interpreted language is limited in performance by its ability to optimize code. With it being a high-level programming language, it’s still a strong choice for data scientists to learn and use. If Python could be optimized for parallel programming, its full potential in parallel and cloud computing environments could be achieved. mpiPython is a message-passing module that gives Python the ability to be used in SPMD (Single Program Multiple Data) environments. In this paper, we review basic features of mpiPython, including its runtime communication libraries and design strategies. mpiPython also has new features to help mpiPython programmers, that includes simplifying traditional MPI initialization. During the development of mpiPython, we realized that individual node performance of mpiPython is uncertain and critical. mpiPython node performance will be analyzed within the benchmarks.

Published in: (ICICT ’23) 2023 6th International Conference on Information and Computer Technologies

https://doi.org/10.1109/ICICT58900.2023.00038