We design a concurrent separation logic for GPGPU, namely GPUCSL, and prove its soundness by using Coq. GPUCSL is based on a CSL proposed by Blom et al., which is for automatic verification of GPGPU kernels, but employs different inference rules because the rules in Blom’s CSL are not standard. For example, Blom’s CSL does not have a frame rule. Our CSL is a simple extension of the original CSL, and it is more suitable as a basis of advanced properties proposed for other studies on CSLs. Our soundness proof is based on Vafeiadis’ method, which is for a CSL with a fork-join concurrency model. The proof reveals two problems in Blom’s approach in terms of soundness and extensibility. First, their assumption that thread ID independence of a kernel implies barrier divergence freedom does not hold. Second, it is not easy to extend their proof to other CSLs with a frame rule. Although our CSL covers only a subset of CUDA, our preliminary experiment shows that it is useful and expressive enough to verify a simple kernel with barriers.
[1]
Peter W. O'Hearn,et al.
Permission accounting in separation logic
,
2005,
POPL '05.
[2]
Aquinas Hobor,et al.
Barriers in Concurrent Separation Logic
,
2011,
ESOP.
[3]
Adam Betts,et al.
GPUVerify: a verifier for GPU kernels
,
2012,
OOPSLA '12.
[4]
Peter W. O'Hearn,et al.
Resources, concurrency, and local reasoning
,
2007
.
[5]
Marieke Huisman,et al.
Specification and verification of GPGPU programs
,
2013,
Sci. Comput. Program..
[6]
Viktor Vafeiadis.
Concurrent Separation Logic and Operational Semantics
,
2011,
MFPS.
[7]
Atsushi Igarashi,et al.
A Hoare Logic for SIMT Programs
,
2013,
APLAS.
[8]
Hugo Herbelin,et al.
The Coq proof assistant : reference manual, version 6.1
,
1997
.
[9]
Reynald Affeldt,et al.
An Intrinsic Encoding of a Subset of C and its Application to TLS Network Packet Processing
,
2014,
J. Formaliz. Reason..