Показаны сообщения с ярлыком программирование. Показать все сообщения
Показаны сообщения с ярлыком программирование. Показать все сообщения

среда, 10 октября 2018 г.

Bug in Intel Fortran 2018

Наткнулся на замечательнейший баг в компиляторе Intel Fortran 18.0.2 20180210 на институтском кластере под Linux. Есть большой код, который компилируется следующей строкой:
I faced a peculiar bug in Intel Fortran 18.0.2 20180210 on our Linux cluster. A big code compiles using the following command:
ifort -O3  -traceback -DD -debug -check bounds -check format -check uninit -autodouble  -132 -warn none -fpp -no-wrap-margin -heap-arrays -mcmodel=medium -shared-intel -c
Во время исполнения код падает со следующей строкой:
During execution code crashes with the following message:

forrtl: severe (408): fort: (3): Subscript #1 of the array LAYERS_PROP has value -1 which is less than the lower bound of 0

пятница, 5 октября 2018 г.

Печатая Землю | Printing the Earth

Визуализация данных - самый важная и часто самая хромающая часть любого исследования. Геофизика - отличный тому пример. Как представить трёхмерные модели блоков земной коры поперечником в десятки и тысячи километров? Чаще всего ограничиваются отдельными сечениями-разрезами: ведь даже на картинке со всей 3D структурой всё будет наложено и переналожено десятки раз. 

Data visualization is one of the most important parts of any research. That's why it is usually absent. For example, in geophysics. How one can represent 3D blocks of the Earth's crust 10 to 1000 km wide? Most of people just end up with one or two cuts through it. Even a 3D image on a 2D plane will have lots of overlapses, so ii might be beautiful, but not very clear.
Три блока ещё на технологической подложке, четвёртый уже отодран (наиболее эффективно использовать зубы челюсти и тонким ножом).
Three blocks still stay on a technological bed, and the fourth one is already free. The most effective removal tools are your own teeth and a thin knife.

суббота, 21 апреля 2018 г.

Fortran from punch card era

I was working on one geophysical software, when I found one of the libraries to compute Love and Rayleigh waves is still from the times of punch cards and tapes. Its source fits the standard of fortran pads (here you may take a look on the original release of this utility in the year 1978, including "a translation of a Russian article" to "help understand the theory used").

пятница, 6 апреля 2018 г.

log(exp(...))

Столкнулся с отличным примером того, как работает машинная точность, и какие от этого могут быть проблемы.
A good example on how does computer precision work and what are the possible consequences.

суббота, 14 октября 2017 г.

Машинная точность вычислений | Machine-Precision Numbers in computations

English text below

Сложные расчёты обычно эффективнее вести на многих отдельных процессорах, чем на одном. Разделение нагрузки между процессорами называется параллелизацией. Важно распределять задачи так, чтобы одни процессоры не простаивали, ожидая данных от других процессоров.

суббота, 23 сентября 2017 г.

Число Куранта и ускорение расчётов | Speeding up computations and Courant number

English version is below
 
Вчера вечером после года мучений я нашёл, как убыстрить мой код при экстремальных условиях расчёта примерно в 100 раз. С одной стороны, я нашёл это, и аз есмь хорошо. С другой стороны, осознание того, что для этого потребовалось вставить в трёх местах на 6.2 миллионов символов кода цифру "2", меня вымораживает.

пятница, 7 апреля 2017 г.

Переназначаем кнопки клавиатуры | Remapping keyboard

Столкнулся со странной клавиатурой, где вместо правого control была кнопка для ввода ненужных спецсимволов. Адекватных решений по переназначению кнопки в интернете не нашёл, предлагаю следующее. Работает в системах *nix с утилитой xkb (например, ubuntu).

Вводим в терминале xev, жмём "ненужную" кнопку, чтобы получить её номер. Будет написан как keycode 46 (номер, понятно, зависит от кнопки).
Затем вводим:
sudo nano /usr/share/X11/xkb/keycodes/evdev
Это файл, в котором прописано соответствие кодов от клавиш "логическим" кнопкам. Там пишем что-нибудь типа:
= 46если хотим задать Right ConTroL. Не забываем закомментировать задание этой кнопки, если оно было где-то ещё. Сохраняем файл, перезагружаем компьютер.

Работает после перезагрузки ОС или смены раскладки, чем выгодно отличается от того, что я видел в сети.


Faced a keyboard with a text input button instead of the right control. I found no normal solutions over the internet, so I propose my own one. Works for *nix OSes with xkb manager like ubuntu.

