Cuda 持久线程与设备端排队/嵌套并行

Cuda 持久线程与设备端排队/嵌套并行,cuda,opencl,gpgpu,Cuda,Opencl,Gpgpu,如果可以应用的话,在GPGPU中使用持久性线程与使用设备端排队/嵌套并行相比是否还有优势 我读过一些旧的论文,其中旧硬件上需要持久线程来获得最佳性能,我不确定使用设备端排队/嵌套并行是否使该技术变得无关紧要 我认为,如果子任务在从父任务启动后完全独立,那么持久化线程可能仍然是值得的?持久化线程作为一种编程方法可能会在一段时间内继续引起人们的兴趣。与嵌套并行性相比,持久性线程可能具有几个优点。这里有两个: 消除启动延迟:虽然启动延迟很小(可能低至几微秒),但至少在CUDA动态并行(CDP)的情况下

如果可以应用的话,在GPGPU中使用持久性线程与使用设备端排队/嵌套并行相比是否还有优势

我读过一些旧的论文,其中旧硬件上需要持久线程来获得最佳性能,我不确定使用设备端排队/嵌套并行是否使该技术变得无关紧要


我认为,如果子任务在从父任务启动后完全独立,那么持久化线程可能仍然是值得的?

持久化线程作为一种编程方法可能会在一段时间内继续引起人们的兴趣。与嵌套并行性相比,持久性线程可能具有几个优点。这里有两个:

  • 消除启动延迟:虽然启动延迟很小(可能低至几微秒),但至少在CUDA动态并行(CDP)的情况下,主机内核启动和子内核启动都存在启动延迟。对于极低的延迟需求(例如,网络数据包处理),具有持久线程的生产者/消费者工作队列模型可以提供比任何涉及与接收新工作相关联的启动的机制更低的延迟和更快的周转

  • 内存使用优化:持久线程的一个新用例是避免与内核启动相关的加载/存储模式。下面是一个很好的示例描述。基本思想是,对于类似工作负载的重复处理,我们可以仔细优化片上数据存储的使用(包括共享内存,但特别是GPU寄存器空间的使用),以避免在内核启动时加载数据/参数,例如从全局内存加载,然后(可能)加载在内核结束时将更新的参数存储回全局内存。这对于使用大量携带参数的特定工作负载具有显著的处理优势,并且可以使参数空间“适合”芯片。随着较新的GPU拥有越来越多的片上寄存器存储空间,这可能会继续引起更大工作负载的兴趣

  • 很可能还有其他特定的用例,其中持久线程方法比工作启动方法具有明显的优势。这只是两个例子


    简言之,持久化内核并不是替代其他类型GPU处理范式的一般策略,但在特定情况下,它可以提供比反复启动内核的方法更大的好处。因此,对持久性内核的兴趣可能会持续一段时间。

    持久性线程作为一种编程方法可能会持续一段时间。与嵌套并行性相比,持久性线程可能具有几个优点。这里有两个:

  • 消除启动延迟:虽然启动延迟很小(可能低至几微秒),但至少在CUDA动态并行(CDP)的情况下,主机内核启动和子内核启动都存在启动延迟。对于极低的延迟需求(例如,网络数据包处理),具有持久线程的生产者/消费者工作队列模型可以提供比任何涉及与接收新工作相关联的启动的机制更低的延迟和更快的周转

  • 内存使用优化:持久线程的一个新用例是避免与内核启动相关的加载/存储模式。下面是一个很好的示例描述。基本思想是,对于类似工作负载的重复处理,我们可以仔细优化片上数据存储的使用(包括共享内存,但特别是GPU寄存器空间的使用),以避免在内核启动时加载数据/参数,例如从全局内存加载,然后(可能)加载在内核结束时将更新的参数存储回全局内存。这对于使用大量携带参数的特定工作负载具有显著的处理优势,并且可以使参数空间“适合”芯片。随着较新的GPU拥有越来越多的片上寄存器存储空间,这可能会继续引起更大工作负载的兴趣

  • 很可能还有其他特定的用例,其中持久线程方法比工作启动方法具有明显的优势。这只是两个例子


    简言之,持久化内核并不是替代其他类型GPU处理范式的一般策略,但在特定情况下,它可以提供比反复启动内核的方法更大的好处。因此,人们对持久内核的兴趣可能会持续一段时间。

    这是我对stackoverflow一个问题所做的最翔实的回答!奇怪的是,最快的人居然回答了!帮助优化数据缓存的要点和示例非常有用。您是否知道,如果nVidia的Pascal CUDA 8多块coop组能够以某种方式在执行之间保留注册/共享mem状态,情况是否会发生变化?非常感谢。我不知道Pascal/CUDA8能够在一次内核启动到下一次内核启动之间保持片上寄存器或共享内存的状态。据我所知,不存在此类设施。你能为这一说法引证一下吗?在谷歌随机搜索中,我发现在本文末尾提到了这一点:。但我不清楚它到底是如何工作的。在幻灯片23和25中,该演示肯定了任何多内核方法都会丢失状态(寄存器、共享内存)。多块协作方法是解决这一问题的一种方法,但它不涉及多个内核启动,也不“保留…执行之间的状态”(内核)。那里的“执行阶段”是概念性的,其思想是它们不再需要被expl分解