Технологии вычислений на многоядерных процессорах

Кстати, Вам на elibrary быстро SPIN присвоили? А то я уже 3 недели жду, а обещали за одну…
такие дела.
cucullus
Кстати, Вам на elibrary быстро SPIN присвоили? А то я уже 3 недели жду, а обещали за одну…

Честно говоря, я не помню. Зарегистрировался я в 2010 году а пользоваться начал в 2011, был период когда было не до науки… Вобщем я зарегистрировался и забросил elibrary надолго. Потом обнаружил там кучу своих публикаций
Да пребудет с нами Сила...!
CPU Intel Core i9 10900-KF/RAM DDR4 128 Gb/NVidia GForce GTX 1080 Ti Turbo 11Gb/SSD M2 512 Gb/HDD Seagate SATA3 2 Tb/HDD Toshiba 3Tb/HDD Toshiba 6Tb
http://rusrailsim.org
Полученные выше результаты - фикция, из-за структурных ошибок… Буду разбираться со всем этим дальше. Одно скажу, что решение ОДУ сложно распараллелить…

Изучение специальной литературы по численным методам дало следующий, достаточно прозрачный параллельный алгоритм интегрирования ОДУ. Пусть есть система N обыкновенных дифференциальных уравнений (ОДУ) вида

y = f(t, y), с начальным условием y(t0) = y0

(полужирным показаны векторы), т.е. задача Коши для системы ОДУ, которую надо решить на интервале времени t0 <= t <= tk.

Весь временной интервал разбиваем на участки длинной h - шаг интегрирования. Распределяем уравнения между ядрами, в случае одинаковой загрузки ядер (одинаковое число уравнений каждому), каждое ядро выполняет операцию (для простоты одинаково, в реальности одно/несколько ядер оказывается недо- или перегруженнымб что тоже приводит к рассинхронизации с гарантией в 100%)

yj = yj + h*fj(y0, y1, ….,yN), где j = nc*p…(nc + 1)*p, причем nc - номер ядра, p - число уравнений на одно ядро.

После того как все ядра закончат считать свои итерации необходимо нарастить время t = t + h и перейти к следующей итерации.

Так вот гвоздь как раз в синхронизации, время нужно наращивать после выполнения итерации всеми ядрами, и только в этот момент. В приведенном выше примере наращивание времени тоже распараллелено, отсюда и “прирост” производительности.

Вобщем решаю вопросы синхронизации… Как решу, продолжу…

P.S.: решал это не только с OpenMP, но и “от сохи”, заюзав POSIX-треды… Всё упирается в синхронизацию…
Да пребудет с нами Сила...!
CPU Intel Core i9 10900-KF/RAM DDR4 128 Gb/NVidia GForce GTX 1080 Ti Turbo 11Gb/SSD M2 512 Gb/HDD Seagate SATA3 2 Tb/HDD Toshiba 3Tb/HDD Toshiba 6Tb
http://rusrailsim.org
 
Зарегистрироваться или войдите чтобы оставить сообщение.