Marionette: Data Structure Description and Management for Heterogeneous Computing
Nuno dos Santos Fernandes, Pedro Tom\'as, Nuno Roma, Frank Winklmeier, Patricia Conde-Mu\'i\~no

TL;DR
Marionette is a C++17 library that simplifies the development of portable, efficient data structures for heterogeneous computing platforms, enabling seamless data management and transfer across devices with minimal runtime overhead.
Contribution
It introduces a flexible, compile-time abstraction for data structures that decouples data layout from interface description, supporting multiple memory strategies and device transfers.
Findings
Demonstrates efficient data transfer and conversions across devices
Shows minimal runtime overhead due to compile-time abstractions
Provides a streamlined interface compatible with existing code
Abstract
Adapting large, object-oriented C++ codebases for hardware acceleration might be extremely challenging, particularly when targeting heterogeneous platforms such as GPUs. Marionette is a C++17 library designed to address this by enabling flexible, efficient, and portable data structure definitions. It decouples data layout from the description of the interface, supports multiple memory management strategies, and provides efficient data transfers and conversions across devices, all of this with minimal runtime overhead due to the compile-time nature of its abstractions. By allowing interfaces to be augmented with arbitrary functions, Marionette maintains compatibility with existing code and offers a streamlined interface that supports both straightforward and advanced use cases. This paper outlines its design, usage, and performance, including a CUDA-based case study demonstrating its…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsParallel Computing and Optimization Techniques · Embedded Systems Design Techniques · Advanced Data Storage Technologies
