Opening Remarks: MCHPC'17: Workshop on Memory Centric Programming for HPC
Workshop: Workshop on Memory Centric Programming for HPC
Abstract: Memory systems have been becoming increasingly complex in recent years. Performance optimization has shifted from computing to data access. This increase of memory complexity also demands significant system support, from compiler/runtime and tools to modeling and new programming paradigms.
Memory-centric programming refers to the notion and techniques of exposing the hardware memory system and its hierarchy, which include NUMA regions, shared and private caches, scratch pad, 3-D stack memory, and non-volatile memory, to the programmer for extreme performance programming via portable abstraction and APIs for explicit memory allocation, data movement and consistency enforcement between memories. The concept has been gradually adopted in main stream programming interfaces, for example and to name a few, the use of place to represent memory regions in OpenMP and X10, locale in Chapel, the use of shared modifier in CUDA or cache modifier in OpenACC for representing scratch-pad SRAM for GPUs, the memkind library and the recent effort for OpenMP memory management for supporting 3-D stack memory (HBM or HMC), and PMEM library for persistent memory programming. The MCHPC workshop aims to provide a community forum for discussing and sharing topics related to memory-centric programming, including programming and optimization practices, application development, programming interfaces and compiler/runtime innovations that focus on reducing data access delay in a memory hierarchy, on improving bandwidth utilization in both private and shared memory and cache, and on reducing energy consumption of memory systems for parallel execution. More details of the workshop can be found from http://passlab.github.io/mchpc/mchpc2017.html .