cuda threadfence

问题描述 投票:3回答:1

我正在编写必须执行块间同步(N个维和其他内存传输操作的总和)的代码。当我增加问题的维度时,结果是错误的。

我正在与__threadfence()和第一个维度(N <192)进行同步,但是,如果我在代码段中插入其他__threadfence(),则对于更大的维度,结果是正确的。

一个threadfence()是否不足以进行同步?另外,数据结果用于同一块中。

在编程指南中,信息表明threadfence等待所有存储空间都准备好(共享和全局)

synchronization cuda gpgpu
1个回答
9
投票

没有在块之间执行同步的好方法。您可以通过等待等待和消耗GPU内存带宽来采用骇人听闻的方法,也可以终止内核并启动一个新内核。

__threadfence()not”用于块之间的同步。 __threadfence()用于暂停当前线程,直到其他线程可以看到以前所有对共享和全局内存的写入。但是,它既不停止也不影响其他线程的位置!

您可以检查以下问题:

© www.soinside.com 2019 - 2024. All rights reserved.