10.02.2015 15:17, Михаил Монашёв пишет:
Здравствуйте, Анатолий.

3)  Программы  в которых несколько потоков делают одну работу просто
сложнее,  чем  там  где туже работу делает один поток, хотя бы из-за
необходимости синхронизации.
Пример: перемножение матрицы.
А  какая  нужна  синхронизация  при  перемножении  матриц?  У  каждого
процесса  свой кусок одной из перемножаемых матриц и по этому куску он
бегает.  Т.е. данные заранее поделены на равные части и не надо ничего
синхронизировать.

1) Для того, чтобы дождаться когда все потоки закончат работу
2) В реальной задаче еще данные можно загрузить/выгрузить а это тоже можно делать параллельно 3) Нужно разбить на подзадачи чтобы числа не попадали на одну страницу кэша у разных процов(иначе кэш сбрасывается и core duo становиться i486) 4) Если разбить на слишком больше куски, то какие-то процессы начинают простаивать
5) А если слишком маленькие, то теряется время на переключение задач.
6) Матриц может быть несколько и нужно считать в определенном порядке.


--
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить