LINUX.ORG.RU

Релиз 4.3.0 библиотеки GMP - GNU Multiple Precision Arithmetic Library

 ,


0

0

GMP - библиотека для высокоточных вычислений. Ключевые свойства:

  • поддержка целых чисел неограниченного размера (около 140 арифметических и логических функций)
  • поддержка рациональных чисел неограниченного размера (около 35 функций, плюс можно применять функции для целых по отдельности к числителю и к знаменателю)
  • поддержка действительных чисел произвольной точности (около 65 функций)
  • быстро работает как с большими, так и с не очень большими операндами
  • асимптотически быстрые алгоритмы
  • ассемблерный код для многих архитектур
  • интерфейс для языков Си и C++
  • совместимость с BSD MP

В данной версии значительно улучшен ассемблерный код для x86-64, улучшена работа на Alpha, PowerPC и Itanium, имеется ряд алгоритмических улучшений.

В число пользователей GMP, помимо перечисленных на странице проекта, входят компилятор GCC и известный коммерческий пакет Wolfram Mathematica.

>>> Подробности

★★★★★

Проверено: hibou ()
Последнее время много раз замечал, что ассемблерный код отнюдь не всегда быстрее того, что нагенерил компилятор. GCC же ж не совсем тупой, и порой может весьма залихватски циклы разворачивать, нашинковав их разными процессорно-специфичными операциями.
shutty ★
()
Ответ на: комментарий от Manhunt
> Блин, метки поставить забыл :(

В таком случае нужно не забывать писать какие именно забыл :)
shahid ★★★★★
()
Ответ на: комментарий от shutty
все правильно, в первую очередь-то на скорость влияет алгоритм. А развернуть цикл, убрать неиспользуемые переменные, пред вычислить что-то на этапе компиляции, запихнуть переменные в регистр - GCC умеет может и лучше человека... к тому же процессорно-специфичные операции он точно знает лучше.
programmist ★
()
Ответ на: комментарий от programmist
> А развернуть цикл, убрать неиспользуемые переменные, пред вычислить что-то на этапе компиляции, запихнуть переменные в регистр - GCC умеет может и лучше человека...

Смотря какой цикл, и смотря какого человека. По моим наблюдениям, gcc бывает весьма далек от совершенства.

Manhunt ★★★★★
() автор топика
Ответ на: комментарий от Sylvia
> GCC станет быстрее ?

Если и станет, то незначительно. бОльшую часть своего времени gcc проводит отнюдь не в процедурах gmp. На результаты компиляции это тем более влиять не должно.

Manhunt ★★★★★
() автор топика
Ответ на: комментарий от Manhunt
про результаты компиляции понятно,
но уж больно GCC 4.4.x завязан на

GMP+MPFR+ добавились еще и PPL+CLOOG
Sylvia ★★★★★
()
checking how to link with libgmp... /var/tmp/lib/libgmp.a
checking how to link with libgmpxx... /var/tmp/lib/libgmpxx.a /var/tmp/lib/libgmp.a
checking for the GMP library version 4.1.3 or above... no
configure: error: Cannot find GMP version 4.1.3 or higher.


PPL кстати новая libgmp не нравится )

configure:13421: ./conftest
Floating point exception

причем вот.. так
Sylvia ★★★★★
()
Ответ на: комментарий от shutty
> Последнее время много раз замечал, что ассемблерный код отнюдь не всегда быстрее того, что нагенерил компилятор. GCC же ж не совсем тупой, и порой может весьма залихватски циклы разворачивать, нашинковав их разными процессорно-специфичными операциями.

Когда работаешь с очень большими числами и это главная задача программы - там очень полезны cpu-специфичные вещи.

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

skwish ★★
()
Ответ на: комментарий от programmist
> запихнуть переменные в регистр - GCC умеет может и лучше человека...

В какой регистр залезет целое десятичное число в 120 знаков? А если 2 таких числа умножить?

skwish ★★
()
Блин, а я подумал причем тут генеральный медицинский стандарт...
DNA_Seq ★★☆☆☆
()
Ответ на: комментарий от Sylvia

станет ли GCC быстрее?

сборка кода gmp 4.3.0 C и С++
-O3 -fomit-frame-pointer -march=core2 -ftree-vectorize -mfpmath=sse -mmmx -mssse3

gcc 4.4.0 20090412 / gmp 4.2.4 / mpfr 2.4.1 /ppl 0.10 /cloog 0.15
real 1m49.190s
user 1m18.575s
sys 0m27.142s

gcc 4.4.0 20090415 / gmp 4.3.0 / mpfr 2.4.1 / ppl 0.10.1 / cloog 0.15.3

real 1m50.317s
user 1m18.572s
sys 0m26.395s


ну вообщем понятно ^_^
Sylvia ★★★★★
()
Ответ на: комментарий от Reset
отрицательный результат - тоже результат )

В данном случае никакого ускорения за счет GMP не получилось и наверняка в сборке других пакетов общего плана и не будет
Sylvia ★★★★★
()
Ответ на: комментарий от Reset
Юзертайм по сути совпал. Тест говорит о том, что gcc не ускорился и не замедлился - как и ожидалось.
Manhunt ★★★★★
() автор топика
Ответ на: комментарий от skwish
(запихнуть переменные в регистр) != (запихнуть все переменные в регистр)
programmist ★
()
Ответ на: комментарий от Tu3eK
> проблема в том, что некоторые возомнившие себя крутыми ассемблеристами личности думают иначе.

Разве они все не вымерили ещё?

sv75 ★★★★★
()
Ответ на: комментарий от Tu3eK
> проблема в том, что некоторые возомнившие себя крутыми ассемблеристами личности думают иначе.

"крутой ассемблерист" пишущий на ассемблере x86 - помесь мазохиста с Наполеоном. Не бывает.

ubber ★
()
Ответ на: комментарий от shutty
>Последнее время много раз замечал, что ассемблерный код отнюдь не всегда быстрее того, что нагенерил компилятор. GCC же ж не совсем тупой, и порой может весьма залихватски циклы разворачивать, нашинковав их разными процессорно-специфичными операциями.

Навряд ли это относится к GMP - его ой как навряд ли идиоты писали, или будут конкретные цифры по GMP+asm vs GMP+c?

anonymouze
()
Ответ на: комментарий от sv75
>Разве они все не вымерили ещё?

Нет. Рядом второй сидит.

wyldrodney ☆
()
Значит ли это, что санктъпетербургские физики таки смогут моделировать ядерные взрывы на недавно подаренных SUN кластерах? Грили что аппаратной точности не хватает, дык вот вам программная эмуляция. Даже если в 10 раз медленнее, то особой разницы нет - 3 дня процесс считать или месяц.
xintrea ★
()
Ответ на: комментарий от xintrea
> Значит ли это, что санктъпетербургские физики таки смогут моделировать ядерные взрывы на недавно подаренных SUN кластерах?

Нет. GMP сто лет в обед, если они про неё раньше не знали -- то им оно либо не поможет, либо бесполезно.

sv75 ★★★★★
()
Вы не можете добавлять комментарии в эту тему: топик перемещен в архив.