[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"doc-detail-86285-en":3,"doc-seo-86285-105":30,"detail-sidebar-cat-0-en-105":91},{"code":4,"msg":5,"data":6},0,"success",{"doc_id":7,"user_id":8,"nickname":9,"user_avatar":10,"doc_module":4,"category_id":11,"category_name":12,"doc_title":13,"doc_description":14,"doc_content":15,"file_id":16,"file_url":17,"file_type":18,"file_size":19,"view_count":20,"is_deleted":4,"is_public":21,"is_downloadable":21,"audit_status":21,"page_count":22,"language":23,"language_code":24,"site_id":25,"html_lang":24,"table_of_contents":26,"faqs":27,"seo_title":13,"seo_description":14,"update_tm":28,"read_time":29},86285,1099514068365,"Aurelia","https://ap-avatar.wpscdn.com/avatar/10000253d8d9f28188e?_k=1776742907772140068",8,"Research & Report","On Thread Convergence","Introduces a formal notion of convergence for nodes and edges in a control-flow graph to determine whether a barrier placed at a specific location is guaranteed to synchronize all threads of a GPU thread block in every execution. Enables compiler decisions on when a barrier resides in a uniformly executed region, avoiding transformations required on warp-synchronous hardware. Defines convergent nodes/edges and well-synchronized programs, provides branch and merge inference rules, and presents a linear-time bidirectional work-list algorithm with precision refinements using region, path, and thread-variance information.","arXiv :2607 . 1 1636v 1 [ cs .PL] 13 Jul 2026  \nOn Thread Convergence ∗  \nVinod Grover† Manjunath Kudlur‡  \nApril 2009  \nAbstract  \nWe introduce a notion of convergence for the nodes and edges of a control-flow graph that captures whether a barrier placed at that location is guaranteed to synchronize all threads of a thread block in every execution. Convergence analysis lets a compiler determine when a barrier lies in a uniformly executed region and therefore avoid the code transformations otherwise required to implement thread-block barriers correctly on warp-synchronous hardware. We formalize convergent nodes, convergent edges, and well-synchronized programs; give two inference rules—a branch rule and a merge rule; and present a linear-time iterative work-list algorithm that propagates convergence information bidirectionally through the flow graph. We then describe refinements that improve precision using single-entry single-exit region information, path information, and thread-variance information.  \nContents  \n1 Introduction 2  \n1. 1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2  \n1.2 Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2  \n2 Convergence Inference 3  \n2. 1 Branch Inference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3  \n2.2 Merge Inference ....................................... 4  \n3 Convergence Analysis 5  \n3.1 Basic Algorithm ...................................... 5  \n3.2 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5  \n3.2.1 Acyclic Flow Graph ................................ 5  \n3.2.2 Flowgraph with Cycles ............................... 5  \n3.3 Using Region Information ................................. 6  \n3.4 Using Path Information .................................. 6  \n3.5 Using Variance Information ................................ 6  \n∗ This note was written in April 2009 and was not published at the time. It is posted here in 2026, essentially unchanged, as a historical record of an early approach to thread-convergence analysis for GPUs; its terminology and hardware references (e.g. Tesla, SSY/NOP.S) should be read in that 2009 context.  \n†NVIDIA Corporation. Corresponding author: [vgrover@nvidia.com](vgrover@nvidia.com).  \n‡This work was done while the author was at NVIDIA Corporation; the author is now at OpenAI ([keveman@openai.com](keveman@openai.com)).  \n1 Introduction  \nIn this document we present and motivate a notion of convergence for flow-graph edges and nodes. We also present an algorithm for statically computing whether a node or an edge is convergent for well synchronized programs.  \n1.1 Motivation  \nConsider the following simple flow graph resulting from the use of a barrier that is controlled by a short circuit conditional.  \nX  \nThis executes incorrectly on our current GPUs since the hardware implementation of the barrier works at warp level and not at thread level. This can happen if some threads in the warp take the edge C1 → syncthreads and the remaining threads of the warp take the edge C2 → syncthreads. If the compiler generates a SSY instruction before C1 and a corresponding NOP .S at the start of Y then a race results, since the syncthreads is executed at the warp level.  \nIn order to generate correct code for this for Tesla the compiler must generate the following code.  \nIn general, the presence of barriers in divergent single entry single exit regions requires such a transformation. However if it was known that the edges entering the barrier node were taken by all the threads of the thread-block then the transformation can be avoided. In this paper we develop a method for determining when edges are executed by all threads, also known as convergence analysis.  \n1.2 Definitions  \nFirst we present some definitions that formalize the notions of convergence and well synchronized programs.  \nDefinition. A f","cbCait5NlwtnIqPp","https://ap.wps.com/l/cbCait5NlwtnIqPp","pdf",351457,3,1,12,"English","en",105,"# Introduction\n## Motivation\n## Definitions\n# Convergence Inference\n## Branch Inference\n## Merge Inference\n# Convergence Analysis\n## Basic Algorithm\n## Example\n## Using Region Information\n## Using Path Information\n## Using Variance Information","[{\"question\":\"什么是线程收敛（thread convergence）以及它在控制流图中的作用？\",\"answer\":\"线程收敛用于刻画控制流图中某个位置放置 barrier 时，是否能在所有执行中保证同步线程块内的所有线程。通过判断节点和边是否收敛，编译器可以确定 barrier 是否处于所有线程一致执行的区域。\"},{\"question\":\"文中如何形式化收敛节点、收敛边以及良好同步程序？\",\"answer\":\"收敛节点定义为在该节点放置 barrier 从不导致同步失败；收敛边定义为将 barrier 放在通过边分裂得到的位置时也从不导致同步失败。若程序中所有 barrier 都从不失败，则称该控制流图对应的程序为良好同步。\"},{\"question\":\"如何进行收敛性推断，使用了哪些规则与算法？\",\"answer\":\"推断基于两条规则：分支规则（从分支节点出发的所有边都收敛则节点收敛）与汇合规则（进入某节点的所有边都收敛则节点收敛）。随后给出一个线性时间、基于 work-list 的迭代算法，在流图上双向传播收敛信息，并通过区域、路径与线程差异信息提升精度。\"}]",1784210053,30,{"code":4,"msg":31,"data":32},"ok",{"site_id":25,"language":24,"slug":33,"title":13,"keywords":34,"description":14,"schema_data":35,"social_meta":86,"head_meta":88,"extra_data":90,"updated_unix":28},"on-thread-convergence","",{"@graph":36,"@context":85},[37,53,68],{"@type":38,"itemListElement":39},"BreadcrumbList",[40,44,48,50],{"item":41,"name":42,"@type":43,"position":21},"https://docshare.wps.com","Home","ListItem",{"item":45,"name":46,"@type":43,"position":47},"https://docshare.wps.com/document/","Document",2,{"item":49,"name":12,"@type":43,"position":20},"https://docshare.wps.com/document/research-report/",{"item":51,"name":13,"@type":43,"position":52},"https://docshare.wps.com/document/on-thread-convergence/86285/",4,{"url":51,"name":13,"@type":54,"author":55,"headline":13,"publisher":57,"fileFormat":60,"inLanguage":24,"description":14,"dateModified":61,"datePublished":62,"encodingFormat":60,"isAccessibleForFree":63,"interactionStatistic":64},"DigitalDocument",{"name":9,"@type":56},"Person",{"url":41,"name":58,"@type":59},"DocShare","Organization","application/pdf","2026-07-24","2026-07-16",true,{"@type":65,"interactionType":66,"userInteractionCount":20},"InteractionCounter",{"@type":67},"ViewAction",{"@type":69,"mainEntity":70},"FAQPage",[71,77,81],{"name":72,"@type":73,"acceptedAnswer":74},"什么是线程收敛（thread convergence）以及它在控制流图中的作用？","Question",{"text":75,"@type":76},"线程收敛用于刻画控制流图中某个位置放置 barrier 时，是否能在所有执行中保证同步线程块内的所有线程。通过判断节点和边是否收敛，编译器可以确定 barrier 是否处于所有线程一致执行的区域。","Answer",{"name":78,"@type":73,"acceptedAnswer":79},"文中如何形式化收敛节点、收敛边以及良好同步程序？",{"text":80,"@type":76},"收敛节点定义为在该节点放置 barrier 从不导致同步失败；收敛边定义为将 barrier 放在通过边分裂得到的位置时也从不导致同步失败。若程序中所有 barrier 都从不失败，则称该控制流图对应的程序为良好同步。",{"name":82,"@type":73,"acceptedAnswer":83},"如何进行收敛性推断，使用了哪些规则与算法？",{"text":84,"@type":76},"推断基于两条规则：分支规则（从分支节点出发的所有边都收敛则节点收敛）与汇合规则（进入某节点的所有边都收敛则节点收敛）。随后给出一个线性时间、基于 work-list 的迭代算法，在流图上双向传播收敛信息，并通过区域、路径与线程差异信息提升精度。","https://schema.org",{"og:url":51,"og:type":87,"og:title":13,"og:site_name":58,"og:description":14},"article",{"robots":89,"canonical":51},"index,follow",{"doc_id":7,"site_id":25},{"code":4,"msg":5,"data":92},[93,97,101,105,110,115,120,122,127,130,134],{"id":21,"doc_module":4,"doc_module_name":46,"category_name":94,"show_sort_weight":95,"slug":96},"Story & Novel",90,"story-novel",{"id":47,"doc_module":4,"doc_module_name":46,"category_name":98,"show_sort_weight":99,"slug":100},"Literature",80,"literature",{"id":52,"doc_module":4,"doc_module_name":46,"category_name":102,"show_sort_weight":103,"slug":104},"Exam",70,"exam",{"id":106,"doc_module":4,"doc_module_name":46,"category_name":107,"show_sort_weight":108,"slug":109},5,"Comic",60,"comic",{"id":111,"doc_module":4,"doc_module_name":46,"category_name":112,"show_sort_weight":113,"slug":114},6,"Technology",50,"technology",{"id":116,"doc_module":4,"doc_module_name":46,"category_name":117,"show_sort_weight":118,"slug":119},7,"Healthcare",40,"healthcare",{"id":11,"doc_module":4,"doc_module_name":46,"category_name":12,"show_sort_weight":29,"slug":121},"research-report",{"id":123,"doc_module":4,"doc_module_name":46,"category_name":124,"show_sort_weight":125,"slug":126},9,"Religion & Spirituality",20,"religion-spirituality",{"id":125,"doc_module":4,"doc_module_name":46,"category_name":128,"show_sort_weight":125,"slug":129},"World Cup","world-cup",{"id":131,"doc_module":4,"doc_module_name":46,"category_name":132,"show_sort_weight":131,"slug":133},10,"Lifestyle","lifestyle",{"id":135,"doc_module":4,"doc_module_name":46,"category_name":136,"show_sort_weight":106,"slug":137},19,"General","general"]