Архив автора: Yuriy Nazarov

Yuriy Nazarov

Люблю machine learning

Релизация CPU на плис. Ядро SomeAVR

В этой записи я попытаюсь рассказать о реализации части процессорного ядра, использующего подмножество команд, используемых микроконтроллерами с архитектурой AVR. Проект далёк от завершения, но помигать светодиодом уже можно 😉 Например так:

Здесь правые 8 светодиодов показывают значение регистра R20, а левые 8 — значение IP(PC). Немного описания далее. Читать далее »

Мысли вслух

Идея относительно анонимной публикации данных.
Окружение: наличие каких-нибудь сервисов вроде голосовалок, большое количество слабо контролируемых машин для массовки и на пару порядков меньшее число полностью контрорлируемых машин.
Заранее определяется список голосовалок и передаётся всем машинам, после чего все голосуют в одной(хотя можно и в нескольких) случайной голосовалке. Массовка голосует за случайный пункт, а полностью контролируемая за нужный. В итоге результаты сваливаются в нужную сторону, а для определения источника данных необходимо подробно рассмотреть десятки-сотни машин.
Доступность данных низкая, но если обеспечить контроль целостности, они или будут валидные или их не будет.

Погрешность вычислений с числами с плавающей запятой

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

В этом маленьком тесте изменение результата от изменения флагов обнаружить не удалось, но всё равно обилие результатов удивляет — 5 различных, с 13 совпадающими знаками из 15-17 возможных для double.

Исходник и компилятор Результат Время выполнения, с
Assembler 1.53436944477410652787 3.81
gcc long 1.53436944477462278158 4.4
gcc double 1.53436944477389380914 4.4
icc long 1.53436944477397574360 6.88
icc double 1.53436944477334602510 1.50

*результаты по одному измерению, по этому совсем серьёзно воспринимать их не стоит. Время указано для процессора FX-8120
p.s. ну и обнаружилось, что написание кода на ассемблере пока ещё не абсолютно потеряло смысл — получился до 15% быстрее, чем на C.

CUDA мы катимся?

Сразу извиняюсь за название — взято с потолка.
Неудержался и нафигачил вычислительную задачу, которую уже упоминал в прошлых топиках на CUDA. Ничего хитрого не делал — просто расставил директивы __device__.
В итоге получилось даже медленнее чем на CPU раз в 5 :’-(
Сей ужас можно увидеть здесь.

Хватит использовать устаревший софт!

Каким бы тёплым и ламповым старый софт не был, но рано или поздно от него приходится отказываться, и сейчас я покажу это на примере компиляторов.
Допустим у нас есть приложение, которое выполняет некоторые вычисления.
Попробуем скомпилировать его различными версиями gcc и icc. И измерим время выполнения. Опции компиляции следующие:

Версия компилятора Время выполнения,c Во сколько раз медленнее лидера
gcc-4.1 70.0 3.68
gcc-4.3 45.3 2.38
gcc-4.4 45.9 2.42
gcc-4.5 34.9 1.84
gcc-4.6 34.7 1.83
gcc-4.7 34.9 1.84
icc-13.1.1 19.0 1.0

Читать далее »

Здравствуй, https

Спасибо ребятам из StartSSL за бесплатные сертификаты. 🙂
Достаточно: зарегаться у них, поднять у себя почтовый сервер для валидации домена, пройти валидацию и сертификат у вас в кармане.
Добавляем его в конфиг HTTP-сервера и получаем что-то вроде: https://8052.ru

Исключения в Perl

Одним из возможных вариантов мне видится:

Читать далее »

Добавление пользователя в группу в дистрибутивах linux

Допустим вам нужно предоставить доступ себе к какому-нибудь файлу/папке как члену группы владельца файла, так как самого владельца, в данном случае, изменить нет возможности. Например разрешить просмотр общих папок в VirtualBox в гостевой ОС на базе линукс. Казалось бы, что может быть проще?

Но это изменение не повлияет на уже открытые сессии(если честно, я не понимаю что именно понимать под сессией). Хотя для обхода этого есть хак.

P.S. и да, я не понимаю, из-за чего (софт/ядро/принципы *nix) так, но по крайней мере в Ubuntu 10.04/12.04 поведение такое.

Часы медитации

Читать далее »

Minecraft и JavaScript

Скриптовать можно и маинкрафт 🙂 Спасибо тебе, WorldEdit.
Хотя есть возможность писать плагины и под «голый» сервер, например bukkit, и в них фантазию автора практически ничего не ограничивает, но порог вхождения в разработку плагинов довольно высок. Намного проще разрабатывать скрипты. Кстати они перечитываются при каждом запуске, что позволяет отлаживать их по ходу игры. Читать далее »