我可以使用什么代替 LOP3 指令来处理 uint64_t 数据类型并使用一条指令执行 3 个操作数逻辑运算?

What can I use instead LOP3 instructions for working with uint64_t data types and do 3 operand logical operations using one instruction?

我正在做一个项目,需要对 uint64_t 数据进行 3 个操作数逻辑运算 types.But lop3 ptx 指令仅适用于 32 位数据类型(.b32)。

LOP3 documentation

我可以使用什么 LOP3 指令来处理 uint64_t 数据类型并使用一条指令执行 3 个操作数逻辑运算?

I ... need to do 3 operands logical operation...

不,您不需要这样做。请记住,任何布尔函数都可以只使用 AND、OR 和 NOT(或者甚至只是 AND 和 NOT,或者甚至只是 NOT-AND)来表示。这些二元和一元函数集是 functionally complete.

而且 - 如果您认为您需要它来提高速度 - 那也不太可能。无论如何,编译器可能会优化您的逻辑操作。

... logical operation with uint64_t data types

您的意思是您要对 64 位中的每一位独立应用逻辑运算?在那种情况下,只需将这样的值视为 2 个连续的 32 位值,然后对这些值做任何你想做的事情,每半一次。

我找了很多,在ptx文档中没有找到可以进行3个操作数逻辑运算的内容。所以我在我的代码中将所有数据类型更改为 uint32_t,它的运行速度非常快。