|
|
|
Много поточность!
|
|||
|---|---|---|---|
|
#18+
Всем удачного начала недели! Многопоточность? Как лутше организовать 12 - 20 потоков так что бы они одновременно и приблизительно с одинаковой скоростью считались? и второе при конце расчетов всех потоков выполнялось какое ли бы действие. Посоветуйте как ето лутше реализовать или где про потоки можно почитать. Программу пишу на С++ Builder 6.0. Буду очень признателен! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2006, 07:25 |
|
||
|
Много поточность!
|
|||
|---|---|---|---|
|
#18+
Чтобы 20 потоков работали одновременно, надо иметь 20 процессоров. А иначе будут они работать по очереди - будут выделяться кванты времени на каждый поток. Если у потоков одинаковые приоритеты, то выполняться они будут с примерно одинаковой скоростью (если скорость мерять на интервале существенно больщем чем размер кванта времени). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2006, 07:47 |
|
||
|
Много поточность!
|
|||
|---|---|---|---|
|
#18+
я это понимаю ведь всеравно так же будет быстрей чем все запускалось и делалось бы одним потоком последовательно.(теоретически) Так вот хочу спросить у тех кто знает как определить и как лутше сделать. задача матиматическая много итераций и вычислений. Данные берет с базы для вычислений ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2006, 08:58 |
|
||
|
Много поточность!
|
|||
|---|---|---|---|
|
#18+
может стоит разделить не на 20 потоков а на 4 (и для этого купить тачку с 4 процами)? просто так по сути расчет одного цикла состовляет 2-3 минуты 20*3 = 60 минут если последовательно. Может кто знает нормальную документацию по потокам и как их лутше использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2006, 09:02 |
|
||
|
Много поточность!
|
|||
|---|---|---|---|
|
#18+
по идее, на однопроцессорной машине парралельное вычисление будет медленнее последовательного. с увеличением числа процессоров разница в скорости должна уменьшаться и устремиться к нулю при устремлении числа процессоров к числу вычисляемых задач. На практике, все, конечно, будет еще хуже... Но оптимально - это количество потоков равное количеству процессоров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2006, 09:32 |
|
||
|
Много поточность!
|
|||
|---|---|---|---|
|
#18+
Несколько потоков на одном процессоре будет работать медленнее, чем один, т.к. вычисления (трудоемкость) одни и теже, скорость вычислений одна и та же, но прибавляется время на переключение потоков. Тачка на 4 процессора - вариант. Но надо знать какими средствами будет добиваться распароллеливание. Так же вариант - распределенные вычесления. Т.е. на нескольких компьютерах в сети. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2006, 09:41 |
|
||
|
Много поточность!
|
|||
|---|---|---|---|
|
#18+
Но для распределенного вычесления софта сейчас мало, и, наверное, он дорогой. Так что может прийдется писать протоколы и средства самому. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2006, 09:42 |
|
||
|
Много поточность!
|
|||
|---|---|---|---|
|
#18+
думал над распределенным вычислением, блин у заказчика не хватит денег на его реализацию. думаю что логично будет тогда просто создать 2 потока и между ними поделить все математические вычесления. Просто щас много пошло пней 4 а там 2 проца (один физ. второй логический). Реализовать многопоточность как я понимаю можно стандартными средствами Builderа или через WIN API. А что лутше? так вроде по теории класс TTrehead в Builder это обработанный Win API. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2006, 10:05 |
|
||
|
Много поточность!
|
|||
|---|---|---|---|
|
#18+
mikola1982Может кто знает нормальную документацию по потокам и как их лутше использовать.Все вышенаписанное справедливо. Для организации отдельного потока используется класс TThread, в хелпе и Examples есть нормальные примеры. Есть ограничение на число одновременно запущенных потоков (вроде бы 12). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2006, 10:09 |
|
||
|
Много поточность!
|
|||
|---|---|---|---|
|
#18+
mikola1982думал над распределенным вычислением, блин у заказчика не хватит денег на его реализацию. думаю что логично будет тогда просто создать 2 потока и между ними поделить все математические вычесления. Просто щас много пошло пней 4 а там 2 проца (один физ. второй логический). Реализовать многопоточность как я понимаю можно стандартными средствами Builderа или через WIN API. А что лутше? так вроде по теории класс TTrehead в Builder это обработанный Win API. На счет распрдеделения вычислений по процессорам, я не специалист. Здесь, ждать, что кто-нибудь другой ответит, или лазить по инету. На счет распределенных вычислений - у него отдельный комп стоит на проэект, и не включен в сетку?Т.к. в сетке как минимум 90 процентов ресурсов свободно, и отдельные машины тут не нужны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2006, 10:11 |
|
||
|
Много поточность!
|
|||
|---|---|---|---|
|
#18+
mikola1982Всем удачного начала недели! Многопоточность? Как лутше организовать 12 - 20 потоков так что бы они одновременно и приблизительно с одинаковой скоростью считались? и второе при конце расчетов всех потоков выполнялось какое ли бы действие. Посоветуйте как ето лутше реализовать или где про потоки можно почитать. Программу пишу на С++ Builder 6.0. Буду очень признателен! А в чем заключается задача? И почему нужно именно 12 (минимум) потоков? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2006, 10:30 |
|
||
|
Много поточность!
|
|||
|---|---|---|---|
|
#18+
просто матиматика! Очень много итераций, умножения, возведения в степень. Можно меньше чем 12. Просто есть 12-20 алгоритмов обработки данных, которые берут с БД общую инф. производят еЁ обработку и выдают результат. Вот в принцепе и вся суть задачи. Один алгоритм выполняется от 2 до 3-х минут. Выполнятся все будет как минимум на 2-х процессорном серваке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2006, 10:50 |
|
||
|
Много поточность!
|
|||
|---|---|---|---|
|
#18+
mikola1982я это понимаю ведь всеравно так же будет быстрей чем все запускалось и делалось бы одним потоком последовательно.(теоретически) Так вот хочу спросить у тех кто знает как определить и как лутше сделать. задача матиматическая много итераций и вычислений. Данные берет с базы для вычислений Правильно думаешь.. не слушай тут никого кто говорит что будет работать медленнее согласен если провести эксперимент то два потока последовательно будут работать гораздо медленнее чем два потока вместе.. Особенности архитектуры современных микропроцессоров позволяет выполнять несколько операций за такт ( количество конвееров уже на П-III было помоему 6: 4 Int и 2 float можно посмотреть документашку могу ошибаться)... Учитывая нынешнюю многоядерность это даст еще больший прирост.. А писать программу видимо придеться используя MPI (самый лучший выбор) это библиотека можно прикрутить к VC+ вроде даже и бесплатную можно найти ... Реализвана куча вариантов MPI можно поискать как под WIN так и под Linux. Это библиотека для распределенных вычислений. Потоки это фуфло нет удобных механизмов синхронизаций рассылки другим потокам... не стоит изобретать вилосипед. В библиотеке MPI все давно уже есть при желании даже можно будет запустить и программу и на кластере если будет доступ... Распределенными вычислениями у нас занимаеться куча народу сходи на www.parallel.ru там много материала и куча ссылок на рускоязычные сайты (сайт научный но практические вещи тоже можно найти). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2006, 10:51 |
|
||
|
Много поточность!
|
|||
|---|---|---|---|
|
#18+
Для двухпроцессорной системы (c поддержкой HT), я-бы сделал так: 1) Четыре рабочих потока, которые занимаются вычислениями (2 процессора * 2 логических АЛУ = 4 ). 2) Один поток диспетчер, для мониторинга за статисткикой и управлением. Он не будет потреблять много ресурсов. В основном он - ждет интервалый таймера (3-5 сек) и снимает показания с разделяемых переменных для публикации. Он же может прибивать зависнувшие потоки и ставить на выполнение новые. 3) Перед стартом - задания выстраиваются в очередь. Первые четыре стартуют сразу. Оставшиеся 8 заданий ждут освобождения слотов рабочих потоков. 4) Если вычисления интенсивно используют float point - то количество рабочих потоко нужно уменьшить до 2 (на каждом физическом процессоре - только один FPU). C уважением Lord Mayton ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2006, 11:00 |
|
||
|
Много поточность!
|
|||
|---|---|---|---|
|
#18+
SilverSpyder Распределенными вычислениями у нас занимаеться куча народу сходи на www.parallel.ru там много материала и куча ссылок на рускоязычные сайты (сайт научный но практические вещи тоже можно найти). спасибо!за подсказку! ща буду искать! если вам не трудно то можете выложить сылку на конкретный ресурс по данной теме! буду очень блогодарен! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2006, 11:04 |
|
||
|
Много поточность!
|
|||
|---|---|---|---|
|
#18+
mayton 4) Если вычисления интенсивно используют float point - то количество рабочих потоко нужно уменьшить до 2 (на каждом физическом процессоре - только один FPU). Батенька да вы в прошлом веке живете вот цитата с одного из сайтов (википедия называеться) Today, many CPUs/architectures have more than one FPU, such as the PowerPC 970, and processors based on the Netburst and AMD64 architectures (such as the Pentium 4 and Athlon 64, respectively.) Я бы на вашем месте почитал бы что нибудь на эту тему прежде чем так категорично заявлять ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2006, 11:06 |
|
||
|
Много поточность!
|
|||
|---|---|---|---|
|
#18+
maytonДля двухпроцессорной системы (c поддержкой HT), я-бы сделал так: спасибо за совет! В общем смысыл понятен. А вобще за сколько тактов или времени создается поток? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2006, 11:08 |
|
||
|
Много поточность!
|
|||
|---|---|---|---|
|
#18+
SilverSpyderОсобенности архитектуры современных микропроцессоров позволяет выполнять несколько операций за такт ( количество конвееров уже на П-III было помоему 6: 4 Int и 2 float можно посмотреть документашку могу ошибаться)... Чем же это отличается от многоядерности? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2006, 11:12 |
|
||
|
Много поточность!
|
|||
|---|---|---|---|
|
#18+
Akh SilverSpyderОсобенности архитектуры современных микропроцессоров позволяет выполнять несколько операций за такт ( количество конвееров уже на П-III было помоему 6: 4 Int и 2 float можно посмотреть документашку могу ошибаться)... Чем же это отличается от многоядерности? да как сказать, поток то один вот только в етом потоке несколько операций выполняются за раз! вот помойму всЁ отличие. тоесть несколько процов несколько потоков! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2006, 11:15 |
|
||
|
Много поточность!
|
|||
|---|---|---|---|
|
#18+
SilverSpyderБатенька да вы в прошлом веке живете... Ахти! (рву седые волосы) Ну... что-ж спасибо. Кстати, а какой "камень" на "борту" у афтора? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2006, 11:17 |
|
||
|
Много поточность!
|
|||
|---|---|---|---|
|
#18+
Р-4 стоит у меня! про MPI посмотрел сайт пока нечего не понять. ищу дальше. а его можно будет прикрутить к билдеру? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2006, 11:24 |
|
||
|
Много поточность!
|
|||
|---|---|---|---|
|
#18+
Не знаю как работает TThread на билдере, но имхо лучше сделать на чистом WIN32 API. Ничего сложного там нет. Распараллеливание вычислений - довольно сложная штука, дамаю, максимально оптимизировать надо сами алгоритмы, не вдаваясь в реализацию тех или иных математических действий на конкретном камне. Существует много способов распараллеливания вычислений (распараллеливание циклов, например), но работает это только на специальных камнях, с векторной архитектурой вычислений. Ядро WIN2000 очень умная штука )) оно само распределит нагрузку по процессорам/ядрам если у тебя обычный проц. В Ваших задачах используется только процессор и память?? Я имею ввиду, нет ли каких запросов в удаленныю БД, или работы с сетью??? Если есть - то имеет смысл увеличивать количество потоков. Если только процессор - выше головы не прыгнешь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2006, 11:44 |
|
||
|
Много поточность!
|
|||
|---|---|---|---|
|
#18+
mikola1982 Akh SilverSpyderОсобенности архитектуры современных микропроцессоров позволяет выполнять несколько операций за такт ( количество конвееров уже на П-III было помоему 6: 4 Int и 2 float можно посмотреть документашку могу ошибаться)... Чем же это отличается от многоядерности? да как сказать, поток то один вот только в етом потоке несколько операций выполняются за раз! вот помойму всЁ отличие. тоесть несколько процов несколько потоков! Тут речь про один процессор с одним ядром и несколькими конвеерами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2006, 11:45 |
|
||
|
Много поточность!
|
|||
|---|---|---|---|
|
#18+
mikola1982 про MPI посмотрел сайт пока нечего не понять. ищу дальше. а его можно будет прикрутить к билдеру? Честно сказать не видел библотеки под него.. сам писал только под Visual Studio на MPI... и довольно давно это было сейчас не слежу за прогрессом ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2006, 11:46 |
|
||
|
Много поточность!
|
|||
|---|---|---|---|
|
#18+
AkhЧем же это отличается от многоядерности? Вот что написано про самый первый пентиум: Благодаря использованию суперскалярной архитектуры процессор может выполнять 2 команды за 1 такт. Такая возможность существует благодаря наличию двух конвейеров — u- и v-конвейер. u-конвейер — основной, выполняет все операции над целыми и вещественными числами; v-конвейер — вспомогательный, выполняет только простые операции над целыми и частично над вещественными. Чтобы старые программы (для 486) в полной мере использовали возможности такой архитектуры, необходимо было их перекомпилировать. Pentium является первым CISC процессором использующим многоконвейерную архитектуру. А отличие простое от многоядерности есть такой: Механизм предсказания адресов ветвления. Применяется для сокращения времени простоя конвейеров, вызванного задержками выборки команд при изменении счетчика адреса во время выполнения команд ветвления. Для этого в процессоре используется буфер адреса ветвления BTB (Branch Target Buffer), использующий алгоритмы предсказания адресов ветвления Все понятно или надо по подровнее... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2006, 11:52 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34140193&tid=2029982]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
176ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
72ms |
get tp. blocked users: |
2ms |
| others: | 221ms |
| total: | 513ms |

| 0 / 0 |
