Cuando estoy abajo a exprimir la última gota de rendimiento de un núcleo, por lo general encuentran que la sustitución de los operadores lógicos (&&
y ||
) con operadores de bits (&
y |
) hace que el núcleo de un poco más rápido . Esto se observó al observar el resumen de tiempo del kernel en CUDA Visual Profiler.CUDA: ¿Por qué los operadores bit a bit son a veces más rápidos que los operadores lógicos?
Entonces, ¿por qué los operadores bit a bit son más rápidos que que los operadores lógicos en CUDA? Debo admitir que son no siempre 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 bit a bit no lo hacen. Soy muy consciente de cómo estos operadores pueden ser mal utilizados, lo que da 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 :-)
¡Gracias por un gran consejo de optimización! –
Roger: ¡Me alegra ayudar! Me sorprendió cuando descubrí esto también :-) –