GPU вычисления. Серверное решение: NVidia Tesla K20X/K20

Вычисление на GPU: общая характеристика и принципы работы. Графические процессоры Tesla. Платформа параллельных вычислений CUDA. Сравнение графических ускорителей Tesla, основанных на новых архитектурах Kepler и Fermi. Архитектура SMX процессоров.

Рубрика Программирование, компьютеры и кибернетика
Вид реферат
Язык русский
Дата добавления 26.10.2017
Размер файла 2,4 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Национальный Исследовательский Ядерный Университет «МИФИ»

Факультет Очно-Заочного (Вечернего) Обучения

Реферат

на тему: GPU вычисления. Серверное решение: NVidia Tesla K20X/K20

Группа: В6-123

Студент: Пронченко А.О.

2013

1. Что такое GPU вычисления?

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

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

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

Все графические процессоры NVIDIA: GeForce, Quadro и Tesla - поддерживают вычисления на GPU и параллельное программирование CUDA. Однако для рабочего процесса, при котором требуются надежность данных и общая производительность, компания рекомендует графические процессоры Tesla.

Графические процессоры Tesla созданы с нуля для ускорения научных вычислений и технических расчетов. Основанные на инновационных возможностях архитектуры Kepler, последние графические процессоры Tesla обеспечивают в три раза более высокую производительность по сравнению с архитектурой предыдущего поколения. Производительность вычислений операций с плавающей запятой с двойной точностью свыше 1 Терафлоп, при этом значительно усовершенствованы возможности программирования и энергоэффективность.

Tesla не может полностью заменить обычный универсальный процессор, но позволяет использовать вычислительный ресурс множества своих ядер для решения определенного круга ресурсоемких задач, которые позволяют производить независимую параллельную обработку данных (примерами таких задач могут служить: симуляция свёртывания молекул белка, секвенирование ДНК, моделирование погоды, анализ финансового риска и т. п.).

2. Кратко о CUDA

Платформа параллельных вычислений CUDA® обеспечивает набор расширений для языков C и С++, позволяющих выражать как параллелизм данных, так и параллелизм задач на уровне мелких и крупных структурных единиц. Программист может выбрать средства разработки: языки высокого уровня, такие как C, C++, Fortran или же открытые стандарты, такие как директивы OpenACC. Платформа параллельных вычислений CUDA используется на сегодняшний день в тысячах приложений с GPU-ускорением и тысячах опубликованных научных статьях.

3. Графические процессоры NVIDIA Tesla. Сравнительные характеристики

графический процессор архитектура

Системы Tesla впервые появились на рынке с выходом графического чипа NVIDIA восьмого поколения -- G80. Tesla строится на базе обычных графических процессоров, но, в отличие от видеоускорителей, не имеет средств вывода изображения на дисплей. Являясь своего рода сопроцессором, Tesla может использоваться для создания вычислительных систем на базе персональных компьютеров, а также в составе серверов и вычислительных кластеров.

Ниже приведена сравнительная таблица графических ускорителей Tesla, основанных на новой архитектуре Kepler и на архитектуре Fermi.

Ключевые возможности

Tesla K20X

Tesla K20

Tesla K10

Tesla M2090

Tesla M2075

Тип GPU

1 Kepler GK110

2 Kepler GK104s

1 Fermi GPU

Область применения

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

Обработка сейсмических данных, обработка сигналов и изображений, видеоаналитика.

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

Пиковая производительность для вычислений двойной точности с плавающей запятой

1.31 Tf

1.17 Tf

0.19 Tf

(95 Гигафлоп на GPU)

0.665 Tf

0.515 Tf

Пиковая производительность для вычислений одинарной точности с плавающей запятой

3.95 Tf

3.52 Tf

4.577 Tf

(2.288 Tf на GPU)

1.331 Tf

1.030 Tf

Полоса пропускания памяти

250 GB / sec

208 GB / sec

320 GB / sec

(160 GB / sec на GPU)

177 Gb / sec

150 GB / sec

Размер памяти (GDDR5)

6 GB

5GB

8 GB

(4 GB на GPU)

6 GB

6 GB

Ядра CUDA

2688

2496

3072

(1536 на GPU)

512

448

4. Архитектура графического процессора Kepler GK110

Графический процессор Kepler GK110 был создан специально для видеоускорителей Tesla, его основной задачей является максимальное увеличение возможностей параллельных вычислений. GK110 не только превосходит по этому параметру предыдущую архитектуру GPU Fermi - помимо этого значительно снижены потребление электричества и тепловыделение.

Полное исполнение Kepler GK110 включает в себя 15 потоковых мультипроцессоров (SMX - streaming multiprocessor) и 6 64-битных контроллеров памяти. К примеру, видеоускоритель Tesla K20X включает в себя 14 устройств SMX, а Tesla K20 - 13.

Основные особенности архитектуры, которые будут рассматриваться ниже, включают в себя:

- архитектуру SMX процессоров;

- улучшенную подсистему памяти, которая предоставляет новые возможности кэширования, большую пропускную способность, и новую полностью переделанную и более быструю реализацию ввода-ввода с использование динамической памяти с произвольным доступом (DRAM);

- поддержку на аппаратном уровне новых моделей программирования и их возможностей.

5. Архитектура SMX процессоров

В графическом процессоре Kepler GK110 каждый SMX процессор включает в себя 192 ядра CUDA одинарной точности, каждое из которых имеет полностью конвейерное арифметико-логическое устройство для работы с целыми числами и числами с плавающей запятой.

Одной из главных задач при создании процессора Kepler GK110 было увеличение мощности вычислений двойной точности, так как арифметика двойной точности является важнейшей во многих высокопроизводительных системах. GPU Kepler GK110 также имеет 32 устройства специального назначения (SFU - special function unit) для быстрых приблизительных вычислений трансцендентных выражений, причем их число возросло в 8 раз в сравнении с предыдущей архитектурой.

SMX процессоры используют генератор тактовой частоты графического процессора, а не шейдерного. Выполнение программ на более высокой тактовой частоте может в целом ускорить выполнение её отдельных частей, так как возможно использовать меньшее число ядер - это одна из основных областей оптимизации параллельного вычисления. Но частотная логика для более быстрых ядер требует больших затрат электроэнергии. Для архитектуры Kepler приоритетной задачей было повышение производительность на ватт электроэнергии. По этой причине было внесено множество изменений, ориентированных на оптимизацию вычислений, в том числе было принято решение использовать множество вычислительных ядер, работающих на более медленном генераторе тактовой частоты, требующем значительно меньших затрат электричества.

