skip to main content
research-article
Open access

The Impact of the SIMD Width on Control-Flow and Memory Divergence

Published: 09 January 2015 Publication History

Abstract

Power consumption is a prevalent issue in current and future computing systems. SIMD processors amortize the power consumption of managing the instruction stream by executing the same instruction in parallel on multiple data. Therefore, in the past years, the SIMD width has steadily increased, and it is not unlikely that it will continue to do so. In this article, we experimentally study the influence of the SIMD width to the execution of data-parallel programs. We investigate how an increasing SIMD width (up to 1024) influences control-flow divergence and memory-access divergence, and how well techniques to mitigate them will work on larger SIMD widths. We perform our study on 76 OpenCL applications and show that a group of programs scales well up to SIMD width 1024, whereas another group of programs increasingly suffers from control-flow divergence. For those programs, thread regrouping techniques may become increasingly important for larger SIMD widths. We show what average speedups can be expected when increasing the SIMD width. For example, when switching from scalar execution to SIMD width 64, one can expect a speedup of 60.11, which increases to 62.46 when using thread regrouping. We also analyze the frequency of regular (uniform, consecutive) memory access patterns and observe a monotonic decrease of regular memory accesses from 82.6 at SIMD width 4 to 43.1% at SIMD width 1024.

References

[1]
Sara S. Baghsorkhi, Matthieu Delahaye, Sanjay J. Patel, William D. Gropp, and Wen-mei W. Hwu. 2010. An adaptive performance modeling tool for GPU architectures. In Proceedings of PoPP. ACM, New York, NY, 105--114.
[2]
Markus Billeter, Ola Olsson, and Ulf Assarsson. 2009. Efficient stream compaction on wide SIMD many-core architectures. In Proceedings of HPG. ACM, New York, NY, 159--166.
[3]
Michael Boyer, Kevin Skadron, and Westley Weimer. 2008. Automated dynamic analysis of CUDA programs. In Proceedings of STMCS.
[4]
Martin Burtscher, Rupesh Nasre, and Keshav Pingali. 2012. A quantitative study of irregular programs on GPUs. In Proceedings of ISWC. 141--151.
[5]
Shuai Che, Michael Boyer, Jiayuan Meng, David Tarjan, Jeremy W. Sheaffer, Sang-Ha Lee, and Kevin Skadron. 2009. Rodinia: A benchmark suite for heterogeneous computing. In Proceedings of IISWC. IEEE, Los Alamitos, CA, 44--54.
[6]
Peter Collingbourne, Cristian Cadar, and Paul H. J. Kelly. 2012. Symbolic testing of OpenCL code. In Proceedings of HVC. Springer-Verlag, Berlin, Heidelberg, 203--218.
[7]
Bruno Coutinho, Diogo Sampaio, Fernando Magno Quintão Pereira, and Wagner Meira Jr. 2011. Divergence analysis and optimizations. In Proceedings of PACT. 320--329.
[8]
Bruno Coutinho, Diogo Sampaio, Fernando M. Q. Pereira, and Wagner Meira Jr. 2010. Performance debugging of GPGPU applications with the divergence map. In Proceedings of SBAC-PAD. IEEE, Los Alamitos, CA, 33--40.
[9]
Anthony Danalis, Gabriel Marin, Collin McCurdy, Jeremy S. Meredith, Philip C. Roth, Kyle Spafford, Vinod Tipparaju, and Jeffrey S. Vetter. 2010. The scalable heterogeneous computing (SHOC) benchmark suite. In Proceedings of CPGPU. ACM, New York, NY, 63--74.
[10]
Wilson W. L. Fung and Tor M. Aamodt. 2011. Thread block compaction for efficient SIMT control flow. In Proceedings of HPCA. 25--36.
[11]
Wilson W. L. Fung, Ivan Sham, George Yuan, and Tor M. Aamodt. 2007. Dynamic warp formation and scheduling for efficient GPU control flow. In Proceedings of MICRO. IEEE, Los Alamitos, CA, 407--420.
[12]
Dominik Grewe and Michael F. P. O’Boyle. 2011. A static task partitioning approach for heterogeneous systems using OpenCL. In Proceedings of CC. Springer-Verlag, Berlin, Heidelberg.
[13]
Tianyi David Han and Tarek S. Abdelrahman. 2011. Reducing branch divergence in GPU programs. In Proceedings of GPGPU. ACM, New York, NY, Article No. 3.
[14]
Daniel Horn. 2005. Stream reduction operations for GPGPU applications. In GPU Gems 2. Addison-Wesley, 573--589.
[15]
Wen-Mei Hwu, Christopher Rodrigues, Shane Ryoo, and John Stratton. 2009. Compute unified device architecture application suitability. Computing in Science and Engineering 11, 3, 16--26.
[16]
Ralf Karrenberg and Sebastian Hack. 2011. Whole function vectorization. In Proceedings of CGO. 141--150.
[17]
Ralf Karrenberg and Sebastian Hack. 2012. Improving performance of OpenCL on CPUs. In Compiler Construction. Lecture Notes in Computer Science, Vol. 7210. Springer, 1--20.
[18]
Andrew Kerr, Gregory Diamos, and Sudhakar Yalamanchili. 2009. A characterization and analysis of PTX kernels. In Proceedings of IISWC. IEEE, Los Alamitos, CA, 3--12.
[19]
Andrew Kerr, Gregory Diamos, and Sudhakar Yalamanchili. 2012. Dynamic compilation of data-parallel kernels for vector processors. In Proceedings of CGO. ACM, New York, NY, 23--32.
[20]
Yooseong Kim and Aviral Shrivastava. 2011. CuMAPz: A tool to analyze memory access patterns in CUDA. In Proceedings of DAC. 128--133.
[21]
Ahmad Lashgar, Amirali Baniasadi, and Ahmad Khonsari. 2013. Warp size impact in GPUs: Large or small? In Proceedings of GPGPU. ACM, New York, NY, 146--152.
[22]
Alberto Magni, Christophe Dubach, and Michael F. P. O’Boyle. 2013. A large-scale cross-architecture evaluation of thread-coarsening. In Proceedings of SC. ACM, New York, NY, Article No. 11.
[23]
David Maier. 1978. The complexity of some problems on subsequences and supersequences. Journal of the ACM 25, 2, 322--336.
[24]
Jiayuan Meng, David Tarjan, and Kevin Skadron. 2010. Dynamic warp subdivision for integrated branch and memory divergence tolerance. In Proceedings of ISCA. ACM, New York, NY, 235--246.
[25]
Perhaad Mistry, Chris Gregg, Norman Rubin, David Kaeli, and Kim Hazelwood. 2011. Analyzing program flow within a many-kernel OpenCL application. In Proceedings of CPGPU. ACM, New York, NY, Article No. 10.
[26]
Minsoo Rhu and Mattan Erez. 2013. Maximizing SIMD resource utilization in GPGPUs with SIMD lane permutation. In Proceedings of ISCA. 356--367.
[27]
Diogo Sampaio, Rafael Martins de Souza, Sylvain Collange, and Fernando Magno Quintão Pereira. 2014. Divergence analysis. ACM Transactions on Programming Languages and Systems 35, 4, Article No. 13.
[28]
Martin Sandrieser, Siegfried Benkner, and Sabri Pllana. 2011. Improving programmability of heterogeneous many-core systems via explicit platform descriptions. In Proceedings of IWMSE. ACM, New York, NY, 17--24.
[29]
John Sartori and Rakesh Kumar. 2012. Branch and data herding: Reducing control and memory divergence for error-tolerant GPU applications. In Proceedings of PACT. ACM, New York, NY, 427--428.
[30]
Jaewook Shin. 2007. Introducing control flow into vectorized code. In Proceedings of PACT. IEEE, Los Alamitos, CA, 280--291.
[31]
John A. Stratton, Christopher Rodrigrues, I-Jui Sung, Nady Obeid, Liwen Chang, Geng Liu, and Wen-Mei W. Hwu. 2012. Parboil: A Revised Benchmark Suite for Scientific and Commercial Throughput Computing. Technical Report IMPACT-12-01. University of Illinois at Urbana-Champaign, Champaign, IL.
[32]
Ingo Wald. 2011. Active thread compaction for GPU path tracing. In Proceedings of HPG. ACM, New York, NY, 51--58.
[33]
Eddy Z. Zhang, Yunlian Jiang, Ziyu Guo, Kai Tian, and Xipeng Shen. 2011. On-the-fly elimination of dynamic irregularities for GPU computing. In Proceedings of ASPLOS XVI. ACM, New York, NY, 369--380.
[34]
Mai Zheng, Vignesh T. Ravi, Feng Qin, and Gagan Agrawal. 2011. GRace: A low-overhead mechanism for detecting data races in GPU programs. In Proceedings of PPoPP. ACM, New York, NY, 135--146.

