Cuda GPU如何更准确地执行线程
我在理解GPU如何执行线程时遇到了一个问题,更确切地说,是GPU的哪个部分执行线程。 我已经了解了线程是如何在块和网格中分组的。 每个GPU都有一个或多个SM(流式多处理器)和多个SP(流式处理器或CUDA内核) 据我所知,每个SM都会收到一个要执行的线程块。Cuda GPU如何更准确地执行线程,cuda,gpu,Cuda,Gpu,我在理解GPU如何执行线程时遇到了一个问题,更确切地说,是GPU的哪个部分执行线程。 我已经了解了线程是如何在块和网格中分组的。 每个GPU都有一个或多个SM(流式多处理器)和多个SP(流式处理器或CUDA内核) 据我所知,每个SM都会收到一个要执行的线程块。 这是一张我如何看待事物的照片。 之后,网格被拆分为扭曲(32个线程)。 问题: 如果网格也是拆分的,为什么要使用网格?(如果我有一个有200个线程的网格,它将被分成32个线程并执行,那么什么是好的网格?) 每个SP每次执行一个线程 每个S
这是一张我如何看待事物的照片。 之后,网格被拆分为扭曲(32个线程)。 问题:
我认为你在混用术语。层次结构为网格->块->扭曲->线程:
- 内核在单个网格中启动。它映射到整个GPU(除非您进行一些奇特的多内核计算,但这更高级)
- 网格由几个块组成。每个块映射到单个SM,但是如果资源允许,SM可以处理多个块
- 一个块被分成若干条曲线。根据GPU型号,每个SM一次处理1、2或4个扭曲。但是,块能够同时处理分配给它的所有扭曲。在不同的扭曲之间切换非常频繁,这样做是为了隐藏内存和指令延迟、依赖性等
- 一条经线被分成32条线。在SIMD中运行的SM在同一时刻执行翘曲的所有线程