Cuda 多个线程可以同时在同一个字上设置位吗?

Cuda 多个线程可以同时在同一个字上设置位吗?,cuda,Cuda,我需要一个扭曲的每一个线程决定是否在一个32位字中设置其各自的位。这种多重设置是只需要一次内存访问,还是每个位集只需要一次内存访问?CUDA中没有独立的位设置功能。(PTX中有一条指令,但它仍以32位量运行。) 每个线程将通过执行一次完整的32位写入来设置一位。这样的写入需要是一个原子RMW操作,以便保留其他位。因此,无论原子的吞吐量如何,访问都将被有效地序列化 如果内存空间不是一个问题,那么将位分解成单独的整数可以避免原子 然后,可以使用\uu ballot()快速组装32位打包数量。答案中给

我需要一个扭曲的每一个线程决定是否在一个32位字中设置其各自的位。这种多重设置是只需要一次内存访问,还是每个位集只需要一次内存访问?

CUDA中没有独立的位设置功能。(PTX中有一条指令,但它仍以32位量运行。)

每个线程将通过执行一次完整的32位写入来设置一位。这样的写入需要是一个原子RMW操作,以便保留其他位。因此,无论原子的吞吐量如何,访问都将被有效地序列化

如果内存空间不是一个问题,那么将位分解成单独的整数可以避免原子

然后,可以使用
\uu ballot()
快速组装32位打包数量。答案中给出了一个例子


(事实上,warp vote函数可以让您完全避免内存事务;如果您需要的唯一结果是32位压缩量,那么一切都可以在寄存器中处理。)

CUDA中没有独立的位设置功能。(PTX中有一条指令,但它仍以32位量运行。)

每个线程将通过执行一次完整的32位写入来设置一位。这样的写入需要是一个原子RMW操作,以便保留其他位。因此,无论原子的吞吐量如何,访问都将被有效地序列化

如果内存空间不是一个问题,那么将位分解成单独的整数可以避免原子

然后,可以使用
\uu ballot()
快速组装32位打包数量。答案中给出了一个例子


(事实上,warp vote函数可以让您完全避免内存事务;如果您需要的唯一结果是32位压缩量,那么一切都可以在寄存器中处理。)

CUDA中没有独立的位设置功能。(PTX中有一条指令,但它仍以32位量运行。)

每个线程将通过执行一次完整的32位写入来设置一位。这样的写入需要是一个原子RMW操作,以便保留其他位。因此,无论原子的吞吐量如何,访问都将被有效地序列化

如果内存空间不是一个问题,那么将位分解成单独的整数可以避免原子

然后,可以使用
\uu ballot()
快速组装32位打包数量。答案中给出了一个例子


(事实上,warp vote函数可以让您完全避免内存事务;如果您需要的唯一结果是32位压缩量,那么一切都可以在寄存器中处理。)

CUDA中没有独立的位设置功能。(PTX中有一条指令,但它仍以32位量运行。)

每个线程将通过执行一次完整的32位写入来设置一位。这样的写入需要是一个原子RMW操作,以便保留其他位。因此,无论原子的吞吐量如何,访问都将被有效地序列化

如果内存空间不是一个问题,那么将位分解成单独的整数可以避免原子

然后,可以使用
\uu ballot()
快速组装32位打包数量。答案中给出了一个例子


(事实上,warp vote函数可以让您完全避免内存事务;如果您需要的唯一结果是32位压缩量,那么一切都可以在寄存器中处理。)

ball,这正是我需要的!选票,这正是我需要的!选票,这正是我需要的!选票,这正是我需要的!