CUDA: Por que os operadores bit a bit às vezes são mais rápidos que os operadores lógico

Quando estou tentando extrair o último bit de desempenho de um kernel, geralmente acho que substituindo oOperadores lógico (&& e||) combitwise operadores (& e|) torna o kernel um pouco mais rápido. Isso foi observado observando o resumo do tempo do kernel no CUDA Visual Profile

Então, por que os operadores bit a bitMais rápid do que operadores lógicos no CUDA? Devo admitir que eles sãonem sempr mais rápido, mas muitas vezes são. Eu me pergunto que mágica pode dar essa aceleraçã

Aviso: Estou ciente de que os operadores lógicos curto-circuito e os operadores bit a bit não. Estou ciente de como esses operadores podem ser mal utilizados, resultando em código incorreto. Só uso essa substituição com cuidado quando a lógica resultante permanece a mesma, há uma aceleração e a aceleração assim obtida é importante para mim: -)

questionAnswers(6)

yourAnswerToTheQuestion