SMX разбивает каждый процесс на 32 параллельных процесса, называемых «скачка`ми» (warp). Каждый SMX процессор имеет 4 планировщика (warp scheduler) и 8 регистров команд, которые позволяют определять и исполнять конкурентно одновременно 4 «скачка». В архитектуре Kepler планировщик в каждом цикле работы выбирает 4 «скачка» и позволяет выполнить 2 независимых инструкции на каждом из «скачков». В отличие от предыдущей архитектуры, графический процессор GK110 позволяет исполнять в парах команд, в том числе и операции с плавающей запятой, которые до этого исполнялись отдельно и занимали весь цикл выполнения.

Помимо этого в конструкцию SMX процессоров были внесены изменения, целью которых является оптимизация работы планировщика, которая в себя включает:

- запись и учет задержек выполняемых программ;

- механизм анализа «скачков», который позволяет принимать решение о том, какой из «скачков» отрабатывать следующим, с целью повышения общей эффективности вычисления;

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

В устаревшей архитектуре Fermi в состав планировщика «скачков» входила сложная аппаратная часть для решения проблемы правильности данных при параллельном вычислении математических функций. Теперь эта задача возложена на механизм записи и учета задержек выполнения команд: этот механизм отслеживает все регистры, которые еще не содержат правильных данных, а также анализируют зависимость между блоками вычислений, сравнивая результаты с таблицей ранжирования, принимается решение о том, какие из «скачков» завершили работу, и какие регистры содержат нужные данные. Таким образом, многоходовой регистр планировщика ведет строгий учет регистров, которые остались не выполнены, а блок проверки зависимостей анализирует использование регистра по его же записям.

Во время разработки архитектуры Kepler стало понятно, что математические вычисления и связанные с ними данные - вещи всегда предсказуемые, таким образом, компилятор всегда может предположить наперед, какие инструкции будут выполняться следующими. В частности, это позволяет планировать какие «скачки» будут выполняться дальше, а, следовательно, какие блоки данных станут корректными для их использования на следующем шаге. Все это помогло избавиться от части сложных аппаратных решений, требующих к тому же большого количества электроэнергии, и заменить их простыми блоками, которые хранят корректные данные для последующих вычислений, и которые совместно с механизмом ранжирования регистров, позволяют планировщику определять последовательность выполнения «скачков».

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

Другим улучшением стал механизм перемешивания команд, которые позволяет «скачкам» процесса обмениваться данными. Раньше для обмена данными между «скачками» требовалось отдельно сохранить и разгружать данные, используя общую память. Команды перемешивания позволяют «скачкам» брать данные непосредственно один из другого.

Механизм перемешивания команд позволяет получить значительно прибавку в производительности в сравнении с использованием общей памяти, так как операции сохранения и загрузки данных выполняются за один шаг. Также механизм перемешивания позволяет сократить количество общей памяти, которая требуется блокам процесса, так как происходит обмен данными между «скачками» и общая память вовсе не задействуется.

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

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

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

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

- atomicAdd - сложение;

- atomicCAS - сравнение с обменом;

- atomicExch - перемешивание;

- atomicMin - поиск минимума;

- atomicMax - поиск максимума;

- atomicAnd - логическое и;

- atomicOr - логическое или;

- atomicXor - логическое или-не;

Другие атомарные операции, которые не поддерживаются в явном виде, например, атомарные операции над числами с плавающей запятой, могут быть эмулированы с помощью операций сравнения с обменом (compare-and-swap или CAS). Сравнение с обменом -- атомарная инструкция, сравнивающая значение в памяти с одним из аргументов, и в случае успеха записывающая второй аргумент в память.

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

Помимо этого, в Kepler изменился механизм управление текстурами. Раньше для того, чтобы ссылаться на текстуру, требовалось выделять для нее отдельный «слот» в фиксированной таблице привязок. Эта таблица значительно сокращала количество уникальных текстур, которые можно использовать во время работы, ограничивая их 128 число одновременно используемыми текстурами.

В Kepler для текстур не требуется выделять «слот», так как информация о них хранится в виде объекта в памяти, и аппаратная часть может обращаться к этим объектам по мере необходимости. Это решение снимает все ограничения на количество уникальных текстур, на которые может ссылаться компьютерная программа.

6. Подсистема памяти. Иерархия памяти

Архитектура Kepler поддерживает унифицированные запросы к памяти для загрузки и хранения данных благодаря кэшу первого уровня (L1) на каждом из SMX мультипроцессоров. Kepler GK110 также позволяет компилятору использовать дополнительный кэш только для чтения данных.

Каждый SMX мультипроцессор имеет, 64 килобайт памяти внутри кристалла, которая может быть сконфигурирована как 48 килобайт разделяемой памяти с 16 килобайтами кэша первого уровня (L1) или 16 килобайт разделяемой памяти с 48 килобайтами кэша первого уровня. Новая организация памяти в архитектуре Kepler также позволяет делить внутреннюю память поровну, то есть 32 килобайта разделяемой памяти с 32 килобайтами кэша первого уровня. Увеличенная пропускная способность позволяет при этом обрабатывать до 256 байт информации за такт процессора.

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

Графический процессор Kepler GK110 также имеет 1536 килобайт выделенной кэш памяти второго уровня (L2), что в два раза больше по сравнению с архитектурой Fermi. Кэш второго уровня это основной механизм объединения данных между мультипроцессорами SMX, который отвечает за загрузку данных, их хранение, запросы к текстурам, а также высокосортной обмен данными в графическом процессоре. Алгоритмы, адресация данных в которых заранее неизвестна, такие как физические исследования, отслеживание луча и прочие, особенно выигрывают от такой иерархии памяти. Данные, которые требуют использования нескольких мультипроцессоров SMX для обработки, также выигрывают от подобной реализации памяти.

В архитектуре Kepler вся память, включая регистровые файлы, общую память, кэш первого и второго уровней, DRAM защищена при помощи кода исправления одиночных и обнаружения двойных ошибок (Single?Error Correct Double?Error Detect или SECDE). Помимо этого кэш только для чтения данных поддерживает исправление одиночных ошибок при помощи проверки на четность: если данные не проходят проверку на четность, кэш только для чтения данных автоматически обнуляет ошибочные данные и производит загрузку этих же данных из кэша второго уровня.

Режим проверки данных на наличие ошибок несколько снижает пропускную способность DRAM.

Заключение

В отличие от технологий, примененных в архитектуре Fermi, новая архитектура от NVIDIA разрабатывалась с нуля, для того, чтобы обеспечить конечного пользователя максимальным быстродействием. Видеоадаптеры, построенные на основе этой технологии, созданы для работы с параллельными исчислениями в высокопроизводительных системах типа HMC. Оглядываясь на все новшества, которые используются в видео решениях подобного рода, нельзя не согласиться с тем, что их выход стал новым витком в развитии графических ускорителей, да и графики в целом.

Структурная нотация

Tesla (K20X) = I [IO (PCI-E 3.0), P(GK110), (GDDR5) ]

· Tesla - графический ускоритель NVidia Tesla;

· IO - канал ввода-вывода

· P - процессор

· M - память

· I - устройство управления

P(GK110) = {14SMX - Csh2} - 6

· P - процессор

· SMX - потоковый мультипроцессор

· Csh2 - кэш второго уровня

· MC - контроллер памяти

SMX = { Cshi - 4{WP - 2Dispatch}, , { 192CUDA, 64DP, 32SFU, 32LS } - 255Rg - {, Csh1, Cshro}, 16Tex }

· Cshi - кэш инструкций

· WP - диспетчер «скачков»

· Dispatch - регистр команд диспетчера

· M - устройство памяти

· I - устройство исполнения

· CUDA - ядро CUDA

· DP - устройство вычисления двойной точности

· SFU - устройство вычисления трансцендентных функций

· LS - устройство загрузки/хранения данных

· Rg - регистр общего назначения

· Сsh1 - кэш-память первого уровня

· Cshro - кэш-память данных только для чтения

· Tex - устройство обработки текстур

Источники информации

1. GPU вычисления. Сайт компании NVIDIA. http://www.nvidia.ru/object/gpu-computing-ru.html

2. Страница продукта Tesla http://www.nvidia.ru/object/tesla-high-performance-computing-ru.html

3. Краткое техническое описание вычислительной архитектуры Kepler - официальная документация. http://www.nvidia.ru/content/PDF/kepler/NVIDIA-Kepler-GK110-Architecture-Whitepaper.pdf

4. Основной доклад на конференции по GPU-технологиям 2012 года. Архитектура GPU Kepler. http://www.youtube.com/watch?v=TxtZwW2Lf-w

5. Википедия. http://ru.wikipedia.org/wiki/Nvidia_Tesla

Размещено на Allbest.ru

...

Подобные документы

  • Еволюція GPU та поява GPGPU. OpenCL – відкритий стандарт для паралельного програмування гетерогенних систем. Сутність та особливості технології Nvidia CUDA. Програмно-апаратна платформа CUDA. Програмування за допомогою CUDA SDK. Огляд архітектури Fermi.

    курсовая работа [3,0 M], добавлен 09.06.2012

  • Сравнение центрального и графического процессора компьютера в параллельных расчётах. Пример применения технологии CUDA для неграфических вычислений. Вычисление интеграла и сложение векторов. Технические характеристики ПК, применяемого для вычислений.

    курсовая работа [735,9 K], добавлен 12.07.2015

  • Преимущества архитектуры CUDA по сравнению с традиционным подходом к организации вычислений общего назначения посредством возможностей графических API. Создание CUDA проекта. Код программы расчёта числа PI и суммирования вектора CPU, ее технический вывод.

    курсовая работа [1,4 M], добавлен 12.12.2012

  • История развития графических адаптеров и их характеристики. Конкуренция изготовителей ATI и NVIDIA как "двигатель прогресса" графических адаптеров. Обзор основных моделей: ATI Radeon, Nvidia GeForce FX. Критерии выбора графических адаптеров при покупке.

    реферат [134,7 K], добавлен 14.11.2013

  • Процессоры AMD Athlon 64X2, их параметры и характеристики, возможности разгона. Двухъядерные процессоры Intel и их особенности, совместимость новых процессоров с материнскими платами. Методика, последовательность и результаты тестирования процессоров.

    статья [31,6 K], добавлен 03.05.2010

  • Загальна термінологія CUDA. Структура NVIDIA CUDA, особливості створення, принципи оптимізації програм. Проблеми CUDA. Основні поняття і модель програмування, демонстрація технології CUDA на прикладі підрахунку CRC32-коду. Мінімальні вимоги до програми.

    курсовая работа [4,5 M], добавлен 14.05.2012

  • История и перспективы развития производства процессоров компьютеров. Основы работы центрального процессора. Характеристика многоядерных процессоров. Ведущие производители: Intel и AMD, их планы по выпуску новых процессоров. Советы по выбору CPU.

    курсовая работа [2,8 M], добавлен 03.11.2011

  • Программно-аппаратный комплекс производства компании Nvidia. Код для сложения векторов, представленный в CUDA. Вычислительная схема СPU с несколькими ядрами SMP. Выделение памяти на видеокарте. Проведение синхронизации работы основной и GPU программ.

    презентация [392,5 K], добавлен 14.12.2013

  • Математическая основа параллельных вычислений. Свойства Parallel Computing Toolbox. Разработка параллельных приложений в Matlab. Примеры программирования параллельных задач. Вычисление определенного интеграла. Последовательное и параллельное перемножение.

    курсовая работа [1,1 M], добавлен 15.12.2010

  • Принцип работы ядра процессора, типы архитектур ядер операционных систем. Сокет(Socket), кэш-память, контроллер ОЗУ, северный мост. Внутренняя архитектура процессоров Intel и AMD: расшифровка названий, технологии процессоров, сравнение производительности.

    реферат [214,9 K], добавлен 05.05.2014

  • Кодовые названия процессоров Core 2: Conroe, Merom, Kentsfield и Penryn. Архитектура Core Micro Architecture. Краткое сравнение микроархитектур Intel Core и AMD K8. Аналитический обзор процессоров на базе ядра Conroe: тактовая частота и ценовой диапазон.

    реферат [1,4 M], добавлен 15.11.2014

  • История развития, устройство и назначение центральных процессоров Intel. Особенности архитектуры различных поколений ЦП. Характеристики и общая схема чипсетов материнских плат разных серий. Повышение их функциональности и уровня производительности.

    реферат [121,4 K], добавлен 08.11.2015

  • Основные модели вычислений. Оценки эффективности параллельных алгоритмов, их коммуникационная трудоемкость. Последовательный алгоритм, каскадная схема и способы ее улучшения. Модифицированная каскадная схема. Передача данных, классификация операций.

    презентация [1,3 M], добавлен 10.02.2014

  • Особенности применения компьютерных программ Pascal, Excel, MathCAD и Delphi для вычисления значения функции y(x) с заданным промежутком и шагом. Виды результатов вычислений, их сравнение и вывод. Изображение блок-схемы алгоритма решения задания.

    контрольная работа [760,0 K], добавлен 08.03.2011

  • Описание кластерных систем и характеристика библиотек параллелизма. Аналоги PVM. Организация параллельных вычислений. Описание оборудования и программного обеспечения кластера. Гипотеза Гольдбаха. Процесс компиляции собственной программы для работы с PVM.

    курсовая работа [847,2 K], добавлен 05.12.2014

  • Понятия и принцип работы процессора. Устройство центрального процессора. Типы архитектур микропроцессоров. Однокристальные микроконтроллеры. Секционные микропроцессоры. Процессоры цифровой обработки сигналов. Эволюция развития микропроцессоров Intel.

    реферат [158,8 K], добавлен 25.06.2015

  • Показатели эффективности параллельного алгоритма: ускорение, эффективность использования процессоров, стоимость вычислений. Оценка максимально достижимого параллелизма. Закон Амдала, Закон Густафсона. Анализ масштабируемости параллельного алгоритма.

    презентация [493,0 K], добавлен 11.10.2014

  • Сущность и задачи системы грид их практическое применение. Основные идеи, заложенные в концепции грид-вычислений. Уровни архитектуры грид, их характеристика. Технология облачных вычислений. Промежуточное программное обеспечение в распределенных системах.

    контрольная работа [736,9 K], добавлен 06.01.2013

  • Появление первого поколения ЭВМ, элементарная база процессоров и оперативных запоминающих устройств, скорость обработки данных. ЭВМ для планово-экономических расчетов. Архитектура машин V поколения: скорость выполнения вычислений и логических выводов.

    презентация [1,3 M], добавлен 25.11.2015

  • Классификация параллельных ВС. Системы с общей и распределенной памятью. Конвейеры операций. Производительность идеального конвейера. Суперскалярные архитектуры. VLIW-архитектура. Предсказание переходов. Матричные процессоры. Законы Амдала и Густафсона.

    курсовая работа [810,9 K], добавлен 03.10.2008

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.