русский
Germany.ruForen → Архив Досок→ Programmierung

Про многопоточность

15.02.22 12:44
Re: Про многопоточность
 
alex445 коренной житель
in Antwort 7495 15.02.22 11:25
есть огромный файл, состоящий из стрингов по 64 символа, за цикл берём 32 ключа, раскидываем на 32 ядра и каждое обрабатывает свой ключ, потом обратно в другой файл складываем готовых 32 адреса, и так цикл за циклом,

Если данные не взаимозависимы, то можно параллельно их посчитать. Но это тогда можно рассматривать как разные, независимые данные, а не одно данное в целом. Но даже чтобы разбить файл (или даже кусок массива в оперативе) на части, сделать же это нужно последовательно (или в ОЗУ можно читать параллельно несколько данных сразу на физическом уровне)? Т.е. сначала последовательно считываем массив и разбиваем его на части, а потом начинаем параллельную работу. Когда нужно результаты соединить, параллельная работа заканчивается - снова последовательно собираем результаты в одно целое.


А если данные всё же зависимы? Например, нужно по массиву провести сглаживание скользящим средним - вообще типичная задачка. Если один проход сглаживания - ок. А если несколько? Тогда нужно ждать результатов предыдущего прохода, чтобы начать следующий. По крайней мере, пока для следующего не наберётся достаточно данных от первого прохода.

 

Sprung zu