Dandelion: a compiler and runtime for heterogeneous systems

Dandelion: a compiler and runtime for heterogeneous systems
复制标题

DOI:
10.1145/2517349.2522715
复制
发表时间:
2013-11
期刊:
Proceedings of the Twenty-Fourth ACM Symposium on Operating Systems Principles
影响因子:
--
通讯作者:
C. Rossbach;Yuan Yu;J. Currey;Jean-Phillipe Martin;D. Fetterly
C. Rossbach;Yuan Yu;J. Currey;Jean-Phillipe Martin;D. Fetterly
中科院分区:
其他
文献类型:
--
作者:
C. Rossbach;Yuan Yu;J. Currey;Jean-Phillipe Martin;D. Fetterly

文献摘要

被引文献

相似文献

计算机系统越来越依赖异质性来实现更大的性能,可扩展性和能源效率。由于异质系统通常包含具有不同编程摘要和运行时间的多个执行上下文,因此编程它们仍然极具挑战性。蒲公英是一种旨在解决数据并行应用程序的可编程性挑战的系统。蒲公英为异质系统提供了统一的编程模型,该模型涵盖了包括CPU,GPU,FPGA和云在内的各种执行环境。它采用.NET LINQ(语言集成查询)方法,将数据并行运算符集成到通用编程语言,例如C#和F#。因此,它为用户定义的功能提供了表达性数据模型和本地语言集成,使程序员能够使用标准的高级语言和开发工具编写应用程序。蒲公英自动透明地将程序的数据并行部分分配到可用的计算资源,包括用于分布式执行的计算簇以及单个节点的CPU和GPU核心,用于并行执行。要在GPU上启用.NET代码的自动执行,蒲公英交叉编译.NET代码对CUDA内核,并使用PTASK运行时[85]来管理GPU执行。本文讨论了蒲公英的设计和实施,重点是分布式CPU和GPU实施。我们使用各种各样的工作负载评估系统。
Computer systems increasingly rely on heterogeneity to achieve greater performance, scalability and energy efficiency. Because heterogeneous systems typically comprise multiple execution contexts with different programming abstractions and runtimes, programming them remains extremely challenging. Dandelion is a system designed to address this programmability challenge for data-parallel applications. Dandelion provides a unified programming model for heterogeneous systems that span diverse execution contexts including CPUs, GPUs, FPGAs, and the cloud. It adopts the .NET LINQ (Language INtegrated Query) approach, integrating data-parallel operators into general purpose programming languages such as C# and F#. It therefore provides an expressive data model and native language integration for user-defined functions, enabling programmers to write applications using standard high-level languages and development tools. Dandelion automatically and transparently distributes data-parallel portions of a program to available computing resources, including compute clusters for distributed execution and CPU and GPU cores of individual nodes for parallel execution. To enable automatic execution of .NET code on GPUs, Dandelion cross-compiles .NET code to CUDA kernels and uses the PTask runtime [85] to manage GPU execution. This paper discusses the design and implementation of Dandelion, focusing on the distributed CPU and GPU implementation. We evaluate the system using a diverse set of workloads.