Cited By

View all

Index Terms

  1. The Impact of the SIMD Width on Control-Flow and Memory Divergence

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM Transactions on Architecture and Code Optimization
    ACM Transactions on Architecture and Code Optimization  Volume 11, Issue 4
    January 2015
    797 pages
    ISSN:1544-3566
    EISSN:1544-3973
    DOI:10.1145/2695583
    Issue’s Table of Contents
    Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 09 January 2015
    Accepted: 01 October 2014
    Revised: 01 August 2014
    Received: 01 May 2014
    Published in TACO Volume 11, Issue 4

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

    1. Data parallelism
    2. GPGPU
    3. OpenCL
    4. SIMD
    5. divergent control flow
    6. memory access patterns
    7. performance analysis
    8. vectorization

    Qualifiers

    • Research-article
    • Research
    • Refereed

    Funding Sources

    • Intel Visual Computing Institute Saarbrücken
    • ECOUSS project
    • German Federal Ministry of Education and Research (BMBF)

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)192
    • Downloads (Last 6 weeks)17
    Reflects downloads up to 02 Mar 2025

    Other Metrics

    Citations

    Cited By

    View all
    • (2023)RenderBench: The CPU Rendering Benchmark Suite Based on Microarchitecture-Independent CharacteristicsElectronics10.3390/electronics1219415312:19(4153)Online publication date: 6-Oct-2023
    • (2022)DARMProceedings of the 20th IEEE/ACM International Symposium on Code Generation and Optimization10.1109/CGO53902.2022.9741285(28-40)Online publication date: 2-Apr-2022
    • (2019)WCCVProceedings of the ACM International Conference on Supercomputing10.1145/3330345.3331059(319-329)Online publication date: 26-Jun-2019
    • (2017)Function Call Re-VectorizationACM SIGPLAN Notices10.1145/3155284.301875152:8(313-326)Online publication date: 26-Jan-2017
    • (2017)Improving the effectiveness of searching for isomorphic chains in superword level parallelismProceedings of the 50th Annual IEEE/ACM International Symposium on Microarchitecture10.1145/3123939.3124554(718-729)Online publication date: 14-Oct-2017
    • (2017)Function Call Re-VectorizationProceedings of the 22nd ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming10.1145/3018743.3018751(313-326)Online publication date: 26-Jan-2017
    • (2016)Automated aerial refueling: Parallelized 3D iterative closest point: Subject area: Guidance and control2016 IEEE National Aerospace and Electronics Conference (NAECON) and Ohio Innovation Summit (OIS)10.1109/NAECON.2016.7856797(188-192)Online publication date: Jul-2016
    • (2016)On the Impact of Widening Vector Registers on Sequence Alignment2016 45th International Conference on Parallel Processing (ICPP)10.1109/ICPP.2016.65(506-515)Online publication date: Aug-2016
    • (2015)Automatic Vectorization of Interleaved Data RevisitedACM Transactions on Architecture and Code Optimization10.1145/283873512:4(1-25)Online publication date: 8-Dec-2015
    • (2015)Efficient warp execution in presence of divergence with collaborative context collectionProceedings of the 48th International Symposium on Microarchitecture10.1145/2830772.2830796(204-215)Online publication date: 5-Dec-2015

    View Options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Login options

    Full Access

    Figures

    Tables

    Media

    Share

    Share

    Share this Publication link

    Share on social media