Actions

Correctness Tools: Difference between revisions

From Modelado Foundation

imported>Ksen
No edit summary
imported>BenoitMeister
No edit summary
Line 18: Line 18:
|
|
|
|
|
This is really a question for the DoE app writers. The smaller the better.
|
|
|
|
|
|
|
|
Line 31: Line 32:
|
|
|
|
SWARM proposes mechanisms (such as tags) to help avoiding data races. However, SWARM is compatible with traditional synchronization and data access mechanisms, and hence the programmer can create data races.
Deadlocks can appear with any programming model based on task graphs, including the one supported by the SWARM runtime. They happen as soon as a cycle is created among tasks.
ETI's tracer can help detect deadlocks by showing which tasks were running when the deadlock happened.
Non-determinism is often a feature. It may be desired in parts of the programs (for instance when running a parallel reduction), not in others. So a tool for detecting non-determinism per se wouldn't be sufficient, it would require an API to specify when it is unexpected.
|
|
|  
|  

Revision as of 18:42, May 5, 2014

QUESTIONS XPRESS TG X-Stack DEGAS D-TEC DynAX X-TUNE GVR CORVETTE SLEEC PIPER
What kind of runtime overhead can you accept when running your application with a dynamic analysis tools such as a data race detector? 1.1X, 01.5X, 2X, 5X, 10X, 100X.

This is really a question for the DoE app writers. The smaller the better.

What types of bugs do you want correctness tools to detect? Data races, deadlocks, non-determinism.

SWARM proposes mechanisms (such as tags) to help avoiding data races. However, SWARM is compatible with traditional synchronization and data access mechanisms, and hence the programmer can create data races.

Deadlocks can appear with any programming model based on task graphs, including the one supported by the SWARM runtime. They happen as soon as a cycle is created among tasks. ETI's tracer can help detect deadlocks by showing which tasks were running when the deadlock happened.

Non-determinism is often a feature. It may be desired in parts of the programs (for instance when running a parallel reduction), not in others. So a tool for detecting non-determinism per se wouldn't be sufficient, it would require an API to specify when it is unexpected.

What kind of correctness tools can help you with interactive debugging in a debugger? Do you want those tools to discover bugs for you?
Current auto-tuning and performance/precision debugging tools treat the program as a black-box. What kind of white-box program analysis techniques can help in auto-tuning your application with floating-point precision and alternative algorithms?
What kind of testing strategy do you normally apply while developing your software component? Do you write tests before or after the development process? What kind of coverage do you try to achieve? Do you write small unit tests or large systems tests to achieve coverage? Are your tests non-deterministic?
After a bug is discovered, do you want automated support to create a simplified test that will reproduce the bug?
What is your strategy to debug a DSL and its runtime? What kind of multi-level debugging support do you want for DSLs?
What kind of visualization and presentation support for bugs do you want from correctness tools? What kind of IDE integration do you want for the correctness tools?
When combining various languages/runtimes, can your language/runtime be debugged in isolation from the rest of the system?
List the testing and debugging challenges that you think the next generation programming languages and models would face?
How can correctness tools help with reasoning about energy? How can correctness tools help with resilience?