Что является значением numeric_limits <дважды>:: digits10

Кроме того, что все остальные говорили в комментариях, согласно автору реализации RPCL OpenCL, «скорость доступа к памяти» для GPU (копия памяти CPU-GPU?) Намного медленнее, чем для CPU. Таким образом, «арифметически легкое» ядро, такое как сумма массива, будет ограничено пропускной способностью памяти и может быть намного медленнее, чем на процессоре. Плюс теоретические GFlops для GPU не намного выше, чем у GPU (24 против 6).

Если у вас нет очень вычислительно тяжёлых ядер, которые также могут быть полностью векторизованы, вы можете обнаружить, что использование GPU просто не стоит.

15
задан jpalecek 14 April 2009 в 13:34
поделиться

3 ответа

numeric_limits :: digits10 - это количество десятичных цифр, которые можно хранить без потерь.

Для пример numeric_limits :: digits10 равен 2. Это означает, что беззнаковый char может содержать 0..99 без потерь. Если бы было 3, оно могло бы содержать 0..999, но, как мы все знаем, оно может содержать только 0..255.

Эта страница руководства имеет пример для чисел с плавающей запятой, который (при сокращении) показывает, что

cout << numeric_limits<float>::digits10 <<endl;
float f = (float)99999999; // 8 digits
cout.precision ( 10 );
cout << "The float is; " << f << endl;

печатает

6
The float is; 100000000
17
ответ дан 1 December 2019 в 01:11
поделиться

«53» - это битовая ширина значения и значения , которое содержит ваш тип (double) , '15' - это число десятичных цифр, которое можно безопасно представить с такой точностью.

6
ответ дан 1 December 2019 в 01:11
поделиться

numeric_limits :: digits10 указывает количество десятичных цифр слева от десятичной точки, которое вы можете представить без потери точность. Каждый тип будет иметь различное количество представимых десятичных значений.

7
ответ дан 1 December 2019 в 01:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: