Programmability versus performance tradeoff: overcoming the hardware challenges from a task-based approach

Programming languages that offer simple, elegant interfaces with strong semantics are valued by the applications developers. Python is one example of such a programming language, adopted both by the High Performance Computing and Data Analytics communitites, with a design philosophy that emphasizes code readibilty and a syntax that allows programmers to express concepts in fewer lines of code, while still offering object-orientation and advanced programming features such as generators and list comprehensions. However, Python is an interpreted language and concurreny is ill-supported. This talk will be based on PyCOMPSs, a task-based programming model that aims to parallelize Python sequential codes and to execute them in distributed computing platforms. The talk will overview the system, and present how different hardware challenges are overcome: multicore architectures, accelerators such as GPUs with specific APIs, memory hierarchy. distributed computing, or distributed file systems.