CUDA: ¿Por qué los operadores bit a veces son más rápidos que los operadores lógicos?

Cuando estoy a punto de exprimir el último bit de rendimiento de un kernel, generalmente encuentro que reemplazar eloperadores logico (&& y||) conbitwise operadores (& y|) hace que el núcleo sea un poco más rápido. Esto se observó mirando el resumen de tiempo del kernel en CUDA Visual Profiler.

Entonces, ¿por qué los operadores bit a bitMás rápid que operadores lógicos en CUDA? Debo admitir que sonno siempr más rápido, pero muchas veces lo son. Me pregunto qué magia puede dar esta aceleración.

Descargo de responsabilidad: Soy consciente de que los operadores lógicos de cortocircuito y los operadores bit a bit no. Soy muy consciente de cómo estos operadores pueden ser mal utilizados dando como resultado un código incorrecto. Utilizo este reemplazo con cuidado solo cuando la lógica resultante sigue siendo la misma, hay una aceleración y la aceleración así obtenida me importa: -)

Respuestas a la pregunta(6)

Su respuesta a la pregunta