К книге
Виртуальный ты. Как создание цифровых близнецов изменит будущее человечестваГлава 2 За бэконовскими муравьями, пауками и пчелами. Флопсы
26%
Глава 2 За бэконовскими муравьями, пауками и пчелами. Флопсы
25

Текущие усилия по моделированию виртуального человека опираются на обычные или классические компьютеры, в которых математические операции (сложение, вычитание и т. д.) выполняются над строками из единиц и нулей ограниченной длины. Они известны как числа с плавающей запятой. Все они являются рациональными числами, гибкими (отсюда и «плавающая запятая»), и были разработаны, чтобы позволить компьютерам манипулировать числами совершенно разных масштабов, от размаха спиральной галактики на сотни тысяч световых лет до человеческого роста и размера клеточных ионных каналов в несколько нанометров в поперечнике. Хотя разница или ошибка в измерении размера галактики в несколько миллиардных долей метра не так важна, она может иметь огромное значение, когда дело касается молекул жизни.

Эти гибкие числа с плавающей запятой состоят из трех частей: цифры, известные как мантисса; порядок – показатель степени, показывающий, где находится запятая; и знаковый бит, который равен 0 для положительного числа и 1 – для отрицательного. В компьютере они выражаются в двоичном формате, так что мантисса состоит из 23 бит, порядок – из 8 бит, плюс знаковый бит (рис. 11). Большинство современных компьютеров используют «числа с плавающей запятой одинарной точности IEEE», которые относятся к техническому стандарту, установленному Институтом инженеров по электротехнике и электронике в 1950-х гг. Именно поэтому мощность компьютера измеряется во флопсах, что означает количество операций с плавающей запятой в секунду.

Рисунок 11. Числа с плавающей запятой одинарной и двойной точности

Хотя числа с плавающей запятой состоят в общей сложности из 32 битов и дают число 232 (всего около четырех миллиардов), существуют также числа двойной точности, которые манипулируют 64 битами и предлагают гораздо больше чисел: 264. Существуют еще более высокие уровни точности, а также числа половинной точности (всего 16 бит), которые стали популярными в машинном обучении для преодоления ограничений памяти и повышения скорости.

Поскольку компьютеры полагаются на арифметику с плавающей запятой, существующую уже несколько десятилетий, они крайне неэффективны. Джон Густафсон из Национального университета Сингапура/A*STAR любит шутить, что числа с плавающей запятой IEEE – это «орудие разрушения математики»[107]. Он отмечает, что, если организовать свой рабочий день так, как это делает компьютер, который требует непропорционально много усилий для перемещения данных, вы бы ехали на работу четыре часа, работали пять минут, а затем тратили еще четыре часа на дорогу домой. Как следствие, на сложение 64-битных чисел расходуется 0,2 миллиардных джоуля энергии, а на чтение 64 бит из памяти – 12 миллиардных долей джоуля.

Чтобы преодолеть эту «стену памяти» и перемещать только значимые данные, Густафсон разработал универсальный формат чисел – unum, – который дает более точные ответы, чем арифметика с плавающей запятой, но зачастую использует меньше битов, экономя память, пропускную способность, энергию и мощность[108]. Густафсон также предложил аппаратную версию unum, являющуюся развитием формата чисел с плавающей запятой, называемую posits: «Если алгоритм выдержал испытание временем как стабильный и „достаточно хороший“ с использованием чисел с плавающей запятой, то с позитами он будет работать еще лучше».

Однако на данный момент компьютеры ограничены набором рациональных чисел с плавающей запятой. Как это ограничивает нашу способность моделировать мир?

Предыдущая главаГлава 25 из 98Следующая глава