【发布时间】:2015-02-28 19:51:51
【问题描述】:
我想在 Metal 内核中的线程组之间同步写入到 MTLBuffer。我尝试使用atomic_uint 类型和atomic_fetch_add_explicit 函数。这应该可行,但我的问题是我不知道如何解释 CPU 端的值。我更喜欢一种锁定机制,我可以使用它来同步从不同线程组对同一缓冲区的写入。是否存在不受原子类型约束的此类机制或其他一些解决方法?
【问题讨论】:
-
当您说您无法解释 CPU 端的值时,您的意思并不清楚。如果你有一个
uints 的缓冲区,那么它只是一个uint32_t值的缓冲区(如果使用Obj-C++ 或类似的)。我建议您尽可能避免使用锁定机制,因为它们在 GPU 上很棘手,并且可能性能很差。