ДИНАМИЧЕСКОЕ ВЫДЕЛЕНИЕ НЕОДНОРОДНЫХ ВЫЧИСЛИТЕЛЬНЫХ РЕСУРСОВ, ОПРЕДЕЛЯЕМОЕ ВО ВРЕМЯ ВЫПОЛНЕНИЯ ПРИЛОЖЕНИЯ
DYNAMIC ISOLATION OF NON-UNIFORM COMPUTING RESOURCES, DETECTED DURING APPLICATION EXECUTION

Настоящее изобретение касается механизма исполнения вычислительных задач в вычислительной среде, в частности, неоднородной вычислительной среде, приспособленной для параллельной обработки вычислительной задачи.
Настоящее изобретение является развитием системы, описанной в более ранней заявке WO 2012/049247 A1, WO '247, в которой описана кластерная компьютерная архитектура, содержащая множество вычислительных узлов и множество ускорителей, соединенных вместе с помощью интерфейса связи. Диспетчер ресурсов отвечает за динамическое назначение друг другу одного или более ускорителей и вычислительных узлов во время выполнения. Пример такого динамического управления обработкой описан в документе «Динамическое управление обработкой с выделением-внутренним совместным планированием по направлению к интерактивным сверхвысокопроизводительным вычислениям», автор Класс (Clauss) и другие, COSH 19 января 2016 года, Прага, Чехия, который включен в настоящий документ посредством ссылки для любых целей. Хотя средство из WO '247 предоставляет гибкое средство для назначения ускорителей для вычислительных узлов, оно не обращается к вопросу распределения задач между вычислительными узлами и ускорителями.
Средство из WO '247 дополнительно описано в документе «Проект DEEP. Альтернативный подход к неоднородным кластерным вычислениям в эру многоядерной архитектуры», автор Эйкер (Eicker) и другие, журнал «Параллелизм и вычисления: практика и опыт» (Concurrency Computat.: Pract. Exper.), 2016; 28:2394-2411. Описанная неоднородная система содержит множество вычислительных узлов и множество ускорительных узлов, соединенных коммутируемой сетью. Для обработки приложения, его «озадачивают», чтобы обеспечить указание, какие задачи могут быть выгружены из вычислительного узла в ускоритель. Это озадачивание достигается благодаря тому, что разработчик приложения снабжает код директивами компилятору, которые указывают зависимости между разными задачами, и, кроме того, снабжает метками, которые указывают высокомасштабируемые части кода, которые должны быть обработаны ускорителем. Масштабируемость в этом контексте означает то, что, когда увеличивается нагрузка на сервис, стабильное и линейное увеличение аппаратного обеспечения может поддержать тот же уровень сервиса на одного пользователя.
В документе US 2017/0262319 A1 в одном аспекте описаны процессы времени выполнения, которые могут полностью или частично автоматизировать распределение данных и сопоставление задач и вычислительных ресурсов. Так называемый эксперт настройки, то есть, человек-оператор, по-прежнему может быть нужен для осуществления действий по сопоставлению на доступные ресурсы. По существу, описано то, как рассматриваемое приложение, требующее вычислений, может быть сопоставлено с заданной вычислительной иерархией.
В настоящем изобретении предложен способ работы неоднородной вычислительной системы, которая содержит множество вычислительных узлов и множество ускорительных узлов, по меньшей мере один из множества вычислительных узлов и множества ускорительных узлов выполнен с возможностью вычисления вычислительной задачи, эта вычислительная задача содержит множество подзадач, при этом в ходе первой вычислительной итерации, множество подзадач назначают и обрабатывают с помощью узлов из множества вычислительных узлов и ускорительных узлов для первого распределения; используют информацию, касающуюся обработки множества подзадач с помощью множества вычислительных узлов и ускорительных узлов, для выработки последующего распределения подзадач по вычислительным узлам и ускорительным узлам для их обработки на последующей вычислительной итерации.
Предпочтительно, чтобы информацию предоставляли соответствующие служебные процессы, работающие в каждом узле из вычислительных и ускорительных узлов. Предоставленная информация позволяет диспетчеру приложений определять, может ли распределение подзадач по вычислительным узлам и ускорительным узлам быть приспособлено или улучшено для последующей вычислительной итерации.
Диспетчер ресурсов может определить назначение задач и подзадач на вычислительные узлы и ускорительные узлы для первой итерации в зависимости от вычислительной задачи и дополнительных параметров. Диспетчер приложений передает информацию на диспетчер ресурсов в качестве входа, так что диспетчер ресурсов динамически изменяет последующие распределения в ходе вычисления вычислительной задачи.
В еще одном аспекте изобретения, диспетчер ресурсов на основе упомянутой информации динамически изменяет назначение друг другу вычислительных узлов и ускорительных узлов в ходе вычисления вычислительной задачи.
Начальное распределение также может быть определено с помощью диспетчера приложений с использованием информации, предоставленной пользователем системы в программном коде, скомпилированном для исполнения системой. В качестве альтернативы, диспетчер приложений может быть выполнен с возможностью выработки такого распределения на основе анализа кода подзадач.
В еще одном аспекте, в изобретении предложена неоднородная вычислительная система, которая содержит множество вычислительных узлов и множество ускорительных узлов для вычисления одной или нескольких задач, которые содержат множество подзадач, интерфейс связи, который соединяет вычислительные узлы друг с другом и ускорительными узлами, при этом система содержит диспетчер ресурсов, который выполнен с возможностью назначения друг другу ускорительных узлов и вычислительных узлов для вычисления задач и при этом система дополнительно содержит диспетчер приложений, диспетчер приложений выполнен с возможностью приема информации от служебных процессов, работающих в вычислительных узлах и ускорительных узлах, для обновления распределения подзадач по вычислительным узлам и ускорительным узлам между первой вычислительной итерацией и последующей вычислительной итерацией.
В еще одном аспекте изобретения, диспетчер ресурсов принимает упомянутую информацию, так что диспетчер ресурсов динамически изменяет назначение друг другу вычислительных узлов и ускорительных узлов в ходе вычисления вычислительной задачи.
Далее, только для примера, будут описаны предпочтительные варианты осуществления настоящего изобретения со ссылками на приложенные чертежи, на которых:
на фиг. 1 схематично показана кластерная вычислительная система, в которой применено изобретение.
На фиг. 1 показано схематичное представление кластерной вычислительной системы 10, в которой применено изобретение. Система 10 содержит некоторое количество вычислительных узлов 20 и некоторое количество ускорительных узлов 22. Вычислительные узлы 20 и ускорительные узлы соединены с помощью инфраструктуры 24 связи, при этом ускорительные узлы соединены с интерфейсом связи через интерфейсы 23 ускорителей. Каждый узел из вычислительных узлов 20 и ускорительных узлов 22 схематично представлен прямоугольником, и каждый из этих узлов при работе содержит по меньшей мере один из соответствующих служебных процессов 26а и 26b, которые схематично показаны квадратом в прямоугольнике соответствующего узла. Служебный процесс из настоящего изобретения представляет собой приложение, которое работает как фоновый процесс и которое способно предоставлять информацию, как описано в настоящем документе. В документе «Динамическое управление обработкой с выделением-внутренним совместным планированием по направлению к интерактивным сверхвысокопроизводительным вычислениям», автор Класс (Clauss) и другие, COSH 19 января 2016 года, Прага, Чехия, описаны служебные процессы, которые рассматриваются в настоящем документе, и содержание указанного документа включено в настоящий документ посредством ссылки и для любой цели.
Система 10 также содержит диспетчер 28 ресурсов, который показан соединенным с инфраструктурой 24 связи, и диспетчер 30 приложений. Каждый элемент из диспетчера 28 ресурсов и диспетчера 30 приложений содержит соответствующий служебный процесс 32 и 34.
Вычислительные узлы 20 могут быть идентичны друг другу или могут обладать разными характеристиками. Каждый вычислительный узел включает в себя один или несколько многоядерных процессоров, таких как процессор Intel XeonE5-2680. Узлы соединены вместе с помощью интерфейса связи, который может быть основан на структуре Mellanox InfiniBand ConnectX, которая способна передавать данные со скоростью в много Гигабит/с. Вычислительные узлы сопрягаются с помощью интерфейса связи с множеством ускорительных узлов, в идеальном варианте с помощью набора интерфейсов 40 ускорителей. Как показано, ускорительные узлы содержат по меньшей мере один процессор ускорительного типа, например, многоядерный процессор Intel Xeon Phi, который способен автономно загружаться и исполняет свою собственную операционную систему. Такая технология описана в упомянутом выше журнале «Concurrency Computat.: Pract. Exper.», 2016; 28:2394-2411.
Далее, система 10 может содержать модульный вычислительный слой абстракции, как описано в неопубликованной заявке PCT/EP2017/075375, которая включена в настоящий документ посредством ссылки для всех целей, при этом указанный слой выполнен для предоставления возможности связи между служебными процессами и диспетчером приложений.
Задание, которое подлежит вычислению с помощью системы, может содержать некоторое количество задач, некоторые из которых или все могут быть повторены некоторое количество раз в ходе исполнения задания. Например, задание может быть моделированием на основе метода «Монте-Карло», при котором действие моделируют с использованием случайного числа, а вычисления последовательно повторяют много раз.
Задачи могут содержать некоторое количество подзадач или ядер. Каждая из этих подзадач может более или менее подходить для обработки с помощью одного или нескольких вычислительных узлов или одного или нескольких ускорителей. В частности, масштабируемость подзадачи может указывать, подходит ли подзадача больше для обработки вычислительным узлом или ускорителем. Система является гибкой во всех направлениях, также предоставляет возможность совместной обработки подзадач всеми упомянутыми в настоящем документе узлами, а также перестановку обработки между узлами.
Если задачу вычисляют с помощью первого разделения подзадач между вычислительным узлом и ускорителем, то возможно, что такое разделение не является оптимальным разделением для вычисления этой задачи. Определенные подзадачи, которые назначены ускорителю на первой итерации, фактически могут не подходить для обработки ускорителем, так что обработка этих подзадач с помощью вычислительного узла, а не с помощью ускорителя, может оптимизировать вычисление задачи в целом. Соответственно, для второй и возможно последующих итераций для задачи, при необходимости, изменение второго и/или последующих распределений для подзадач может улучшить эффективность вычисления задачи.
Соответственно, система 10 содержит некоторый механизм, при этом все вычислительные узлы и кластерные узлы выполнены так, что служебные процессы 26а, 26b и 32 передают служебному процессу 34 информацию, касающуюся обработки подзадач и текущего состояния соответствующего обрабатывающего объекта. Служебный процесс 34 использует информацию, предоставленную служебными процессами 26а, 26b и 32, для определения, может ли распределение подзадач по вычислительным узлам и ускорителям быть отрегулировано для оптимизации или приспособления вычисления задачи для последующей итерации. Диспетчер ресурсов также может изменить назначение друг другу вычислительных узлов и ускорителей, помимо регулировки распределения задач.
Задание, содержащее задачу, для которой оператор оценил показатель масштабируемости для каждой подзадачи, является входными данными для системы. Эту задачу компилируют и скомпилированный код исполняют. При исполнении задачу анализируют с помощью диспетчера приложений, и подзадачи задачи делят на подзадачи, подходящие для вычислительного узла, и подзадачи, подходящие для ускорителя, и эту информацию передают диспетчеру ресурсов для назначения ускорителей для вычислительных узлов. В ходе первой итерации задачи, собирают результаты исполнения подзадач и информацию от служебных процессов, которая касается обработки подзадач и состояния узлов. Далее диспетчер приложений осуществляет изменение назначения подзадач для последующей итерации задачи и передает эту информацию об обновлении назначения диспетчеру ресурсов, который, соответственно, также может отрегулировать назначение ускорителей для узлов.
Для каждой итерации, служебные процессы, работающие в вычислительных узлах и ускорителях, передают информацию о состоянии на диспетчер приложений и диспетчер ресурсов, что позволяет оптимизировать вычисление для следующих итераций путем дополнительных регулировок выделения подзадач вычислительным узлам и ускорителям.
Первое распределение может быть определено на основе рейтинга, предоставленного в исходном коде для каждой подзадачи. Хотя упомянутая выше процедура описана с этапом озадачивания, на котором разработчик кода программы может подать на вход начальный показатель масштабируемости, также возможно, чтобы диспетчер приложений автоматически установил начальный показатель масштабируемости для подзадач, причем эту начальную установку улучшают для последующих итераций. Такой вариант обладает достоинством, которое заключается в том, что кодирование задач осуществляют более прямолинейно, тем самым обеспечивая улучшенную практичность системы для разработчиков кода программ, которые незнакомы с приложениями кластерных вычислений.
Помимо регулировки распределения подзадач между вычислительными узлами и ускорителями на основе масштабируемости подзадачи, на это распределение также может влиять информация, о которой узнали при обработке подзадачи, и любая потребность в вызове любых дополнительных подзадач в ходе обработки. Если первой подзадаче, которую обрабатывает ускоритель, требуются входные данные от второй подзадачи, которую не обрабатывает упомянутый ускоритель, то упомянутая ситуация может приводить к прерыванию обработки первой подзадачи. Соответственно, служебный процесс в ускорителе, который обрабатывает первую подзадачу, может отчитаться об этой ситуации диспетчеру приложений, так что на последующей итерации и первая и вторая подзадачи будут обрабатываться с помощью упомянутого ускорителя. Соответственно, диспетчер приложений выполнен с возможностью использования информации, предоставляемой служебными процессами, работающими в вычислительных узлах и ускорителях, с целью регулировки группировки подзадач при назначении вычислительных узлов и ускорителей.
Хотя вычислительные узлы на фиг. 1 обозначены одинаковой ссылочной позицией, также как и ускорительные узлы, это не подразумевает то, что все вычислительные узлы идентичны друг другу и все ускорительные узлы также идентичны друг другу. В систему 10 могут быть добавлены узлы и/или ускорительные узлы, которые отличаются по характеристикам от других вычислительных/ускорительных узлов. Соответственно, конкретные узлы из вычислительных узлов и/или ускорительных узлов могут особенно подходить для обработки конкретных подзадач. Диспетчер приложений учитывает информацию о структуре и передает такую информацию о назначении на диспетчер ресурсов для обеспечения оптимального распределения подзадач.
Важный аспект изобретения заключается в понимании того, что сопоставление, приспособление вычислительных задач и подзадач к иерархии компьютера может не обеспечить достаточное использование естественной гибкости и адаптивности архитектуры компьютера, что показано в качестве примера в документе WO 2012/049247 A1. Следовательно, настоящее изобретение объединяет наиболее адекватное приспособление задач, аналогично примеру из документа WO 2017/0262319 A1, а также динамическое изменение взаимной конфигурации вычислительных узлов и ускорительных узлов и, в конечном счете, динамически перестраивает сопоставление вычислительных задач при их исполнении на основе информации, предоставленной служебными процессами, относительно эффективности исполнения вычислительной задачи, и динамически изменяет назначение друг другу вычислительных узлов и ускорительных узлов.