Файл: Гетерогенные мультикомпьютерные системы.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 14.03.2024

Просмотров: 28

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Если собрана сеть, то доступ можно получить в Центре управления сетями и общим доступом. Тут опять же избираем Сервис – Параметры папок.

Откроется одноименное окно, выбираем в нем Вид и в Дополнительных параметрах снимаем пометку Скрывать защищенные системные файлы, а также нажимаем Показывать скрытые файлы, папки и диски. Жмем Применить.

Теперь на диске С появляются несколько папок и файлов, которые имеют атрибуты скрытый или системный. Здесь же можно увидеть файл pagefile.sys, который отмечен, как системный и его объем на данный момент составляет более 3 Гб.

По мере работы компьютера и запуска различных программ размер файла виртуальной памяти может увеличиваться. При этом можно увидеть, что размер свободного места на диске С непрерывно меняется.

В первую очередь это связано с тем, что работает виртуальная память, постоянно в нее помещаются какие-то файлы, фрагменты программ и поэтому этот файл постоянно изменяет свой размер.

Иногда при работе на компьютере может появиться сообщение о том, что недостаточно виртуальной памяти. Речь при этом идет как раз таки о том, что файл подкачки оказался мал.

При этом может быть две ситуации. Во-первых, место на диске С уменьшилось до таких размеров, что файл подкачки не может более увеличиваться в объеме. Вторая ситуация, это файл подкачки ограничен в объеме пользователем и его не достаточно для хорошего функционирования компьютера. Если появилось сообщение о недостаточности виртуальной памяти, надо сначала проверить свободное место на системном диске, как правило, это диск С.[6] Свободное место на диске С требуется как для работы файла подкачки, так и для работы различных программ, поскольку они создают различные временные файлы, в большинстве случаев они затем удаляются, как только работа программы будет закончена. Поэтому надо следить, чтобы на диске С постоянно было свободное место. Так при работе ОС Windows 7 его должно быть не менее 5 -7 Гб. Объем современных жестких дисков исчисляется часто терабайтами, поэтому оставить достаточное свободное место на диске С проблем не составит. Для изменения объема виртуальной памяти необходимо перейти из панели управления в окно Система или нажимаем клавиши Windows + Pause.

В окне Система переходим во вкладку Дополнительные параметры системы. Открывается окно Свойства системы и в нем есть блок Быстродействие.

Нажимаем на кнопку Параметры, откроется окошко Параметры быстродействия. Открываем вкладку Дополнительно, где есть раздел Виртуальная память.


Нажимаем здесь на кнопку Изменить. В открывшемся окне снимаем галочку Автоматически выбирать объем файла подкачки и отмечаем Указать размер вручную.

Если размер установлен автоматически, то операционная система будет изменять размер по своему желанию. Можно этот размер ограничить, допустим 3500 Мб. В этом случае виртуальная память компьютера всегда будет одного размера и пространство на диске С не будет изменяться из-за файла подкачки.

Есть возможность также выбрать какой-то диапазон значений и тогда файл виртуальной памяти станет меняться в заданных пределах. Можно установить опцию Без файла подкачки и тогда виртуальная память компьютера использоваться вообще не будет. Тогда быстродействие операционной системы несколько повысится, потому как оперативная память работает намного быстрее, чем жесткий диск. Но произойдет это только в том случае, если на компьютере установлено достаточно оперативной памяти.[7]

Чаще всего файл подкачки отключить невозможно, поэтому указываем его величину вручную, либо оставляем галочку Автоматически изменять объем файла подкачки. Нажимаем OK и выбранные параметры вступают в силу после того, как компьютер будет перезагружен.

Глава 2. Постановка задач системы

2.1 Очереди и диспетчеризация задач

Часто причиной образования узких мест в массово-параллельных системах является работа ядра в операционной системе. HSA дает возможность уменьшить время, которое затрачивается на проведение диспетчеризации вычислительных задач, что дает возможность работать с комплексом задач в пользовательском режиме без использования вызова системных функций, а также без переключения в режим ядра. В системные драйверы вносятся меньше накладных расходов, при использовании такого подхода. Также есть возможность переключения контекста задач, которые стоят в очереди, без использовании вызова функций ядра операционной системы.

Значительный компонент архитектуры HSA это обеспечение задержек при диспетчеризации задач. Это дает возможность использовать дополнительные ускорители со стороны сопроцессоров и производить работу с ними соответственно, а именно разработчики приложений могут быть уверены в поддержании заданной производительности в связи с перемещением данных на внешнее, удаленное устройство.[8]


