Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2007.06.03;
Скачать: [xml.tar.bz2];

Вниз

Многопоточность на SMP-системах   Найти похожие ветки 

 
BreakPoint ©   (2006-12-28 23:24) [0]

Получив в распоряжение двухядерный процессор и свободное время я принялся искать себе проблемы на, мягко выражаясь, голову. Вобщем за 5 минут написал прогу в которой два потока постоянно прибавляют к счетчику (count1 и count2) 1 и замерял скорость прибавления этих самых единиц. Но даже на такой простой прожке вылезла куча приколов.
Во-первых, на двух ядрах она работала в 2 раза медленнее чем на одном! Что это такое, сброс кэша? Но ведь на одном ядре кеш тоже должен сбрасываться.
Во-вторых, засунув count1 и count2 в раздел public потока один поток стал работать в два раза быстрее чем второй, причем быстрее работал поток созданный первым.
В-тетьих, оставив count1 в разделе public, а count2 сделав глобальной переменной я получил реальное увелечение в 2 раза по сравению с одним ядром. Тут наверное дело в том что count1 и count2 разнесены в памяти и кэш не сбрасывается (если я правильно понимаю суть происходящего). Но что происходит во втором случае???

Может кто подскажет хорошие статьи по оптимизации многопоточности к многопроцессорным системам.


 
tesseract ©   (2006-12-28 23:29) [1]

Раздел Public?  Где это он в потоках?

Посмотри ка про память в общем, и про то чем SMP от NUMA отличаеться.

Самые лучшие статьи по оптимизации лежат на  сайтах INTEL, AMD  а ести под Windows то MSDN :-)


 
BreakPoint ©   (2006-12-28 23:37) [2]


> Раздел Public?  Где это он в потоках?

Не в потоках, а в объекте TThread.


 
tesseract ©   (2006-12-29 00:13) [3]

Delphi мало приспособлен для многоядерности. Основное торможение вызывает процесс обмена данными между ядрами. Главное снизить этот обмен до минимума. А вообще оптимизация многопроцессорных систем - это тема диссертации.


 
BreakPoint ©   (2006-12-29 00:38) [4]


>  оптимизация многопроцессорных систем - это тема диссертации

Это я уже понял:)

> Delphi мало приспособлен для многоядерности

Насколько я знаю на С тоже есть проблемы со сбросом кэша. Управление потоками идет глубоко в недрах Винды и на аппаратнм уровне, так что от отдельно взятого компилятора наверно мало что зависит.

Кстати, если есть какая то функция, которая одновременно вызывается из нескольких потоков, что происходит с ее локальными переменными, не могжет ли один поток изменить из значения для другого потока?


 
atruhin ©   (2006-12-29 06:28) [5]

> Кстати, если есть какая то функция, которая одновременно
> вызывается из нескольких потоков, что происходит с ее локальными
> переменными, не могжет ли один поток изменить из значения
> для другого потока?

нет



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2007.06.03;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 1.029 c
2-1179065009
aha
2007-05-13 18:03
2007.06.03
еще вопросик - как организовать , чтобы при нажатии любой кнопки


15-1178778014
db2admin
2007-05-10 10:20
2007.06.03
Подскажите пожалуйста литературу по Топографии


15-1178378786
AXS4
2007-05-05 19:26
2007.06.03
Алгоритм оптимального расположения чисел


15-1177537024
Иксик
2007-04-26 01:37
2007.06.03
Товарищи, предлагаю встретить 9 Мая в Берлине, в Трептов-парке


2-1179176366
Qwerter
2007-05-15 00:59
2007.06.03
Поиск по дате





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский