Октябрь 2011

Софт для линейной алгебры. OpenCL vs Cuda.

30.10.2011

Чем больше в стране нефти, тем меньше в ней демократии. (c) Freedom House, Вашингтон.

Разбирался в ПО для линейной алгебры. Запишу для себя, что бы потом вернуться. Вопрос интересовал потому что считать матрицы лучше на видеокартах, а значит нужно выбрать между nVidia и AMD. Что бы было быстро и без геммороя.

CUDA — стандарт для вычислений на видеокартах. Только nVidia, проприентарный.
OpenCL — стандарт для параллельных вычислений. Открытый стандарт, софт свободный. Поддерживает и видеокарты AMD и nVidia.
GPGPU — использование видеокарт для вычислений. gpgpu.org.
BLAS — базовые подпрограммы линейной алгебры. Стандартизирует API для софта. Нет смысла использовать напрямую (низкоуровневый).
LAPACK — библиотека линейной алгебры. Написана с использованием BLAS, на фортране, для процессоров.
Intel MKL — одна из реализаций LAPACK, платная.
GSL — GNU Scientific Library, математическая библиотека от GNU, среди большого списка возможностей линейная алгебра так же заявлена.
AMD ACML — математическая библиотека от AMD, одна из реализаций BLAS\LAPACK. Фортран.
ACML-GPU — ACML для видеокарт. Не поддерживается, возможности перенесены в APPML.
APPML — есть стандарт типа html для десктопных приложений, который загнулся в 2007-м. Это не оно.
AMD APPML — математическая библиотека от AMD, содержащая функции BLAS и FFT написанные на OpenCL и заточенные под видеокарты AMD.
AMD APP SDK — sdk от AMD, что бы пользоваться APPML.
CuBLAS — BLAS, портированный на CUDA, от nVidia. Исходники есть.
opencl-toolbox — относительно живая реализация низкоуровневой поддержки opencl для matlab в виде модуля. 1 разработчик. Можно скомпилировать с Octave. Лицензия MIT (серьёзная ошибка). В начале 2011 года много людей обратили на неё внимание. По всей видимости ничего более серьёзного не существует.

GNU Octave — свободная система для математических вычислений. Язык совместим с MATLAB.
MATLAB — слишком много стоит.
MEX-файлы — dll для MATLAB. К Octave подключить тоже можно.
Parallel Computing Toolbox — поддержка GPU в MATLAB от производителя. Цены неприличные. Или приличные. В русском языке это почти одно и то же.
Jacket — поддержка GPU в MATLAB от сторонней конторы. Тоже раздают разрешения на использование персонально, в обмен на президентов. Впрочем, можно и проигнорировать подобный «традиционный метод лицензирования ПО». Если найти где скачать, конечно.
Larrabee — архитектура процессоров, которую разрабатывает Intel, для конкуренции на рынке GPGPU, высокопроизводительных вычислений и графики.
Libra от gpusystems — поддержка GPU для matlab\octave\java\c# и для всего, что может вызвать API на C\C++ (упоминают octave в своём FAQ), реализован BLAS и ещё много всего, лицензирование мутное, есть лицензия для разработчиков. Только под винду, линукс обещают.

Octave можно скомпилировать с ACML (как минимум с той частью ACML, которая совместима с BLAS), хотя это может быть нетривиально. APPML + Octave можно забыть, интернет на эту тему молчит абсолютно.
Скомпилировать Octave с некоторыми библиотеками из CUDA SDK так же возможно (может, что и со всеми).
CUDA Mex-файлы можно, по всей видимости, использовать и без компиляции Octave.

Проблемы скорости.
(25к рублей) AMD Radeon HD 6990: 3072 ALUs x 830 MHz = 2550 billion 32-bit instruction per second, но она сдвоенная.
(27к рублей) Nvidia GTX 590: 1024 ALUs x 1214 MHz = 1243 billion 32-bit instruction per second
(уже не продаётся) ATI RadeonHD 5970 Graphics: 3200 cores, 4.6 tera flops, SIMD
(15к, уже не продаётся) Nvidia GTX 480 Fermi: 512 cores, Less than 2 tera flops,MIMD
OpenCL можно запустить на процессоре. Т.е. добавить скорости. Не говоря уж о Larrabee, но это экзотика, её не рассматриваем.
Математический (а не графический) код Cuda, возможно, лучше оптимизирован, чем OpenCL (cuda постарше), но на текущий момент это может быть уже и не так.
Тесты OpenCL vs Cuda и nVidia OpenCL vs ATI OpenCL упираются в религию, разница в скорости железа сравнима (или меньше) с разницей от качества исполнения драйверов и математических библиотек и разницей между соседними моделями одного производителя. БОльшая часть тестов — тесты скорости графики, на них вообще можно внимания не обращать.