Print xev in terminal and push the redundant button to get it's code (written as e.g. "keycode 46").
Next, print:
sudo nano /usr/share/X11/xkb/keycodes/evdev
It is a file mapping keycodes to "logical" buttons. And here we type something like:
<RCTL> = 46
to set the Right ConTroL or similar for other buttons. Do not forget to comment the previous assignment for this button if there was any. Save the file, reboot the system.

Works after reboots or keyboard layout switching (this is a problem for many internet discussed solutions).

пятница, 24 марта 2017 г.

Время Ляпунова | Lyapunov time

English text below

Земля предсказуема на 95 миллионов лет вперёд. Это меньше длительности геодинамических событий — например, раскрытия Атлантического океана. Все более долговременные построения являются недостоверными, а Земля - непредсказуемой.


вторник, 17 января 2017 г.

Animated PDF

PDF с анимацией - правда или вымысел? Краткое резюме форумов и личных опытов:
  • Встроенная в PDF анимация де-факто работать не будет. Нужно иметь PDF и файлы с видюшечками где-то рядом. Возможно, в Windows такой проблемы нет. Возможно, в Windows такой проблемы нет.
  • Adobe Reader for Linux последних версий НЕ поддерживает анимацию вообще. Возможно, в Windows такой проблемы нет.
  • Под linux работает связка LaTeX + okular.
PDF with animation: myth or truth? The short summary of forums and trials is following:
  • A single PDF with fully-embedded animation will not work. Only PDF with external video files works. MS Windows might have no such issue.
  • Latest Adobe Reader for Linux does NOT support video at all. MS Windows might have no such issue.
  • Linux allows to reach the goal using LaTeX + okular
source.tex:

\documentclass{beamer}
\usepackage{graphicx}
\usepackage{multimedia}
\usepackage{url}
\begin\{document}

\movie[poster, showcontrols]{\includegraphics[width=0.8\textwidth]{drop.png}}{drop.avi}
% showcontrols to show Pause/Resume, Stop and other usual controls
% loop - to repeat the movie endless
% includegraphics - any picture (screenshot) used before video is activated. It sets the frame, so it useful

\end{document}

среда, 30 ноября 2016 г.

zram, zswap, hdparm

Для тех, кому нужно много оперативки, но по тем или иным причинам не может увеличить физический объём. Ищите по ключевым словам:
Virtual memory compression - сжатие данных в оперативки с размещением данных в ней же.
Compressed swap - сжатие оперативки в своп на жёстком диске.
Advanced Power Management - чтобы не засыпали жёсткие диски.

В linux решается настройкой zram, zswap, hdparm. Практический бонус - приложение, требовавшее 70 Гб RAM (сборка графики), удовлетворилось менее 7 Гб в пике.

Странно, что некоторые технологии, казалось бы, должны быть появиться давно, а становятся доступными массовому пользователю только сейчас. С Windows 10, Linux kernel от 2014 г., OS X 10.9.

For those who need a lot of RAM, but is limited in it. Try to look for:
Virtual memory compression - compression of data in RAM to be stored in RAM itself
Compressed swap - compression of RAM data to HDD swap
Advanced Power Management - tune it to make your HDD's running

One can use zram, zswap, and hdparm to set it up in Linux. It makes program wanted 70 Gb RAM (graphic processing) to use only 7 at a peak load.

That's curious that a lot of features which might appear a lot of time ago became used only in a few past years. VM compression is available since Windows 10, Linux kernel from 2014, OS X 10.9.

вторник, 22 ноября 2016 г.

Установка NAS installation

NAS - Network Attached Storage, т.е. доступное по сети хранилище данных. Существует два типа решений: жёсткий диск с дополнительным железом и прошивкой, которое умеет быть доступным по сети, и компьютер-сервер. В случае второго варианта на него ставится специальная операционка, обычно порезанная по своим возможностям, но со специфическим софтом, и необходимое количество жёстких дисков.
Я выбрал второй вариант с OpenMediaVault, которая является бесплатным решением на базе debian. Она нетребовательна к ресурсам (например, ей достаточно ~600 MB RAM в фоновом режиме), но не обладает некоторыми возможностями типа полного шифрования траффика и других. Собственная графическая оболочка у неё отсутствует, её заменяет графический интерфейс настройки через браузер (WebGUI).

NAS - Network Attached Storage, a data storage which is accessible using internet. There are two usual solutions: HDD with additional hard- and software to look to network, or an ordinary PC. In the latter case a limited OS with special utilities and some HDDs provide the functionality.
I've chosen the second option using OpenMediaVault as an OS. It is a freeware based on debian, which does not need a powerful configuration (like it needs 600 MB RAM in a usual mode), but does not provide service like full traffic encryption. It does not have a graphical interface (only console), but all tuning can be made using WebGUI.

воскресенье, 25 сентября 2016 г.

