05.27.09
Использование OpenMP: старт
Распараллеливание задач, подчас, бывает крайне необходимой штукой. Однако в самом начале изучения одной из библиотек для этого — OpenMP — сталкиваешься со страшной проблемой: нифига не паралеллится. Итак, раз и на всегда что нужно делать:
#include <stdio.h>
#include <stdlib.h>
#include <omp.h>
int main(int argc, char ** argv)
{
#pragma omp parallel
{
printf("Hello, world!\n");
}
return 0;
}
Теперь компилируем:
alexander@A64x2 ~/Temp $ gcc -fopenmp -c test.c
alexander@A64x2 ~/Temp $ gcc -o test test.o -lgomp
Здесь ключевыми являются флаги -fopenmp и -lgomp, использование которых, похоже, очевидно всему миру кроме меня… А результат выполнения у меня был таков:
alexander@A64x2 ~/Temp $ ./test
Hello, world!
Hello, world!
05.23.09
Мнение изнутри
Книга Торвальда Юргена «Век криминалистики» оказалась потрясающим чтивом. Не могу удержаться от сохранения цитаты из мемуаров одного нью-йоркского полицейского, написанных более столетия назад:
Я слишком хорошо знаю силу столь распространенного у нас союза политиков и полицейских. Я пробовал выступать против этого, но результаты были, как правило, катастрофическими для меня. Местное управление в США осуществляется не так, как в остальном цивилизованном мире. Оно базируется на всеобщих выборах. Избирательные кампании ведутся не ради нужд городов, а лишь во имя целей, преследуемых двумя политическими партиями… Я не верю в то, что хотя бы один человек из пятисот способен объяснить истинные цели каждой из двух партий. Называть их „политическими“ будет ошибкой. Их единственным основополагающим принципом, по крайней мере в Нью-Йорке, является сила и эксплуатация. До тех пор пока такие политики будут влиять на полицию, они будут парализовывать коррупцией полицейский аппарат, которому надлежит охранять имущество и честь граждан… Прочтите эту запись до конца »
05.10.09
Отладчик gdb
gdb, он же GNU Debugger — одно из основных средств отладки в *NIX, при этом консольное. Последнее и послужило причиной написания данной напоминалки. Итак, пусть мы хотим отладить программу prog. Тогда её обьектные файлы должны создаваться с ключем -g, позволяющим отладку:
$ gcc -c prog.c myheader.h -g
$ gcc prog.o -o prog
Теперь можно запустить дебаггер:
$ gdb prog
Запуск и остановка выполнения
- run prog <agruments> — запуск программы на выполнение. Псевдоним: r.
- Остановка: Ctrl+C.
Точки останова (breakpoints)
- break <linenumber> или break <filename.c>:<linenumber> или break <function_name> устанавливает точку останова в определенную строку основного файла проекта, или в файле<filename.c>, или на заход в функцию<function_name>. Псевдоним команды break: b.
- delete — удалить все точки останова.
Список будет пополняться по мере надобности на странице блога.
05.08.09
Метод Рунге-Кутта с адаптивным шагом (Runge-Kutta-Fehlberg)
Метод интегрирования Рунге-Кутта с адаптивным шагом является одним из наиболее часто используемых методов численного решения дифференциальных уравнений. Его реализаций существует довольно много, но наибольшее распространение получил метод Рунге-Кутта четвертого порядка. Для достижения заданной точности применяется изменение шага интегрирования. Можно изменять по-простому, деля шаг на два, и интегрируя дифференциальне уравнение сразу с двумя шагами по сетке, а можно поступить немного иначе: интегрировать дважды с одним шагом, но разным порядком метода. Получается быстрее. Далее приведены три матлабловских скрипта, решающие уравнение
с помощью интегрирования 4-м и 5-м порядками метода. Прочтите эту запись до конца »
05.05.09
Прогулка по Киеву
Наконец выбрался в Город с фотоаппаратом пробежаться по любимым местам. Не то, чтоб там что-то сильно поменялось в худшую, или (увы) лучшую сторону… Но солнце светило немного иначе, чем в предыдущие года
Кое-кто видел, как соседний каштан не так давно лишь просыпался ранним утром
05.04.09
Совы on-line
Сенкс
dvijaya за наводку на трансляцию видео из гнезда совы где-то в Эстонии:
http://www.eoy.ee/kodukakk/kakukaamera/
Фотоаппараты в Gentoo
Как и в случае с принтерами, для поддержки мультимедийного оборудования лучше обновить соответствующие библиотеки с тех, которые лежат в портеже на самые новые, скачав их с сайта разработчика. Первым делом лучше проверить, поддерживается ли ваша камера в этом списке. В моем случае, Canon PowerShot A400 завелся после инсталляции F-Spot (http://www.gentoo-wiki.info/F-Spot), последующего удаления libphoto
emerge --unmerge libphoto
и инсталляции из исходников последней на текущий момент версии 2.4.5, скачанной с http://gphoto.org/.
Не забудьте добавить своего пользователя в группы usb и plugdev, иначе перекачка фотографий будет выполняться только под root’ом:
gpasswd -a username usb plugdev
Иногда может понадобиться так же принадлежность к группе camera:
gpasswd -a username camera
То же самое относится и к другим менеджерам фотографий, таким как camera, gtkam и gphoto2.
Отдельное спасибо участникам рассылки gentoo-user@lists.gentoo.org, благодаря которым эта проблема разрулилась
05.02.09
Ejecting CD-ROM in GNOME
В один прекрасный день сообщение при вытаскивании диска мну задолбало:
There was an error ejecting the volume or drive.
org.freedesktop.Hal.Device.Volume.UnknownFailure:
umount: /dev/sr0: не підключений
umount: /dev/sr0: не підключений
eject: unmount of `/mnt/cdrom' failed
Решение простое: удалить каталог cdrom из /mnt и закомментировать строку, начинающуюся с /dev/cdrom, в /etc/fstab.
P. S. Это рецепт для GNOME’а.