Форум: "Прочее";
Текущий архив: 2008.12.21;
Скачать: [xml.tar.bz2];
ВнизКак использовать второе ядро двухъядерного процессора? Найти похожие ветки
← →
МемТест (2008-10-15 07:05) [0]Кто-нибудь может поделиться простым примерчиком?
Допустим есть один большой массив. И хочется, чтобы его обрабатывали два потока каждый на своём ядре. Можно так сделать в Дельфи?
Желательно, чтобы была какая-нибудь система разделения между ядрами. То есть, если ядер, допустим, четыре, чтобы создавалось 4 потока, и каждый обрабатывал общий массив со своего места.
← →
Skyle © (2008-10-15 07:10) [1]Делай разные потоки и оно само может получиться. А может и не получиться. Если хочешь жёстко привязать потоки к ядрам, читай про SetAffinityMask.
А уж как они будут обрабатывать массив и каким местом - сугубо вопрос твоей реализации.
← →
Skyle © (2008-10-15 07:12) [2]
> Skyle © (15.10.08 07:10) [1]
> читай про SetAffinityMask
Уточнение - SetProcessAffinityMask
← →
Skyle © (2008-10-15 07:14) [3]
> Skyle © (15.10.08 07:12) [2]
Хотя для задачи больше подходит SetThreadAffinityMask. :(
← →
МемТест (2008-10-15 07:45) [4]Кто-нибудь может поделиться примером работающей программы?
← →
Skyle © (2008-10-15 07:59) [5]А в чём именно сложность-то?
← →
Palladin © (2008-10-15 08:40) [6]Вставить куда есть, а вот скопировать неоткуда :) вот и просит...
← →
oxffff © (2008-10-15 09:16) [7]
> МемТест (15.10.08 07:05)
Понятие обрабатывались неопределено.
Является ли обработка каждого элемента зависимой от другого элемента?
← →
МемТест (2008-10-15 09:40) [8]
> oxffff © (15.10.08 09:16) [7]
>
> > МемТест (15.10.08 07:05)
>
> Понятие обрабатывались неопределено.
> Является ли обработка каждого элемента зависимой от другого
> элемента?
Частично.
← →
oxffff © (2008-10-15 09:42) [9]
> Частично.
Тогда можно задействовать частично два потока каждый на своём ядре.
Пока ты полностью не сформулируешь условие тебе никто наталкивать на решение не будет, а уж тем более решать его за тебя.
← →
oxffff © (2008-10-15 09:48) [10]
> МемТест (15.10.08 09:40) [8]
Разбей массив на несколько независимых частей и обрабатывай их параллельно. Возможно параллельно обрабатывать зависимые друг от друга элементы внутри независимой от других групп группы.
Но тогда нужно разбивать группу на подгруппы независимых элементов с разделением по времени.
← →
blackman © (2008-10-15 09:52) [11]Сделайте потоки, и система сама распараллелит наилучшим образом по всем процессорам.
← →
tesseract © (2008-10-15 10:05) [12]
> система сама распараллелит наилучшим образом по всем процессорам.
Не уверен. Например как она будет данные по процессорам раскидывать ? А в случае "плохого" распределения локи будут на чтение/ запись.
← →
blackman © (2008-10-15 10:09) [13]Вы уверены, что знаете как работает планировщик WIN?
А если не уверен, то не обгоняй. Только мешать будете...
← →
БарЛог © (2008-10-15 10:30) [14]> Как использовать второе ядро двухъядерного процессора?
Как и первое - для вычислений :)
← →
oxffff © (2008-10-15 10:33) [15]
> БарЛог © (15.10.08 10:30) [14]
+18
← →
tesseract © (2008-10-15 10:38) [16]
> что знаете как работает планировщик WIN?
Что-то читал у Руссиновича. Но про "наилучшим образом" не уверен, и кстати это не только Windows касаеться. intel вот свою библиотеку предлагает для многопоточности : http://www.intel.com/cd/software/products/asmo-na/eng/threading/294797.htm
← →
stas © (2008-10-15 11:44) [17]МемТест (15.10.08 07:05)
Только раз уж решил делать многопоточное приложение, надо не второе ядро грузить, а все т.е. для начала определить количество ядер в системе и расчет разбить на столько же потоков.
← →
guav © (2008-10-15 13:12) [18]Одно ядро для прикладной программы, другое для трояна, чтобы ничего не тормозило.
← →
han_malign © (2008-10-15 13:45) [19]
> А в случае "плохого" распределения локи будут на чтение/запись.
- есть еще нюансы:
"одновременный доступ двух процессоров к близким участкам памяти заставляет внутренний контроллер сбрасывать кэш памяти"(c)Роман Лут
http://www.dtf.ru/articles/print.php?id=39888
← →
tesseract © (2008-10-15 15:24) [20]
> заставляет внутренний контроллер сбрасывать кэш памяти
Может всё-таки очищать кэш 2-го уровня ?
← →
stas © (2008-10-15 15:28) [21]han_malign © (15.10.08 13:45) [19]
Вообще я такое о Гипертрейдинге слышал.
← →
Городской Шаман (2008-10-15 16:42) [22]А человеку нужны были только классы TThread и TCriticalSection
← →
МемТест (2008-10-16 05:43) [23]Дайте кто-нибудь пример программы? Чтобы изучать работу на примерах.
← →
Skyle © (2008-10-16 06:25) [24]\Program Files\Borland\DelphiX\Demos\Threads?
← →
stas © (2008-10-16 08:56) [25]МемТест (16.10.08 05:43) [23]
Куда тебе его давать? e-mail хоть напиши.
Ты вобще что считать собрался? мож тебе надо изучить команды SSE и т.п. ?
← →
МемТест (2008-10-17 05:11) [26]
> Skyle © (16.10.08 06:25) [24]
>
> \Program Files\Borland\DelphiX\Demos\Threads?
Спасибо. :) Хоть что-то.
А какие функции используют, чтобы получить информацию о ядрах? Их число, загрузка, может ещё что-то полезное?
> Куда тебе его давать? e-mail хоть напиши.
Е-mail так давать нельзя сразу заспамят весь.
Можно же выложить на ifolder.ru, narod.ru, rapidshare и т. д. и т. .п.
> Ты вобще что считать собрался? мож тебе надо изучить команды
> SSE и т.п. ?
Анализировать одну большую базу данных и кое-что в ней изменять.
← →
stas © (2008-10-17 08:45) [27]Неохота возиться с ifolder.ru, narod.ru, rapidshare и т. д. и т. .п.
Напиши почту вместо собаки поставь другой значек.
А что за база (СУБД) ? или заведи на mail.ru.
← →
МемТест (2008-10-20 09:05) [28]Ну вот, переделал под потоки. То, что раньше выполнялось за 28 секунд, теперь в одном потоке выполняется за 1 м. 54 сек., и в двух потоках за 2 м. 1 сек.
Если сделать потоков 10 или 15, то результаты примерно такие же. Ощущение, что второе ядро просто не задействуется. И откуда такие тормоза вдруг - вообще не понятно.
> stas © (17.10.08 08:45) [27]
>
> Неохота возиться с ifolder.ru, narod.ru, rapidshare и т.
> д. и т. .п.
А в чём заключается возжение? На главной странице http://ifolder.ru/ кнопка загрузить файл.
← →
Сергей М. © (2008-10-20 09:48) [29]
> откуда такие тормоза вдруг - вообще не понятно
От synchronize, наверно)
← →
МемТест (2008-10-20 10:13) [30]
> Сергей М. © (20.10.08 09:48) [29]
>
> > откуда такие тормоза вдруг - вообще не понятно
>
> От synchronize, наверно)
А что с ним сделано не так и как надо исправить?
← →
Сергей М. © (2008-10-20 10:16) [31]
> что с ним сделано не так
С ним-то как раз все так.
Это с твоей программой не так)
> как надо исправить?
Надо переписать программу с полным пониманием происходящего в ней.
← →
Плохиш © (2008-10-20 10:53) [32]
> МемТест (17.10.08 05:11) [26]
> Е-mail так давать нельзя сразу заспамят весь.
> Можно же выложить на ifolder.ru, narod.ru, rapidshare и
> т. д. и т. .п.
Я не ошибаюсь, это у нас проблема? Или, всё-таки, у нас?
← →
shlst (2008-10-20 11:47) [33]Есть программа, которая может назначать другие программы на отдельные ядра. То есть блокнот на первое ядро, винамп на второе, а твою программу, автор, на третье ядро и второе тебе не достанется :)
← →
stas © (2008-10-20 13:29) [34]
> Ощущение, что второе ядро просто не задействуется.
Это легко проверить диспетчером задач.
мы же незнаем что ты там делаешь как мы тебе поможем?
← →
stas © (2008-10-20 15:44) [35]
> А в чём заключается возжение? На главной странице http://ifolder.
> ru/ кнопка загрузить файл.
Без анкеты, без е-майла, пишешь что-то похожее на брутфорс и хочешь чтобы тебе вот так все сделали.
← →
МемТест (2008-10-21 04:47) [36]
> Сергей М. © (20.10.08 10:16) [31]
>
> > что с ним сделано не так
>
> С ним-то как раз все так.
> Это с твоей программой не так)
Сделал, чтобы обращения к нему стали реже. Помогло.
Но скорость работы в один поток или в два или в пятнадцать - почти одинаковая. В пределах погрешности.
В чём тут причина?
← →
МемТест (2008-10-21 05:04) [37]
> stas © (20.10.08 13:29) [34]
>
> > Ощущение, что второе ядро просто не задействуется.
>
> Это легко проверить диспетчером задач.
Как именно? Он показывает загрузку процессора. 100 процентов. Про ядра там ничего нет.
← →
МемТест (2008-10-21 05:12) [38]
> shlst (20.10.08 11:47) [33]
>
> Есть программа, которая может назначать другие программы
> на отдельные ядра. То есть блокнот на первое ядро, винамп
> на второе, а твою программу, автор, на третье ядро и второе
> тебе не достанется :)
Как называется программа? Там можно установить, чтоб потоки моей программы разводились по двум ядрам?
> stas © (20.10.08 15:44) [35]
>
> > А в чём заключается возжение? На главной странице http:
> //ifolder.
> > ru/ кнопка загрузить файл.
>
> Без анкеты, без е-майла, пишешь что-то похожее на брутфорс
> и хочешь чтобы тебе вот так все сделали.
- А чем вы докажете, что вы - кассир? Чем?
- Я - кассир! Вот деньги, билеты, окошко и надпись: "Сидоров - кассир".
- Вы не Сидоров - кассир!
- Нет, я кассир!
- Вы не кассир!
- Нет, я кассир!
- Вы пришли с улицы и сели, а кассира убили! Труп - в сейф!
- Что ты плетешь? Вот сейф пустой, ты что?
- Убрали, успели и сели вместо него. Вы не Сидоров - кассир!
- Да ты что? Вот паспорт на десять лет, дурака валяешь!
- А паспорт отняли!
- А карточка?
- Наклеили!
- А печать?
- Выкрали из милиции. Зарезали паспортистку, достали бланк, заполнили ее рукой, кровь смыли. Вы же смыли всю кровь! Зачем вы смыли кровь?
- Да ты что? Вот, все знают, все подтвердят. Ребята, кто я?
- Ничего не значит, вы сговорились!
- Да вот мой начальник!
- Это не он.
- Лаптев!
- Врет!
- Константин Петрович!
- Притворяется. Как ты сюда попал, убийца?
http://www.jvanetsky.ru/data/text/t7/u_kassy/
← →
Skyle © (2008-10-21 06:31) [39]
> МемТест (21.10.08 05:12) [38]
> Как называется программа? Там можно установить, чтоб потоки
> моей программы разводились по двум ядрам?
Такая программа называется "Диспетчер задач". Правой кнопкой на процессе, "Задать соответствие".
← →
KSergey © (2008-10-21 09:21) [40]> МемТест (21.10.08 05:04) [37]
> > Это легко проверить диспетчером задач.
> Как именно? Он показывает загрузку процессора. 100 процентов.
> Про ядра там ничего нет.
На вкладку "Быстродействие" загляни.
Верхний ряд окошечек с графиками - это как раз загрузка ядер. Если такое окошко всего одно - значит и ядер одно :)
Страницы: 1 2 вся ветка
Форум: "Прочее";
Текущий архив: 2008.12.21;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.068 c