Дополнительно.
DFT — Discrete Fourier Transform, дискретное преобразование Фурье. Раскладывает дискретные функции на составляющие, применяется при анализе частот в сигнале (сжатие звука и изображения, интуитивно кажется, что для распознавания звука тоже используется).
FFT — алгоритм быстрого вычисления DFT.
FFTW — GPL реализация FFT, самая быстрая из свободных и работающих на процессоре (по их собственным тестам).
CuFFT — FFT для CUDA
OpenCL_FFT — пример реализации от Apple для Mac OS.
APPML включает реализацию FFT на OpenCL.

Список карточек ATI, поддерживаемых AMD APP SDK. http://developer.amd.com/sdks/AMDAPPSDK/pages/DriverCompatibility.aspx

Итог.
Самый большой вопрос — что прикрутить к Octave, что бы сразу заработало и даже не потребовалось отдельные функции использовать. Вот этот разрыв между «у нас уже всё десять раз реализовано для си» и «к нормальным средствам разработки вы прикручивайте сами как-нибудь» смущает больше всего. Однако после тщательного анализа (я на этот пост потратил 5 часов) решил, что в вендор-локе нет смысла, количество кода сравнимо, качество придётся проверять, так что выбираю OpenCL. Гемморой будет в любом случае. AMD\nVidia будет важно, когда буду выбирать конкретную модель.

В чём сила?

30.10.2011

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

Естественной составляющей такой идеи выступает правда. Возможно, концепция правды не совсем подходит англосаксам и достаточно новая (в историческом смысле) для негров, но нам она определённо подходит. У неё есть недостатки — например, в большой группе людей (миллионы) свои цели нужно высказывать достаточно двусмысленно и обтекаемо, иначе найдётся слишком много людей, мыслящих в рамках «да-нет» и модель мира которых отличается от вашей (в строгом смысле, она отличается у всех, кроме вас) и которые идею похоронят. Так же, её неудобно прикладывать к вещам вроде красоты или вкуса.

Но достоинств у правды больше. Во-первых, ей проще быть общей для всех, чем, например, идее о равенстве полов. Во-вторых у неё высокие шансы стоить больше, чем жизнь человека — умирать за фуагра или за возможность носить мех желающих будет намного меньше (если идея стоит меньше жизни человека, то такая идея вряд ли сможет серьёзно объединять людей — слишком легко находить предателей).

Конечно, за идею жизни вообще, за идею превосходства нашей расы над другой, за идею о боге умирать люди тоже готовы. Первая мы тоже возьмём, у второй есть существенные недостатки, третья — не похоже, что бы она была необходима (бритва Оккама). Да и на общую для всех она тянет плохо — слишком уж конфликтуют между собой адепты разных течений.

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

Напоследок о практических методах. Уменьшай издержки совершения хороших действий, увеличивай — плохих (надо пятую так сформулировать). Хороший и действенный метод, что бы врать было сложнее — наказывать за это. Рассказал, что в Ливии от бомбёжек не погиб ни один мирный житель — уголовное дело, тщательное расследование и если хоть один погибший нашёлся (а он найдётся минут через 5) — люстрация (запрет занимания государственных должностей), публичное опровержение и условный срок на год-полтора (что бы год-полтора внимательнее был к фактам). Рассказал, что телефон наш, отечественный, сделанный в Китае, с русским логотипом МТС — уголовное дело, тщательное расследование и если в результате расследования выяснится, что Китай в состав России пока не входит — штраф и условный срок.
Сроки условные, потому что иначе придётся посадить почти всю верхушку. Это, конечно, многие поддержат, но объективно это не возможно. А начинать можно и с малого. Даже 10 суток в сизо — уже хорошо.
Существенный минус — конкретики от верхушки вообще можно будет не ждать — будут исключительно сладко-розовые сопли, но это должно быть лучше, чем враньё.
Точнее и конкретнее. Сейчас статья за клевету должна распространиться на клевету на группы и предметы. Только общеупотребительный термин придётся сменить с «клевета» на «обман окружающих». Ну или отдельную статью ввести.

Соцреализм.

29.10.2011

Начал читать «Время, вперед» (В. П. Катаев).

Только-только начал, уже прочувствовал бурю эмоций.
Гостиница. Воду отключили, в канализации — авария, на завтрак — бутерброды и даже за ними — очередь, до участка — 2 км пешком. А туда же, соцрекорды ставить, норму в полтора-два раза превышать. Не пойдёт так.

Мы пойдём другим путём.

3.

28.10.2011

