Intel Integrated Performance Primitives
Intel IPP — это набор кросс-платформенных библиотек, содержащих большое количество высокопроизводительных функций, которые могут быть использованы для аудио- и видеокодеков (например, H.263,
Действительно, многим разработчикам требуется реализовать одну и
ту же функциональность. А с ростом количества аппаратных платформ доля низкоуровневых (ассемблерных) реализаций уменьшилась значительно. Intel
Примитивы в Intel
Функции из Intel
Существует также логический подраздел, отвечающий за
Каждая функция из Intel
Существует четыре способа включения функциональности Intel
Для эффективного исполнения на любом аппаратном обеспечении целесообразно использовать динамическую линковку. В этом случае программа после запуска определяет процессор и подставляет в места вызова функций бинарный код из соответствующей библиотеки.
При использовании статической линковки достигается меньший размер программы, но ценой жесткой привязки к типу процессора. Смешанная линковка по сути является статической, но при этом позволяет уменьшить размер исполняемого файла.
Intel Math Kernel Library
Библиотека Intel Math Kernel Library (MKL) представляет собой набор функций линейной алгебры, быстрого преобразования Фурье и векторной математики для разработки научного и инженерного ПО [96, 97]. Она представлена в вариантах для Windows и Linux, есть версия для
На стадии выполнения MKL автоматически определяет модель процессора и запускает соответствующую версию вызываемой функции, что гарантирует максимальное использование возможностей процессора и максимально возможную производительность.
Все библиотеки MKL поддерживают работу в многопоточном режиме, а ключевые функции LAPACK, BLAS (третьего уровня) и дискретных преобразований Фурье (
Так как библиотека MKL максимально оптимизирована под процессоры корпорации Intel и учитывает их архитектуру, использование компонентов библиотеки более предпочтительно, чем ручное написание кода.
Parallel Extensions to the .NET Framework
Parallel Extensions to the .NET Framework (другие названия — Parallel FX Library, PFX) — это библиотека, разработанная фирмой Microsoft для использования в программах на базе управляемого (managed) кода. Она позволяет распараллеливать задачи, в которых могут использоваться специальные, координирующие (coordinating) структуры данных. Тем самым библиотека PFX упрощает написание параллельных программ, обеспечивая увеличение производительности при увеличении числа ядер или числа процессоров, исключая многие сложности современных моделей параллельного программирования. Первая версия библиотеки была представлена 29 ноября 2007 года, впоследствии выходили обновления в декабре 2007 и июне 2008 годов [100].
Parallel Extensions обеспечивает несколько новых способов организации параллелизма.
Среди языков программирования можно указать как новые разработки, так и известные ранее языки, имеющие поддержку многозадачности или многопоточности.
Безусловно, наиболее массовыми языками программирования являются параллельные версии языков С и Фортран, работающие в основном через реализации MPI.
Язык Си++ часто критикуют за то, что обращение к методу класса в нем реализовано как вызов функции, в то время как Симула и Смолток позволяли объектам обмениваться сообщениями. Сторонники Си++ утверждают, что конкретный способ вызова метода класса — внутренняя кухня языка, скрытая от программиста, и что посылка сообщения является частным случаем вызова функции, только прямой вызов намного более эффективен в плане накладных расходов и машинных затрат на такты и оперативную память [98].
Симула и Смолток естественным образом поддерживают многозадачность, многопоточность и распараллеливают вычисления на уровне языка. Посылка сообщений может быть как синхронной (объект посылает сообщение и ждет результата), так и асинхронной (объект посылает сообщение и продолжает заниматься своими делами). Это позволяет транслятору в
Прямой вызов функции, напротив, всегда синхронен. Обращаясь к методу класса, текущий код передает ему бразды правления и получает их только после явного возврата, который может вообще никогда не произойти! Распараллеливать программу приходится на этапе ее создания, причем реализовать динамический алгоритм, поддерживающий произвольное количество процессоров, в общем случае невозможно или крайне затруднительно, т. к. для этого фактически потребуется вручную реализовать Симула/Смолток-подобный "движок", "натянув" его поверх Си++, затратив кучу усилий и получив в итоге худшую производительность чем на чистой Симуле (Смолтоке).
Вплоть до настоящего времени этот недостаток Си++ никого не беспокоил, поскольку многопроцессорные компьютеры встречались крайне редко, да и то большей частью на серверах, одновременно обрабатывающих множество запросов от пользователей, и распараллеливание велось именно в этом направлении — один и тот же Си++-код выполнялся на нескольких процессорах одновременно, каждый экземпляр которого обслуживал "своего" пользователя, и все были довольны.
С появлением многоядерных процессоров в рабочих станциях и домашних компьютеров программистам пришлось заново учиться распараллеливать программы, что без поддержки со стороны языка сделать довольно затруднительно, так что появление новых языков (или доработка уже существующих) в исторической перспективе неизбежна, поскольку количество процессорных ядер будет только увеличиваться, причем, по некоторым прогнозам, весьма стремительно [98].
Microsoft работает над новым языком программирования, известным как Axum. Особенность новой разработки в том, что этот язык изначально предназначен для написания многопоточных параллельных приложений, оптимизированных для работы на современных многоядерных процессорах [99].
По словам Джошуа Филлипса, программного менеджера Microsoft Parallel Computing Platform, пока каких-то утвержденных дат релиза Axum нет. "Новый язык в большей степени ориентирован на профессионалов, он предлагает безопасный и эффективный интерфейс для Net-программирования. Этот язык строится на веб-архитектуре, а также на принципах изолированности, масштабируемости и производительности", — говорит он.
Ранее в документах Microsoft язык Axum фигурировал под названием Maestro. Филлипс говорит, что в корпорации сейчас работают над интеграцией Axum в среду Visual Studio, оптимизацией языка для сетевого использования и повышением устойчивости платформы в целом.
Велика вероятность того, что первые варианты Axum появятся уже в среде Visual Studio 2010 в качестве движка, инкубированного в некоторые технологии. "Наша основная задача — создать безопасную, масштабируемую и более производительную модель программирования в .Net-окружении, сообщает CyberSecurity. Концепция Axum основана на полной изолированности процессов, которые будут между собой обмениваться контрольными сообщениями", — рассказывает он.
Axum будет базироваться на декларативной модели. Синтаксис Axum будет в значительной мере похож на C#.
"Ранее для того, чтобы получить повышенную производительность приложения, нам приходилось ждать выхода более быстрого процессора, сейчас перед нами стоит задача эффективного использования многоядерности процессоров", — отмечает Филлипс.
"В Axum будет пять основных концепций: домен, канал, агент, схема и слой. Язык также будет поддерживать глубокую инкубацию объектов кода", — резюмирует он.
Язык параллельного программирования ) предназначен для написания программ, работающих на всем спектре параллельных архитектур — от многоядерных процессоров до Grid-сетей. Единственное требование к таким системам со стороны MC# — на них должна быть установлена среда исполнения CLR (Common Language Runtime) с соответствующим набором библиотек. На машинах с операционной системой Windows реализацией такой среды является Microsoft .NET Framework, а на машинах с операционной системой Linux — система Mono (http://www.mono-project.com), которая является свободной реализацией платформы .NET для Unix-подобных систем [100].
Язык MC# является адаптацией и развитием базовых идей языка Polyphonic C# на случай параллельных и распределенных вычислений. Язык Polyphonic C# был разработан в 2002 г. в Microsoft Research Laboratory (г. Кембридж, Великобритания) Н. Бентоном (N. Benton), Л. Карделли (L. Cardelli) и Ц. Фурнье (C. Fournet). Целью его создания было добавление высокоуровневых средств асинхронного параллельного программирования в язык C# для использования в серверных и клиент-серверных приложениях на базе Microsoft .NET Framework
Ключевая особенность языка Polyphonic C# заключается в добавлении к обычным, синхронным методам, так называемых "асинхронных" методов, которые предназначены играть в (многопоточных) программах две основные роли:
Для синхронизации нескольких асинхронных методов, а также асинхронных и синхронных методов, в язык C#, кроме того, были введены новые конструкции, получившие название связок (chords).
При этом исполнение Polyphonic C#-программ, по замыслу авторов этого языка, по-прежнему предполагалось либо на одной машине, либо на нескольких машинах, с зафиксированными на них асинхронными методами, взаимодействующими между собой с использованием средств удаленного вызова методов (RMI — Remote Method Invocation), которые предоставляются библиотекой System.Runtime.Remoting платформы .NET.
В случае языка MC# программист может предусмотреть исполнение автономных асинхронных методов либо локально, либо удаленно. В последнем случае, метод может быть спланирован для исполнения на другой машине, выбираемой двумя способами: либо согласно явному указанию программиста (что не является типичным случаем), либо автоматически (обычно на наименее загруженном узле кластера или машине Grid-сети). Взаимодействие асинхронных методов, в рамках языка MC#, реализуется посредством передачи сообщений с использованием каналов и обработчиков канальных сообщений. Эти каналы и обработчики определяются в MC#-программах с помощью связок в стиле языка Polyphonic C#.
Таким образом, написание параллельной, распределенной программы на языке MC# сводится к выделению с помощью специального ключевого слова async методов, которые должны быть исполнены асинхронно локально (в виде отдельных потоков), а также с помощью ключевого слова movable тех методов, которые могут быть перенесены для исполнения на другие машины.
Данная лекция, безусловно, не претендует на полноту охвата всех существующих библиотек и уж тем более языков программирования.
Даны общие сведения о наиболее популярных библиотеках, которые интересны в плане их применения в программах на различных языках.
Сознательно обойдены стороной расширения для параллельного программирования языков С и Фортран, их рассмотрению посвящено множество литературы и нет сомнений, что массово используются и, скорее всего, будут использоваться именно эти языки. Внимание уделено некоторым интересным апектам относительно редко применяемых языков и анонсам разработок новых.
Основная доля новых работ нацелена на различные способы синхронизации объектов данных и поддержку многопоточного программирования.
Многоядерные процессоры являются одной из наиболее активно развивающихся областей электроники на данный момент. В среднем примерно раз в полтора-два месяца какая-либо из компаний-производителей заявляет о разработке или выпуске нового процессора или архитектуры. Совершенствуются способы взаимодействия процессорных ядер на кристалле между собой. В многоядерных процессорах преобладают сложные сетевые структуры. Мультиядерные процессоры используют шинные решения или соединения "точка-точка". Также в качестве одной из тенденций можно отметить стремление интеграции на кристалле процессора, кроме процессорных элементов контроллеров памяти, таймеров, периферийных интерфейсов, — так называемые "системы на кристалле". Одной из основных проблем остается высокая латентность основной памяти. Общее энергопотребление процессоров за последние годы практичестки не возросло, а для некоторых классов процессоров имеет явные тенденции к снижению.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.