{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,6,9]],"date-time":"2026-06-09T08:41:50Z","timestamp":1780994510473,"version":"3.54.1"},"reference-count":20,"publisher":"Association for Computing Machinery (ACM)","issue":"3","license":[{"start":{"date-parts":[[2021,3,5]],"date-time":"2021-03-05T00:00:00Z","timestamp":1614902400000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["SIGMETRICS Perform. Eval. Rev."],"published-print":{"date-parts":[[2021,3,5]]},"abstract":"<jats:p>In this work, we empirically derive the scheduler's behavior under concurrent workloads for NVIDIA's Pascal, Volta, and Turing microarchitectures. In contrast to past studies that suggest the scheduler uses a round-robin policy to assign thread blocks to streaming multiprocessors (SMs), we instead find that the scheduler chooses the next SM based on the SM's local resource availability. We show how this scheduling policy can lead to significant, and seemingly counter-intuitive, performance degradation; for example, a decrease of one thread per block resulted in a 3.58X increase in execution time for one kernel in our experiments. We hope that our work will be useful for improving the accuracy of GPU simulators and aid in the development of novel scheduling algorithms.<\/jats:p>","DOI":"10.1145\/3453953.3453972","type":"journal-article","created":{"date-parts":[[2021,3,6]],"date-time":"2021-03-06T04:12:32Z","timestamp":1615003952000},"page":"81-88","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":26,"title":["Demystifying the Placement Policies of the NVIDIA GPU Thread Block Scheduler for Concurrent Kernels"],"prefix":"10.1145","volume":"48","author":[{"given":"Guin","family":"Gilman","sequence":"first","affiliation":[{"name":"Worcester Polytechnic Institute, Worcester, MA, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Samuel S.","family":"Ogden","sequence":"additional","affiliation":[{"name":"Worcester Polytechnic Institute, Worcester, MA, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Tian","family":"Guo","sequence":"additional","affiliation":[{"name":"Worcester Polytechnic Institute, Worcester, MA, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Robert J.","family":"Walls","sequence":"additional","affiliation":[{"name":"Worcester Polytechnic Institute, Worcester, MA, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"320","published-online":{"date-parts":[[2021,3,5]]},"reference":[{"key":"e_1_2_1_1_1","volume-title":"86 Performance Evaluation Review","volume":"48","author":"Adriaens J. T."},{"key":"e_1_2_1_2_1","doi-asserted-by":"publisher","DOI":"10.1109\/RTSS.2017.00017"},{"key":"e_1_2_1_3_1","doi-asserted-by":"publisher","DOI":"10.1145\/3123939.3123975"},{"key":"e_1_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICCD.2013.6657093"},{"key":"e_1_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.1145\/2925426.2926271"},{"key":"e_1_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.1109\/IISWC.2009.5306797"},{"key":"e_1_2_1_7_1","volume-title":"Dynamic space-time scheduling for gpu inference","author":"Jain P.","year":"2018"},{"key":"e_1_2_1_8_1","volume-title":"Dissecting the nvidia turing t4 gpu via microbenchmarking","author":"Jia Z.","year":"2019"},{"key":"e_1_2_1_9_1","volume-title":"Dissecting the nvidia volta gpu architecture via microbenchmarking","author":"Jia Z.","year":"2018"},{"key":"e_1_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.1109\/BigData.2014.7004245"},{"key":"e_1_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/3123939.3124538"},{"key":"e_1_2_1_12_1","volume-title":"Profiler user's guide","author":"NVIDIA.","year":"2007"},{"key":"e_1_2_1_13_1","volume-title":"Nvidia tensorrt","author":"NVIDIA.","year":"2020"},{"key":"e_1_2_1_14_1","volume-title":"How the fermi thread block scheduler works (illustrated)","author":"Pai S.","year":"2014"},{"key":"e_1_2_1_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/2451116.2451160"},{"key":"e_1_2_1_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/2694344.2694346"},{"key":"e_1_2_1_17_1","doi-asserted-by":"publisher","DOI":"10.1145\/2678373.2665702"},{"key":"e_1_2_1_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/3093337.3037742"},{"key":"e_1_2_1_19_1","doi-asserted-by":"publisher","DOI":"10.1109\/ISCA.2016.29"},{"key":"e_1_2_1_20_1","first-page":"58","volume-title":"Laius: Towards latency awareness and improved utilization of spatial multitasking accelerators in datacenters","author":"Zhang W.","year":"2019"}],"container-title":["ACM SIGMETRICS Performance Evaluation Review"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3453953.3453972","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3453953.3453972","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T20:47:51Z","timestamp":1750193271000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3453953.3453972"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2021,3,5]]},"references-count":20,"journal-issue":{"issue":"3","published-print":{"date-parts":[[2021,3,5]]}},"alternative-id":["10.1145\/3453953.3453972"],"URL":"https:\/\/doi.org\/10.1145\/3453953.3453972","relation":{},"ISSN":["0163-5999"],"issn-type":[{"value":"0163-5999","type":"print"}],"subject":[],"published":{"date-parts":[[2021,3,5]]},"assertion":[{"value":"2021-03-05","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}