Programming models and operating systems

Research challenge:

Expressing parallelism is currently a difficult task; in order to make this task easier, a good programming model should allow the programmer to express dependencies among tasks running in the cores. OpenMP and the CellSuperscalar are good examples of modern and efficient programming models for the upcoming multi-cores processors.

Moreover, runtime support (both in the CMP/SMT processors and in the operating system) will guarantee fast task creation and synchronization of parallel tasks in a heterogeneous multi-core environment, and provides efficient task and resource scheduling and allocation.

Initial research topics:

  • Explore efficient/easy-to-use programming models for the many-core era
    • Task parallelism and efficient data sharing via program annotation (OpenMP);
    • Runtime parallelism exploitation (CellSuperscalar and OpenMP);
    • Mixed programming models (transactional memory embedded in OpenMP);
    • New architecture features to support the Programming Model: Thread creation, task off-loading, Transactional Memory.
  • Deploy Transactional Memory across the system stack (HW, compiler, OS, programming languages)
  • OS support for new architectures
    • Heterogeneous cores (CPU+GPU);
    • Reconfigurable cores (FPGA´s);
    • Architectures for streaming applications;
    • Thread management for power, temperature, and reliability.
  • OS-architecture interaction to provide QoS in real time systems
    • OS-processor architectural design to ease WCET analyzability;
    • OS-architecture support for real-time multithreaded processors.
  • OS scheduling algorithms for soft real-time and hard-real time systems

Planned activities:

  • Create a European research community for programming models and runtime environment for Multi (Many)-cores systems around CellSuperscalar and NANOS.
  • Developing, maintaining, managing, and promoting the CellSim simulation platform for supporting programming model/OS/runtime
  • Organize a workshop for programming models for multi-cores systems

Coordinating partner: BSC