Оптимизации вычислений | Computational optimizations

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

One of the most important things in resource intensive computations is to perform calculations not only robust, but also fast. I'd like to show in this post, how effective can be an optimization based on proper physical considerations.

суббота, 17 сентября 2016 г.

Специфика "научного" программирования

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

четверг, 1 сентября 2016 г.

Уравнения оседания кристаллов и фильтрации расплава | Equations of crystal segregation and melt filtration

В магматической камере происходит кристаллизация минералов, их осаждение и отжим остатков расплава. Кристаллизующие минералы отличаются по составу и свойствам (например, плотности) от расплава, поэтому осаждение кристаллов приводит к постепенному изменению состава кристаллов и, как следствие, возникновению слоёв с различным химическим составом. Этому процессу мы обязаны в том числе и формированию рудных залежей. 
В этом посте я хочу привести подборку некоторых уравнений, которыми описываются эти процессы.

A number of processes takes place inside a magmatic chamber, including mineral crystallization, sedimentation of those crystals, and removal of residual melt. Crystallizing minerals differ from coexisting melt by chemical composition and physical properties like density, so that mineral sedimentation results in a formation of layers with different chemical compositions. We should be grateful, because, at least, some ore deposits are formed that way.
This post lists a bunch of equations governing those processes.

вторник, 14 июня 2016 г.

Установка Mac OS X installation

Есть Apple-компьютер, на котором нет операционной системы (системные диски чистые). При попытке запуска машины выдаётся меню Mac Recovery. Образа системы для Time Machine нет, установка почему-то не проходит (зависает, сообщает об ошибке...), если открыть лог-файл, можно увидеть сообщения типа:
Can not connect to /var/run/systemkeychaincheck.socket
Package Authoring Warning: The installer script defines but doesn't use (and can't install) package id com.apple.pkg.OSUpgrade
Could not add SWU product
В данном случае надо сделать следующие операции:
  • Из списка системных утилит в меню восстановления OS X выбрать консоль и ввести (насколько я понимаю, это действительно только при установке по сети):
    ntpdate -u time.apple.com
  • Обнулить PRAM. Для этого надо зажать при старте машины клавиши cmd+option+p+r
  • Неочевидный трюк. Если у вас партиция на диске занимает весь его объём, то надо выделить некоторое место неразмеченным. Видимо, оно как-то используется то ли для загрузочного раздела, то ли для временных файлов. Меня это выручило.
Два примечания.
  1. Если вы только создали аккаунт appleid, вам необходимо найти OS X с AppStore для того, чтобы зайти в него и указать детали. Теперь там можно выбирать опцию "тип оплаты - none" и не сливать свои платёжные данные не пойми кому.
  2. Не пытайтесь создать загрузочную флешку с компа без Mac OS. Есть куча инструкций - по факту, мне не получилось сделать то, что бы распозналось в качестве установочного диска Mac-компьютером. Скачайте на комп через app store и дальше воспользуйтесь инструкцией.
Резюме. Я ещё больше убедился в том, что Mac OS X не предназначена для комфорта конечного пользователя. Система, которая даже не умеет сама разбить нужным образом жёсткий диск при установке, должна гнить в аду. 

You have an apple computer with clear disks. You want to install Mac OS X on it (no Time Machine snapshots are available), so you use "Install/Reinstall OS X" option in Mac Recovery menu. But your installation freezes / hangs / fails, and log file contains something like:
Can not connect to /var/run/systemkeychaincheck.socket
Package Authoring Warning: The installer script defines but doesn't use (and can't install) package id com.apple.pkg.OSUpgrade
Could not add SWU product
You may need to perform this to rescue your rusty iron piece:
  • Select Terminal in a list of OS X recovery utilities (internet connection is required):
    ntpdate -u time.apple.com
  • Null PRAM. To do this, start your PC with pressed cmd+option+p+r
  • If your partition takes the whole physical disk, you need to resize this partition in disk utility to leave some space unpartitioned. It is a very ugly hack, which save me.
Two PS:
  1. If you just made an account in appleid, you must login first via OS X's AppStore to review your profile. At least, it does not need your credit card data now (option "none" was available).
  2. Do not try to create an installation USB memory stick from computer without Mac OS X. I tried a lot of instructions, but the result was absent. Use app store to download OS and follow this guide.
Conclusion. Mac OS X installer is not able to work with partitions (!!! WTF). I become more and more convinced, that OS X must rot in hell.

суббота, 7 мая 2016 г.

Плавление без проблем / Melting with no problems

