OSDev
http://osdev.su/

Беседа о создании математической библиотеки для ЯП
http://osdev.su/viewtopic.php?f=18&t=1057
Страница 4 из 5

Автор:  Yoda [ 27 мар 2015, 14:24 ]
Заголовок сообщения:  Re: Беседа о создании математической библиотеки для ЯП

Yoda писал(а):
...отказ от плавающей арифметики означает ... возврат в каменный век...

Совсем забыл. Хочу добавить, что это не преувеличение. Компьютерное представление плавающей арифметики является всего лишь отражением привычной нам арифметики, которую мы используем на бумаге. Компьютеры здесь вообще ни при чём! В ВУЗах мы привыкли писать, что число Авогадро равно 6*10^23, студенты с более хорошей памятью напишут 6.022*10^23, специалист, для которого это более важно, вероятно, напишет шесть значащих разрядов. На просьбу написать скорость света мы напишем 3*10^8 м/с, педанты напишут 299792458 м/с. Если от скорости света вдруг потребовалось отнять 1 м/с, то дурак возьмёт калькулятор и посчитает 3*10^8-1. А физик скажет, что это – величина, очень близкая к скорости света, и здесь требуются совсем другие расчёты. Если нам потребовалось посчитать длину оградки вокруг дерева (чтобы купить нужное количество сетки), то нам вполне достаточно будет знать, что пи ~= 3.14. Но я просто не могу себе представить ситуацию, что студента математического факультета спросят, сколько будет синус от пи, а он откроет калькулятор и посчитает sin(3.14). Заметьте, что во всех приведённых случаях мы используем весьма сходную с компьютерной экспоненциальную запись с весьма ограниченной точностью, мы ни при каких условиях не можем полностью записать любое трансцедентное число, никто не знает все знаки числа пи, но это совершенно не мешает нам считать, доказывать теоремы, понимать, что синус от пи в точности равен нулю, запускать космические корабли, сталкивать частицы на околосветовой скорости и получать правильные результаты. Так что критики IEEE пусть начнут с переписывания школьных учебников, ибо корни стандарта лежат ещё там.

Автор:  Freeman [ 27 мар 2015, 15:57 ]
Заголовок сообщения:  Re: Беседа о создании математической библиотеки для ЯП

SII писал(а):
На мэйнфреймах экономические расчёты сильно упрощались наличием двоично-десятичной арифметики с числами переменной длины (до 16 байтов, т.е. до 31 десятичной цифры + знак). Поэтому в принципе не возникало проблем с точным представлением очень больших чисел вроде госдолга США :)

Да-да. Похоже, что в Oracle что-то из того же или схожего наследия. Максимальная разрядность целой части number -- number(38), то есть 10^38, поскольку разрядность и точность встроенного типа number -- десятичные. Сотовые операторы и банки, использующие Oracle, вроде не жалуются.

А по поводу производительности могу сказать, что то ли Oracle настолько медленная СУБД сама по себе, что несовершенство десятичной арифметики не видно на фоне прочих накладных расходов, то ли реализация типа number хорошо оптимизирована и не тормозит. А может оба фактора имеют место, не знаю.

Автор:  pavia [ 27 мар 2015, 20:35 ]
Заголовок сообщения:  Re: Беседа о создании математической библиотеки для ЯП

scuter писал(а):
вы чего профессора с докторскими диссертациями по математики, что ли
у вас мозгов хоть хватит, что бы такое сделать (Беседа о создании математической библиотеки для ЯП).
там единственное что может быть это пару недальновидных формулок и ничего больше.

Не переживай мозгов хватит. А вот сил и рук только если объединимся. Можешь считать что тут 2 профессора есть. Я давно создаю свою математическую библиотеку. Хотя это побочное направление, но где-то 30% от крупных библиотек есть.
По поводу украсть. Это трудно дело в том что проблему эффективности библиотекой не решить. А надо делать как в ПЛИСоводы. Они используют генераторы кода для своих нужд. Если генератор не справляется пишут свою реализацию.

Но лично я разочировался во всех форматах чисел. Поэтому даже незнаю куда лучше двигаться.

Автор:  Himik [ 27 мар 2015, 21:53 ]
Заголовок сообщения:  Re: Беседа о создании математической библиотеки для ЯП

pavia писал(а):
Но лично я разочировался во всех форматах чисел. Поэтому даже незнаю куда лучше двигаться.

Мне больше нравится подход "функции по содержанию" из функционального программирования. Вместо того, чтобы на каждом шаге программы вычислять абсолютное значение скажем числа Пи, корня из 2, или дроби 1/3, программа аккумулирует эти числа как есть (в оригинальной записи), а формула вычисляется только на конечном этапе. В алгебре такой же принцип подстановок. А технически, процессору было бы полезно уметь оперировать реальными дробными числами (не путать с плавающей/фиксированной точкой), и программистам привыкнуть вычислять всё в дробях - погрешности исчезнут сами собой. Правда потребности в сверх точности на практике и нет особо. В электронике всегда достаточно 4-5 значащих цифр с плавающей точкой (как на цифровых тестерах), в финансах 4 знака после запятой, в вероятности тоже рассчитывают до 0,001 и всё.

