Languages Research Questions
Below are the questions addressed in the Languages and DSLs Research Panel. Please add your comments (with you name) after each question.
Science Domain Support
Is there support for specific science domains, e.g., high level array abstractions, other data structures, tensors, stencils, etc.?
Compute Node Support
Does the language support programming both within and between compute nodes on the systems (or, for example, is this a languages for X in an MPI+X strategy)? If the language handles both, does it distinguish between on-node and between-node parallelism support?
What types of parallelism are supported? Is there data parallelism intended both for on-node SIMD hardware and global data parallelism (spread over nodes)? Is there dynamic task parallelism, and if so, both between and within nodes? Do they rely on some form of static parallelism, e.g., SPMD?
What types of synchronization exist in the languages? What features exist to reduce the overhead of synchronization or to avoid over-synchronizing code? Are there assumptions about particular hardware supported atomic operations or synchronization?
How is communication between tasks handled? Can arbitrary communication be performed, or is it limited by task structure, type constraints, or some hardware features (e.g., shared memory within nodes, but not between)? Is there global communication (e.g., collectives)?
What other novel features exist for managing energy, resilience, reproducibility, or other systems features?