Давно я не писал ни о каком о прогрессе по работе. Потому что его не было. Но вот мне удалось прорешать все основные проблемы, и таки оно заработало (об этом, надеюсь, в скором времени будет отдельный пост). А сейчас я опишу несколько проблем, с которыми мне пришлось столкнуться. Возможно, кому-нибудь поможет. Например, мне, если я снова в это упрусь.
Приношу извинения за то, что текст весьма тяжёлый.

Once upon a time I was being writing smth about my work. However, that time has gone, but I'd like to resurrect it. After some pain I got the code working, and now I want to write about some problems, that I was faced with. May be once it will help somebody or even me. 
Sorry, but the text below should be hard to read and understand for unexperienced reader.

пятница, 1 апреля 2016 г.

Matlab vs Internet

Пятиминутка зашкаливающей ненависти. Просьба убраться от мониторов мужчинам, женщинам, детям, животным и прочим обладателям психики.

Вот поехал я на неделю в другую страну в гости. И хотел за эту неделю дописать скрипт в matlab. А matlab у меня на ноутбуке, спасибо институту, лицензионный. Так эта сволочь категорически отказывается запускаться без подключения к интернету, поскольку не может проверить свою же лицензию. И более того, для того, чтобы лицензия на matlab “опозналась”, необходимо иметь IP-адрес в диапазоне сети института. Да, я хотя бы могу включить VPN и получить этот адрес — честь и хвала департаменту IT института, который даёт и такие возможности. И то хлеб. Точнее, сухарь.

среда, 20 января 2016 г.

make install: GMP, MPFR, MPC, ISL, binutils, GCC, MPICH, HDF5, libpng, PETSc

Пост про установку связки компиляторов и библиотек GCC + MPICH + HDF5 + PetSC на чистой системе.

Операционная система: Debian 8.2 в стандартной поставке. В систему включён gcc 4.9 (прекомпилированные бинарники).

Конечная цель: скомпилировать и запустить нашу замечательную софтину, StagYY (кому интересно, одна из базовых статей).

Мотивация: так как я пользуюсь достаточно специфической связкой компиляторов и утилит/библиотек, сильно проще искать проблемы совместимости и компиляции (и их решать!), когда они установлены с чётко известными ключами в чётко известном месте, а все зависимости прописаны ручками и/или одобрены глазками.
Постановка задачи: научиться ставить на максимально голой системе из исходников весь необходимый набор софта. Сборка ведётся в домашней директории пользователя. Это позволяет минимально загадить систему при пересборках и экспериментах.
Дополнительные условия: я пользуюсь последними версиями библиотек, которые зачастую новее тех, которые присутствуют в репозиториях debian.
Цель: получить связку действий, которая гарантирует приход к успеху (компиляция софта по работе) на системе с минимальным содержанием софта. Читать: мазохизм.

 Кратко о том, почему я отказался от системного gcc.

суббота, 12 декабря 2015 г.

Лечим тормоза у MacOS

Примерно полгода мой рабочий десктоп с MacOS начал люто тормозить. При переключении приложений или попытке выполнить какую-нибудь простейшую операцию (выделение текста) он мог спокойно подвиснуть на минуту-другую.
По симптоматике - классика фрагментированного диска. Полез искать дефрагментатор. Мануалы сказали, что проблемы фрагментированности накопителя на MacOS отсутствуют, но проблемы может вызывать ультрабольшое количество файлов. Ок. Полез в свою рабочую папку, порылся по сусекам и удалил порядка 100 000 файлов (средний размер 0.5-10 МБ). Да, понимаю, что сейчас приличный человек судорожно перевёл дыхание. Но да, я и так могу, как выяснилось. Важный момент: рабочая папка находится на другом жёстком диске, и чистка ничего не поменяла: тормоза остались.
Пошёл, прочесал системные директории и папки некоторых приложений. Толку ноль.
Проблема нашлась случайно. Мой почтовый клиент Mozilla Thunderbird внезапно предложил сжать папки, так как это, по его оценкам, может высвободить 1398 Гб (!!!!) места. Я посчитал, использовав для оценки текущее количество писем, в среднем 600 МБ/письмо. С учётом того, что у меня системный диск имеет всего 1.5 Тб, то получается, что Thunderbird съел всё возможное место на диске. Как, зачем и почему - я не понимаю.
Что характерно, после этой чистки тормоза MacOS исчезли. Так что и такое бывает.

суббота, 3 октября 2015 г.

dirty bit 0x25

Как вы думаете, чего я хотел в пятницу вечером, приехав в час ночи с работы? Не знаю, чего хотели бы вы, а вот мне подарили 1.5 часа изысканнейшего удовольствия: мой ноутбук напрочь отказался включаться.
Постик про конкретную нетривиальную проблему с ноутом и dirty bit 0x25 - вдруг кому-нибудь поможет.