ВЫСОКОПРОИЗВОДИТЕЛЬНАЯ КОМПЬЮТЕРНАЯ СИСТЕМА И СПОСОБ
HIGH-PERFORMANCE COMPUTER SYSTEM AND METHOD

Настоящее изобретение относится к области высокопроизводительных вычислений (high performance computing (HPC)). В частности, настоящее изобретение относится к гетерогенной вычислительной системе, конкретнее, к вычислительной системе, содержащей различные модули, которые могут быть свободно назначены для совместной обработки вычислительных задач. Предложен управляющий объект, называемый уровнем вычислительного абстрагирования модулей (module computing abstraction layer (MCAL)), позволяющий динамически распределять разнообразные ресурсы, предоставляемые различными модулями. Благодаря своей гибкости в области подстройки применительно к различным вычислительным потребностям настоящее изобретение также применимо в качестве базовой системы для предоставления услуг облачных вычислений, которая обеспечивает совместное использование вычислительных процессорных ресурсов и данных компьютерами и другими устройствами по запросу, главным образом через Интернет.
Приложения для систем HPC охватывают широчайшую область техники. От моделирования работы человеческого мозга через прогнозы погоды и климата, вычислительное гидродинамическое моделирование, построение сейсмических изображений, радио астрономию к анализу данных – и это лишь небольшое перечисление. Потребность в высокопроизводительных вычислениях постоянно растет.
В настоящий момент преобладающими архитектурами систем HPC являются кластерные компьютеры и системы с массивно-параллельной обработкой данных (massive parallel processing (MPP)). Кластерные компьютеры содержат несколько кластерных узлов, осуществляющих связь одни с другими с использованием стандартных технологий сетей связи. Индивидуальные кластерные узлы оснащены стандартными, имеющимися в продаже процессорами общего назначения. В системах MPP (массивно-параллельная обработка данных) большое число процессоров выполняют вычисления одновременно, иными словами – параллельно. Они обычно используют стандартные, имеющиеся в продаже процессоры общего назначения. Однако эти процессоры имеют тенденцию использовать собственные технологии сетей связи и специально адаптированное программное обеспечение для связи.
Для удовлетворения потребности в получении все большей и большей вычислительной мощности число кластерных узлов в составе компьютерных кластеров и процессоров в системах MPP в последние годы чрезвычайно увеличивается. Однако уже можно видеть, что простое использование имеющихся в продаже процессоров общего назначения и увеличение числа таких процессоров в системе, не является решением проблемы.
Стандартные, имеющиеся в продаже процессоры обладают безо всякого сомнения положительными аспектами. Они имеют высокую производительность одного потока. Они обладают большой емкостью памяти в пересчете на один процессор или на одно процессорное ядро в случае многоядерного процессора. Здесь можно использовать стандартное программирование, что значительно облегчает сопряжение приложений с такими системами. Однако эта технология приближается к пределам своих возможностей. Что касается готовых, имеющихся в продаже процессоров общего назначения, их скорость (тактовая частота) за последнее десятилетие практически не увеличилась. Этот параметр тесно связан с потреблением энергии, которое не должно намного превышать 100 Вт на один кристалл прежде, чем это станет критичным с точки зрения охлаждения системы. В дополнение к этому такие процессоры являются сравнительно дорогими и обладают низкой энергетической эффективностью.
В качестве одного из технических решений просматривается применение ускорителей, которые могут быть использованы для вычисления частей приложения, обладающих высокой масштабируемостью. В высокой степени масштабируемым является приложение, которое способно работать с более высокими нагрузками путем добавления большего объема ресурсов более экономически эффективным способом. Наличие в программном коде последовательной части, которая не может быть вычислена параллельным образом, обычно является одним из наиболее критичных факторов, ограничивающих масштабируемость.
Системы, использующие больше одного типа процессоров, называются гетерогенными системами. В таких системах различные ускорители могут быть использованы в сочетании с процессорами общего назначения, а именно многоядерными процессорами и графическими процессорами (GPU (Graphics Processing Unit)). Многоядерные процессоры имеют более 50 ядер, а процессоры GPU имеют сотни простых вычислительных ядер. Оба типа процессоров являются энергетически эффективными.
В гетерогенных компьютерных системах каждый кластерный узел оснащен ускорителями, образованными одним или несколькими многоядерными процессорами или процессорами GPU. Такой ускоритель в основном работают в качестве сопроцессора, дополняющего функции первичного процессора кластерного узла. Эти кластерные узлы осуществляют связь через сеть, в которой компоненты передают данные одни другим через соединительные коммутаторы. Термин «сеть» (или «ткань» ("fabric")) используется в области высокопроизводительных вычислений для обозначения топологии системы. Термин «соединение» используется также для обозначения инфраструктуры связи между кластерными узлами, где он относится к электрическим или оптическим соединениям или кабелям, соединяющим отдельные устройства. Главной проблемой при присоединении ускорителя к каждому узлу является статичность этого ассоциирования ускорителя с узлом. Соотношение между процессорами общего назначения и процессорами GPU фиксируется в момент проектирования системы.
Международная заявка WO2012-049247A1 предлагает конфигурацию компьютерных кластеров для устранения этого недостатка и принцип работы предлагаемой конфигурации компьютерного кластера. Эта конфигурация компьютерного кластера содержит вычислительные узлы CN, которые динамически передают специальные вычислительные задачи для выполнения форсирующим усилителям B. Поэтому были предложены способы выделения форсирующих усилителей B вычислительным узлам CN. Такое выделение происходит динамически во время работы. В этой архитектуре кластерные узлы и ускорительные узлы, образующие усилитель, помещены в одну сеть (соединительную «ткань»). Такая архитектура является более гибкой по сравнению с архитектурой с ускоренными кластерными узлами, поскольку выделение усилителей кластерным узлам может быть осуществлено в момент начала выполнения процесса. Эта конфигурация дополнительно описана в статье Норберт Айкер и др. «Проект DEEP – Осуществление кластерных вычислений в многоядерную эру» и в их же статье «Проект DEEP – Альтернативный подход к гетерогенным кластерным вычислениям в многоядерную эру» (Norbert Eicker et al., "The DEEP project Pursuing cluster-computing in the many-core era", 42nd International Conference on Parallel Processing, pp 885-892, 2013, and "The DEEP Project An alternative approach to heterogenous cluster-computing in the many-core era", Concurrency and Computation: Practice and Experience, 28, pp 2394-2411. 2015).
Когда вычисление одного приложения осуществляется в гетерогенной системе, такой как система кластерно-усилительного типа, индивидуальные вычислительные задачи необходимо обрабатывать не только в нескольких разных кластерных узлах, но и в двух разных архитектурах, а именно в компьютерном кластере и в ускорителе. Поэтому обязательно необходимо обеспечить эффективную связь между кластерным компьютером и форсирующим усилителем, а также внутри кластерного компьютера и внутри ускорителя. В дополнение к этому, возрастающее количество компонентов порождает риск отказа компонентов даже при высокой надежности индивидуальных частей. Поэтому система обязательно должна обладать высокой отказоустойчивостью, т.е. способностью выдерживать выход из строя индивидуальных компонентов и все равно сохранять работоспособность.
Настоящее изобретение предлагает модульную вычислительную систему. Модульная вычислительная система содержит различные модули, такие как кластерный модуль и (форсирующий) усилительный модуль, модуль памяти, нейроморфный модуль, модуль анализа данных, графический модуль, квантовый вычислительный модуль и т.п. Каждый модуль может иметь несколько узлов. Кластерный модуль содержит несколько кластерных узлов, усилительный модуль содержит несколько усилительных узлов и модуль памяти содержит несколько запоминающих узлов и т.д.
Все индивидуальные узлы могут быть соединены с одной соединительной сетью. Различные модули могут иметь разные соединения. Кластерный модуль использует, например, соединение InfiniBand, тогда как усилительный модуль использует соединительную сеть Intel Omni-Path, связанную с соединением InfiniBand через специальные интерфейсные узлы. То же самое применимо к модулям других типов.
Для объединения различных модулей в одну систему предложен уровень вычислительного абстрагирования модулей (MCAL). Этот уровень MCAL обеспечивает функциональные возможности связи и функциональные возможности управления. Оборудование Para Station, выпускаемое фирмой Par Tec Cluster Competence Center GmbH, может быть стартовой точкой для реализации уровня MCAL, имеющего функциональные возможности и свойства, описываемые ниже.
Уровень MCAL позволяет осуществлять связь в пределах модуля, называемую внутренней связью модуля, и между модулями, называемую межмодульной связью. С этой целью уровень MCAL создает интерфейсы с соответствующими соединительными сетями, например, одной соединительной сетью для всей системы или специализированной соединительной сетью для каждого модуля, такой как сеть InfiniBand для кластерного модуля и соединительной сетью Intel Omni-Path для усилительного модуля. Возможны также соединения других типов, такие как сеть Этернет, 10G, Gigabit или соединение через совместно используемую память. Уровень MCAL может использовать связь любого типа и выбирает способ связи на основе доступности, указаний от прикладной программы, производительности или стоимостных соображений.
Соединение через совместно используемую память обеспечивает очень быстрый и эффективный способ связи для двух или более процессов. Уровень MCAL может использовать различные типы соединений через совместно используемую память. В случае двух или более процессов при параллельном выполнении задач в одном и том же физическом узле, имеющем совместно используемую память, эта совместно используемая память может быть использована для реализации соединения между этими процессами через такую совместно используемую память. Это обычно возможно в многопроцессорных узлах типа SMP, где осуществляется по одному процессу на каждый процессор CPU. Термин «симметричная многопроцессорная обработка» (symmetric multiprocessing (SMP)) обозначает архитектуру, в которой два или более идентичных процессоров соединены с одним совместно используемым главным запоминающим устройством. Поскольку уровень MCAL знает об этих процессах и о том, в каком узле происходит выполнение этих процессов, уровень MCAL может в такой ситуации установить связь через совместно используемую память.
Однако применение соединения через совместно используемую память не ограничивается многопроцессорными ситуациями SMP. В случае процессов, выполняемых в различных узлах в пределах одного модуля или даже в узлах, принадлежащих разным модулям, уровень MCAL устанавливает связь через совместно используемое виртуальное адресное пространство. При применении совместно используемого виртуального адресного пространства можно передавать сообщения большего размера между узлами просто посредством совместного использования метаданных этого сообщения и виртуального адреса самих данных. Процесс может получить доступ к фактическому сообщению через назначенное виртуальное адресное пространство. Это позволяет быстро осуществлять связь. Уровень MCAL устанавливает виртуальное адресное пространство путем установления области памяти, непосредственно совместно используемой процессами или узлами, участвующими в этой связи.
Как можно видеть из этих примеров, уровень MCAL не только предоставляет функциональные возможности связи, но и выбирает способ связи, позволяющий повысить производительность и эффективность. Уровень MCAL может, например, принимать решение, какое соединение может быть использовано для связи при распределении процессов между процессорами, т.е. при создании и выполнении новых дочерних процессов. В то же время уровень MCAL осуществляет мониторинг текущего процесса и наблюдает за дочерним процессом с целью определить факт его завершения, либо может продолжать его выполнение асинхронно.
Второй главной функцией уровня MCAL является управление. Функция управления охватывает различные аспекты управления, а именно управление узлами, управление модулями, управление процессами и управление ресурсами.
Функция управления узлами направлена на индивидуальные узлы, такие как кластерные узлы в составе кластерного модуля, усилительные узлы в составе усилительного модуля, запоминающие узлы в составе модуля памяти и то же самое относительно других отмеченных выше типов модулей, присутствующих в системе. Уровень MCAL прежде всего определяет используемые узлы. Используемыми узлами называются узлы, подходящие для использования. Эта означает, что уровень MCAL конфигурирован для идентификации неисправных узлов или узлов, близких к отказу, например на основе параметров системы, таких как температура, доступный объем памяти и т.п., а также вариаций таких параметров во времени. Тем самым уровень MCAL реализует отказоустойчивость системы и обеспечивает высокую надежность.
Это сделано с помощью уровня MCAL, использующего концепцию виртуальных узлов. Виртуальные узлы представляют собой реальную аппаратуру, такую как кластерные узлы, усилительные узлы, запоминающие узлы и т.п., однако уровень MCAL имеет свободу динамически отображать эти узла. Например, если приложению требуются X кластерных узлов, Y усилительных узлов и Z запоминающих узлов (X, Y, Z являются целыми числами), уровень MCAL может предоставить эти узлы из совокупности всех доступных ресурсов. В случае выхода из строя какого-либо узла или добавления узла в систему уровень MCAL может быстро отреагировать, просто изменив отображение между виртуальными узлами и физическими узлами. Неисправные узлы могут быть изъяты из списка доступных узлов без того, чтобы вызвать отказ всей системы.
Уровень MCAL также способен выбирать конкретные узы в зависимости от таких факторов, как достижимость, задержка или физическое размещение. Это может быть сделано полностью прозрачно для работающего приложения.
Уровень MCAL имеет полную картину системы и постоянно сохраняет данные об актуальном состоянии каждого узла и каждого соединения. Уровень MCAL все время имеет информацию о конкретных характеристиках каждого узла и соединения, таких как число доступных процессоров CPU в расчете на каждый узел, текущие работающие сервисы, доступный объем памяти, полоса пропускания соединения, свободный объем памяти, температура, тактовая частота системы и т.д.
Другой функцией является управление модулями. Управление модулями аналогично управлению узлами и может охватывать управление узлами для конкретного модуля, но должно при этом учитывать аспекты, специфичные для модуля. Процессы управления модулем фокусируются на аспектах, специфичных для модуля, таких как состояние интерфейсных узлов (если таковые имеются), через которые этот модуль осуществляет связь с другими модулями. Аналогично узлам, уровень MCAL осуществляет мониторинг состояния модуля с целью позволить увеличить степень использования модуля.
Уровень MCAL также несет ответственность за управления процессами. Каждое работающее приложение разбито на несколько индивидуальных процессов, которые необходимо запускать, распределять и осуществлять их мониторинг. В то же время, каждому процессу необходимо выделять ресурсы в соответствии с потребностями этого процесса в вычислительных мощностях и в объеме памяти. Если процесс требует какой-либо конкретной обработки, уровень MCAL выделяет один или несколько усилительных узлов или даже более специальных узлов, таких как нейроморфные узлы, узлы для анализа данных, графические узлы или квантовые вычислительные узлы, из состава соответствующих модулей.
Для этого уровень MCAL конфигурирован для распознавания и управления зависимостями между процессами и требованиями этих процессов. На основе этого, уровень MCAL создает процессы в узлах, в случае усилительного модуля или кластерного модуля, либо выделяет объем памяти в случае модуля памяти. Уровень осуществляет мониторинг процессов и выполняет зависимые процессы в виде группы, что позволяет быстро реагировать на ошибки, возникающие в какой-либо из параллельно выполняемых задач. Это позволяет незамедлительно перезапускать процессы и тем самым минимизировать общую задержку работающего приложения.
Еще одной задачей, выполняемой уровнем MCAL в модульной вычислительной системе, является управление ресурсами. В качестве части задачи управления ресурсами уровень MCAL реализует механизм разгрузки, т.е. процессы, работающие, например, в кластерном модуле, могут нуждаться в некотором числе усилительных узлов из состава усилительного модуля. В таком случае уровень MCAL может распределить процессы по выбранным усилительным узлам, чтобы можно было выполнять задачи параллельно.
В качестве части такой разгрузки может быть создан не только один процесс, работающий в одном усилителе, а множество процессов, которые осуществляют связь напрямую один с другим с использованием сети связи между модулями без необходимости вмешательства со стороны главного процессора.
Процессы управления ресурсами также обеспечивают уменьшение расхода ресурсов памяти, например, путем уменьшении числа соединений между разными процессами. Это делается посредством использования устанавливаемых по запросу соединений, которые фактически устанавливают только тогда, когда они нужны. Это резко уменьшает расход памяти в расчете на одно соединение. Таким образом, не только ресурсы, такие как узлы, распределяют виртуальным образом, но и к физическим сетям связи применяют виртуальное распределение.
При распределении ресурсов уровень MCAL учитывает запросы не только от одного процесса, но и принимают также во внимание потребности других процессов. Это позволяет гибко реагировать на изменения инфраструктуры связи на основе интегрированного управления.
Интегрированное управление является еще одним функциональным аспектом, реализуемым уровнем MCAL. Под интегрированным управлением понимают использование информации, собранной функцией управления уровня MCAL, для управления функцией связи и наоборот. Следовательно, функция связи и функция управления здесь не разделены, а интегрированы с целью дальнейшей оптимизации общей производительности системы.
В процессе работы системы, используют знания уровня MCAL относительно всех различных аспектов всех узлов в составе всех модулей и состояния всех соединений, связи внутри модуля и межмодульной связи. Это позволяет динамически адаптироваться к изменяющемуся поведению системы, равно как к изменяющимся потребностям приложения, работающего в системе.
Интегрированное управление не только учитывает фактическое состояние системы и потребности приложений, но также прогнозирует будущие запросы для использования модуля или соединений.
Информация о состоянии системы используется для динамического распределения узлов. Это означает, что распределение ресурсов осуществляется с использованием широкого воздействия системы регистрации с контуром обратной связи от решений по распределению узлов, так что будущие распределения регулируют соответственно. Система также сохраняет такую информацию для усовершенствования решений по распределению узлов для будущих случаев в режиме самообучения.
Даже если произошел нормальный запуск основной части приложения в кластерном модуле, уровень MCAL идентифицирует, какая часть приложения должна работать в кластерном модуле или в усилительном модуле. Базисом для принятия такого решения являются, например, указания в коде самого приложения, относительно соблюдения производительности кодов в процессе работы. Это позволяет осуществлять адаптацию к распределению в процессе вычисления приложений.
Что касается реализации уровня MCAL, компоненты уровня MCAL распределены по всей системе, причем совокупность этих компонентов содержит администраторы узлов (node manager (NM)), реализованные в каждом узле. Администраторы узлов могут быть реализованы в аппаратуре или в программном обеспечении, например, в виде процессов-демонов, работающих в соответствующих узлах. Администраторы узлов постоянно собирают информацию с целью построить глобальную картину состояния модулей и всей системы. Приложения, работающие в системе, могут получать выгоду от этой информации посредством связи с функцией управления или напрямую с администраторами индивидуальных узлов. Это реализуется посредством конкретного интерфейса, который может быть выполнен аппаратно или в виде интерфейса прикладных программ (API (application programming interface)). Таким образом, не только уровень MCAL получает входные сигналы и данные от приложений, но и приложения получают выгоду от информации, собранной уровнем MCAL через администраторов индивидуальных узлов.
Трафик связи от/для администраторов узлов строго отделен от связи внутри модуля и межмодульной связи. Это позволяет осуществлять связь внутри модуля и межмодульную связь с высокой скоростью без прерываний функциями управления. Более того, безопасность системы может быть дополнительно повышена в результате такого разделения.
Уровень MCAL управляет использованием реальной сети связи и предоставляет соответствующие функциональные возможности приложению через интерфейс передачи сообщений (message passing interface (MPI)). Часть уровня MCAL представляет собой стек интерфейса MPI для каждого модуля равно как для глобального интерфейса MPI системы. Индивидуальные интерфейсы MPI реализованы, например, для модуля компьютерного кластера, усилительного модуля, модуля памяти и т.п.
Уровень MCAL осуществляет связь с использованием административной сети. Эта административная сеть может физической сетью отличной от физической сети, используемой для связи внутри модуля или межмодульной связи, или совпадать с этой сетью. Например, сеть для связи внутри модуля и межмодульной связи может представлять собой сеть InfiniBand, Myrinet и т.п., а административная сеть может быть образована сетью Этернет, соединяющей администраторов узлов.
В систему могут быть включены специальные узлы для создания входных блоков, позволяющих решать административные задачи и выполнять функции управления. Входные блоки не обязательно должны быть соединены с сетью связи, но только с сетью связи. Через узел входного блока, который может быть образован, например, компьютером рабочей станции, персональным компьютером (PC), портативным компьютером или каким-либо другим интеллектуальным компьютерным устройством, можно осуществлять администрирование модульной компьютерной системой. Приложения, работающие в компьютерной системе, можно планировать, запускать, останавливать и осуществлять мониторинг этих приложений. Это может быть сделано посредством групповой обработки, т.е. посредством выполнения последовательности заданий в модульной компьютерной системе без ручного вмешательства, т.е. не интерактивно.
Помимо выполнения последовательности заданий в модульной компьютерной системе без ручного вмешательства, уровень MCAL может организовать интерактивные вычисления, когда приложение, работающее в модульной компьютерной системе, принимает входные сигналы и данные от людей во время работы. Эти входные сигналы данные могут быть введены через компьютер рабочей станции, персональный компьютер (PC), портативный компьютер или другое интеллектуальное компьютерное устройство. В таком сценарии доступ в модульную компьютерную систему возможен, например, через портативный компьютер, в предположении, что этот портативный компьютер должен иметь вычислительную мощность модульной компьютерной системы. Это очень полезно для приложений реального времени, которые должны реагировать в пределах временных рамок, которые пользователь воспринимает как пределы незамедлительной или текущей реакции. Такую конфигурацию могут также использовать приложения так называемых Больших данных (Big Data), которые создают колоссальные объемы структурированных, полуструктурированных и неструктурированных данных, доступные для майнинга информации. Это также справедливо для сервисов облачных вычислений, для которых модульная компьютерная система является базовым ресурсом, предоставляющим необходимую вычислительную мощность и объем памяти.
Тесная интеграция между уровнем MCAL и системой позволяет добиться меньшей задержки связи и улучшения связи в описываемой модульной компьютерной системе.
Краткое описание чертежей
Фиг. 1 представляет функциональное изображение модульной компьютерной системы согласно настоящему изобретению.
Фиг. 2 показывает первый вариант модульной компьютерной системы согласно настоящему изобретению.
Фиг. 3 показывает второй вариант модульной компьютерной системы согласно настоящему изобретению.
На фиг. 1 представлено функциональное изображение модульной компьютерной системы 100 согласно настоящему изобретению. Уровень 110 приложений образует верхнюю часть модульной компьютерной системы. На этом уровне приложений в модульной компьютерной системе 100 могут выполняться прикладные программы, такие как программы загружаемого программного обеспечения. Уровень 120 вычислительного абстрагирования модулей (MCAL) организован с целью позволить уровню 110 приложений получить доступ к ресурсам системы. Эти ресурсы системы образованы разнообразными модулями, такими как кластерный модуль 130, усилительный модуль 140, модуль 150 памяти, модуль 160 анализа данных и другие модули 170, например, один или несколько модулей из следующей группы: нейроморфный модуль, графический модуль, квантовый вычислительный модуль. Можно также иметь несколько модулей одного типа.
Уровень MCAL 120 позволяет осуществлять связь в пределах модуля, называемую связью внутри модуля, и связь между модулями, называемую межмодульной связью. Уровень MCAL 120 может использовать связь любого типа и выбирать конкретный способ связи на основе доступности, указаний от прикладной программы, производительности или стоимостных соображений.
В дополнение к этому, уровень MCAL 120 реализует функцию управления. Эта функция управления охватывает разнообразие аспекты, а именно, управление узлами, управление модулями, управление процессами и управление ресурсами. Управление узлами направлено на индивидуальные узлы и будет пояснено далее со ссылками на фиг. 2 и 3.
Уровень MCAL 120 имеет общую картину и постоянно сохраняет информацию о фактическом текущем состоянии каждого из модулей 130, 140, 150, 160 и 170. Уровень MCAL 120 все время имеет информацию о конкретных характеристиках каждого модуля 130, 140, 150, 160 и 170, таких как число доступных процессоров, текущие работающие сервисы, доступный объем памяти, полоса пропускания соединения, свободный объем памяти, температура, тактовая частота системы и т.д. Другой функцией уровня MCAL 120 является управлениями модулями. Процедуры управления модулями учитывают аспекты, специфичные для модулей. Следовательно, уровень MCAL содержит функции, специально адаптированные для управления кластерным модулем 130, усилительным модулем 140, модулем 150 памяти, модулем 160 анализа данных и другими модулями 170. Уровень MCAL 120 также несет ответственность за управление процессами. Каждое работающее приложение 110 разбито на несколько индивидуальных процессов, которые необходимо запускать, распределять и осуществлять их мониторинг. В то же время, каждому процессу необходимо выделять ресурсы в соответствии с потребностями этого процесса в вычислительных мощностях и в объеме памяти. Если процесс требует какой-либо конкретной обработки, уровень MCAL 120 выделяет один или несколько усилительных узлов или даже более специальных узлов, таких как нейроморфные узлы, узлы для анализа данных, графические узлы или квантовые вычислительные узлы, из состава соответствующих модулей. Для этого уровень MCAL 120 конфигурирован для распознавания и управления зависимостями между процессами и требованиями этих процессов. Еще одной задачей, выполняемой уровнем MCAL 120 в модульной вычислительной системе, является управление ресурсами. В качестве части задачи управления ресурсами уровень MCAL 120 реализует механизм разгрузки, т.е. процессы, работающие, например, в кластерном модуле 130, могут нуждаться в некотором числе усилительных узлов из состава усилительного модуля 140. В таком случае уровень MCAL 120 может распределить процессы по выбранным усилительным узлам, чтобы можно было выполнять задачи параллельно.
Интегрированное управление является еще одним функциональным аспектом, реализуемым уровнем MCAL 120. Под интегрированным управлением понимают использование информации, собранной функцией управления уровня MCAL 120, для управления функцией связи и наоборот. Следовательно, функция связи и функция управления здесь не разделены, а интегрированы с целью дальнейшей оптимизации общей производительности системы. Это позволяет динамически адаптироваться к изменяющемуся поведению системы, равно как к изменяющимся потребностям приложения, работающего в системе. Интегрированное управление не только учитывает фактическое состояние системы и потребности приложений, но также прогнозирует будущие запросы для использования модуля или соединений.
На фиг. 2 представлен первый вариант модульной компьютерной системы 200 согласно настоящему изобретению. Эта модульная компьютерная система 200 содержит кластерный модуль 202, усилительный модуль 204 и модуль 206 памяти.
Кластерный модуль 202 содержит несколько кластерных узлов 208 (cluster node (CN)). В каждом кластерном узле 208 создан администратор 209 узла (NM), который во взаимодействии с администраторами 209 других узлов предоставляют модульной компьютерной системе 200 функциональные возможности связи и управления. Усилительный модуль 204 содержит несколько усилительных узлов 210 (booster node (BN)). В каждом усилительном узле 210 создан администратор 209 узла, который во взаимодействии с администраторами 209 других узлов предоставляют модульной компьютерной системе 200 функциональные возможности связи и управления. Модуль 206 памяти содержит несколько запоминающих узлов 212 (storage node (SN)). В каждом запоминающем узле 212 создан администратор 209 узла, который во взаимодействии с администраторами 209 других узлов предоставляют модульной компьютерной системе 200 функциональные возможности связи и управления.
Кластерный узел может быть образован компьютером, имеющим микропроцессор общего назначения, такой как процессор Intel Xeon, запоминающее устройство, интерфейсы, такие как сетевые платы. Усилительные узлы могут быть образованы процессорными системами, оснащенными процессорами GPU или многоядерными процессорами, запоминающими устройствами и интерфейсами, такими как сетевые платы. Запоминающие узлы содержат запоминающие устройства, которые могут представлять собой запоминающее устройство с произвольной выборкой (ЗУПВ (RAM (random access memory))) и энергонезависимое запоминающее устройство, такое как флеш-память, твердотельный диск (SSD (solid state disk)), жесткий диск, далее запоминающий узел содержит контроллер узла, такой как микропроцессор, и интерфейсы, такие как сетевые платы.
Предложены две разные сетевые инфраструктуры. Во-первых, имеется сеть 220 связи, соединяющая все узлы 208, 210, 212 один с другим, так что эти кластерные узлы 208, усилительные узлы 210 и запоминающие узлы 212 могут осуществлять связь одни с другими.
Во-вторых, создана административная сеть 224, соединяющая все узлы 209 администраторов, выполненные в различных узлах 208, 210 и 212. К административной сети 224 присоединен входной блок 230, позволяющий управлять всей модульной компьютерной системой. Входной блок 230 также содержит администратор 209 узла, который осуществляет фактическую связь с администраторами 209 других узлов.
Для объединения различных модулей в одну систему создан уровень вычислительного абстрагирования модулей (MCAL), как описано применительно к Фиг. 1. Этот уровень MCAL предоставляет функциональные возможности для связи и функциональные возможности для управления. Исходной точкой для реализации уровня MCAL, имеющего функциональные возможности и характеристики, описываемые здесь, является аппаратура ParaStation, выпускаемая фирмой ParTec Cluster Competence Center GmbH.
Уровень MCAL реализован посредством администраторов 209 узлов, установленных в индивидуальных узлах, и позволяет осуществлять связь в пределах модуля, называемую связью внутри модуля, и связь между модулями, называемую межмодульной связью. Для этого администраторы узлов создают интерфейсы для сопряжения с соответствующими соединительными сетями, например, одной соединительной сетью для всей системы или специализированной соединительной сетью для каждого модуля, такой как сеть InfiniBand для кластерного модуля 202 и сеть Intel Omni-Path для усилительного модуля 204. Возможны также соединения других типов, такие как сеть Этернет, 10G, Gigabit или соединение через совместно используемую память. Администраторы 209 узлов могут использовать связь любого типа и выбирают конкретный способ связи на основе доступности, указаний от прикладной программы, производительности или стоимостных соображений.
Здесь могут быть использованы связь через совместно используемую память и связь через совместно используемое виртуальное адресное пространство, что обеспечивает очень быстрый и эффективный способ связи между двумя или более процессами.
Администраторы 209 узлов коллективно реализуют управление узлами. Это управление узлами направлено на индивидуальные узлы, такие как кластерные узлы 208 в составе кластерного модуля 202, усилительные узлы 210 в составе усилительного модуля 204, запоминающие узлы 212 в составе модуля 206 памяти. Более того, администраторы 209 узлов также выбирают конкретные узлы в зависимости от таких факторов, как достижимость, задержка или физическое размещение. Это может быть сделано полностью прозрачно для работающего приложения. Они собирают и обмениваются информацией обо всей системе и постоянно поддерживают актуальность сведений о состоянии каждого узла и каждого соединения. Это позволяет администраторам 209 узлов все время иметь информацию о конкретных характеристиках каждого узла и соединения, таких как число доступных процессоров CPU в расчете на каждый узел, текущие работающие сервисы, доступный объем памяти, полоса пропускания соединения, свободный объем памяти, температура, тактовая частота системы и т.д.
Другой функцией, реализуемой администраторами узлов, является управление модулями. Управление модулями аналогично управлению узлами и может охватывать управление узлами для конкретного модуля, но должно при этом учитывать аспекты, специфичные для модуля. Процессы управления модулем фокусируются на аспектах, специфичных для модуля, таких как состояние интерфейсных узлов (если таковые имеются), через которые этот модуль осуществляет связь с другими модулями. Аналогично узлам, администраторы 209 узлов осуществляют мониторинг состояния модуля с целью позволить увеличить степень использования модуля.
Еще одной задачей, выполняемой администраторами 209 узлов в модульной вычислительной системе 200, является управление ресурсами. В качестве части задачи управления ресурсами они реализуют механизм разгрузки, т.е. процессы, работающие, например, в кластерном модуле 202, могут нуждаться в некотором числе усилительных узлов 210 из состава усилительного модуля 204. В таком случае администратор узла может распределить процессы по выбранным усилительным узлам 210, чтобы можно было выполнять задачи параллельно.
Интегрированное управление является еще одним функциональным аспектом, реализуемым администраторами узлов. Под интегрированным управлением понимают использование информации, собранной функцией управления администраторов узлов, для управления связью и наоборот. Следовательно, функция связи и функция управления здесь не разделены, а интегрированы с целью дальнейшей оптимизации общей производительности системы.
В процессе работы системы, используют знания уровня администраторов 209 узлов относительно всех различных аспектов всех узлов в составе всех модулей и состояния всех соединений, связи внутри модуля и межмодульной связи. Это позволяет динамически адаптироваться к изменяющемуся поведению системы, равно как к изменяющимся потребностям приложения, работающего в системе.
Интегрированное управление не только учитывает фактическое состояние системы и потребности приложений, но также прогнозирует будущие запросы для использования модуля или соединений.
Администраторы 209 узлов могут быть реализованы в аппаратуре или в программном обеспечении, например, в виде процессов-демонов, работающих в соответствующих узлах. Администраторы 209 узлов постоянно собирают информацию с целью построить глобальную картину состояния модулей и всей системы. Приложения, работающие в системе, могут получать выгоду от этой информации посредством связи с функцией управления или напрямую с администраторами 209 индивидуальных узлов. Это реализуется посредством конкретного интерфейса, который может быть выполнен аппаратно или в виде интерфейса прикладных программ (API).
Трафик связи от/для администраторов 209 узлов строго отделен от связи внутри модуля и межмодульной связи. Это позволяет осуществлять связь внутри модуля и межмодульную связь с высокой скоростью без прерываний функциями управления. Более того, безопасность системы может быть дополнительно повышена в результате такого разделения.
Администраторы 209 узлов управляют использованием реальной сети 220 связи и предоставляют соответствующие функциональные возможности приложению через интерфейс передачи сообщений (MPI).
Администраторы 209 узлов осуществляют связь с использованием административной сети 224. Эта административная сеть 224 может быть физической сетью отличной от физической сети, используемой для связи внутри модуля или межмодульной связи и называемой здесь сетью 220 связи, или совпадать с этой сетью. Например, сеть для связи внутри модуля и межмодульной связи может представлять собой сеть InfiniBand, Myrinet и т.п., а административная сеть может быть образована сетью Этернет, соединяющей администраторов 209 узлов.
В систему могут быть включены специальные узлы для создания входных блоков 230, позволяющих решать административные задачи или выполнять функции управления. Входные блоки не обязательно должны быть соединены с сетью 220 связи, но только с этой сетью 220 связи. Через узел входного блока, который может быть образован, например, компьютером рабочей станции, персональным компьютером (PC), портативным компьютером или каким-либо другим интеллектуальным компьютерным устройством, можно осуществлять администрирование модульной компьютерной системой 200. Приложения, работающие в модульной компьютерной системе 200, можно планировать, запускать, останавливать и осуществлять мониторинг этих приложений. Это может быть сделано посредством групповой обработки, т.е. посредством выполнения последовательности заданий в модульной компьютерной системе 200 без ручного вмешательства, т.е. не интерактивно.
Помимо выполнения последовательности заданий в модульной компьютерной системе 200 без ручного вмешательства, администраторы 209 узлов могут организовать интерактивные вычисления, когда приложение, работающее в модульной компьютерной системе, принимает входные сигналы и данные от людей во время работы. Эти входные сигналы и данные могут быть введены через компьютер рабочей станции, персональный компьютер (PC), портативный компьютер или другое интеллектуальное компьютерное устройство. В таком сценарии доступ в модульную компьютерную систему 200 возможен, например, через портативный компьютер, в предположении, что этот портативный компьютер должен иметь вычислительную мощность модульной компьютерной системы 200. Это очень полезно для приложений реального времени, которые должны реагировать в пределах временных рамок, которые пользователь воспринимает как пределы незамедлительной или текущей реакции. Такую конфигурацию могут также использовать приложения так называемых Больших данных (Big Data), которые создают колоссальные объемы структурированных, полуструктурированных и неструктурированных данных, доступные для майнинга информации. Это также справедливо для сервисов облачных вычислений, для которых модульная компьютерная система 200 является базовым ресурсом, предоставляющим необходимую вычислительную мощность и объем памяти.
На фиг. 3 представлен второй вариант модульной компьютерной системы 300 согласно настоящему изобретению. Эта модульная компьютерная система 300 содержит кластерный модуль 302, усилительный модуль 304 и модуль 306 памяти.
Кластерный модуль 302 содержит несколько кластерных узлов 310 (CN). В каждом кластерном узле 310 создан администратор 309 узла (NM), который во взаимодействии с администраторами 309 других узлов предоставляет модульной компьютерной системе 300 функциональные возможности связи и управления. Кластерные узлы 310 соединены один с другими через кластерные соединения 312.
Усилительный модуль 304 содержит несколько усилительных узлов 320 (BN). В каждом усилительном узле 320 создан администратор 309 узла, который во взаимодействии с администраторами 309 других узлов предоставляет модульной компьютерной системе 300 функциональные возможности связи и управления. Усилительные узлы 320 соединены один с другими через усилительные соединения 322.
Модуль 306 памяти содержит несколько запоминающих узлов 330 (SN). В каждом запоминающем узле 330 создан администратор 309 узла, который во взаимодействии с администраторами 309 других узлов предоставляет модульной компьютерной системе 300 функциональные возможности связи и управления. Запоминающие узлы 330 соединены один с другими через соединения 332 памяти.
Кластерный узел может быть образован компьютером, имеющим микропроцессор общего назначения, такой как процессор Intel Xeon, запоминающее устройство, интерфейсы, такие как сетевые платы. Усилительные узлы могут быть образованы процессорными системами, оснащенными процессорами GPU или многоядерными процессорами, запоминающими устройствами и интерфейсами, такими как сетевые платы. Запоминающие узлы содержат запоминающие устройства, которые могут представлять собой запоминающее устройство с произвольной выборкой (ЗУПВ (RAM)) и энергонезависимое запоминающее устройство, такое как флеш-память, твердотельный диск (SSD), жесткий диск, далее запоминающий узел содержит контроллер узла, такой как микропроцессор, и интерфейсы, такие как сетевые платы.
Кластерный модуль 302 может осуществлять связь с модулем 306 памяти через интерфейсный узел 340, связывающий кластерные соединения 312 с соединениями 332 памяти. Модуль 306 памяти может осуществлять связь с усилительным модулем 304 через интерфейсный узел 342, связывающий соединения 332 памяти с усилительными соединениями 322. Усилительный модуль 304 может осуществлять связь с кластерным модулем 302 через интерфейсный узел 344, связывающий усилительные соединения 322 с кластерными соединениями 312.
Кластерный модуль 302 использует, например, соединения типа InfiniBand, тогда как усилительный модуль 304 использует соединительную сеть типа Intel Omni-Path, которая связана с соединением InfiniBand через интерфейсный узел 344. Каждый интерфейсный узел может быть образован несколькими узлами с целью увеличения производительности и пропускной способности. То же самое применимо к модулям других типов.
Все администраторы 309 узлов, созданные в различных узлах 310, 310, 312, используют одну и ту же инфраструктуру связи. К кластерным соединениям 312 присоединен входной блок 350, позволяющий управлять всей модульной компьютерной системой. Входной блок 350 также содержит администратора 309 узла, который осуществляет фактическую связь с другими администраторами 309 узлов.
Для объединения различных модулей в одну систему создан уровень вычислительного абстрагирования модулей (MCAL), как описано со ссылками на Фиг. 1. Этот уровень MCAL предоставляет функциональные возможности для связи и функциональные возможности для управления. Исходной точкой для реализации уровня MCAL, имеющего функциональные возможности и характеристики, описываемые здесь, является аппаратура ParaStation, выпускаемая фирмой ParTec Cluster Competence Center GmbH.
Уровень MCAL реализован посредством администраторов 309 узлов, которые установлены в каждом узле и которые могут быть использованы для связи между процессами с применением любого типа линий связи.
Как отмечено выше, администраторы 309 узлов коллективно реализуют управление узлами. Это управление узлами направлено на индивидуальные узлы, такие как кластерные узлы 310 в составе кластерного модуля 302, усилительные узлы 320 в составе усилительного модуля 304, запоминающие узлы 330 в составе модуля 306 памяти. Эти администраторы 309 узлов также иметь возможность выбирать конкретные узлы в зависимости от таких факторов, как достижимость, задержка или физическое размещение. Это может быть сделано полностью прозрачно для работающего приложения. Они собирают и обмениваются информацией обо всей системе и постоянно поддерживают актуальность сведений о состоянии каждого узла и каждого соединения. Администраторы 309 узлов все время информируют один другого о конкретных характеристиках каждого узла и соединения, таких как число доступных процессоров CPU в расчете на каждый узел, текущие работающие сервисы, доступный объем памяти, полоса пропускания соединения, свободный объем памяти, температура, тактовая частота системы и т.д.
Другой функцией, реализуемой администраторами узлов, является управление модулями. Управление модулями аналогично управлению узлами и может охватывать управление узлами для конкретного модуля, но при этом учитывает аспекты, специфичные для модуля. Процессы управления модулем фокусируются на аспектах, специфичных для модуля, таких как состояние интерфейсных узлов (если таковые имеются), через которые этот модуль осуществляет связь с другими модулями.
Администраторы 309 узлов также осуществляют управление процессами. Каждое работающее приложение разбито на несколько индивидуальных процессов, которые необходимо запускать, распределять и осуществлять их мониторинг. В то же время, каждому процессу необходимо выделять ресурсы в соответствии с потребностями этого процесса в вычислительных мощностях и в объеме памяти. Администраторы узлов конфигурированы для распознавания и управления зависимостями между процессами и их потребностями. На основе этого, администраторы 309 узлов создают процессы в узлах, в случае усилительного модуля 304 или кластерного модуля 302, либо распределяет память в случае модуля 306 памяти. Система осуществляет мониторинг процессов и выполняет зависимые процессы в виде группы, что позволяет быстро реагировать на ошибки, возникающие при выполнении какой-либо из параллельно реализуемых задач. Это создает возможность незамедлительного перезапуска процессов, так что общая задержка выполняемого в текущий момент приложения оказывается минимизирована.
Еще одной задачей, выполняемой администраторами 309 узлов в модульной вычислительной системе 300, является управление ресурсами. В качестве части задачи управления ресурсами реализуется механизм разгрузки, т.е. процессы, работающие, например, в кластерном модуле 302, могут нуждаться в некотором числе усилительных узлов из состава усилительного модуля 304. В таком случае администратор 309 узла может распределить процессы по выбранным усилительным узлам 320, чтобы можно было выполнять задачи параллельно.
В качестве части такой разгрузки может быть создан не только один процесс, работающий в одном усилителе, а множество процессов, которые осуществляют связь напрямую один с другим с использованием сети связи между модулями без необходимости вмешательства со стороны главного процессора.
Процессы управления ресурсами также обеспечивают уменьшение расхода ресурсов памяти, например, путем уменьшении числа соединений между разными процессами. Это делается посредством использования устанавливаемых по запросу соединений, которые фактически устанавливают только тогда, когда они нужны. Это резко уменьшает расход памяти в расчете на одно соединение. Таким образом, не только ресурсы, такие как узлы, распределяют виртуальным образом, но и к физическим сетям связи применяют виртуальное распределение.
При распределении ресурсов администраторы 309 узлов учитывают запросы не только от одного процесса, но и принимают также во внимание потребности других процессов. Это позволяет гибко реагировать на изменения инфраструктуры связи на основе интегрированного управления.
Интегрированное управление является еще одним функциональным аспектом, реализуемым администраторами 309 узлов. Под интегрированным управлением понимают использование информации, собранной функцией управления администраторов 309 узлов, для управления функцией связи и наоборот. Следовательно, функция связи и функция управления здесь не разделены, а интегрированы с целью дальнейшей оптимизации общей производительности системы.
В процессе работы системы, используют знания администраторов 309 узлов относительно всех различных аспектов всех узлов в составе всех модулей и состояния всех соединений, связи внутри модуля и межмодульной связи. Это позволяет динамически адаптироваться к изменяющемуся поведению системы, равно как к изменяющимся потребностям приложения, работающего в системе.
Интегрированное управление не только учитывает фактическое состояние системы и потребности приложений, но также прогнозирует будущие запросы для использования модуля или соединений. Информация о состоянии системы используется для динамического распределения узлов. Это означает, что распределение ресурсов осуществляется с использованием широкого воздействия системы регистрации с контуром обратной связи от решений по распределению узлов, так что будущие распределения регулируют соответственно. Система также сохраняет такую информацию для усовершенствования решений по распределению узлов для будущих случаев в режиме самообучения.
Даже если произошел нормальный запуск основной части приложения в кластерном модуле 302, администраторы узлов идентифицирует, какая часть приложения должна работать в кластерном модуле 302 или в усилительном модуле 304. Базисом для принятия такого решения являются, например, указания в коде самого приложения, относительно наблюдения производительности кодов в процессе работы. Это позволяет осуществлять адаптацию к распределению в процессе вычисления приложений.
Администраторы 309 узлов могут быть реализованы в аппаратуре или в программном обеспечении, например, в виде процессов-демонов, работающих в соответствующих узлах. Администраторы 309 узлов постоянно собирают информацию с целью построить глобальную картину состояния модулей и всей системы. Приложения, работающие в системе, могут получать выгоду от этой информации посредством связи с функцией управления или напрямую с администраторами 309 индивидуальных узлов. Это реализуется посредством конкретного интерфейса, который может быть выполнен аппаратно или в виде интерфейса прикладных программ (API).
Трафик связи от/для администраторов узлов строго отделен от связи внутри модуля и межмодульной связи. Это позволяет осуществлять связь внутри модуля и межмодульную связь с высокой скоростью без прерываний функциями управления. Более того, безопасность системы может быть дополнительно повышена в результате такого разделения.
Администраторы 309 узлов управляют использованием реальной сети связи и предоставляют соответствующие функциональные возможности приложению через интерфейс передачи сообщений (MPI). Администраторы 309 узлов используют административную сеть связи (не показана). Эта административная сеть связи (не показана) может быть физической сетью отличной от физической сети, используемой для связи внутри модуля или межмодульной связи, или совпадать с этой сетью. Например, сеть для связи внутри модуля и межмодульной связи может представлять собой сеть InfiniBand, Myrinet и т.п., а административная сеть связи (не показана) может быть образована сетью Интернет, соединяющей администраторов 309 узлов.
В систему могут быть включены специальные узлы для создания входных блоков, позволяющих решать административные задачи и выполнять функции управления во время работы системы. Входные блоки 350 не обязательно должны быть соединены с сетью связи, но только с сетью связи. Через узел входного блока 350, который может быть образован, например, компьютером рабочей станции, персональным компьютером (PC), портативным компьютером или каким-либо другим интеллектуальным компьютерным устройством, можно осуществлять администрирование модульной компьютерной системой 300. Приложения, работающие в модульной компьютерной системе 300, можно планировать, запускать, останавливать и осуществлять мониторинг этих приложений. Это может быть сделано посредством групповой обработки, т.е. посредством выполнения последовательности заданий в модульной компьютерной системе 300 без ручного вмешательства, т.е. не интерактивно.
Помимо выполнения последовательности заданий в модульной компьютерной системе 300 без ручного вмешательства, администраторы узлов могут организовать интерактивные вычисления, когда приложение, работающее в модульной компьютерной системе 300, принимает входные сигналы и данные от людей во время работы. Эти входные сигналы данные могут быть введены через компьютер рабочей станции, персональный компьютер (PC), портативный компьютер или другое интеллектуальное компьютерное устройство. В таком сценарии доступ в модульную компьютерную систему 300 возможен, например, через портативный компьютер, в предположении, что этот портативный компьютер должен иметь вычислительную мощность модульной компьютерной системы 300. Это очень полезно для приложений реального времени, которые должны реагировать в пределах временных рамок, которые пользователь воспринимает как пределы незамедлительной или текущей реакции. Такую конфигурацию могут также использовать приложения так называемых Больших данных (Big Data), которые создают колоссальные объемы структурированных, полуструктурированных и неструктурированных данных, доступные для майнинга информации. Это также справедливо для сервисов облачных вычислений, для которых эта модульная компьютерная система 300 является базовым ресурсом, предоставляющим необходимую вычислительную мощность и объем памяти.