Спецификация OpenCL гарантирует, что double
будет 64-битным, и что вы можете переосмыслить его, используя as_long()
или объединение, чтобы получить long
, что составляет 64 бита.
Правильно интерпретировать 64-битный скаляр в нечто вроде char[8]
или char8
(используя объединение и as_char8()
соответственно), но результат определяется реализацией. Могут происходить такие вещи, как преобразование в порядок байтов, поэтому вам, возможно, придется остерегаться, если ваш GPU ведет себя иначе, чем ваш CPU в этом отношении.
Единственный переносимый способ выполнения битовых манипуляций на double
состоит в использовании побитовых операторов в 64-битном скалярном целочисленном типе, что означает long
или ulong
.