Posts about blog (old posts, page 11)

Random thoughts of a random person

HPC в icaci.info

Като малък имах детска мечта, подобно на всички малчугани, но не исках да ставам космонавт, нито да освобождавам лигави принцеси от порутени замъци, пазени от зли дракони. Поради ранното излагане на магическата сила на компютрите и естеството на литературата, с която си запълвах свободното време, исках да имам… ГОЛЯМ СУПЕРКОМПЮТЪР (от най-големите и от най-суперските). Не че знаех какво ще го правя, или пък как ще му плащам тока, но какво друго може да се очаква от едно хлапе, което намира на тавана на къщата тонове списания “Наука и техника за младежта” (издание на ЦК на ДКМС, ако някой още си спомня значението на тези съкращения) и ги изяжда от кора до кора? Е добре, в един момент осъзнах, че притежанието на такава машина не е по силите на обикновения човек, поради което мечтата ми се измести от притежаване на към достъп до въпросния ГОЛЯМ СУПЕРКОМПЮТЪР. Отново без никаква идея, какво точно ще правя с този достъп. Обаче знаех, че искам Cray, понеже в онова списание пишеше, че Cray бил най-добрият от най-големите. Така де, най-доброто или нищо.

За разлика от мечтите за космонавстване или рицарстване, реализирането на моята се оказа не само реално възможна, но и напълно възможна реалност. С времето не само придобих [леееко нелегално в началото ;)] достъп до Cray (ако си им фен — цъкни тук), не само намерих как и за какво да ползвам суперкомпютрите (благодарение на милите хора от EPCC и разходките до китния Единбург), но и прескочих значително отвъд мечтата си, приземявайки се в позицията “направи си сам”.

Но не за реализираните детски мечти ще става дума тук, а за действителността на 2009 г. А тя е, че вече практически няма широкодостъпен микропроцесор, който да не е с поне две ядра. Апокрифните доскоро техники за паралелно програмиране, известни само на гурутата в академичните среди и производителите на “ентърпрайз” решения, вече придобиват практическа популярност. Съвременните версии на най-популярните средства за разработка на приложения (GCC и Visual Studio) поддържат OpenMP — един от стандартите за писане на паралелни приложения, непознат до скоро на широката публика, a Intel започна серия от популяризаторски вебинари (WEB семинари) за OpenMP и TBB (Threading Building Blocks) и разработи специални инструменти за улесняване на прехода от серийно към паралелно програмиране, след като се оказа, че повечето многонишкови програми никога не са били замисляни да работят в условия, в които нишките им се поемат от различни физически ядра, поради което рекламираните революционни 2x и 4x ускорения на работния процес така и не се получиха. Причината е проста — нишките се ползват основно за асинхронна обработка на събития и избягване на изчакваща синхронизация, а не за разпределяне на изчислителното натоварване. Това е подход, известен като паралелизъм по задачи, като различните задачи обаче са силно небалансирани по отношение на използването на процесорните ресурси, тъй като повечето от тях “проспиват” времевите си кванти в изчакване на вход/изход или друго синхронно събитие.

За пълното овладяване на мощта на новите многоядрени процесори е необходимо известна промяна в парадигмите на програмиране, като фокусът се измести от паралелизма по задачи към т.нар. паралелизъм по данни. За щастие това не е terra incognita, а добре разработена още от 80-те години на миналия век територия. За нещастие, повечето паралелни машини се използваха за решаване на научни и инженерни задачи, поради което основните парадигми и библиотеки за паралелно програмиране са FORTRAN и C центрични (OpenMP, MPI), като обаче постепенно се появяват и по-съвременни абстрактни приложни решения, като Intel Threading Building Blocks (C++ библиотека) и паралелните разширения на .NET (езиково неутрално решение). Също така повечето функционални езици с приложно значение, макар и все още възприемани като екзотика, като Erlang и Ocaml, поддържат паралелно изпълнение по най-естествен начин.

Отдавна се каня [от години, всъщност :)] да започна да списвам по нещо за високопроизводителните изчисления, наричани в англоезичната литература HPC, но все си намирах други занимания като пълнежи на свободното ми време, а и ниският интерес към курса ни по паралелно програмиране сред възпитаниците на факултетите от комплекс Лозенец на СУ поставяше под сериозно съмнение смисъла на начинанието. Придобиването обаче от ДАИТС на 8192-ядрената Blue Gene/P машина, създаването на национален суперкомпютърен център и сродните му центрове по върхови постижения, както и масовото навлизане в родината на машини с многоядрени процесори, все пак ме карат да мисля, че интересът към тази тематика тепърва ще се формира. По случая започвам рубрика HPC, първи обитател на която ще бъде сравнение на Intel Core i7 (на ManiaX) и Intel Xeon E5420 (на ФзФ) от гледна точка на няколко типични научни приложения.

Надежда

Тя: (по детски невинно) Защо?
Той: Тате, не е хубаво да се отмъщава! Той, който прави лоши неща, на себе си ги прави…

Още има надежда в тази държава.

Парченце история

../images/81.thumbnail.jpg

ЗТО Мъглиж

Руините в далечния план са онова, което е останало от административната сграда на едно от високотехнологичните предприятия в НРБ от годините преди т.нар. преход — Завод за Тестерно Оборудване, град Мъглиж (част от системата на ДЗУ). Сграда, в която преди 24 години едно невръстно дете от втора група на детската градина за първи път се сблъска с чудесата на нещото, наречено компютър ИЗОТ 1031C. По зелено-черния екран на машината тичаше малко човече с лопата, преследвано от и преследващо други малки човечета и използващо лопата по предназначение за копаене на дупки и не по предназначение за чукане по канчетата на другите малки човечета, попаднали в изкопаните дупки… И въпреки че Lode Runner не беше, може би, най-добрият начин да привлечеш вниманието на едно невръстно дете, то възможностите на компютъра оставиха трайно впечатление в съзнанието на детето и завинаги фиксираха любовта му към бръмчащите силициеви чудовища и примигващите растерни екрани…

Мартенски сняг

../images/78.thumbnail.jpg

Сняг вали, ама се не види на снимката

Тихо се сипе мартенският сняг,
бавно затрупва столицата пак…

Тръпна в очакване на поредното изказване на Б.Б., че снощи цяла нощ е ринал с голи ръце снега от улиците ;)

The day that time stood still

No, it’s not about that episode of “Supercar” from 1962. It’s about why running stock Xen-enabled Ubuntu 2.6.22 x86_64 kernel is generally a Bad Idea™:

So, you log into your dom0 on your regular Ubuntu compute cluster just to find out that all your users’ passwords have expired and the kernel is greeting you with messages from the distant future (Mon Apr 29 03:21:20 EET 2301 in that particular case):

[214464.660028] clocksource/1: Time went backwards: delta=–9223012651229942015 shadow=214463864019492 offset=796007077
[214469.660023] printk: 9970 messages suppressed.
[214469.660030] clocksource/4: Time went backwards: delta=–9223012646229940943 shadow=214468860019731 offset=800008116
[214474.660035] printk: 10051 messages suppressed.
...

Then you find out that most processes are using NaN percents of CPU, while others are using only 9999%:

../images/76.thumbnail.png

The day that time stood still

Not to mention the negative uptime…

Way to panic? Already reaching for the power switch? Trying to reboot? But all you have to do is to first:

echo "jiffies" > /sys/devices/system/clocksource/clocksource0/current_clocksource

and then think of either recompiling a better Xen-enabled kernel or (like me) switching to an alternative virtualisation solution.