Я, кажется, переборщил в третьей аксиоме («3. Этот мир существует и основа его познания – эксперимент.»). Нам не нужна такая строгая.

3. Этот мир существует и его можно познать с помощью эксперимента.

Даже если его можно познать ещё десятком разных способов (божественным откровением, психоделиками, растворением в нирване), это не очень важно. Если эти способы по какой-либо причине приобретут массовость и/или покажут серьёзную эффективность, с трудом подвергаемую (или не подвергаемую вообще) сомнению — возьмём на вооружение. Сейчас в этом смысла не видно.

К тому же, 4. и 5., полагаю, можно вывести из 3. Пока пусть остаются.

Дополнительно оговорюсь. Модель, построенная на основе русского языка вряд ли может быть точнее, чем сам русский язык. А он не очень точен.

Будущее.

27.10.2011

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

Россия.
Объединяется с теми, кто хочет объединиться в единое экономическое пространство.

Европа.
Интегрирует или выгоняет арабов, делает невыгодной или неприемлимой жизнь на пособие. Решает этим половину экономических проблем (вторую — взятием под контроль деривативов или серьёзное ограничение\запрет на них), остаётся единой.

СГА.
Отправляет на социальные работы всех безработных (как Рузвельт), постепенно выводит войска отовсюду, закрывает 9/10 ВПК. Экономию — на сокращение долга, новых безработных — так же на социальные работы (не представляю, как этого добиться, легче будет марсиан дождаться) и на восстановление космической программы по запуску людей на луну. Если это не возможно — разваливаются на 3-4 государства и делают тоже самое, но уже, к сожалению, без космической программы.

Африканский союз.
Берёт себе немного больше общеафриканской власти и занимается строительством школ и вводом обязательного среднего образования на большей части территории. Народности, которые поддерживают стабильной свою численность, а живут не грабежом, войной и дотациями, а своим трудом, это может не касаться.

Китай и Индия.
Работают, поднимают уровень образования, меньше рожают.

Южная Америка.
Продолжает тестировать социализм. На этот раз без противодействия СГА, возможно, с лучшими результатами.

Мысли предварительные, об ошибках напишу.

Курс по базам данных.

27.10.2011

Что-то меня курс по базам данных начал напрягать.
В машинном обучении — «вот вам новое, вот как оно считается, если хотите — пересчитайте, но если вы не запомните, как считается — забейте, это не очень важно, а вот вам как оно называется, если не запомните, забейте, я ещё раз 10 повторю, зато смотрите как круто мы можем это использовать и с какой целью».
В базах данных — «Смотрите вот вам 10 новых терминов, запоминайте, как это работает, на случай, если придумаете, зачем они вам нужны, а вообще это моя любимая тема для вопросов на экзамене, потому что она забавная и все путаются, так что запоминайте внимательнее».
При этом лекции вдвое длиннее, а количество этих самых терминов превышает все разумные рамки (и это при том, что я уже лет 6 работаю с базами данных). С точки зрения банальной эрудиции, нет оснований считать процесс формализации изложения информации сверх адекватного лимита фундаментально обоснованным чем-либо, имеющим объективное значение.

Накапливаемость знаний.

26.10.2011

Из двоих человек, с которыми я общаюсь больше всего, один либертарианец, а второй — шаман-анархист. Сам я не люблю всяческие принудительные правила, тупую бюрократию и ограничения, а шаманизм у меня вообще глубоко внутри. В подростковом возрасте, купаясь в ванне, смешивал разные шампуни, бальзамы, мыла и прочие средства в расчёте на то, что неожиданная комбинация приведёт к бурному росту волос и я заработаю на сдаче длинных волос на вес. Возможный обратный результат рассматривал как разумный риск. Наверное, после прочтения «Клона» (Теодор Л.Томас, Кейт Вильгельм).

Что ж, тем проще выбирать темы и искать доводы.

Блять. Тяжело писать пост про знания, когда единственное, что я хочу — что бы меня погладили. Надо что-то с этим делать. Я кажется ошибся в аксиомах. Самое важное – это не территория распространения разума и его уровень, а что бы меня погладили. Да, я знаю, что это пиздец как звучит. Как-нибудь позже напишу. Со второго захода.

GTnD.

26.10.2011

