Библиотека для параллельного программирования в C++

elenangel

Посоветуйте сабж под виндовс, только не MPI

Olenenok

И зачем оно тебе?

erotic

А что есть параллельное программирование?

enochka1145

OpenMP, ZTheads?

elenangel

Добавлю уточнение: нужна классовая обертка к вызовам Win32 API для программирования Threads не на кластере, а на обычном компе, и не под *nix, а под виндовс. Что-то типа библиотеки Gala, но на Visual C++

kokoc88

Зависит от конкретной задачи. Иногда хватает и ATL'я.

erotic

Хей... Кто-нибудь скажет, что такое параллельное программирование? Это когда два поца сидят за компами и одновременно по клаве шарят?

elenangel

вообще, как я понимаю, это когда задача традиционно выполнявшаяся на одном компе/процессоре переписывается так, чтоб задействовать 2 и более процессоров
в моем случае попросили просто обертку для апи чтоб посоветовали
думаю, что ATL и/или ZThreads - это то что нужно.
задача же в том, чтоб новые потоки не в апи создавать, а как то более удобно, это нужно для WinCE, так что там еще бабушка надвое сказала ZThreads подойдет или нет
кроме того, это видимо не параллельное программирование, хоть и есть несколько потоков, камень то все равно один

oleg701

Параллельной программе пофиг, сколько камней ей выдается для выполнения. От этого она не перестает быть параллельной.

erotic

Блин. Если бы оно звучало как-то в духе "библиотека для многопоточного программирования" или "библиотека для распараллеливания задач" или как-то в этом духе, я бы еще понял. А то "параллельное программирование" - хрень какая-то

oleg701

Ты просто не очень знаком с терминологией.
Вот например.
Или погуляй по parallel.ru

erotic

Мож быть. Но первое, что мне пришло в голову на "параллельное программирование" - это SVN или CVS.

elenangel

собственно, я этим пока и не занимался, потому с терминологией и не знаком
кстати, если просто несколько потоков в программе - это параллельное программирование или нет? как это правильней назвать?

evgen5555

Многопоточность это называется

oleg701

Многопоточность в обычном понимании к параллельному программированию не имеет отношения.
Параллельность - это свойство программы.
Подразумевается, что в параллельной программе несколько потоков выполняют одну и ту же вычислительную задачу.
За счет этого повышается скорость выполнения программы при запуске ее на нескольких процессорах.
В общем случае многопоточность этого не обеспечивает, так как потоки могут заниматься чем угодно.

apl13

Это когда два поца сидят за компами и одновременно по клаве шарят?
Соревнуются, кто быстрее.

elenangel

Да, мне нужна именно многопоточность. Вернее библиотека классов.

Oper

Если несколько потоков выполняют _одну_и_ту_же вычислительную задачу, то скорость выполнения программы на нескольких процессорах никак не возрастет.

oleg701

Фишка в том, что задача одна и та же, и код одинаковый, но вот данные разные.

Oper

В предыдущем посте никак не было отражено ни одного отличия "параллельной" программы от многопоточной.
Кстати, в случае с многопоточными программами код вообще общий для всех потоков.
На счет возможности ускорения на многопроцессорной машине --- совсем не понятно --- кто гарантирует "в общем случае" ускорение для параллельной программы ?

evgen5555

Чувак, прочитай книжку Воеводиных, что ли.

Oper

Да? А мне показалось, чувак, это ты не понимаешь что имеется ввиду. Вопрос тут в том, что называть задачей.

Dasar

задача - это, например, вычислить сумму массива.
при определенной записи - задача, в том числе, и параллельная.

Oper

+1

Landstreicher

У Воеводиных далеко не лучшая книга по этой теме. Лучше читать http://www.ozon.ru/context/detail/id/1372271/

evgen5555

Вопрос тут в том, что называть задачей.
Сам поставил вопрос, сам на него ответил, да ещё и осадил зарвавшихся всезнаек. Ну не молодчина ли?!

erotic

Кстати, в случае с многопоточными программами код вообще общий для всех потоков.
Ух ты!
Оставить комментарий
Имя или ник:
Комментарий: