Я делаю вычисления в Cuda, используя float
s. Поскольку у нас недостаточно памяти на графическом процессоре, мы храним необработанные данные как uint16_t
и int16_t
на графическом процессоре. Таким образом, прежде чем использовать эти данные, я должен преобразовать их в float
s. Количество int
не так уж велико (примерно 12k uint16_t
и столько же int16_t
). Профилирование показало, что преобразование чисел занимает значительное время (около 5-10%). Остальные расчеты не могут быть оптимизированы больше. Таким образом, мои 3+1 вопросы таковы:
- Каков самый быстрый способ конвертировать
int
s вfloat
s. - Есть ли существенная разница при преобразовании
int16_t
илиuint16_t
. - Есть ли существенная разница при преобразовании больших типов
int
, например.int32
илиint64
. - Почему все вопросы на SO касаются преобразования
float
s вint
s. Это то, что обычно не делают?