{"title":"Verifying Qthreads: Is Model Checking Viable for User Level Tasking Runtimes?","authors":"N. Evans","doi":"10.1109/Correctness.2018.00008","DOIUrl":null,"url":null,"abstract":"'As scale grows and relaxed memory models become common, it is becoming more difficult to establish the correctness of HPC runtimes through simple testing, making formal verification an attractive alternative. This paper describes a formal specification and verification of an HPC user-level tasking runtime through the design, implementation, and evaluation of a model checked implementation of the Qthreads user-level tasking runtime. We implement our model in SPIN model checker by doing a function to function translation of Qthreads'' C implementation to Promela code. This translation bridges the differences in the modeling and implementation languages by translating C''s rich pointer semantics, functions and non-local gotos to Promela''s comparatively simple semantics. We then evaluate our implementation to show that it is both tractable and useful, exhaustively searching the state-space for counterexamples in reasonable time on modern architectures and use it to find a lingering concurrency error in the Qthreads runtime.","PeriodicalId":217525,"journal":{"name":"2018 IEEE/ACM 2nd International Workshop on Software Correctness for HPC Applications (Correctness)","volume":"58 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2018-11-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"2","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"2018 IEEE/ACM 2nd International Workshop on Software Correctness for HPC Applications (Correctness)","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1109/Correctness.2018.00008","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 2
Abstract
'As scale grows and relaxed memory models become common, it is becoming more difficult to establish the correctness of HPC runtimes through simple testing, making formal verification an attractive alternative. This paper describes a formal specification and verification of an HPC user-level tasking runtime through the design, implementation, and evaluation of a model checked implementation of the Qthreads user-level tasking runtime. We implement our model in SPIN model checker by doing a function to function translation of Qthreads'' C implementation to Promela code. This translation bridges the differences in the modeling and implementation languages by translating C''s rich pointer semantics, functions and non-local gotos to Promela''s comparatively simple semantics. We then evaluate our implementation to show that it is both tractable and useful, exhaustively searching the state-space for counterexamples in reasonable time on modern architectures and use it to find a lingering concurrency error in the Qthreads runtime.