2020 LLVM Developers’ Meeting: N. Hähnle “Evolving convergent: Lessons from Control Flow in AMDGPU”
Автор: LLVM
Загружено: 2020-10-26
Просмотров: 1541
Описание:
https://llvm.org/devmtg/2020-09/
—
Evolving "convergent": Lessons from Control Flow in AMDGPU - Nicolai Hähnle
Slides: https://llvm.org/devmtg/2020-09/slide...
—
GPUs execute many threads of a program in lock-step by mapping them to lanes of a SIMD vector that we call “wave”. Modern GPU programming languages have cross-lane operations such as shuffles, ballots, and barriers that exchange data between the lanes of a wave. When such operations execute in divergent control flow (lanes of a wave following different paths through the CFG), only a subset of lanes participate in this data exchange. A key part of defining the semantics of cross-lane operations is defining how this subset is determined.
In LLVM, the only tool available today to help in this definition is the `convergent` attribute. We argue that its definition is subtly broken and insufficient for expressing and preserving the desired behavior of cross-lane operations. We propose a new definition of `convergent` as well as the concept of “convergence tokens” and related intrinsics that allow frontends to describe the desired semantics of cross-lane operations in IR in a way that is easy to maintain by generic transforms. We also briefly touch on how these intrinsics are used by a new “wave transform” (whole program vectorization that lowers from thread-level CFG to wave-level CFG) in the AMDGPU backend.
—
Повторяем попытку...
Доступные форматы для скачивания:
Скачать видео
-
Информация по загрузке: