Efficient Heap Management for Declarative Data Parallel Programming on Multicores

Clemens Grelck, Sven-Bodo Scholz


Declarative data parallel programming for shared memory multiprocessor systems implies paradigm-specific demands on the organi-sation of memory management. As a key feature of declarative program-ming implicit memory management is indispensable. Yet, the memory objects to be managed are very different from those that are predomi-nant in general-purpose functional or object-oriented languages. Rather than complex structures of relatively small items interconnected by ref-erences, we are faced with large chunks of memory, usually arrays, which often account for 100s of MB each. Such sizes make relocation of data or failure to update arrays in-place prohibitively expensive. To address these challenges of the data parallel setting, the functional array language SaC employs continuous garbage collection via reference counting combined with several aggressive optimisation techniques. How-ever, we have observed that overall memory performance does not only rely on efficient reference counting techniques, but to a similar extent on the underlying memory allocation strategy. As in the general memory management setting we can identify specific demands of the declarative data parallel setting on heap organisation. In this paper, we propose a heap manager design tailor-made to the needs of concurrent executions of declarative data parallel programs whose memory management is based on reference counting. We present run-time measurements that quantify the impact of the proposed design and relate it to the performance of several different general purpose heap managers that are available in the public domain.
Original languageEnglish
Number of pages15
Publication statusPublished - 01.01.2008


Dive into the research topics of 'Efficient Heap Management for Declarative Data Parallel Programming on Multicores'. Together they form a unique fingerprint.

Cite this