Из Википедии, бесплатной энциклопедии
  (Перенаправлено с Posit (числовой формат) )
Перейти к навигации Перейти к поиску

Unums ( универсальные числа [1] ) - это арифметический и двоичный формат представления действительных чисел, аналогичный плавающей запятой , предложенный Джоном Л. Густафсоном в качестве альтернативы теперь повсеместной арифметике IEEE 754 . Первая версия unum, теперь официально известная как Type I unum , была представлена ​​в его книге «Конец ошибки» . [2] Густафсон с тех пор создал две новые версии формата unum, Type II и Type III , в конце 2016 года. Unum типа III также известен как posits [3] [4] [5] и valids; posits представляет арифметику для единичных действительных значений, а valids представляет версию интервальной арифметики . Этот тип данных может служить заменой поплавков IEEE 754 для программ, которые не зависят от конкретных функций IEEE 754. Подробности валидности еще не были официально сформулированы Gustafson.

Тип I и Тип II Unum [ править ]

Двумя определяющими характеристиками формата unum типа I (в то время как unum типа II отличается [6] ) являются:

  • формат хранения переменной ширины и для мантиссы и экспоненты , и
  • U-бит , который определяет , является ли UNUM соответствует точному количеству ( у  = 0), или интервал между последовательным точным unums ( у  = 1). Таким образом, числа покрывают всю расширенную прямую вещественных чисел [−∞, + ∞].

Для выполнения вычислений с форматом Густафсон предлагает использовать интервальную арифметику с парой единиц unum, которую он называет ubound , обеспечивая гарантию того, что полученный интервал содержит точное решение.

Реализации Unum были исследованы в Julia . [7] [8] [9] [10], включая unum типа II (или, по крайней мере, модифицированную версию его нового предложения). [11] Unum был исследован в MATLAB . [12] [13] Кроме того, у Роджера Стоукса есть учебная лаборатория для типа II unum на языке J.

Уильям М. Кахан и Джон Л. Густафсон обсуждали unums на конференции Arith23 . [14] [15] [16] [17]

Тип III Unum (Posit) [ править ]

В феврале 2017 года Густафсон официально представил unum type III, posits и valids. Posit [3] [4] [5] - это аппаратно-дружественная версия unum, в которой устранены трудности, с которыми сталкивался исходный тип I unum из-за его переменного размера. Положения аналогичного размера по сравнению с поплавками предлагают больший динамический диапазон и больше дробных битов для точности. В независимом исследовании Линдстром, Ллойд и Хиттингер из Ливерморской национальной лаборатории им. Лоуренса [18] подтвердили, что эти положения превосходят поплавки по точности. [ сомнительно ]Положения имеют особенно высокую точность в диапазоне, близком к единице, в котором происходит большинство вычислений. Это делает его очень привлекательным для современной тенденции в глубоком обучении минимизировать количество используемых битов. Это потенциально помогает любым приложениям достичь ускорения, позволяя использовать меньшее количество битов (поскольку у него больше дробных битов для точности), тем самым уменьшая пропускную способность сети и памяти, а также требования к питанию и приближая нас на один шаг к экзадачной шкале .

Позиции имеют индекс переменного размера и битовые поля мантиссы, причем разделение определяется индикатором «режима». Густафсон утверждает, что они обеспечивают лучшую точность, чем стандартные числа с плавающей запятой, при этом занимая меньше битов. [19] [20]

Положения имеют формат, отличный от формата чисел с плавающей запятой IEEE 754. Они состоят из четырех частей: знака, режима, показателя степени и дроби (также известной как мантисса). Для n- битной позиции режим может иметь длину от 2 до ( n  - 1). Формат режима таков, что это повторение бита одного знака и завершается битом другого знака.

Пример 1:

В примере 1 показан режим с 14 битами с одинаковым знаком (бит 0), завершающимися битом с другим знаком (бит 1). Поскольку имеется 14 битов с одинаковым знаком, продолжительность режима составляет 14.

Пример 2 показывает режим с 3 битами одного знака (бит 1), завершающимися битом другого знака (бит 0). Поскольку имеется 3 бита с одинаковым знаком, продолжительность режима составляет 3.

