Модель вычислительного процесса в GridMD - Повышение производительности работы библиотеки GridMD

Узлы графа исполнения, используемого в GridMD, представляют собой конкретные этапы исполнения, с которыми связываются действия, определяемые программным кодом пользователя библиотеки [9]. Ребра графа есть зависимости между этапами. Порядок исполнения узлов полностью определяется ребрами графа - узел будет исполнен только в том случае, если исполнены все его родительские узлы и будут известны результаты всех входящих в узел связей. В GridMD существует типизация ребер по механизму передачи данных между узлами и управлению порядком исполнения узлов. В случае, когда соединенные узлы связаны между собой некой зависимостью, ограничивающей возможности их совместного исполнения только в рамках одного процесса, ребро, соединяющее их, будет являться Hard Link (жесткая связь). Например, каждый из узлов использует общую глобальную переменную в процессе выполнения, или существует другая подобная зависимость, внесенная при определении узлов графа пользователем библиотеки. Такие узлы объединяются в одну Задачу, реализуемую менеджером заданий. Передачу данных между узлами можно явно формализовать с точки зрения типа передаваемых данных, используя связь между узлами типа Data Link. Пользователь должен указать тип передаваемых данных в качестве шаблонного параметра при создании экземпляра связи между узлами графа. Существование данного типа связи предоставляет возможность исполнять узлы в рамках независимых вычислительных процессов, поскольку требуется лишь Наличие данных на входе дочернего узла, а не сам факт завершения исполнения родительского узла [9]. Также в рамках библиотеки существуют два подтипа связи Data Link - file Link и Status Link. Связь типа File Link используется, для явного указания библиотеке, что передача данных между узлами должна быть организована через файл. Для стандартных типов C++ GridMD реализует процедуры записи и чтения данных при использовании файла, для пользовательских типов эти функции обязаны быть реализованы пользователем самостоятельно. Тип связи Status Link позволяет планировщику заданий явно указать последовательность исполнения узлов, не связанных между собой связью по данным и жесткой связью. Такой тип связи может быть полезен, когда необходимо обеспечить безопасность целостности исполнения графа от нежелательных сторонних эффектов, не контролируемых GridMD, например обновление базы данных по результатам исполнения узла графа.

Похожие статьи




Модель вычислительного процесса в GridMD - Повышение производительности работы библиотеки GridMD

Предыдущая | Следующая