2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Установка pari/gp в linux в подсистеме windows linux subsyst
Сообщение27.11.2019, 14:53 
Имеется Windows 10
В ней включаю (доустанавливаю) Windows Linux Subsystem
Дальше иду в магазин Microsoft и оттуда устанавливаю Ubuntu 18.04 LTS
Появляется консольное приложение (собсно Ubuntu) которое работает и вроде всё норм.
Далее хочу установить pari-gp (хотел сравнить скорость "родного" pari-gp для windows (как я понимаю это обёртка, кнтейнер или как оно там) и вот такого.
Набираю apt search pari-gp
Код:
apt search pari-gp
Sorting... Done
Full Text Search... Done
pari-gp/bionic 2.9.4-1 amd64
  PARI/GP Computer Algebra System binaries

pari-gp2c/bionic 0.0.10pl1-1 amd64
  PARI/GP GP to C compiler

затем набираю sudo apt install pari-gp и понимаю, что оно хочет установить миллион ненужного мне:
код: [ скачать ] [ спрятать ]
  1. Reading package lists... Done 
  2. Building dependency tree 
  3. Reading state information... Done 
  4. The following additional packages will be installed: 
  5.   cpp cpp-7 fontconfig-config fonts-dejavu-core fonts-droid-fallback fonts-lmodern fonts-noto-mono gcc-7-base 
  6.   libauthen-sasl-perl libavahi-client3 libavahi-common-data libavahi-common3 libcairo2 libcups2 libcupsfilters1 
  7.   libcupsimage2 libdata-dump-perl libdrm-amdgpu1 libdrm-intel1 libdrm-nouveau2 libdrm-radeon1 libencode-locale-perl 
  8.   libfile-basedir-perl libfile-desktopentry-perl libfile-listing-perl libfile-mimeinfo-perl libfont-afm-perl 
  9.   libfontconfig1 libfontenc1 libfreetype6 libgl1 libgl1-mesa-dri libgl1-mesa-glx libglapi-mesa libglvnd0 libglx-mesa0 
  10.   libglx0 libgraphite2-3 libgs9 libgs9-common libharfbuzz-icu0 libharfbuzz0b libhtml-form-perl libhtml-format-perl 
  11.   libhtml-parser-perl libhtml-tagset-perl libhtml-tree-perl libhttp-cookies-perl libhttp-daemon-perl libhttp-date-perl 
  12.   libhttp-message-perl libhttp-negotiate-perl libice6 libijs-0.35 libio-html-perl libio-socket-ssl-perl 
  13.   libipc-system-simple-perl libisl19 libjbig0 libjbig2dec0 libjpeg-turbo8 libjpeg8 libkpathsea6 liblcms2-2 libllvm8 
  14.   liblwp-mediatypes-perl liblwp-protocol-https-perl libmailtools-perl libmpc3 libnet-dbus-perl libnet-http-perl 
  15.   libnet-smtp-ssl-perl libnet-ssleay-perl libnspr4 libnss3 libpaper-utils libpaper1 libpciaccess0 libpixman-1-0 
  16.   libpoppler73 libpotrace0 libptexenc1 libsensors4 libsm6 libsynctex1 libtexlua52 libtexluajit2 libtie-ixhash-perl 
  17.   libtiff5 libtimedate-perl libtry-tiny-perl liburi-perl libwww-perl libwww-robotrules-perl libx11-protocol-perl 
  18.   libx11-xcb1 libxaw7 libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0 libxcb-present0 libxcb-render0 libxcb-shape0 libxcb-shm0 
  19.   libxcb-sync1 libxcomposite1 libxcursor1 libxdamage1 libxfixes3 libxft2 libxi6 libxinerama1 libxml-parser-perl 
  20.   libxml-twig-perl libxml-xpathengine-perl libxmu6 libxpm4 libxrandr2 libxrender1 libxshmfence1 libxt6 libxtst6 libxv1 
  21.   libxxf86dga1 libxxf86vm1 libzzip-0-13 lmodern pari-doc pari-elldata pari-galdata pari-seadata perl-openssl-defaults 
  22.   poppler-data t1utils tex-common texlive-base texlive-binaries x11-common x11-utils x11-xserver-utils xdg-utils 
  23. Suggested packages: 
  24.   cpp-doc gcc-7-locales fonts-noto libdigest-hmac-perl libgssapi-perl cups-common liblcms2-utils libcrypt-ssleay-perl 
  25.   lm-sensors libauthen-ntlm-perl libunicode-map8-perl libunicode-string-perl xml-twig-tools pari-gp2c pari-galpol 
  26.   poppler-utils ghostscript fonts-japanese-mincho | fonts-ipafont-mincho fonts-japanese-gothic | fonts-ipafont-gothic 
  27.   fonts-arphic-ukai fonts-arphic-uming fonts-nanum debhelper gv | postscript-viewer perl-tk xpdf-reader | pdf-viewer 
  28.   mesa-utils nickle cairo-5c xorg-docs-core 
  29. The following NEW packages will be installed: 
  30.   cpp cpp-7 fontconfig-config fonts-dejavu-core fonts-droid-fallback fonts-lmodern fonts-noto-mono gcc-7-base 
  31.   libauthen-sasl-perl libavahi-client3 libavahi-common-data libavahi-common3 libcairo2 libcups2 libcupsfilters1 
  32.   libcupsimage2 libdata-dump-perl libdrm-amdgpu1 libdrm-intel1 libdrm-nouveau2 libdrm-radeon1 libencode-locale-perl 
  33.   libfile-basedir-perl libfile-desktopentry-perl libfile-listing-perl libfile-mimeinfo-perl libfont-afm-perl 
  34.   libfontconfig1 libfontenc1 libfreetype6 libgl1 libgl1-mesa-dri libgl1-mesa-glx libglapi-mesa libglvnd0 libglx-mesa0 
  35.   libglx0 libgraphite2-3 libgs9 libgs9-common libharfbuzz-icu0 libharfbuzz0b libhtml-form-perl libhtml-format-perl 
  36.   libhtml-parser-perl libhtml-tagset-perl libhtml-tree-perl libhttp-cookies-perl libhttp-daemon-perl libhttp-date-perl 
  37.   libhttp-message-perl libhttp-negotiate-perl libice6 libijs-0.35 libio-html-perl libio-socket-ssl-perl 
  38.   libipc-system-simple-perl libisl19 libjbig0 libjbig2dec0 libjpeg-turbo8 libjpeg8 libkpathsea6 liblcms2-2 libllvm8 
  39.   liblwp-mediatypes-perl liblwp-protocol-https-perl libmailtools-perl libmpc3 libnet-dbus-perl libnet-http-perl 
  40.   libnet-smtp-ssl-perl libnet-ssleay-perl libnspr4 libnss3 libpaper-utils libpaper1 libpciaccess0 libpixman-1-0 
  41.   libpoppler73 libpotrace0 libptexenc1 libsensors4 libsm6 libsynctex1 libtexlua52 libtexluajit2 libtie-ixhash-perl 
  42.   libtiff5 libtimedate-perl libtry-tiny-perl liburi-perl libwww-perl libwww-robotrules-perl libx11-protocol-perl 
  43.   libx11-xcb1 libxaw7 libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0 libxcb-present0 libxcb-render0 libxcb-shape0 libxcb-shm0 
  44.   libxcb-sync1 libxcomposite1 libxcursor1 libxdamage1 libxfixes3 libxft2 libxi6 libxinerama1 libxml-parser-perl 
  45.   libxml-twig-perl libxml-xpathengine-perl libxmu6 libxpm4 libxrandr2 libxrender1 libxshmfence1 libxt6 libxtst6 libxv1 
  46.   libxxf86dga1 libxxf86vm1 libzzip-0-13 lmodern pari-doc pari-elldata pari-galdata pari-gp pari-seadata 
  47.   perl-openssl-defaults poppler-data t1utils tex-common texlive-base texlive-binaries x11-common x11-utils 
  48.   x11-xserver-utils xdg-utils 
  49. 0 upgraded, 142 newly installed, 0 to remove and 8 not upgraded. 
  50. Need to get 165 MB of archives. 
  51. After this operation, 564 MB of additional disk space will be used. 
  52. Do you want to continue? [Y/n] n 
  53. Abort. 

Во-первых, находится старая версия 2.9 хотя текущая 2.11
Ну это ладно -- я научился редактировать список источников и добавил источник с текущими версиями.
Но вот это вот всё перечисленное, 564 мегабайта дополнительного софта -- оно правда мне надо?

Вопрос -- как установить только pari-gp, только консольную часть (не будет работать draw, конвертер tex - да и фиг с ними) без вот этого всего, и без ненужных мне 160 мегабайтов предвычисленных данных по эллиптическим кривым и т.п.?

 
 
 
 Re: Установка pari/gp в linux в подсистеме windows linux subsyst
Сообщение27.11.2019, 16:57 
Есть три варианта действий:
1. Правильный: пересобрать все нужное из исходников, отключив ненужные возможности и тем самым избавившись от части зависимостей. Результат будет, но очень не скоро.
2. Рискованный: либо принудительно отключить подгрузку пакетов по зависимостям (не стоит - почти наверняка работать не будет), либо после установки удалить насильно то, что кажется лишним. Результат непредсказуем.
3. Разумный: подумать, стоят ли объемная работа в результате п.1 или непредсказуемые глюки в результате п.2 дешевле, чем жалкие полгигабайта на диске.

 
 
 
 Re: Установка pari/gp в linux в подсистеме windows linux subsyst
Сообщение27.11.2019, 17:18 
gp2c подразумевает наличие в системе компилятора gcc и всего что с ним связано, а это действительно не маленький наборчик софта либ и сорцов. Что-то сомневаюсь, что в Windows Linux Subsystem удастся всё это корректно развернуть и настроить. Оно скорее для уже собранных бинарников без сложных зависимостей.

В Линуксе настоящем делал так. Сначала скачивал исходники gmp - важная зависимая либа. Распаковывал её в любую временную папку, из неё запускал последовательно configure, make, make install. Распаковывал исходники pari/gp и запускал Configure --with-gmp, make gp, make install. Распаковывал исходники gp2c и запускал configure, make, make install. Если всё прошло без ошибок, то gp2c должен корректно работать, т.е. компилировать gp-файл в бинарник и сразу его запускать на выполнение.

Виндовый gp.exe и линиксовый бинарник gp сопоставимы по скорости вычислений. Но gp2c иногда ускоряет вычисления в разы.

 
 
 
 Re: Установка pari/gp в linux в подсистеме windows linux subsyst
Сообщение27.11.2019, 17:20 
Могут быть не совсем тривиальные зависимости, например отключив что-то там про эллиптические кривые можно попасть на неработающие функции с простыми числами или факторизацией. В самом-самом лучшем случае - работающие, но заметно медленнее.

 
 
 
 Re: Установка pari/gp в linux в подсистеме windows linux subsyst
Сообщение27.11.2019, 17:47 
Pphantom в сообщении #1427959 писал(а):
1. Правильный: пересобрать все нужное из исходников, отключив ненужные возможности и тем самым избавившись от части зависимостей. Результат будет, но очень не скоро.

Пока пошёл этим путём. Пришлось установить 150 мегабайт чего-то для компиляции по месту (sudo apt-get install build-essentials). Хотя я думал, что в линуксах, готовых вот типа убунты, это всегда есть.
dmd в сообщении #1427962 писал(а):
gp2c подразумевает наличие в системе компилятора gcc и всего что с ним связано,
Не, это я пока не собирался ставить. Только интерпретатор. Там разные пакеты, собсно pari-gp и gp2c.
dmd в сообщении #1427962 писал(а):
Сначала скачивал исходники gmp- важная зависимая либа.
Да, её и readline установил.
dmd в сообщении #1427962 писал(а):
Виндовый gp.exe и линиксовый бинарник gp сопоставимы по скорости вычислений.
Вот я и хотел посмотреть. Просто из интереса. Дело в том, что у меня pari-gp есть ещё на планшете, так вот там есть и андроид-приложение. Я же собирал pari-gp из исходников (на планшете, да. в терминале termux). И потом сравнивал. Оказалось, что в терминале заметно быстрее работает. Не знаю почему. Может как раз тогда был какой-то неудачный build андроидного приложения, может ещё что...

-- 27.11.2019, 17:52 --

Dmitriy40 в сообщении #1427963 писал(а):
Могут быть не совсем тривиальные зависимости, например отключив что-то там про эллиптические кривые можно попасть на неработающие функции с простыми числами или факторизацией. В самом-самом лучшем случае - работающие, но заметно медленнее.

Ну вроде не должно. Но -- отключать уже не стал, пусть будет...

При компиляции, кстати, для Configure есть опция --tune которая что-то там оптимизирует в настройках конкретно под машину на которой будет работать код, и обещают до 10% увеличения производительности ( https://pari.math.u-bordeaux.fr/pub/par ... NSTALL.pdf ).

 
 
 
 Re: Установка pari/gp в linux в подсистеме windows linux subsyst
Сообщение27.11.2019, 18:53 
Короче, всё собралось, работает.

Программа (A003401) for(n=1, 10^8, my(t=eulerphi(n)); if(t/2^valuation(t, 2)==1, print1(n, ", ")));
печатает какие правильные многоугольники (до количества сторон $10^8$) можно построить циркулем и линейкой (теорема Гаусса-Ванцеля)
Windows: 3min, 30,187 ms.
Windows Linux Subsystem: 3min, 38,703 ms.

Поодиночке едят 30% CPU каждая, впараллель едят 60% CPU на двоих, работают (параллельно обе) теже 4 минуты (windows: 4min, 1,094 ms.; linux: 4min, 8,172 ms.)
Изображение

То есть - одинаково. :mrgreen:

 
 
 
 Re: Установка pari/gp в linux в подсистеме windows linux subsyst
Сообщение29.11.2019, 21:00 
Тоже попробовал потестить в виртуалке. gp2c выигрывает 16 секунд, не в разы конечно, но всё равно не плохо. Единственно что не понял, gp никакого выделения памяти для этого теста не требовал, а gp2c понадобилось аж 16 гиг, что странно. В предыдущих версиях такого не замечал.

 
 
 [ Сообщений: 7 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group