Биты знака, экспоненты и дроби очень похожи на IEEE 754; однако позиция может опускать один или оба из битов экспоненты и дроби, оставляя позицию, которая состоит только из битов знака и режима. В примере 3 показана максимально возможная длина выполнения режима для 16-битной позиции, где бит завершения режима, бит экспоненты и биты дроби превышают длину размера позиции. Пример 4 иллюстрирует наименьшую возможную длину выполнения 1 для 16-битной позиции с одним битом экспоненты (битовое значение = 1) и 12 дробными битами (битовое значение = 100000000001).

Рекомендуемые размеры позиций и соответствующие биты экспоненты и размеры запросов:

Примечание . Ожидается, что 32-битного posit будет достаточно для решения почти всех классов приложений [ необходима цитата ] .

Quire [ править ]

Quire - одна из самых полезных функций posit. Это особый тип данных, который дает положению «почти бесконечное» количество битов для накопления скалярных произведений. Он основан на работе Ульриха В. Кулиша и Уилларда Л. Миранкера . [21]

Реализации [ править ]

Есть несколько программных и аппаратных реализаций posit от сообщества. [18] [22] [23] [24] [25] Первый полностью параметризованный аппаратный генератор положительной арифметики был предложен в 2018 году. [26] Самая ранняя программная реализация в Julia [27] была предложена Исааком Йонемото. Также предоставляется версия C ++ [28] с поддержкой любых размеров позиций в сочетании с любым количеством битов экспоненты. Быстрая реализация на C SoftPosit [29], предоставленная исследовательской группой NGA на основе Berkeley SoftFloat, является последним дополнением к доступным программным реализациям.

SoftPosit [ править ]

SoftPosit [29] - это программная реализация позиций, основанная на Berkeley SoftFloat. [30] Это позволяет программному обеспечению сравнивать позиции и числа с плавающей запятой. В настоящее время он поддерживает

  • Добавлять
  • Вычесть
  • Умножить
  • Делить
  • Слил-умножить-сложить
  • Плавлен-точечный продукт (с quire)
  • Квадратный корень
  • Преобразование posit в целое число со знаком и без знака
  • Преобразование знакового и беззнакового целого числа в положительное
  • Преобразование позиции в другой размер позиции
  • Меньше, равно, меньше, чем равно сравнение
  • Округлить до ближайшего целого числа

Вспомогательные функции

  • преобразовать двойное значение в положительное
  • преобразовать posit в double
  • привести беззнаковое целое число к положению

для 16-битных позиций с одним битом экспоненты и 8-битных позиций с нулевым битом экспоненты. Поддержка 32-битных позиций и гибкого типа (2-32 бита с двумя битами экспоненты) ожидает проверки правильности. В настоящее время поддерживает системы x86_64. Он был протестирован на GNU gcc (SUSE Linux) 4.8.5 Apple LLVM версии 9.1.0 (clang-902.0.39.2).

Примеры :

Добавить с помощью posit8_t

#include  "softposit.h"int  main  ( int  argc ,  char  * argv []) { posit8_t  pA ,  pB ,  pZ ;  pA  =  castP8 ( 0xF2 );  рв  =  castP8 ( 0x23 ); pZ  =  p8_add ( pA ,  pB ); // Для проверки ответа, преобразовав его в двойной  двойной  DZ  =  convertP8ToDouble ( PZ );  printf ( "dZ:% .15f \ n " ,  dZ ); // Чтобы распечатать результат в двоичном формате (предупреждение:  непереносимый  код) uint8_t uiZ  =  castUI8 ( pZ );  printBinary (( uint64_t * ) & uiZ ,  8 ); возврат  0 ; }

Слитное скалярное произведение с quire16_t

// Преобразуем double в posit posit16_t  pA  =  convertDoubleToP16 ( 1.02783203125  ); posit16_t  рв  =  convertDoubleToP16 ( +0,987060546875 ); posit16_t  pC  =  convertDoubleToP16 ( 0,4998779296875 ); posit16_t  pD  =  convertDoubleToP16 ( 0,8797607421875 );quire16_t  qZ ;// Устанавливаем quire на 0 qZ  =  q16_clr ( qZ );// накапливаем продукты без округлений qZ  =  q16_fdp_add ( qZ ,  pA ,  pB ); qZ  =  q16_fdp_add ( qZ ,  pC ,  pD );// Преобразуем обратно в posit posit16_t  pZ  =  q16_to_p16 ( qZ );// Чтобы проверить ответ дважды  DZ  =  convertP16ToDouble ( рЪ );

Критика [ править ]

