Визуализация кода для параллельного программирования?
Господа хабравчане, помогите, пожалуйста, с таким вопросом: подскажите какие-нибудь программные инструменты для визуализации кода, а именно, для построения ярусно-параллельной формы графа кода, если таковые вообще имеются.
Просто, проект попался: распараллелить большой написанный ранее на C++ проект, а разбираться в коде (чуть больше 1МБ кода) без графов достаточно тяжко и нужно как-то проследить информационные зависимости.
Если кто сталкивался, помогите. Может я вообще по неправильному пути пошёл?
Вообще для таких задач есть распараллеливающие компиляторы (так называемое автоматическое распараллеливание). При таком объёме кода логичнее попробовать поиграться с компилятором и его флагами, отвечающими за распараллеливание. Ну а если нужно по-максимуму распараллелить, то надо проводить кучу рефакторинга и выделять подзадачи, для которых проверять оптимально ли с точки зрения параллелизма реализовано и если нет, то менять алгоритмы.
Вообще, автоматическое распараллеливание часто даёт результат, которым можно удовлетвориться.
Насчёт распараллеливающих компиляторов смотрел, они либо старые, либо платные, да и по условию у меня gcc.
С флагами gcc игрался, дошёл до определённого результата и на этом рост производительности от ключей компилятора остановился.
И когда начал распараллеливать, понял, что я не с того начал и распараллеливание идёт неэффективно, т.к. кода много, да и он не мечта (goto там повсюду), поэтому я и хотел визуализировать информационные зависимости, чтобы хоть как-то процесс распараллеливания упорядочить.
Пользуюсь в качестве профилировщика Valgrind. В качестве распараллеливающего инструмента — OpenMP.
Можно, согласен. Эта мысль приходила. Я думал найти бесплатный инструмент, мало ли) Но, скорее всего, это последний оставшийся вариант.
Ладно, так или иначе, спасибо большое за небезразличие)