The Uppsala Programming for Multicore Architectures Research Center (UPMARC) is a long-term interdisciplinary research program in parallel computer systems.
Our mission is to identify and address the fundamental challenges that will enable all programmers to leverage the potential performance from the ongoing shift to universal parallel computing. This transition pushes to the forefront the challenges of enabling new groups of developers, algorithms, and legacy systems to exploit the performance benefits of ubiquitous parallel platforms.
To address these challenges, UPMARC brings together researchers from a wide range of areas in a 10-year basic research program. UPMARC's goal is to develop the insights that enable new tools and approaches to make parallel programming easier, and to demonstrate their effectiveness through prototype implementations on real problems. To accomplish this, UPMARC leverages its unique combination of long-term perspective and breadth of competence to promote the exploration of cross-disciplinary solutions.
- Application Performance - Developing principles for high-performance and scalable application construction, especially considering the new system trade-offs for multicores processors.
- Efficiency and Predictability - Developing techniques for making the most efficient use of system resources to deliver performance and predictability as required.
- Ease of Programming - Developing programming language constructs and paradigms that enable software developers to express the concurrency of an algorithm, while at the same time shielding them from the added complexity of the resulting parallelism.
- Correctness - Developing techniques for analyzing vital correctness properties using formal verification, static analysis, and testing.
UPMARC brings together research groups with internationally leading expertise in complementary areas crucial for addressing these challenges: computer architecture, computer networks, parallel scientific computing, programming language technology, real-time and embedded systems, algorithmic program verification and testing and model generation, and modeling of concurrent computation.