Уильям М. Кахан, главный разработчик IEEE 754-1985, критикует униумы типа I по следующим причинам (некоторые из них рассматриваются в стандартах типа II и типа III): [16] [31]

  • Описание unums обходных шагов с использованием исчисления для решения физических задач.
  • Unums может быть дорогостоящим с точки зрения времени и энергопотребления.
  • Каждое вычисление в пространстве unum может изменить длину структуры в битах. Это требует либо их распаковки в пространство фиксированного размера, либо выделения, освобождения и сборки мусора во время операций unum, аналогично проблемам при работе с записями переменной длины в массовом хранилище.
  • Unums предоставляет только два вида числовых исключений: тихое и сигнальное NaN (Not-a-Number).
  • Вычисление Unum может дать слишком слабые границы от выбора алгебраически правильного, но численно нестабильного алгоритма.
  • Затраты и преимущества unum по сравнению с плавающей точкой с короткой точностью для задач, требующих низкой точности, не очевидны.
  • Решение дифференциальных уравнений и вычисление интегралов с помощью unums гарантирует правильные ответы, но может быть не так быстро, как обычно работающие методы.

См. Также [ править ]

  • Карлсруэ Точная арифметика (KAA)
  • Q (числовой формат)
  • Значимые фигуры
  • Устранение ошибок с плавающей запятой
  • Гамма (γ) код Элиаса
  • Коническая плавающая точка (TFP)