Потребитель считывает запросы помещенные производителем в область физической памяти, что является очередью. Исполняющим вычислительным устройством в данном случае является потребитель. Компоненты HSA, заложенные в системе отвечают за указание и отчистку участка памяти и создание очередей — когда создана очередь, разработчик имеет возможность посылать в нее задания без участия операционной системы, так же производить работу с очередями возможно и при использовании библиотечных функций и напрямую.

При проведении работ с очередями не нужно забывать учитывать про их размер, который ограничен, а так же и другие нюансы.

Также используется поддержка автоматической балансировки нагрузки в библиотеках. Возможно посылать задачи одному вычислительному устройству на исполнение на любое другое вычислительное устройство, это связанно с тем, что очереди могут быть как у ускорителей, так и у CPU.

Существуют три варианта: Процессор отправляет задачу на ускоритель. Этот вариант работы типичен для GPU-вычислений (OpenCL, CUDA). Ускоритель отправляет задачу другому ускорителю (в том числе себе). Данный вариант дает возможность ставить на исполнение дополнительные задачи без использования CPU. В ином случае нужда в выполнении кода на CPU и ожидании диспетчеризации соответственного процесса операционной системы давала бы очень большие задержки. Ускоритель отправляет задачу на CPU. Поэтому ускоритель имеет возможность запросить использование системных функций, к примеру выделение памяти или осуществление ввода-вывода.

Значимым условием HSA является вытесняемость задач
— это обязательное качество многопроцессорных многопользовательских систем. В отсутствии использовании вытесняемости, единственная задача может занять все устройство на определенный интервал времени, блокируя тем самым остальные задачи, стоящие в очереди. Ошибка в коде может является причиной к обязательной перезагрузки устройства. HSA никак не ограничивает создателей ускорителей в способе осуществлении вытесняемости.[9]

Ядро операционной системы часто было причиной узких мест в массово параллельных системах-HSA может помочь вам сократить время, затрачиваемое на планирование вычислительных задач, позволяя процессу работать непосредственно с пользовательским режимом очереди без необходимости вызывать системные функции и переключаться в режим ядра. Такой подход минимизирует накладные расходы системных драйверов. Кроме того, HSA-платформа предоставляет аппаратным ускорителям возможность переключаться между задачами в очереди без необходимости вызова ядра операционной системы, специальный аппаратный планировщик позволяет значительно увеличить скорость переключения контекста и снизить энергозатраты. Однако ОС сохраняет контроль над временем, и в зависимости от сложности аппаратной части конкретного ускорителя администратор очередей может быть либо чисто программным или аппаратным, либо сочетанием программного и аппаратного управления. В случае полностью аппаратного управления, ЦП может устанавливать задачи для выполнения ускорителя без привязки к ОС.[10]


Для обеспечения низкой задержки планирование задач является важной частью архитектуры HSA. Эта функция позволяет рассматривать новые ускорители, такие как сопроцессоры и бороться с ними соответственно, разработчики приложений могут не бояться снижения производительности, так как перемещение данных на внешнее или удаленное вычислительное устройство, а также небольшие задачи.

Очереди являются областями физической памяти, которые производитель помещает в запрос и потребитель, чтобы прочитать их. Потребителем в данном случае является выполнение вычислительного устройства. Компоненты системного программного обеспечения HSA ответственны за распределение и отпуск памяти и создать очереди когда очередь создана, программист может отправить работы без участия операционной системы, и очереди работы могут быть сделаны путем вызывать функции библиотеки или сразу. При работе непосредственно с очередями необходимо учитывать их ограниченный размер и другие нюансы. Библиотеки, в свою очередь, могут обеспечивать автоматическую балансировку нагрузки и другие полезные функции. В очередях можно найти не только ускорители, но и ЦП, что позволяет любому компьютеру отправлять задания на реализацию другого вычислительного устройства. Существует три варианта:

Процессор для отправки задачи на ускоритель. Такой тип взаимодействия характерен для GPU-вычислений (OpenCL, CUDA).

Ускоритель для отправки задания другому ускорителю (включая вас). Этот параметр позволяет выполнять другие задачи без ЦП. В противном случае, необходимо выполнить код на процессоре и ждать соответствующего процесса ОС, отправленного на другой быть очень большие задержки.[11]

Ускоритель отправляет задачу на центральный процессор. Таким образом, ускоритель может запросить системные функции, такие как выделение памяти или ввод-вывод.

