Workpackage for Runtime Specialization
Goal/objectives:
During the on-going execution of the application/computation, the DSM system continuously recalculates the division of work. This in turn will require compiling newly created tasks on the fly, specializing code to the platform it is deployed on/migrated to, and adapting various aspects of the computation, such as synchronization and data layout. The goal of this WP is to develop tools/mechanisms to carry out these adaptations, based primarily on JIT compilation, at load time and/or runtime, relying on (1) high level annotations provided by the development stage, (2) information about the underlying HW and location of the VMs to interact with, and (3) dynamically gathered profile information.
[ ? Is this general enough to also cover the kinds of more limited adaptations that the other platforms could support? (I assume that "compiling newly created tasks on the fly" os something we could do on all platform, and also "specializing code to the platform it is deployed on/migrated to" since that could be just load time compilation. ? ]
Description of Work/tasks:
The forms of adaptations/specializations considered include: 1. low level code specialization to the underlying HW configuration (ISA generation, cache hierarchy, scheduling). 2. specialization of synchronization patterns (based on high level annotations) 3. specialization of data layout and data accesses (based on high level annotations) 4. code adaptation based on runtime feedback information (specializing to the specific input, and adjusting to changing behavior of the computation at different phases of the computation)
These are organized into the following tasks:
[ ? Here I'm still not sure how best to break this down to tasks...
There are "vertical" responsibilities to be assigned:
- specialization on X86 (INRIA? just wild guess) - specialization on Power (IBM) - specialization on Calray (Calray) - specialization on Forth (Forth)
But at the same time there are "horizontal" tasks, basically one per each of the specialization forms I listed above. Each platform family will support a subset of these tasks; Power will probably support all of these tasks. ? ]
Deliverables/Milestones:
- There should be a milestone to define the annotations we'll based the adaptation on - Deliverables: probably one per task, so lets figure out the tasks first...