Cashmere

What is it?

Cashmere is a programming system for heterogeneous compute clusters with many-core devices such as GPUs, something we call a compute jungle. Heterogeneity refers to the fact that the compute cluster can contain many different kinds of many-core devices with different processing speeds. Cashmere makes it possible to achieve good scalability and performance on these heterogeneous compute clusters.

How does it work?

Cashmere acts as a library on top of Constellation, a framework that schedules loosely coupled activities by means of work stealing. Cashmere operates on the level of one node and is responsible for scheduling many-core kernels efficiently onto may-core devices within the node. In addition, it provides a convenient interface for calling kernels. In Cashmere, the kernels for the many-core devices are written in Many-Core Levels (MCL), a programming system that allows one to write kernels for many-cores on multiple levels of abstraction. This allows programmers to trade off (control over) performance and portability and maintainability of the code.

Cashmere is an open source project of the Computer Systems group of the Computer Science department of the Faculty of Sciences at the Vrije Universiteit Amsterdam, The Netherlands. Cashmere and Constellation are built on the Ibis Portability Layer (IPL). Ibis has its own web-site: http://www.cs.vu.nl/ibis/ where you can find more Ibis documentation, papers, application sources.

History

In version 0.1.0, Cashmere was based on Satin that extends Java with Cilk like primitives that make it very convenient for the programmer to write divide and conquer style programs. From version 0.2.0 on, Cashmere acts as a library on top of Constellation.

Publications

Pieter Hijma, Ceriel Jacobs, Rob van Nieuwpoort, and Henri Bal. Cashmere: Heterogeneous Many-Core computing. In 29th IEEE International Parallel & Distributed Processing Symposium (IEEE IPDPS 2015), Hyderabad, India, May 2015.

Pieter Hijma, Rob V. van Nieuwpoort, Ceriel J.H. Jacobs, and Henri E. Bal. Stepwise refinement for performance: a methodology for many-core programming. Concurrency and Computation: Practice and Experience, 27, 2015. [DOI | http ]