Когда мне нужно выжать из ядра последний бит производительности, я обычно нахожу, что замена логических операторов (&&
и ||
) на битовых операторов (&
и |
) делает ядро немного быстрее. Это наблюдалось при просмотре сводки времени ядра в CUDA Visual Profiler.
Итак, почему побитовые операторы быстрее , чем логические операторы в CUDA? Я должен признать, что они не всегда быстрее, но часто бывают. Интересно, что магия может дать это ускорение.
Отказ от ответственности: я знаю, что логические операторы короткого замыкания и побитовые операторы не делают. Я хорошо знаю, как эти операторы могут быть использованы неправильно, что приведет к неправильному коду. Я использую эту замену с осторожностью, только когда получающаяся логика остается той же самой, есть ускорение, и полученное таким образом ускорение имеет значение для меня: -)