Abstract

Multicore processors present new programming challenges even to those with experience programming parallel and distributed systems. Gedae offers improved productivity and an expanded developer pool for these architectures by automating many of the difficult and tedious issues such as threading, deadlock avoidance, planning of memory use, and runtime observability. Gedae is able to address these issues will still creating highly efficient applications through the automatic incorporation of target-optimized compute kernels and minimal impact of the Gedae scheduler during runtime. The focus of this tutorial is one of those challenges heightened by the advent of multicores - the management of hierarchical memories. Because multiple cores are being brought together on the limited real estate of a single chip, there is limited room to provide core-specific memory, bringing about programming challenges for the software developer. An example is the cell broadband engine (Cell/B.E.) processor. The Cell/B.E. processor combines 8 synergistic processing elements (SPEs) with one power processing element (PPE). The SPEs each have a small, 256 kB local storage, while the system has a larger monolithic memory available to all PEs. Accessing the system memory from the SPEs must utilize a single memory interface with limited bandwidth compared to the element interconnect bus (EIB) between the SPEs. Programming this hierarchical memory involves manual management of the SPEs' local storage, overlapping of memory puts and gets with computation, and special consideration of alignment issues to provide high performance. While the Cell/B.E. memory structure presents special programming considerations, other multicores also utilize hierarchical memory structures, such as the use of core-specific multilayered cache on Intel Core 2 and Tilera Tile64 processors. Gedae is a programming language, compiler, and analysis tools that provide a method for specifying the use of hierarchical memory and automating the use of these memories. This tutorial will introduce the concepts of managing hierarchical memories on multicore processors, discuss how those issues affect programming the processors, illustrate Gedae's solution for programming these memories, and walk through example applications that show how Gedae automatically manages these issues.

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call