Мой вопрос связан с учебным пособием , в котором объясняется, как реализовать boost :: odeint с VexCL для достижения параллелизма (полный код можно найти здесь ).
На следующем рисунке показано, как я думаю об итерациях ODEINT:
Теперь я спрашиваю себя, что именно / или какая его часть распараллелена в VexCL?
У меня сложилось впечатление, что часть ODE - это одна задача, так как в данном примере все уравнения ODE находятся в одном блоке. Может быть, часть интеграции работает в трех параллельных задачах. Это приводит к четырем задачам, где (я думаю) задача ODE имеет шею bottle (поскольку уравнения могут стать очень большими).
Если это правильно, я хотел бы знать, как улучшить этот параллелизм . Я думаю, что имеет смысл объединить ODE и INT по горизонтали. Это приводит к 3 задачам, каждая из которых не может быть дополнительно уменьшена на этом уровне.