среда, 26 мая 2010 г.

Эксперимент: Mutex vs MultiCore часть 2

Почесав репу некоторое время, т.е. подумав: что же это за фигня такая и как интерпретировать полученный результат?


И думаю ответ тут вот какой:
1. Потоки выстраивались в очередь, по понятной причине (нет полезной работы кроме захвата мьютекса)
2. Синхронизация кэшей между ядрами одного процессора (два соседних ядра внутри QuadCore), где-то 50-100 тактов
3. Синхронизация кэшей между ядрами разных процессоров (2 проца внутри QuadCore), где-то 600 тактов
теперь  производим простые вычисления:
Tsync - пенальти за синхронизацию в тактах
N - количество потоков
Hz - частота
M - количество циклов (количество захватов мьютекса на один поток)
T - суммарное пинальти
T = Tsync*N*M/Hz
И получаем около 7 секунд для пукта 2 и около 80 секунд для пункта 3 при частоте 3GHz
Что более менее коррелирует с результатами теста.

За истекшее время я еще немного поупражнялся на том же самом тесте (чуть позже я его выложу)
И выявил примерно следующее соотношение: время под мьютексом + пенальти должно составлять не более 2-5 % от времени выполнения цикла для достижения линейного масштабирования, в противном случае коэффициент масштабирования будет стремительно снижаться вплоть до линейной деградации.

вторник, 13 апреля 2010 г.

Эксперимент: Mutex vs MultiCore

Стало мне тут на днях любопытно: а что будет, если я буду синхронизировать очень короткие задачи (мьютекс на входе в контейнер)
Сделал тест: контейнер с примитивом синхронизации и несколько потоков с возможностью привязки к ядру процессора, в качестве примитива был выбран мой любимый tbb::spin_mutex (пробовал boost::mutex результаты удручающиее).

четверг, 25 марта 2010 г.

То, что делает нас лучше.

Навеяно дорогой.
Давно уже не слушал ничего из русского рока, но вот в последнее время пристрастился к небольшому сборнику Гарика Сукачёва.

Задушевные песни должен заметить, слушаешь у чувствуешь, вроде стал немного лучше, сильнее, преданней, честнее.

понедельник, 22 марта 2010 г.

Привет, Народ! или мои любимые ссылки

Вот решил, ради эксперимента обзавестись своим web-log.

То ради чего мы здесь, т.е. ссылки:
1. Блог "Алёна C++", тут есть, что почитать про C++ (что видно из названия), про GameDev и вообще (например, интервью известных людей).
2. Глубоко уважаемый товарищ Херб Саттер публикует свои мысли, на тему "Построим много всего быстрого и с минимумом конкуренции" по адресу Sutter`s Mill
3. Следующий герой - Дмитрий Вьюков aka remark (поправьте, если не прав). Упомянутый господин имеет в своём активе ряд интереснейших статей на темы: "Бегаем между струй дождя или жизнь без блокировок", "Горячий кофе на штаны или такой жесткий код C++ надо еще поискать". Его заметки можно найти на www.rsdn.ru, http://groups.google.com/group/lock-freehttp://groups.google.com/group/relacy
4. Мой старый знакомый - "Весельчак У" - не большой программистский ресурс со сплоченным коллективом - Портал "Весельчак У" и моё любимое Форум "Весельчак У"

Конечно, этим список интересных ресурсов из моего "Избранного" не ограничивается, но на сегодня пожалуй хватит :) нельзя же так сразу бросаться в бой.