Т.к. в голове весь нужный список дел не удержишь, я пользуюсь планировщиком заданий. Планирую дела, которые можно отложить. Т.к. чем этот список больше, тем реже я из него что-то делаю. В теории, конечно, все дела нужные и важные, но 5 уровней важности мне слишком мало. Сначала забивается категория «срочно», потом «очень срочно» и действительно срочные дела становится некуда записывать.
Что бы дополнительно оптимизировать деятельность (GTD — наше всё), я завёл список «прочитать позже», куда складываю большие тексты, на которые сейчас нет времени или желания. Принцип тот же — чем больше становится список, тем реже я из него что-то читаю. Уже даже не каждый день.
А последним серьёзным вкладом в личную эффективность я стал плотно пользоваться пару недель назад. Gnote позволяет вызывать создание новой заметки по хоткею. Каждый раз, когда придумывается серьёзная, обстоятельная тема для поста в блог, я не мучаюсь между необходимостью, но нежеланием написать пост сейчас и желанием обдумать и запомнить его (что нереально), а записываю в заметку пару основных мыслей и откладываю. Можно было бы назвать этот список, как «список постов, которые я никогда не соберусь написать.», но слишком длинно.
Конечно, мелкими фишечками вроде «посмотреть позже» в Ютубе, «не регистрируйся на хабре», фильтрами писем в почте я тоже пользуюсь. К слову, методика «не читай почту» мне больше нравится, чем фильтры — более эффективная.

Пока думаю, какую методику внедрить следующей.

P.S. Кто-то пропускает посты, кто-то комменты. Вот есть rss-фиды и для того и для другого.

http://www.unrealme.ru/feed/

http://www.unrealme.ru/comments/feed/

Следуя принципам GTnD, чинить отправку почты для комментариев не буду.

Выходные и начало недели.

26.10.2011

В субботу играли в AD&D — сразу видно, что за прошедший год я набрал жуткое количество опыта. И за другими смотреть стало ещё интереснее.
А спорт мне не помешал бы — за 6 часов мозг сначала доходит до перевозбуждения, потом до истерики, потом до перегрева и принудительного перехода в спящий режим. Похоже, что со всей моей остальной деятельностью так же. Полежал, посидел за компом, отоспался, проснулся вечером воскресенья и засел за тесты по машинному обучению и базам данных (воскресенье — последний день сдачи тестов). 8 с половиной часов низко-производительной деятельности по просмотру остатка лекций, решению программистских примеров и ручному составлению DTD (преподаватель по базам данных — женщина, это наложило серьёзный отпечаток на курс лекций и тестов), перегрев, переход в спящий режим.
В понедельник после обеда зашёл приятель, разбудил меня, сходили с ним, поели, поболтали 4 часа. Потом попытался что-то поделать, потерял 3 часа, но т.к. не выспался — не смог собраться и решиться — перегрев и спящий режим. Поспал 5 часов, бодрствовал 4, лёг спать в 7 утра. Уснуть не мог, но это не проблема, просто так проваляться 2 часа меня теперь тоже совсем не напрягает. Потом всё же уснул, проснулся без десяти семь. Почитал вассермана, башорг, хабр, зачем-то про пантер в википедии (6 прочитанных статей про кошачьих, одну отредактировал), через 4 часа — к 11 вечера — устал, лёг спать.
Проснулся в 2 ночи, час потратил на лекции по базам данных, час на хабр, час — на прочее.

Продолжаем разговор.

21.10.2011

Хотел написать, почему логика предпочтительнее шаманства, а это уже оказывается есть в аксиомах («Этот мир существует и основа его познания – эксперимент»). Впрочем, у меня есть ещё, что сказать по этому поводу.

Отталкиваемся от того, что нам нужен город на Марсе. Я закладываюсь на 100 тысяч человек, 2050 год. Выглядит нереалистично, но не закладываться же на 3000-й, в самом деле.

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

Проблема в том, что до сих пор для получения энергии и тепла эти способы работали плохо. Для быстрого передвижения — не лучше. Для передачи информации — как-то в одну сторону и без гарантии. Возможно, что именно для колонизации Марса эти способы сработают хорошо, если их правильно применить, но я бы не стал на это закладываться.
К тому же, эти способы могут быть просто не предназначены ни для получения энергии, ни для передвижения, ни для передачи информации, ни для заселения Марса. Может у них просто задача другая?
Напротив, есть способы, который до сих пор показывали хорошие результаты именно в этом. В получении энергии и тепла — сжигаем то, что горит, крутим колесо падающей водой, расщепляем вещество на части. Для передвижения — колёса, которые крутятся энергией или металлическая пластинка, выпуклая сверху (если её быстро двигать, то воздух начинает её тянуть вверх). Для передачи информации — волны и маленькие частички, которые быстро-быстро двигаются. Возможно и для заселения Марса подход, который используется для того, что бы делать такие вещи, хорошо сработает.
Возможно, я позже опишу этот подход, однако он и сейчас почти всем известен, а моё описание, по всей видимости, будет напоминать вольное изложение мыслей физика Фейнмана по этому вопросу.