Copyright Notice:

The documents distributed by this server have been provided by the contributing authors as a means to ensure timely dissemination of scholarly and technical work on a noncommercial basis. Copyright and all rights therein are maintained by the authors or by other copyright holders, notwithstanding that they have offered their works here electronically. It is understood that all persons copying this information will adhere to the terms and constraints invoked by each author's copyright. These works may not be reposted without the explicit permission of the copyright holder.

Publications of SPCL

L. Möller, M. Copik, A. Calotoiu, T. Hoefler:

 Cppless: Productive and Performant Serverless Programming in C++

(arXiv:2401.10834. Jan. 2024)

Abstract

The rise of serverless introduced a new class of scalable, elastic and highly available parallel workers in the cloud. Many systems and applications benefit from offloading computations and parallel tasks to dynamically allocated resources. However, the developers of C++ applications found it difficult to integrate functions due to complex deployment, lack of compatibility between client and cloud environments, and loosely typed input and output data. To enable single-source and efficient serverless acceleration in C++, we introduce Cppless, an end-to-end framework for implementing serverless functions which handles the creation, deployment, and invocation of functions. Cppless is built on top of LLVM and requires only two compiler extensions to automatically extract C++ function objects and deploy them to the cloud. We demonstrate that offloading parallel computations from a C++ application to serverless workers can provide up to 30x speedup, requiring only minor code modifications and costing less than one cent per computation.

Documents

download article:
access preprint on arxiv:
 

BibTeX

@article{,
  author={Lukas Möller and Marcin Copik and Alexandru Calotoiu and Torsten Hoefler},
  title={{Cppless: Productive and Performant Serverless Programming in C++}},
  journal={arXiv:2401.10834},
  year={2024},
  month={01},
  doi={10.48550/arXiv.2401.10834},
}