Процессор систем инструкций процессора регистрирует представление типов назначения объектов
Обновлено: 22.11.2024
Диаграмма вариантов использования — это тип поведенческой диаграммы UML, который часто используется для анализа различных систем. Они позволяют визуализировать различные типы ролей в системе и то, как эти роли взаимодействуют с системой. В этом учебном пособии по диаграммам вариантов использования рассматриваются следующие темы, которые помогут вам лучше создавать варианты использования.
Важность диаграмм вариантов использования
Как упоминалось ранее, диаграммы вариантов использования используются для сбора требований к использованию системы. В зависимости от ваших требований вы можете использовать эти данные по-разному. Ниже приведены несколько способов их использования.
- Чтобы определить функции и то, как роли взаимодействуют с ними — основная цель диаграмм вариантов использования.
- Для представления системы на высоком уровне — особенно полезно при презентации руководителям или заинтересованным сторонам. Вы можете выделить роли, которые взаимодействуют с системой, и функциональные возможности, предоставляемые системой, не углубляясь во внутреннюю работу системы.
- Выявление внутренних и внешних факторов. Это может показаться простым, но в больших сложных проектах система может быть идентифицирована как внешняя роль в другом варианте использования.
Использовать объекты диаграммы прецедентов
Схемы вариантов использования состоят из 4 объектов.
Объекты более подробно описаны ниже.
Актер
Актер на диаграмме вариантов использования — это любой объект, выполняющий определенную роль в данной системе. Это может быть человек, организация или внешняя система, обычно нарисованная в виде скелета, показанного ниже.
Случай использования
Сценарий использования представляет собой функцию или действие в системе. Он нарисован в виде овала и назван функцией.
Система
Система используется для определения области применения и изображается в виде прямоугольника. Это необязательный элемент, но он полезен при визуализации больших систем. Например, вы можете создать все варианты использования, а затем использовать системный объект для определения объема, охватываемого вашим проектом. Или вы даже можете использовать его, чтобы показать различные области, охватываемые разными выпусками.
Пакет
Пакет — это еще один необязательный элемент, чрезвычайно полезный в сложных диаграммах. Подобно диаграммам классов, пакеты используются для группировки вариантов использования. Они нарисованы так, как показано на изображении ниже.
Руководство по диаграмме вариантов использования
Несмотря на то, что диаграммы вариантов использования можно использовать для различных целей, существует ряд общих рекомендаций, которым необходимо следовать при построении вариантов использования.
К ним относятся стандарты именования, направления стрелок, размещение вариантов использования, использование системных блоков, а также правильное использование отношений.
Мы подробно рассмотрели эти рекомендации в отдельной записи блога. Итак, ознакомьтесь с рекомендациями по диаграммам вариантов использования.
Взаимосвязи в диаграммах вариантов использования
Существует пять типов отношений на диаграмме вариантов использования. Они
- Связь между действующим лицом и вариантом использования
- Обобщение актора
- Расширить связь между двумя вариантами использования
- Включить взаимосвязь между двумя вариантами использования.
- Обобщение варианта использования
Мы рассмотрели все эти отношения в отдельной записи блога, где есть примеры с изображениями. В этом посте мы не будем вдаваться в подробности, но вы можете проверить отношения на диаграммах вариантов использования.
Как создать диаграмму вариантов использования
До сих пор вы узнали об объектах, связях и рекомендациях, которые имеют решающее значение при построении диаграмм вариантов использования. Я объясню различные процессы на примере банковской системы.
Определение действующих лиц
Актеры — это внешние объекты, которые взаимодействуют с вашей системой. Это может быть человек, другая система или организация. В банковской системе наиболее очевидным действующим лицом является клиент. Другими действующими лицами могут быть банковский служащий или кассир, в зависимости от роли, которую вы пытаетесь показать в сценарии использования.
Примером внешней организации может быть налоговый орган или центральный банк. Кредитный процессор является хорошим примером внешней системы, связанной с субъектом.
Определение вариантов использования
Пришло время определить варианты использования. Хороший способ сделать это — определить, что нужно актерам от системы. В банковской системе клиенту нужно будет открывать счета, вносить и снимать средства, запрашивать чековые книжки и выполнять аналогичные функции. Так что все это можно рассматривать как варианты использования.
Сценарии использования верхнего уровня всегда должны предоставлять полную функцию, требуемую субъектом. Вы можете расширить или включить варианты использования в зависимости от сложности системы.
После того как вы определите действующих лиц и вариант использования верхнего уровня, у вас появится общее представление о системе. Теперь вы можете настроить его и добавить дополнительные уровни детализации.
Ищите общие функциональные возможности для использования Include
Ищите общие функции, которые можно повторно использовать в системе. Если вы обнаружите два или более вариантов использования с общими функциями, вы можете выделить общие функции и добавить их в отдельный вариант использования. Затем вы можете подключить его через отношение включения, чтобы показать, что он всегда вызывается при выполнении исходного варианта использования. (см. схему для примера).
Можно ли обобщать действующих лиц и варианты использования
Могут быть случаи, когда участники связаны с похожими вариантами использования, но запускают несколько вариантов использования, уникальных только для них. В таких случаях вы можете обобщить актера, чтобы показать наследование функций. Вы можете сделать то же самое и для варианта использования.
Один из лучших примеров — вариант использования "Внести платеж" в платежной системе. Вы можете дополнительно обобщить его на «Оплата кредитной картой», «Оплата наличными», «Оплата чеком» и т. д. Все они имеют атрибуты и функциональные возможности оплаты со специальными уникальными сценариями.
Необязательные функции или дополнительные функции
Есть некоторые функции, которые активируются необязательно. В таких случаях вы можете использовать отношение расширения и присоединить к нему правило расширения. В приведенном ниже примере банковской системы «Рассчитать бонус» является необязательным и срабатывает только при выполнении определенного условия.
Расширение не всегда означает, что оно необязательно. Иногда вариант использования, связанный расширением, может дополнять базовый вариант использования. Следует помнить, что базовый вариант использования должен выполнять функцию сам по себе, даже если не вызывается расширяющий вариант использования.
Шаблоны диаграмм вариантов использования
Мы пошли дальше и создали шаблоны диаграмм вариантов использования для некоторых распространенных сценариев. Хотя ваша проблема или сценарий не будут точно такими же, вы можете использовать их в качестве отправной точки. Ознакомьтесь с нашими шаблонами диаграмм вариантов использования.
Вопросы по учебному пособию по диаграммам вариантов использования
Мы постарались всесторонне охватить все, что вам нужно знать о создании диаграмм вариантов использования. Если у вас есть сомнения по поводу какого-либо раздела или вы думаете, как улучшить это руководство, сообщите нам об этом в комментариях.
Дополнительные руководства по диаграммам
Присоединяйтесь к более чем тысячам организаций, использующих Creately, для мозгового штурма, планирования, анализа и успешного выполнения своих проектов.
зависимость – это объект, от которого зависит другой объект. Изучите следующий класс MessageWriter с методом Write, от которого зависят другие классы:
Класс может создать экземпляр класса MessageWriter, чтобы использовать его метод Write. В следующем примере класс MessageWriter является зависимостью класса Worker:
Класс создает класс MessageWriter и напрямую зависит от него. Жестко закодированные зависимости, такие как в предыдущем примере, проблематичны, и их следует избегать по следующим причинам:
- Чтобы заменить MessageWriter другой реализацией, необходимо изменить класс Worker.
- Если у MessageWriter есть зависимости, они также должны быть настроены классом Worker. В большом проекте с несколькими классами, зависящими от MessageWriter , код конфигурации разбросан по всему приложению.
- Эта реализация с трудом поддается модульному тестированию. Приложение должно использовать макет или класс-заглушку MessageWriter, что невозможно при таком подходе.
Внедрение зависимостей решает эти проблемы следующим образом:
Например, интерфейс IMessageWriter определяет метод Write:
Этот интерфейс реализован конкретным типом MessageWriter :
Пример кода регистрирует службу IMessageWriter с конкретным типом MessageWriter . Метод AddScoped регистрирует службу с ограниченным временем жизни, то есть временем существования одного запроса. Срок службы службы описан далее в этой статье.
В примере приложения служба IMessageWriter запрашивается и используется для вызова метода Write:
Используя шаблон DI, рабочая служба:
- Не использует конкретный тип MessageWriter, а только реализующий его интерфейс IMessageWriter. Это упрощает изменение реализации, используемой контроллером, без изменения самого контроллера.
- Не создает экземпляр MessageWriter . Экземпляр создается контейнером внедрения зависимостей.
Реализация интерфейса IMessageWriter может быть улучшена с помощью встроенного API ведения журнала:
Обновленный метод ConfigureServices регистрирует новую реализацию IMessageWriter:
LoggingMessageWriter зависит от ILogger , который он запрашивает в конструкторе.ILogger — это служба, предоставляемая платформой.
Нередко внедрение зависимостей используется в цепочке. Каждая запрошенная зависимость, в свою очередь, запрашивает свои собственные зависимости. Контейнер разрешает зависимости в графе и возвращает полностью разрешенную службу. Совокупный набор зависимостей, которые необходимо разрешить, обычно называют деревом зависимостей, графом зависимостей или графом объектов.
Контейнер разрешает ILogger, используя (универсальные) открытые типы, устраняя необходимость регистрировать каждый (универсальный) сконструированный тип.
В терминологии внедрения зависимостей служба:
- Обычно это объект, предоставляющий услуги другим объектам, например службе IMessageWriter.
- Не относится к веб-службе, хотя служба может использовать веб-службу.
Среда предоставляет надежную систему ведения журналов. Реализации IMessageWriter, показанные в предыдущих примерах, были написаны для демонстрации базового внедрения зависимостей, а не для реализации ведения журнала. Большинству приложений не нужно писать регистраторы. В следующем коде показано использование ведения журнала по умолчанию, для которого требуется только регистрация Worker в ConfigureServices в качестве размещенной службы AddHostedService:
При использовании предыдущего кода нет необходимости обновлять ConfigureServices , поскольку ведение журнала обеспечивается платформой.
Несколько правил обнаружения конструктора
В приведенном выше коде предполагается, что ведение журнала добавлено и может быть разрешено поставщиком услуг, а типы FooService и BarService — нет. Конструктор с параметром ILogger используется для разрешения экземпляра ExampleService. Несмотря на наличие конструктора, который определяет больше параметров, типы FooService и BarService не разрешаются с помощью DI.
Код ExampleService с неоднозначными параметрами типа, разрешаемыми с помощью внедрения зависимостей, вызовет исключение. Не делайте этого — это предназначено для того, чтобы показать, что подразумевается под «неоднозначными типами, разрешаемыми DI».
В предыдущем примере есть три конструктора. Первый конструктор не имеет параметров и не требует услуг от поставщика услуг. Предположим, что и ведение журнала, и параметры были добавлены в контейнер внедрения зависимостей и являются службами, разрешаемыми посредством внедрения зависимостей. Когда контейнер внедрения зависимостей пытается разрешить тип ExampleService, он выдает исключение, поскольку два конструктора неоднозначны.
Вы можете избежать двусмысленности, определив конструктор, который вместо этого принимает оба типа, разрешаемые DI:
Регистрация групп сервисов с помощью методов расширения
Microsoft Extensions использует соглашение для регистрации группы связанных служб. Соглашение состоит в том, чтобы использовать один метод расширения Add для регистрации всех служб, необходимых для функции платформы. Например, метод расширения AddOptions регистрирует все службы, необходимые для использования параметров.
Службы, предоставляемые платформой
В следующей таблице перечислены некоторые сервисы, зарегистрированные в рамках платформы:
Тип службы | Срок службы |
---|---|
Microsoft.Extensions.DependencyInjection.IServiceScopeFactory | Singleton |
IHostApplicationLifetime | Singleton |
Microsoft.Extensions.Logging .ILogger | Singleton |
Microsoft.Extensions.Logging.ILoggerFactory | Singleton |
Microsoft.Extensions.ObjectPool.ObjectPoolProvider | Singleton |
Microsoft.Extensions.Options.IConfigureOptions | Transient |
Microsoft.Extensions.Options.IOptions | Singleton |
System.Diagnostics.DiagnosticListener | < td>Singleton|
System.Diagnostics.DiagnosticSource | Singleton |
Срок службы
Службы могут быть зарегистрированы с одним из следующих сроков действия:
В следующих разделах описывается каждое из предыдущих жизненных циклов. Выберите подходящее время жизни для каждой зарегистрированной службы.
Временный
Временные службы жизненного цикла создаются каждый раз, когда они запрашиваются из контейнера служб. Это время жизни лучше всего подходит для облегченных служб без сохранения состояния. Зарегистрируйте временные службы в AddTransient.
В приложениях, обрабатывающих запросы, временные службы удаляются в конце запроса.
Область действия
Для веб-приложений ограниченное время существования означает, что службы создаются один раз для каждого клиентского запроса (соединения). Зарегистрируйте службы с заданной областью в AddScoped.
В приложениях, обрабатывающих запросы, службы с ограниченной областью действия размещаются в конце запроса.
При использовании Entity Framework Core метод расширения AddDbContext по умолчанию регистрирует типы DbContext с заданным временем существования.
Не не разрешайте службу с ограниченной областью действия из одиночки и будьте осторожны, чтобы не делать этого косвенно, например, через временную службу.Это может привести к неправильному состоянию службы при обработке последующих запросов. Можно:
- Разрешить одноэлементную службу из ограниченной или временной службы.
- Разрешить службу с ограниченной областью действия из другой службы с ограниченной областью действия или временной службы.
По умолчанию в среде разработки разрешение службы из другой службы с более длительным временем существования вызывает исключение. Дополнительные сведения см. в разделе Проверка области действия.
Одиночка
Пожизненные службы Singleton создаются либо:
- При первом запросе.
- Разработчиком при предоставлении экземпляра реализации непосредственно в контейнер. Такой подход требуется редко.
Каждый последующий запрос реализации службы из контейнера внедрения зависимостей использует один и тот же экземпляр. Если приложению требуется одноэлементное поведение, разрешите контейнеру службы управлять временем существования службы. Не реализуйте шаблон проектирования синглтона и не предоставляйте код для удаления синглтона. Службы никогда не должны удаляться кодом, разрешающим службу из контейнера. Если тип или фабрика зарегистрированы как синглтон, контейнер автоматически удаляет синглтон.
Зарегистрируйте одноэлементные службы в AddSingleton. Службы Singleton должны быть потокобезопасными и часто используются в службах без сохранения состояния.
В приложениях, которые обрабатывают запросы, одноэлементные службы удаляются, когда ServiceProvider удаляется при завершении работы приложения. Поскольку память не освобождается до тех пор, пока приложение не будет закрыто, рассмотрите возможность использования памяти с одноэлементной службой.
Способы регистрации службы
Среда предоставляет методы расширения регистрации службы, полезные в определенных сценариях:
Дополнительную информацию об утилизации типов см. в разделе "Удаление услуг".
Регистрация службы только с типом реализации эквивалентна регистрации этой службы с той же реализацией и типом службы. Вот почему несколько реализаций службы не могут быть зарегистрированы с использованием методов, которые не принимают явный тип службы. Эти методы могут регистрировать несколько экземпляров службы, но все они будут иметь один и тот же тип реализации.
Любой из перечисленных выше методов регистрации службы можно использовать для регистрации нескольких экземпляров службы одного типа. В следующем примере AddSingleton вызывается дважды с IMessageWriter в качестве типа службы. Второй вызов AddSingleton переопределяет предыдущий при разрешении как IMessageWriter и добавляется к предыдущему при разрешении нескольких служб через IEnumerable . Службы отображаются в том порядке, в котором они были зарегистрированы при разрешении через IEnumerable .
В предыдущем примере исходного кода регистрируются две реализации IMessageWriter .
ExampleService определяет два параметра конструктора; один IMessageWriter и IEnumerable . Единственный IMessageWriter — это последняя зарегистрированная реализация, тогда как IEnumerable представляет все зарегистрированные реализации.
Среда также предоставляет методы расширения TryAdd, которые регистрируют службу только в том случае, если еще не зарегистрирована реализация.
В следующем примере вызов AddSingleton регистрирует ConsoleMessageWriter как реализацию для IMessageWriter . Вызов TryAddSingleton не имеет никакого эффекта, поскольку IMessageWriter уже имеет зарегистрированную реализацию:
TryAddSingleton не имеет никакого эффекта, так как он уже был добавлен, и "попытка" завершится ошибкой. ExampleService будет утверждать следующее:
Для получения дополнительной информации см.:
Методы TryAddEnumerable(ServiceDescriptor) регистрируют службу, только если еще нет реализации того же типа. Несколько сервисов разрешаются через IEnumerable . При регистрации служб добавьте экземпляр, если один из тех же типов еще не добавлен. Авторы библиотек используют TryAddEnumerable, чтобы избежать регистрации нескольких копий реализации в контейнере.
В следующем примере первый вызов TryAddEnumerable регистрирует MessageWriter как реализацию IMessageWriter1 . Второй вызов регистрирует MessageWriter для IMessageWriter2. Третий вызов не имеет никакого эффекта, поскольку IMessageWriter1 уже имеет зарегистрированную реализацию MessageWriter:
Регистрация службы обычно не зависит от порядка, за исключением случаев регистрации нескольких реализаций одного и того же типа.
IServiceCollection — это коллекция объектов ServiceDescriptor. В следующем примере показано, как зарегистрировать службу, создав и добавив ServiceDescriptor:
Встроенные методы Add используют тот же подход. Например, см. исходный код AddScoped.
Поведение внедрения конструктора
Службы могут быть разрешены с помощью:
- Создает объекты, не зарегистрированные в контейнере.
- Используется с некоторыми функциями платформы.
Конструкторы могут принимать аргументы, не предоставленные внедрением зависимостей, но аргументам должны быть присвоены значения по умолчанию.
Когда службы разрешаются с помощью IServiceProvider или ActivatorUtilities , для внедрения конструктора требуется общедоступный конструктор.
Когда сервисы разрешаются с помощью ActivatorUtilities , для внедрения конструктора требуется, чтобы существовал только один применимый конструктор. Поддерживаются перегрузки конструктора, но может существовать только одна перегрузка, все аргументы которой могут быть выполнены путем внедрения зависимостей.
Проверка области
Когда приложение запускается в среде разработки и вызывает CreateDefaultBuilder для сборки хоста, поставщик услуг по умолчанию выполняет проверки, чтобы убедиться, что:
- Службы с заданной областью действия не разрешаются корневым поставщиком услуг.
- Службы с заданной областью действия не внедряются в синглтоны.
Корневой поставщик услуг создается при вызове BuildServiceProvider. Срок действия корневого поставщика услуг соответствует сроку службы приложения, когда поставщик запускается вместе с приложением и удаляется при закрытии приложения.
Службы с заданной областью удаляются создавшим их контейнером. Если служба с заданной областью создается в корневом контейнере, срок службы службы фактически повышается до одноэлементного, поскольку он удаляется корневым контейнером только при завершении работы приложения. Проверка областей службы позволяет выявить такие ситуации при вызове BuildServiceProvider.
Сценарии масштаба
IServiceScopeFactory всегда регистрируется как одноэлементный, но IServiceProvider может варьироваться в зависимости от времени существования содержащего его класса. Например, если вы разрешаете службы из области, и любая из этих служб принимает IServiceProvider, это будет экземпляр с областью действия.
Чтобы получить доступ к службам области действия в реализациях IHostedService, таких как BackgroundService, не внедряйте зависимости службы через внедрение конструктора. Вместо этого внедрите IServiceScopeFactory, создайте область, а затем разрешите зависимости из области, чтобы использовать соответствующий срок службы службы.
В приведенном выше коде во время работы приложения фоновая служба:
- Зависит от IServiceScopeFactory.
- Создает IServiceScope для разрешения дополнительных служб.
- Разрешает использование сервисов с ограниченной областью действия.
- Обрабатывает объекты, затем передает их и, наконец, помечает их как обработанные.
Из примера исходного кода вы можете увидеть, как реализации IHostedService могут извлечь выгоду из времени жизни службы с заданной областью.
Это первое руководство из семинара "Начало работы с ливерморскими вычислениями". Он предназначен для предоставления лишь краткого обзора обширной и обширной темы параллельных вычислений в качестве вводной части для последующих руководств. Таким образом, он охватывает только самые основы параллельных вычислений и предназначен для тех, кто только знакомится с предметом и планирует посетить одно или несколько других руководств на этом семинаре. Он не предназначен для подробного рассмотрения параллельного программирования, так как это потребует значительно больше времени. Учебное пособие начинается с обсуждения параллельных вычислений — что это такое и как оно используется, после чего следует обсуждение концепций и терминологии, связанных с параллельными вычислениями. Затем исследуются темы параллельных архитектур памяти и моделей программирования. За этими темами следует серия практических дискуссий по ряду сложных вопросов, связанных с проектированием и выполнением параллельных программ. Учебник завершается несколькими примерами того, как распараллелить несколько простых задач. Ссылки включены для дальнейшего самостоятельного изучения.
Обзор
Что такое параллельные вычисления?
Последовательные вычисления
Традиционно программное обеспечение писалось для последовательных вычислений:
- Задача разбита на отдельные серии инструкций.
- Инструкции выполняются последовательно одна за другой
- Выполняется на одном процессоре
- В любой момент времени может выполняться только одна инструкция
Например:
Параллельные вычисления
Проще говоря, параллельные вычисления — это одновременное использование нескольких вычислительных ресурсов для решения вычислительной задачи:
- Проблема разбивается на отдельные части, которые можно решать одновременно
- Каждая часть далее разбита на серию инструкций.
- Инструкции из каждой части выполняются одновременно на разных процессорах
- Используется общий механизм контроля/координации
Например:
- Вычислительная задача должна уметь:
- Разбить на отдельные части работы, которые можно решать одновременно;
- Выполнение нескольких программных инструкций в любой момент времени;
- Решайте задачи быстрее, используя несколько вычислительных ресурсов, чем один вычислительный ресурс.
- Один компьютер с несколькими процессорами/ядрами
- Произвольное количество таких компьютеров, объединенных в сеть
Параллельные компьютеры
- Сегодня практически все автономные компьютеры параллельны с аппаратной точки зрения:
- Несколько функциональных блоков (кеш L1, кэш L2, переход, предварительная выборка, декодирование, операции с плавающей запятой, обработка графики (GPU), целые числа и т. д.)
- Несколько исполнительных блоков/ядер
- Несколько аппаратных потоков
- Сети соединяют несколько автономных компьютеров (узлов) для создания больших параллельных компьютерных кластеров.
- Например, на приведенной ниже схеме показан типичный кластер параллельных компьютеров LLNL:
- Каждый вычислительный узел сам по себе является многопроцессорным параллельным компьютером
- Несколько вычислительных узлов объединены в сеть Infiniband.
- Узлы специального назначения, также многопроцессорные, используются для других целей.
- Большинство больших параллельных компьютеров (суперкомпьютеров) в мире представляют собой кластеры оборудования, произведенного несколькими (в основном) известными поставщиками.
Зачем использовать параллельные вычисления?
Реальный мир чрезвычайно сложен
- В естественном мире множество сложных, взаимосвязанных событий происходит одновременно, но в рамках временной последовательности.
- По сравнению с последовательными вычислениями параллельные вычисления гораздо лучше подходят для моделирования, имитации и понимания сложных явлений реального мира.
- Например, представьте себе их последовательное моделирование:
Основные причины использования параллельного программирования
ЭКОНОМЬТЕ ВРЕМЯ И/ИЛИ ДЕНЬГИ
- Теоретически, выделение большего количества ресурсов для выполнения задачи сократит время ее выполнения и потенциально сэкономит средства.
- Параллельные компьютеры могут быть собраны из дешевых, широко распространенных компонентов.
РЕШАТЬ БОЛЬШИЕ/БОЛЕЕ СЛОЖНЫЕ ПРОБЛЕМЫ
ОБЕСПЕЧИТЬ ПАРАЛЛЕЛЬНОСТЬ
- Один вычислительный ресурс может одновременно выполнять только одну операцию. Несколько вычислительных ресурсов могут выполнять множество задач одновременно.
- Пример. Сети для совместной работы представляют собой глобальную площадку, где люди со всего мира могут встречаться и работать «виртуально».
ИСПОЛЬЗОВАТЬ НЕМЕСТНЫЕ РЕСУРСЫ
- Использование вычислительных ресурсов в глобальной сети или даже в Интернете, когда локальных вычислительных ресурсов недостаточно или недостаточно.
- Пример. SETI@home (setiathome.berkeley.edu) насчитывает более 1,7 миллиона пользователей почти во всех странах мира (май 2018 г.).
ЛУЧШЕ ИСПОЛЬЗОВАТЬ БАЗОВОЕ ПАРАЛЛЕЛЬНОЕ ОБОРУДОВАНИЕ
- Современные компьютеры, даже ноутбуки, имеют параллельную архитектуру с несколькими процессорами/ядрами.
- Параллельное программное обеспечение специально предназначено для параллельного оборудования с несколькими ядрами, потоками и т. д.
- В большинстве случаев последовательные программы, запускаемые на современных компьютерах, «тратят впустую» потенциальную вычислительную мощность.
Будущее
Кто использует параллельные вычисления?
Наука и техника
Исторически параллельные вычисления считались «высшим уровнем вычислений» и использовались для моделирования сложных задач во многих областях науки и техники:
- Атмосфера, Земля, Окружающая среда
- Физика - прикладная, ядерная, частица, конденсированное состояние, высокое давление, термоядерный синтез, фотоника.
- Бионаука, биотехнология, генетика
- Химия, молекулярные науки
- Геология, сейсмология
- Машиностроение: от протезов до космических кораблей
- Электротехника, схемотехника, микроэлектроника
- Информатика, математика
- Оборона, Оружие
Промышленные и коммерческие
Сегодня коммерческие приложения являются равной или даже большей движущей силой в разработке более быстрых компьютеров. Эти приложения требуют сложной обработки больших объемов данных. Например:
Читайте также: