Writing correct parallel programs becomes more and more difficult as the complexity and heterogeneity of processors increase. This issue is addressed by parallelising compilers. Various compiler directives can be used to tell these compilers where to parallelise. This paper addresses the correctness of such compiler directives for loop parallelisation. Specifically, we propose a technique based on separation logic to verify whether a loop can be parallelised. Our approach requires each loop iteration to be specified with the locations that are read and written in this iteration. If the specifications are correct, they can be used to draw conclusions about loop (in)dependences. Moreover, they also reveal where synchronisation is needed in th...
Abstract. Loops and other unbound control structures constitute a major bottleneck in formal softwar...
[[abstract]]The main function of parallelizing compilers is to analyze sequential programs, in parti...
Synchronisation constructs lie at the heart of any reliable concurrent program. Many such constructs...
Writing correct parallel programs becomes more and more difficult as the complexity and heterogeneit...
This paper proposes a technique to specify and verify whether a loop can be parallelised. Our approa...
This paper proposes a technique to specify and verify whether a loop can be parallelised. Our ap-pro...
A commonly used approach to develop deterministic parallel programs is to augment a sequential progr...
This thesis presents a set of verification techniques based on permission-based separation logic to ...
This work leverages an original dependency analysis to parallelize loops regardless of their form i...
Abstract In this paper, an approach to the problem of exploiting parallelism within nested loops is ...
Concurrency is often an optimisation, rather than intrinsic to the functional behaviour of a program...
A commonly used approach to develop parallel programs is to augment a sequential program with compil...
A commonly used approach to develop parallel programs is to augment a sequential program with compil...
Current parallelizing compilers cannot identify a significant fraction of parallelizable loops becau...
Current parallelizing compilers cannot identify a significant fraction of parallelizable loops becau...
Abstract. Loops and other unbound control structures constitute a major bottleneck in formal softwar...
[[abstract]]The main function of parallelizing compilers is to analyze sequential programs, in parti...
Synchronisation constructs lie at the heart of any reliable concurrent program. Many such constructs...
Writing correct parallel programs becomes more and more difficult as the complexity and heterogeneit...
This paper proposes a technique to specify and verify whether a loop can be parallelised. Our approa...
This paper proposes a technique to specify and verify whether a loop can be parallelised. Our ap-pro...
A commonly used approach to develop deterministic parallel programs is to augment a sequential progr...
This thesis presents a set of verification techniques based on permission-based separation logic to ...
This work leverages an original dependency analysis to parallelize loops regardless of their form i...
Abstract In this paper, an approach to the problem of exploiting parallelism within nested loops is ...
Concurrency is often an optimisation, rather than intrinsic to the functional behaviour of a program...
A commonly used approach to develop parallel programs is to augment a sequential program with compil...
A commonly used approach to develop parallel programs is to augment a sequential program with compil...
Current parallelizing compilers cannot identify a significant fraction of parallelizable loops becau...
Current parallelizing compilers cannot identify a significant fraction of parallelizable loops becau...
Abstract. Loops and other unbound control structures constitute a major bottleneck in formal softwar...
[[abstract]]The main function of parallelizing compilers is to analyze sequential programs, in parti...
Synchronisation constructs lie at the heart of any reliable concurrent program. Many such constructs...