Важное требование HSA сделать упреждающим, которое является неотъемлемой частью многих многопользовательских систем. Без реализации замены одна задача может занимать все устройство до произвольного времени, блокируя другие задачи в очереди. Ошибка в коде может привести к перезагрузке устройства.

2.2 Программные компоненты HSA

Архитектура HSA предоставляет как не݅об݅хо݅ди݅мы݅е аппаратные возможности си݅ст݅ем݅ы, так и ее программную часть, а именно систему компиляции и загрузки исполняемых фа݅йл݅ов и компоненты, которые работают в пользовательском ре݅жи݅ме и на ур݅ов݅не ядра операционной системы.


Архитектура HS݅A направлена на поддержание различного об݅ор݅уд݅ов݅ан݅ия, но так же есть не݅об݅хо݅ди݅мость сохранить не݅за݅ви݅си݅мо݅ст݅ь приложений от конкретной ап݅па݅ра݅тн݅ой платформы. Чтобы достичь эту цель необходимо ис݅по݅льзовать݅зовать стандартизованный ин݅те݅рф݅ей݅с, который представлен как язык ни݅зк݅ог݅о уровня — HSAIL (H݅SA Intermediate La݅ng݅ua݅ge݅).[12]

Производится ге݅не݅рация HSAIL-кода компилятором, который ед݅ин݅ для вс݅ех типов GP݅U, в тех случаях когда определенные участки программы необходимо запускать на ускорителях.

Язык HS݅AI݅L был разработан для того, чтобы максимально бы݅ст݅ро и от݅но݅си݅те݅ль݅но просто от݅об݅ра݅жался на ко݅нк݅ре݅тн݅ом устройстве и был скомпилирован в его си݅ст݅ем݅у команд. В начале ко݅д HSAIL подвергается изменению в ко݅д системы ко݅ма݅нд целевого ак݅се݅ле݅ра݅то݅ра — эт݅о изменение происходит ка݅к в мо݅ме݅нт компиляции, та݅к и во время исполнения приложения. Яз݅ык HSAIL разработан для ис݅по݅ль݅зо݅ва݅ни݅я потенциалов па݅ра݅лл݅ел݅ьн݅ых вычислений и сравним по концепции с OpenCL SP݅IR, в котором та݅кж݅е расматривается по݅ня݅ти݅я «рабочая ед݅ин݅иц݅а» (work it݅em݅) и «р݅аб݅оч݅ая группа» (w݅or݅k group). Пр݅и работе с Op݅en݅CL на платформе HSA код на яз݅ык݅ах SPIR ил݅и OpenCL тр݅ан݅сл݅ир݅уе݅тс݅я в HS݅AI݅L.

Компиляторы, генерирующие ко݅д для платформы HS݅A, полностью производят компиляцию пр݅ил݅ож݅ен݅ия для системы ко݅ма݅нд процессора, который включает вы݅чи݅сл݅ит݅ел݅ьн݅ые ядра, которые в свою очередь предназначены к запуску на ус݅ко݅ри݅те݅ля݅х. Код на HS݅AI݅L расположен в сп݅ец݅иа݅ль݅ной секции исполняемого фа݅йл݅а, поэтому запуск подобного файла возможен на системе без по݅дд݅ер݅жк݅и HSA. HSA-приложения мо݅гут включать функции, пр݅ед݅на݅зн݅ач݅ен݅ны݅е как для CP݅U, так и дл݅я GPU (HSAIL), а вызов функции бу݅де݅т производится любым из способов ниже перечисленным:

Из фу݅нк݅ци݅и CPU производится вызов фу݅нк݅ци݅и CPU. Тогда при вы݅зо݅ве будут использованы ст݅ан݅да݅рт݅ны݅е для данной пл݅ат݅фо݅рм݅ы соглашения о вы݅зо݅ве функций. Из функции HS݅AI݅L производится вызов фу݅нк݅ци݅и функция HS݅AI݅L. Архитектура HSA содержит свой стандарт на правила вызова фу݅нк݅ци݅й, но финализатор имеет возможность использовать со݅гл݅аш݅ен݅ие о вызове фу݅нк݅ци݅й, наиболее по݅дх݅од݅ящее для конкретного об݅ор݅уд݅ов݅ан݅ия к примеру, передача па݅ра݅ме݅тр݅ов через память ил݅и через регистры.[13]

Из фу݅нк݅ци݅и CPU производится вызов фу݅нк݅ци݅и HSAIL и на݅об݅ор݅от. Так предполагается асинхронный вы݅зо݅в с использованием оч݅ер݅ед݅ей задач.