{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T04:19:52Z","timestamp":1750220392860,"version":"3.41.0"},"reference-count":47,"publisher":"Association for Computing Machinery (ACM)","issue":"OOPSLA","license":[{"start":{"date-parts":[[2021,10,15]],"date-time":"2021-10-15T00:00:00Z","timestamp":1634256000000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"funder":[{"DOI":"10.13039\/100000001","name":"National Science Foundation","doi-asserted-by":"publisher","award":["CCF-1652517,CCF-2107291,CNS-1846169,CNS-2006943"],"award-info":[{"award-number":["CCF-1652517,CCF-2107291,CNS-1846169,CNS-2006943"]}],"id":[{"id":"10.13039\/100000001","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2021,10,20]]},"abstract":"<jats:p>Bounded-exhaustive testing (BET), which exercises a program under test for all inputs up to some bounds, is an effective method for detecting software bugs. Systematic property-based testing is a BET approach where developers write test generation programs that describe properties of test inputs. Hybrid test generation programs offer the most expressive way to write desired properties by freely combining declarative filters and imperative generators. However, exploring hybrid test generation programs, to obtain test inputs, is both computationally demanding and challenging to parallelize. We present the first programming and execution models, dubbed Tempo, for parallel exploration of hybrid test generation programs. We describe two different strategies for mapping the computation to parallel hardware and implement them both for GPUs and CPUs. We evaluated Tempo by generating instances of various data structures commonly used for benchmarking in the BET domain. Additionally, we generated CUDA programs to stress test CUDA compilers, finding four bugs confirmed by the developers.<\/jats:p>","DOI":"10.1145\/3485543","type":"journal-article","created":{"date-parts":[[2021,10,15]],"date-time":"2021-10-15T19:18:28Z","timestamp":1634325508000},"page":"1-28","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":3,"title":["Programming and execution models for parallel bounded exhaustive testing"],"prefix":"10.1145","volume":"5","author":[{"given":"Nader Al","family":"Awar","sequence":"first","affiliation":[{"name":"University of Texas at Austin, USA"}]},{"given":"Kush","family":"Jain","sequence":"additional","affiliation":[{"name":"University of Texas at Austin, USA"}]},{"given":"Christopher J.","family":"Rossbach","sequence":"additional","affiliation":[{"name":"University of Texas at Austin, USA \/ Katana Graph, USA"}]},{"given":"Milos","family":"Gligoric","sequence":"additional","affiliation":[{"name":"University of Texas at Austin, USA"}]}],"member":"320","published-online":{"date-parts":[[2021,10,15]]},"reference":[{"key":"e_1_2_2_1_1","doi-asserted-by":"publisher","DOI":"10.5555\/2388996.2389086"},{"key":"e_1_2_2_2_1","doi-asserted-by":"publisher","DOI":"10.1145\/566172.566191"},{"key":"e_1_2_2_3_1","first-page":"1","article-title":"Design, Implementation, and Application of GPU-based Java Bytecode Interpreters. In Conference on Object-Oriented Programming","volume":"177","author":"Celik Ahmet","year":"2019","journal-title":"Systems, Languages, and Applications."},{"key":"e_1_2_2_4_1","first-page":"1","article-title":"Bounded Exhaustive Test-Input Generation on GPUs. In Conference on Object-Oriented Programming","volume":"94","author":"Celik Ahmet","year":"2017","journal-title":"Systems, Languages, and Applications."},{"key":"e_1_2_2_5_1","doi-asserted-by":"publisher","DOI":"10.1145\/3363562"},{"key":"e_1_2_2_6_1","doi-asserted-by":"publisher","DOI":"10.1109\/IPDPSW.2019.00068"},{"key":"e_1_2_2_7_1","unstructured":"2020. NVCC. https:\/\/llvm.org\/docs\/CompileCudaWithLLVM.html  2020. NVCC. https:\/\/llvm.org\/docs\/CompileCudaWithLLVM.html"},{"key":"e_1_2_2_8_1","unstructured":"2020. Clang: a C language family frontend for LLVM. https:\/\/clang.llvm.org\/  2020. Clang: a C language family frontend for LLVM. https:\/\/clang.llvm.org\/"},{"key":"e_1_2_2_9_1","doi-asserted-by":"publisher","DOI":"10.1145\/3237009.3237016"},{"key":"e_1_2_2_10_1","unstructured":"2020. constexpr specifier. https:\/\/en.cppreference.com\/w\/cpp\/language\/constexpr  2020. constexpr specifier. https:\/\/en.cppreference.com\/w\/cpp\/language\/constexpr"},{"key":"e_1_2_2_11_1","unstructured":"2020. CUDA C++ Programming Guide. https:\/\/docs.nvidia.com\/cuda\/cuda-c-programming-guide\/index.html  2020. CUDA C++ Programming Guide. https:\/\/docs.nvidia.com\/cuda\/cuda-c-programming-guide\/index.html"},{"key":"e_1_2_2_12_1","unstructured":"2020. CUDA Zone. https:\/\/developer.nvidia.com\/cuda-zone  2020. CUDA Zone. https:\/\/developer.nvidia.com\/cuda-zone"},{"key":"e_1_2_2_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/1287624.1287651"},{"key":"e_1_2_2_14_1","doi-asserted-by":"publisher","DOI":"10.5555\/2818754.2818761"},{"key":"e_1_2_2_15_1","doi-asserted-by":"publisher","DOI":"10.1109\/ASE.2015.65"},{"key":"e_1_2_2_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/2103656.2103719"},{"key":"e_1_2_2_17_1","doi-asserted-by":"publisher","DOI":"10.1145\/3133850.3133861"},{"key":"e_1_2_2_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/1831708.1831712"},{"key":"e_1_2_2_19_1","unstructured":"2020. GCC the GNU Compiler Collection. https:\/\/gcc.gnu.org\/  2020. GCC the GNU Compiler Collection. https:\/\/gcc.gnu.org\/"},{"key":"e_1_2_2_20_1","doi-asserted-by":"publisher","DOI":"10.1145\/1806799.1806835"},{"key":"e_1_2_2_21_1","doi-asserted-by":"publisher","DOI":"10.1145\/229000.226322"},{"key":"e_1_2_2_22_1","doi-asserted-by":"publisher","DOI":"10.5555\/3155562.3155636"},{"key":"e_1_2_2_23_1","doi-asserted-by":"publisher","DOI":"10.1145\/2858965.2814323"},{"key":"e_1_2_2_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/2813885.2737986"},{"key":"e_1_2_2_25_1","doi-asserted-by":"publisher","DOI":"10.1145\/2892208.2892210"},{"key":"e_1_2_2_26_1","first-page":"100","article-title":"Differential Testing for Software","volume":"10","author":"McKeeman William M.","year":"1998","journal-title":"Digital Technical Journal"},{"key":"e_1_2_2_27_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.ic.2013.08.004"},{"key":"e_1_2_2_28_1","doi-asserted-by":"publisher","DOI":"10.1145\/1287624.1287645"},{"key":"e_1_2_2_29_1","unstructured":"2020. Nsight Compute CLI. https:\/\/docs.nvidia.com\/nsight-compute\/NsightComputeCli\/index.html  2020. Nsight Compute CLI. https:\/\/docs.nvidia.com\/nsight-compute\/NsightComputeCli\/index.html"},{"key":"e_1_2_2_30_1","unstructured":"2019. NVCC. https:\/\/docs.nvidia.com\/cuda\/cuda-compiler-driver-nvcc\/index.html  2019. NVCC. https:\/\/docs.nvidia.com\/cuda\/cuda-compiler-driver-nvcc\/index.html"},{"key":"e_1_2_2_31_1","unstructured":"2020. OpenMPI - A High Performance Message Passing Library. https:\/\/www.open-mpi.org  2020. OpenMPI - A High Performance Message Passing Library. https:\/\/www.open-mpi.org"},{"key":"e_1_2_2_32_1","unstructured":"2020. OpenMP. https:\/\/www.openmp.org  2020. OpenMP. https:\/\/www.openmp.org"},{"key":"e_1_2_2_33_1","unstructured":"2020. C++ Operator Precedence. https:\/\/en.cppreference.com\/w\/cpp\/language\/operator_precedence  2020. C++ Operator Precedence. https:\/\/en.cppreference.com\/w\/cpp\/language\/operator_precedence"},{"key":"e_1_2_2_34_1","doi-asserted-by":"crossref","unstructured":"Hila Peleg Dan Rasin and Eran Yahav. 2018. Generating Tests by Example. In Verification Model Checking and Abstract Interpretation. 406\u2013429.  Hila Peleg Dan Rasin and Eran Yahav. 2018. Generating Tests by Example. In Verification Model Checking and Abstract Interpretation. 406\u2013429.","DOI":"10.1007\/978-3-319-73721-8_19"},{"key":"e_1_2_2_35_1","doi-asserted-by":"publisher","DOI":"10.1145\/3133915"},{"key":"e_1_2_2_36_1","doi-asserted-by":"publisher","DOI":"10.1145\/2714064.2660232"},{"key":"e_1_2_2_37_1","doi-asserted-by":"publisher","DOI":"10.1145\/3276531"},{"key":"e_1_2_2_38_1","doi-asserted-by":"publisher","DOI":"10.5555\/1987434.1987460"},{"key":"e_1_2_2_39_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICSTW.2010.7"},{"key":"e_1_2_2_40_1","doi-asserted-by":"crossref","unstructured":"Aaron Tomb Stuart Pernsteiner and Mike Dodds. 2020. Symbolic Testing for C and Rust. In 2020 IEEE Secure Development (SecDev). 33\u201333.  Aaron Tomb Stuart Pernsteiner and Mike Dodds. 2020. Symbolic Testing for C and Rust. In 2020 IEEE Secure Development (SecDev). 33\u201333.","DOI":"10.1109\/SecDev45635.2020.00021"},{"key":"e_1_2_2_41_1","unstructured":"[n. d.]. UDITA Home Page. http:\/\/mir.cs.illinois.edu\/udita  [n. d.]. UDITA Home Page. http:\/\/mir.cs.illinois.edu\/udita"},{"key":"e_1_2_2_42_1","doi-asserted-by":"publisher","DOI":"10.1145\/1146238.1146243"},{"key":"e_1_2_2_43_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-31980-1_24"},{"key":"e_1_2_2_44_1","doi-asserted-by":"publisher","DOI":"10.1145\/3092703.3092720"},{"key":"e_1_2_2_45_1","doi-asserted-by":"publisher","DOI":"10.1145\/1993498.1993532"},{"volume-title":"The Fuzzing Book","author":"Zeller Andreas","key":"e_1_2_2_46_1"},{"key":"e_1_2_2_47_1","doi-asserted-by":"publisher","DOI":"10.1145\/3140587.3062379"}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3485543","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3485543","content-type":"application\/pdf","content-version":"vor","intended-application":"syndication"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3485543","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T20:18:40Z","timestamp":1750191520000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3485543"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2021,10,15]]},"references-count":47,"journal-issue":{"issue":"OOPSLA","published-print":{"date-parts":[[2021,10,20]]}},"alternative-id":["10.1145\/3485543"],"URL":"https:\/\/doi.org\/10.1145\/3485543","relation":{},"ISSN":["2475-1421"],"issn-type":[{"type":"electronic","value":"2475-1421"}],"subject":[],"published":{"date-parts":[[2021,10,15]]},"assertion":[{"value":"2021-10-15","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}