Ссылки [ править ]

  1. ^ Tichy, Уолтер Ф. (апрель 2016). «Конец (числовой) ошибки: интервью с Джоном Л. Густафсоном» . Вездесущность - информация везде . Ассоциация вычислительной техники (ACM). 2016 (апрель): 1–14. DOI : 10.1145 / 2913029 . Архивировано 10 июля 2016 года . Проверено 10 июля 2016 . ДГ: Слово «unum» является сокращением от «универсального числа», так же как слово «бит» является сокращением от «двоичной цифры».
  2. ^ Густафсон, Джон Л. (04.02.2016) [05.02.2015]. Конец ошибки: Unum Computing . Чепмен и Холл / CRC Computational Science . 24 (2-е исправленное издание, 1-е изд.). CRC Press . ISBN 978-1-4822-3986-7. Проверено 30 мая 2016 . [1] [2]
  3. ^ a b Густафсон, Джон Лерой ; Йонемото, Исаак (2017). «Превосходство с плавающей точкой в ​​своей собственной игре: арифметика с положительными точками» . Границы суперкомпьютеров и инновации . Издательский центр Южно-Уральского государственного университета, Челябинск, Россия. 4 (2). DOI : 10,14529 / jsfi170206 . Архивировано 4 ноября 2017 года . Проверено 4 ноября 2017 .
  4. ^ a b Джон Л. Густафсон и И. Йонемото. (Февраль 2017) Beyond Floating Point: Компьютерная арифметика нового поколения. [В сети]. Доступно: https://www.youtube.com/watch?v=aP0Y1uAA-2Y
  5. ^ a b Густафсон, Джон Лерой (2017-10-10). "Положительная арифметика" (PDF) . Архивировано (PDF) из оригинала на 2017-11-05 . Проверено 4 ноября 2017 .
  6. ^ Tichy, Уолтер Ф. (сентябрь 2016). «Unums 2.0: Интервью с Джоном Л. Густафсоном» . Ubiquity.ACM.org . Проверено 30 января 2017 . Я начал называть их «unums 2.0», что казалось таким же хорошим названием для концепции, как и любое другое, но на самом деле это не столько «последний выпуск», сколько альтернатива.
  7. ^ Бирн, Саймон (2016-03-29). «Внедрение Unums в Julia» . Проверено 30 мая 2016 .
  8. ^ "Unum арифметика в Юлии: Unums.jl" . Проверено 30 мая 2016 .
  9. ^ "Джулия Реализация Unums: README" . Проверено 30 мая 2016 .
  10. ^ «Unum (универсальное число) типы и операции: Unums» . Проверено 30 мая 2016 .
  11. ^ "jwmerrill / Pnums.jl" . Github.com . Проверено 30 января 2017 .
  12. ^ Инголе, Дипак; Квасница, Михал; Де Сильва, Химэши; Густафсон, Джон Л. «Уменьшение следов памяти при явном прогнозировании модели управления с использованием универсальных чисел. Представлено на Всемирный конгресс МФБ в 2017 году» . Проверено 15 ноября 2016 .
  13. ^ Инголе, Дипак; Квасница, Михал; Де Сильва, Химэши; Густафсон, Джон Л. "MATLAB Prototype of unum (munum)" . Проверено 15 ноября 2016 .
  14. ^ «Программа: Специальная сессия: Великие дебаты: Джон Густафсон и Уильям Кахан» . Arith23 : 23-й симпозиум IEEE по компьютерной арифметике . Кремниевая долина, США. 2016-07-12. Архивировано 30 мая 2016 года . Проверено 30 мая 2016 .
  15. ^ Густафсон, Джон Л .; Кахан, Уильям М. (2016-07-12). Великие дебаты @ ARITH23: Джон Густафсон и Уильям Кахан (1:34:41) (видео) . Проверено 20 июля 2016 .
  16. ^ a b Кахан, Уильям М. (16.07.2016) [12.07.2016]. «Критика книги Джона Л. Густафсона« КОНЕЦ ОШИБКИ - Unum Computing » и его радикальный подход к вычислениям с действительными числами » (PDF) . Санта-Клара, Калифорния, США: Симпозиум IEEE по компьютерной арифметике , ARITH 23 . Архивировано (PDF) из оригинала 25.07.2016 . Проверено 25 июля 2016 . [3]
  17. ^ Густафсон, Джон Л. (2016-07-12). " " Великие дебаты ": документ с изложением позиции Unum по арифметике" (PDF) . Санта-Клара, Калифорния, США: Симпозиум IEEE по компьютерной арифметике , ARITH 23 . Проверено 20 июля 2016 . [4]
  18. ^ a b П. Линдстром, С. Ллойд и Дж. Хиттингер, «Универсальное кодирование вещественных чисел: альтернативы IEEE с плавающей запятой». На конференции по арифметике следующего поколения. ACM, 2018.
  19. ^ Фельдман, Майкл (2019-07-08). «Новый подход может снизить вычисления с плавающей запятой» . www.nextplatform.com . Проверено 9 июля 2019 .
  20. ^ Бирн, Майкл (2016-04-24). «Новый числовой формат для компьютеров может навсегда избавиться от ошибок аппроксимации» . Vice . Проверено 9 июля 2019 .
  21. ^ Кулиш, Ульрих В .; Миранкер, Уиллард Л. (март 1986 г.). «Арифметика цифрового компьютера: новый подход». SIAM Rev. SIAM . 28 (1): 1–40. DOI : 10.1137 / 1028001 .
  22. ^ С. Чанг, «Доказуемо правильная арифметика положительных чисел с большим целым числом с фиксированной точкой». ACM, 2018.
  23. ^ Дж. Чен, З. Аль-Арс и Х. Хофсти, «Блок умножения матриц для позиций в реконфигурируемой логике с использованием (открытого) CAPI». ACM, 2018.
  24. ^ Z. Lehoczky, A. Szabo и B. Farkas, «Высокоуровневые программные реализации .NET Unum Type I и Posit с одновременной реализацией FPGA с использованием Hastlayer». ACM, 2018.
  25. ^ С. Лангроуди, Т. Пандит и Д. Кудитипуди, "Вывод глубокого обучения на встроенных устройствах: фиксированная точка против позиции". В книге «Машинное обучение энергоэффективности и когнитивные вычисления для встроенных приложений» (EMC), 2018 г. [Online]. Доступно: https://sites.google.com/view/asplos-emc2/program
  26. ^ [Рохит Чаурасия, Джон Густафсон, Рахул Шреста, Джонатан Нойдорфер, Сангит Намбьяр, Каустав Нийоги, Фархад Мерчант, Райнер Луперс, « Аппаратный генератор параметризованной арифметической арифметики». ICCD 2018: 334-341.
  27. ^ "GitHub - ityonemo / Unum2: Pivot Unums" . 2019-04-29.
  28. ^ "GitHub - stillwater-sc / Universal: универсальная арифметика чисел" . 2019-06-16.
  29. ^ a b "Cerlane Leong / SoftPosit" .
  30. ^ "Беркли SoftFloat" .
  31. ^ Кахан, Уильям М. (2016-07-15). «Комментарий профессора В. Кахана к« КОНЦУ ОШИБКИ - Unum Computing »Джона Л. Густафсона, (2015) CRC Press» (PDF) . Архивировано (PDF) из оригинала на 2016-08-01 . Проверено 1 августа 2016 .

Дальнейшее чтение [ править ]

  • Густафсон, Джон Л. (март 2013 г.). «Точность правильного размера: неограниченные вычисления: необходимость обеспечения точности правильного размера для экономии энергии, пропускной способности, хранилища и электроэнергии» (PDF) . Архивировано (PDF) из оригинала 06.06.2016 . Проверено 6 июня 2016 .
  • Брюкнер, Рич (2015-03-02). «Слайдкаст: Джон Густафсон объясняет энергоэффективные универсальные вычисления» . Богатый отчет . Внутри HPC. Архивировано 10 июля 2016 года . Проверено 10 июня 2016 .
  • Густафсон, Джон Л. (2015). «Конец числовой ошибки» (PDF) . Архивировано (PDF) из оригинала 06.06.2016 . Проверено 6 июня 2016 .
  • Густафсон, Джон Л. (2016-06-03) [2016-02-22]. «Радикальный подход к вычислениям с действительными числами - Unums версии 2.0» (PPT). Архивировано 10 июля 2016 года . Проверено 10 июля 2016 .(NB. PDF-файлы поставляются без примечаний: [5] [6] )
  • Густафсон, Джон Л. (2016-06-06). «Энергоэффективный и массово-параллельный подход к действительным числам» (PPT). OCRAR семинар. Архивировано 10 июля 2016 года . Проверено 10 июля 2016 . [7] [8]
  • Густафсон, Джон Л. (2016). «Радикальный подход к вычислениям с действительными числами» (PDF) . SuperFri.org. Архивировано (PDF) из оригинала 10.07.2016 . Проверено 10 июля 2016 .
  • Кулиш, Ульрих В. (2015). «Современная интервальная арифметика от закрытых интервалов до связанных наборов действительных чисел» (PDF) (препринт). Institut für Angewandte und Numerische Mathematik - Технологический институт Карлсруэ (KIT), Германия. ID 15/02. Архивировано (PDF) из оригинала на 2016-07-12 . Проверено 12 июля 2016 .
  • Рис, Томас (2016-03-10). «Unum - целесообразное расширение IEEE 754» (PDF) (презентация). Лондонский университет Саут-Бэнк (LSBU), Великобритания: Институт информатики и автоматизации (IIA), факультет EEE & CS, Бременский университет прикладных наук , Германия. Архивировано (PDF) из оригинала на 2016-07-12 . Проверено 12 июля 2016 .
  • Кахан, Уильям М. (15.07.2016). "Комментарии профессора В. Кахана к арифметике SORN" (PDF) . Архивировано (PDF) из оригинала на 2016-08-01 . Проверено 1 августа 2016 .
  • Хунхолд, Ласло (2016-11-08). Формат чисел Unum: математические основы, реализация и сравнение с числами с плавающей запятой IEEE 754 (PDF) (дипломная работа). Universität zu Köln , Mathematisches Institut. arXiv : 1701.00722v1 . Архивировано (PDF) из оригинала 07.01.2017 . Проверено 23 октября 2016 .
  • Стербенз, Пэт Х. (1974-05-01). Вычисление с плавающей точкой . Серия Прентис-Холла в автоматических вычислениях (1-е изд.). Энглвуд Клиффс, Нью-Джерси, США: Прентис Холл . ISBN 0-13-322495-3.
  • Пещера, Скип (2016-08-17). «Реализация языка программирования J 3-битных, 4-битных, 8-битных и 16-битных единиц точности» . Проверено 3 мая 2017 .(Ссылка для скачивания Роджера Стоукса: http://www.learningj.com/unumslab.zip )
  • Инголе, Дипак (28.09.2017). Встроенная реализация явного прогнозного управления моделью (кандидатская диссертация). Словацкий технологический университет в Братиславе , Словакия.

Внешние ссылки [ править ]

  • «Конференция по арифметике нового поколения (CoNGA)» . 2017. Архивировано 4 ноября 2017 года . Проверено 4 ноября 2017 .
  • «СофтПозит» . 2018 . Проверено 13 июня 2018 .
  • «Вклад исходного кода сообщества» . 2018 . Проверено 13 июня 2018 .
  • «Анатомия положительного числа» . 2018-04-11 . Проверено 9 августа 2019 .