Performance Tools
From Modelado Foundation
QUESTIONS | XPRESS | TG X-Stack | DEGAS | D-TEC | DynAX | X-TUNE | GVR | CORVETTE | SLEEC |
---|---|---|---|---|---|---|---|---|---|
What abstractions does your runtime stack use for parallelism? | |||||||||
What performance information would application developers need to know to tune codes that use your X-Stack project's software? | Critical questions are of granularity of tasks based on overhead costs of managing threads and relative localities of execution and data objects, although both can be addressed in part by compiler and runtime functions. | ||||||||
What would a systems software developer need to know to tune the performance of your software stack? | Critical questions are of granularity of tasks based on overhead costs of managing threads and relative localities of execution and data objects, although both can be addressed in part by compiler and runtime functions. | ||||||||
What information should a performance tool gather from each level in your software stack? | Performance information is gathered by the APEX runtime introspection data gathering and analysis tool and the RCR low-level system operation data gathering tool. With HPX runtime system policies this information is used to dynamically and adaptively guide resource allocation and task scheduling. | ||||||||
What performance information can/does each level of your software stack maintain for inspection by performance tools? | Performance information is gathered by the APEX runtime introspection data gathering and analysis tool and the RCR low-level system operation data gathering tool. With HPX runtime system policies this information is used to dynamically and adaptively guide resource allocation and task scheduling. | ||||||||
What information would your software stack need to maintain in order to measure per-thread or per-task, performance? Can this information be accessed safely from a signal handler? Could a performance tool register its own tasks to monitor the performance of the runtime? | |||||||||
What types of performance problems do you want tools to measure and diagnose? CPU resource consumption? CPU utilization? Network bandwidth? Network latency? Contention for shared resources? Waste? Inefficiency? Insufficient parallelism? Load-imbalance? Task dependences? Idleness? Data movement costs? Power or energy consumption? Failures and failure handling costs? The overhead of resilience mechanisms? I/O bandwidth consumed? I/O latency? | All of the above and more. | ||||||||
What kinds of performance problems do you foresee analyzing using post-mortem analysis? | Post-mortem information would be useful to analyze non-causal behavioral data that cannot be predicted prior to execution. It must also differentiate this information from that which is entirely data dependent and therefore likely to change from that which is an intrinsic property of the program. A determination of the critical path and side path tasks combined with energy and time consumption requirements for each task would be very useful. | ||||||||
What kinds of performance problems do you foresee analyzing using runtime analysis? What interfaces will be needed to gather the necessary information? | The challenge is to prioritize the critical and sub critical tasks for execution filling in with side-path threads with resource availability. Parallelism governing is important to avoid system jamming through throttling so usage monitoring is crucial. The XPRESS APEX runtime subsystem performs these and other services with additional support from the RCR RIOS subsystem. | ||||||||
What control interfaces will be necessary to enable runtime adaptation based on runtime performance measurements? | The challenge is to prioritize the critical and sub critical tasks for execution filling in with side-path threads with resource availability. Parallelism governing is important to avoid system jamming through throttling so usage monitoring is crucial. The XPRESS APEX runtime subsystem performs these and other services with additional support from the RCR RIOS subsystem. | ||||||||
There is a gap between the application-level and implementation-level views of programming languages and DSLs. What information should your software layers (compiler and runtime system) provide to attribute implementation-level performance measurement data to an application-level view? | For purposes of performance portability, the principal information required from programmer level is parallelism and some relative locality information. It is possible that some higher-level idiomatic patterns of control and access may be useful but these have as yet to be determined. | ||||||||
What kind of visualization and presentation support do you want from performance tools? Do you envision any IDE integration for performance tools? | Visualization of resource usage and pending (bottlenecked) work will help to inform about intrinsic code parallelism and precedent constraints. | ||||||||
List the performance challenges that you think next generation programming languages and models will face. | Overhead and its impact on granularity, diversity of forms and scales of parallelism, parallelism discovery from meta data, energy suppression. |
Note, PIPER is not listed as a column above, since it is intended as a recipient of this information.