Автор:  Zealint [ 31 мар 2015, 20:00 ]
Заголовок сообщения:  Re: Беседа о создании математической библиотеки для ЯП

Раз дело обстоит так, то Yoda, конечно, прав: хорошо, что Intel "победила". Однако следует заметить, что я, например, не ругаю бинарный поиск за то, что его могут правильно написать только 10% программистов, и не ругаю более сложные алгоритмы, написать которые правильно сможет лишь несколько человек, но в случае ошибок при работе с плавающей арифметикой ругать хочется именно её, а не программиста.

Что касается приведённой аналогии с числами из учебника, то она не совсем подходит. Попытка переложить на компьютер, например, числа типа "корень из двух" или "синус пи на девятнадцать" приводит к трудностями, так как их можно представить только символами, то есть применить скорее функциональный подход к архитектуре, по сущности своей императивной. Когда математик работает с плавающей арифметикой, то, как правило, он работает с числами одного порядка и может произвольно управлять точностью.

Автор:  Himik [ 07 апр 2015, 13:38 ]
Заголовок сообщения:  Re: Беседа о создании математической библиотеки для ЯП

Гонка разрядности всё ещё идёт
http://www.agner.org/optimize/blog/read.php?i=288
http://wccftech.com/mainstream-intel-co ... lake-xeon/

Автор:  SII [ 08 апр 2015, 03:18 ]
Заголовок сообщения:  Re: Беседа о создании математической библиотеки для ЯП

Himik писал(а):
Гонка разрядности всё ещё идёт

Бегло глянул, но у меня впечатление, что здесь речь не об увеличении разрядности представления чисел (а соответственно, их точности), а лишь об увеличении количества элементов вектора, обрабатываемого одной векторной командой -- а это совсем другое.

Вообще, у меня впечатление, что Интел продолжает идти идиотским путём, добавляя всё новые и новые узкоспециализированные команды, которые почти никому и ничему не нужны. Если говорить про векторную составляющую современных процессоров (SIMD), то лично мне кажется, что нужны лишь два набора команд:

1) для операций с 4-компонентными векторами. Такие векторы очень широко используются, например, в трёхмерной графике, поэтому такие команды реально прямо или косвенно востребованы значительным количеством приложений;

2) для операций с векторами переменной длины. Такие команды нужны специализированному "математическому" ПО (помимо собственно математических расчётов, сюда, наверное, попадает часть инженерных задач, связанных с моделированием реальной физики и т.д. и т.п. -- но я абсолютно не специалист, поэтому ничего наверняка сказать не могу).

Интел же, вместо того, чтобы реализовать п. 2, плодит всё новые и новые команды для всё большей размерности векторов, но при этом забота об их использовании всё равно ложится на программиста (компилятор), причём с каждой новой версией SIMD (AVX -- это тот же SIMD, по большому счёту, только переименованный в рекламных целях) приходится переделывать компиляторы. А вот если бы были операции с векторами переменной длины, один и тот же двоичный код мог бы выполняться на самых разных процессорах с разной производительностью (скажем, в медленном Атоме векторы вообще обрабатывались бы покомпонентно -- т.е. на сложение двух 4-элементных векторов требовалось бы четыре такта, в то время как в каком-нибудь топовом проце-числодробилке одновременно можно было бы выполнять, скажем, 32 таких операции).

Автор:  Yoda [ 08 апр 2015, 11:38 ]
Заголовок сообщения:  Re: Беседа о создании математической библиотеки для ЯП

Абсолютно согласен, с той только разницей, что и в первом пункте нет особой необходимости. Четырёхкомпонентный вектор - частный случай вектора переменной длины.

Автор:  SII [ 08 апр 2015, 14:48 ]
Заголовок сообщения:  Re: Беседа о создании математической библиотеки для ЯП

Математически -- да. Технически -- думаю, разница всё же есть: поскольку именно этот случай встречается очень часто, в процессорах общего назначения есть смысл оптимизировать железо именно под него (в то время как "настоящие" векторные процессоры для научных расчётов должны оптимизироваться под переменную длину, причём под достаточно большую).

Автор:  Himik [ 08 апр 2015, 16:49 ]
Заголовок сообщения:  Re: Беседа о создании математической библиотеки для ЯП

Вы правы, это оказалось не расширение типа, а всего лишь расширение массива.
•The 512-bit registers can do vector operations on 32-bit and 64-bit signed and unsigned integers and single and double precision floats...

Страница 4 из 5 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/