🗊Презентация Технологии параллельного программирования

Нажмите для полного просмотра!
Технологии параллельного программирования, слайд №1Технологии параллельного программирования, слайд №2Технологии параллельного программирования, слайд №3Технологии параллельного программирования, слайд №4Технологии параллельного программирования, слайд №5Технологии параллельного программирования, слайд №6Технологии параллельного программирования, слайд №7Технологии параллельного программирования, слайд №8Технологии параллельного программирования, слайд №9Технологии параллельного программирования, слайд №10Технологии параллельного программирования, слайд №11Технологии параллельного программирования, слайд №12Технологии параллельного программирования, слайд №13Технологии параллельного программирования, слайд №14Технологии параллельного программирования, слайд №15Технологии параллельного программирования, слайд №16Технологии параллельного программирования, слайд №17Технологии параллельного программирования, слайд №18Технологии параллельного программирования, слайд №19Технологии параллельного программирования, слайд №20Технологии параллельного программирования, слайд №21Технологии параллельного программирования, слайд №22Технологии параллельного программирования, слайд №23Технологии параллельного программирования, слайд №24Технологии параллельного программирования, слайд №25Технологии параллельного программирования, слайд №26Технологии параллельного программирования, слайд №27Технологии параллельного программирования, слайд №28Технологии параллельного программирования, слайд №29Технологии параллельного программирования, слайд №30Технологии параллельного программирования, слайд №31Технологии параллельного программирования, слайд №32Технологии параллельного программирования, слайд №33Технологии параллельного программирования, слайд №34Технологии параллельного программирования, слайд №35Технологии параллельного программирования, слайд №36Технологии параллельного программирования, слайд №37Технологии параллельного программирования, слайд №38Технологии параллельного программирования, слайд №39Технологии параллельного программирования, слайд №40Технологии параллельного программирования, слайд №41Технологии параллельного программирования, слайд №42Технологии параллельного программирования, слайд №43Технологии параллельного программирования, слайд №44Технологии параллельного программирования, слайд №45Технологии параллельного программирования, слайд №46Технологии параллельного программирования, слайд №47Технологии параллельного программирования, слайд №48Технологии параллельного программирования, слайд №49Технологии параллельного программирования, слайд №50Технологии параллельного программирования, слайд №51Технологии параллельного программирования, слайд №52Технологии параллельного программирования, слайд №53Технологии параллельного программирования, слайд №54Технологии параллельного программирования, слайд №55Технологии параллельного программирования, слайд №56Технологии параллельного программирования, слайд №57Технологии параллельного программирования, слайд №58Технологии параллельного программирования, слайд №59Технологии параллельного программирования, слайд №60Технологии параллельного программирования, слайд №61Технологии параллельного программирования, слайд №62Технологии параллельного программирования, слайд №63Технологии параллельного программирования, слайд №64Технологии параллельного программирования, слайд №65Технологии параллельного программирования, слайд №66Технологии параллельного программирования, слайд №67Технологии параллельного программирования, слайд №68Технологии параллельного программирования, слайд №69Технологии параллельного программирования, слайд №70Технологии параллельного программирования, слайд №71Технологии параллельного программирования, слайд №72Технологии параллельного программирования, слайд №73Технологии параллельного программирования, слайд №74Технологии параллельного программирования, слайд №75Технологии параллельного программирования, слайд №76Технологии параллельного программирования, слайд №77Технологии параллельного программирования, слайд №78Технологии параллельного программирования, слайд №79

Содержание

Вы можете ознакомиться и скачать презентацию на тему Технологии параллельного программирования. Доклад-сообщение содержит 79 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





 
Описание слайда:
 

Слайд 2





ТЕХНОЛОГИИ ПАРАЛЛЕЛЬНОГО ПРОГРАММИРОВАНИЯ
OpenMP
TBB
MPI
CUDA
OpenCL
OpenACC
Chapel
Описание слайда:
ТЕХНОЛОГИИ ПАРАЛЛЕЛЬНОГО ПРОГРАММИРОВАНИЯ OpenMP TBB MPI CUDA OpenCL OpenACC Chapel

Слайд 3





https://en.wikipedia.org/wiki/OpenMP
Описание слайда:
https://en.wikipedia.org/wiki/OpenMP

Слайд 4


Технологии параллельного программирования, слайд №4
Описание слайда:

Слайд 5





OpenMP uses a portable, scalable model with  a simple interface for developing parallel applications for platforms ranging from the standard desktop computer to the supercomputer.
OpenMP uses a portable, scalable model with  a simple interface for developing parallel applications for platforms ranging from the standard desktop computer to the supercomputer.
Описание слайда:
OpenMP uses a portable, scalable model with a simple interface for developing parallel applications for platforms ranging from the standard desktop computer to the supercomputer. OpenMP uses a portable, scalable model with a simple interface for developing parallel applications for platforms ranging from the standard desktop computer to the supercomputer.

Слайд 6





По умолчанию в компиляторах поддержка OpenMP выключена. Для её включения следует использовать дополнительную опцию
gcc, g++, gfortran: опция -fopenmp 
По умолчанию в компиляторах поддержка OpenMP выключена. Для её включения следует использовать дополнительную опцию
gcc, g++, gfortran: опция -fopenmp 
icc, icpc, ifort: опция -openmp под linux, /Qopenmp под windows 
xlc, xlc++, xlf: опция -qsmp=omp 
MSVC: опция /openmp 
Borland: поддержка OpenMP отсутствует
Описание слайда:
По умолчанию в компиляторах поддержка OpenMP выключена. Для её включения следует использовать дополнительную опцию gcc, g++, gfortran: опция -fopenmp По умолчанию в компиляторах поддержка OpenMP выключена. Для её включения следует использовать дополнительную опцию gcc, g++, gfortran: опция -fopenmp icc, icpc, ifort: опция -openmp под linux, /Qopenmp под windows xlc, xlc++, xlf: опция -qsmp=omp MSVC: опция /openmp Borland: поддержка OpenMP отсутствует

Слайд 7


Технологии параллельного программирования, слайд №7
Описание слайда:

Слайд 8


Технологии параллельного программирования, слайд №8
Описание слайда:

Слайд 9





ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ OPEN MP НА С++ СМОТРИ ТУТ
ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ OPEN MP НА С++ СМОТРИ ТУТ
Описание слайда:
ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ OPEN MP НА С++ СМОТРИ ТУТ ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ OPEN MP НА С++ СМОТРИ ТУТ

Слайд 10





Message Passing Interface (MPI, интерфейс передачи сообщений) — программный интерфейс (API) для передачи информации, который позволяет обмениваться сообщениями между процессами, выполняющими одну задачу. Разработан Уильямом Гроуппом, Эвином Ласком и другими.
Message Passing Interface (MPI, интерфейс передачи сообщений) — программный интерфейс (API) для передачи информации, который позволяет обмениваться сообщениями между процессами, выполняющими одну задачу. Разработан Уильямом Гроуппом, Эвином Ласком и другими.
MPI является наиболее распространённым стандартом интерфейса обмена данными в параллельном программировании, существуют его реализации для большого числа компьютерных платформ. Используется при разработке программ для кластеров и суперкомпьютеров . Основным средством коммуникации между процессами в MPI является передача сообщений друг другу.
Существуют реализации MPI для языков  Фортран,   Java,   Си и Си++.
Описание слайда:
Message Passing Interface (MPI, интерфейс передачи сообщений) — программный интерфейс (API) для передачи информации, который позволяет обмениваться сообщениями между процессами, выполняющими одну задачу. Разработан Уильямом Гроуппом, Эвином Ласком и другими. Message Passing Interface (MPI, интерфейс передачи сообщений) — программный интерфейс (API) для передачи информации, который позволяет обмениваться сообщениями между процессами, выполняющими одну задачу. Разработан Уильямом Гроуппом, Эвином Ласком и другими. MPI является наиболее распространённым стандартом интерфейса обмена данными в параллельном программировании, существуют его реализации для большого числа компьютерных платформ. Используется при разработке программ для кластеров и суперкомпьютеров . Основным средством коммуникации между процессами в MPI является передача сообщений друг другу. Существуют реализации MPI для языков  Фортран,  Java,  Си и Си++.

Слайд 11


Технологии параллельного программирования, слайд №11
Описание слайда:

Слайд 12





В первую очередь MPI ориентирован на системы с распределенной памятью, то есть когда затраты на передачу данных велики, в то время как OpenMP ориентирован на системы с общей памятью (многоядерные с общим кешем). Обе технологии могут использоваться совместно, чтобы оптимально использовать в кластере многоядерные системы.
В первую очередь MPI ориентирован на системы с распределенной памятью, то есть когда затраты на передачу данных велики, в то время как OpenMP ориентирован на системы с общей памятью (многоядерные с общим кешем). Обе технологии могут использоваться совместно, чтобы оптимально использовать в кластере многоядерные системы.
Описание слайда:
В первую очередь MPI ориентирован на системы с распределенной памятью, то есть когда затраты на передачу данных велики, в то время как OpenMP ориентирован на системы с общей памятью (многоядерные с общим кешем). Обе технологии могут использоваться совместно, чтобы оптимально использовать в кластере многоядерные системы. В первую очередь MPI ориентирован на системы с распределенной памятью, то есть когда затраты на передачу данных велики, в то время как OpenMP ориентирован на системы с общей памятью (многоядерные с общим кешем). Обе технологии могут использоваться совместно, чтобы оптимально использовать в кластере многоядерные системы.

Слайд 13





Intel Threading Building Blocks (также известная как TBB) — кроссплатформенная библиотека шаблонов С++, разработанная компанией Intel для параллельного программирования. 
Intel Threading Building Blocks (также известная как TBB) — кроссплатформенная библиотека шаблонов С++, разработанная компанией Intel для параллельного программирования. 
Версия 1.0 была выпущена фирмой Интел 29 августа 2006, через год после выпуска своего первого двуядерного процессора Pentium D.
Поддерживаемые операционные системы
Коммерческая версия TBB 4.0 поддерживает Microsoft Windows (XP или выше), 
Mac OS X(версия 10.5.8 или выше) и 
Linux, используя различные компиляторы (Visual C++ (версия 8.0 или выше, только на Windows),  Intel C++ compiler (версия 11.1 или выше) или GNU Compiler Collection (gcc, версия 3.4 и выше)). Кроме того, сообщество открытой версии TBB портировало её на Sun Solaris, PowerPC, Xbox 360, QNX Neutrino, и FreeBSD.
Описание слайда:
Intel Threading Building Blocks (также известная как TBB) — кроссплатформенная библиотека шаблонов С++, разработанная компанией Intel для параллельного программирования.  Intel Threading Building Blocks (также известная как TBB) — кроссплатформенная библиотека шаблонов С++, разработанная компанией Intel для параллельного программирования.  Версия 1.0 была выпущена фирмой Интел 29 августа 2006, через год после выпуска своего первого двуядерного процессора Pentium D. Поддерживаемые операционные системы Коммерческая версия TBB 4.0 поддерживает Microsoft Windows (XP или выше),  Mac OS X(версия 10.5.8 или выше) и  Linux, используя различные компиляторы (Visual C++ (версия 8.0 или выше, только на Windows),  Intel C++ compiler (версия 11.1 или выше) или GNU Compiler Collection (gcc, версия 3.4 и выше)). Кроме того, сообщество открытой версии TBB портировало её на Sun Solaris, PowerPC, Xbox 360, QNX Neutrino, и FreeBSD.

Слайд 14


Технологии параллельного программирования, слайд №14
Описание слайда:

Слайд 15





The open standard for parallel programming of heterogeneous systems
The open standard for parallel programming of heterogeneous systems
OpenCL ™ (Open Computing Language) - это открытый, стандарт для кросс-платформенного параллельного программирования различных процессоров, имеющихся на персональных компьютерах, серверах, мобильных устройствах и встроенных платформах. OpenCL значительно улучшает скорость и отзывчивость широкого спектра приложений во многих рыночных категориях, включая игровые и развлекательные звания, научное и медицинское программное обеспечение, профессиональные креативные инструменты, обработку зрения и обучение и вывод нейронной сети.
Описание слайда:
The open standard for parallel programming of heterogeneous systems The open standard for parallel programming of heterogeneous systems OpenCL ™ (Open Computing Language) - это открытый, стандарт для кросс-платформенного параллельного программирования различных процессоров, имеющихся на персональных компьютерах, серверах, мобильных устройствах и встроенных платформах. OpenCL значительно улучшает скорость и отзывчивость широкого спектра приложений во многих рыночных категориях, включая игровые и развлекательные звания, научное и медицинское программное обеспечение, профессиональные креативные инструменты, обработку зрения и обучение и вывод нейронной сети.

Слайд 16





https://habrahabr.ru/post/261323/
Описание слайда:
https://habrahabr.ru/post/261323/

Слайд 17





CUDA vs OpenCL
CUDA 
это архитектура параллельных вычислений от NVIDIA, позволяющая существенно увеличить вычислительную производительность благодаря использованию GPU (графических процессоров).
Поддержка архитектур 
x86, x86-64, Itanium, SpursEngine (Cell), NVidia GPU, AMD GPU, VIA (S3 Graphics) GPU.
 Для каждого из этих типов процессов существует свой SDK (ну кроме разве что VIA), свой язык программирования и программная модель.
Описание слайда:
CUDA vs OpenCL CUDA это архитектура параллельных вычислений от NVIDIA, позволяющая существенно увеличить вычислительную производительность благодаря использованию GPU (графических процессоров). Поддержка архитектур x86, x86-64, Itanium, SpursEngine (Cell), NVidia GPU, AMD GPU, VIA (S3 Graphics) GPU. Для каждого из этих типов процессов существует свой SDK (ну кроме разве что VIA), свой язык программирования и программная модель.

Слайд 18





CUDA vs OpenCL
То есть если Вы захотите чтобы ваш движок рендеринга или программа расчета нагрузок на крыло боинга 787 работала на простой рабочей станции, суперкомпьютере BlueGene, или компьютере оборудованном двумя ускорителями NVidia Tesla – Вам будет необходимо переписывать достаточно большую часть программы, так как каждая из платформ в силу своей архитектуры имеет набор жестких ограничений.
Описание слайда:
CUDA vs OpenCL То есть если Вы захотите чтобы ваш движок рендеринга или программа расчета нагрузок на крыло боинга 787 работала на простой рабочей станции, суперкомпьютере BlueGene, или компьютере оборудованном двумя ускорителями NVidia Tesla – Вам будет необходимо переписывать достаточно большую часть программы, так как каждая из платформ в силу своей архитектуры имеет набор жестких ограничений.

Слайд 19





CUDA vs OpenCL
было решено создать некий единый стандарт для программ, исполняющихся в гетерогенной среде. Это означает, что программа, вообще говоря, должна быть способна исполняться на компьютере, в котором установлены одновременно GPU NVidia и AMD, Toshiba SpursEngine итд.
Описание слайда:
CUDA vs OpenCL было решено создать некий единый стандарт для программ, исполняющихся в гетерогенной среде. Это означает, что программа, вообще говоря, должна быть способна исполняться на компьютере, в котором установлены одновременно GPU NVidia и AMD, Toshiba SpursEngine итд.

Слайд 20





CUDA vs OpenCL
Решение проблемы

Для разработки открытого стандарта решили привлечь людей, у которых уже есть опыт в разработке подобного стандарта: Khronos Group, на чьей совести уже OpenGL и OpenML и еще много всего. OpenCL является торговой маркой Apple Inc.
В разработке (и финансировании, конечно же), кроме Apple, участвовали такие компании  IT как AMD, IBM, Activision Blizzard, Intel, NVidia и тд. 
Описание слайда:
CUDA vs OpenCL Решение проблемы Для разработки открытого стандарта решили привлечь людей, у которых уже есть опыт в разработке подобного стандарта: Khronos Group, на чьей совести уже OpenGL и OpenML и еще много всего. OpenCL является торговой маркой Apple Inc. В разработке (и финансировании, конечно же), кроме Apple, участвовали такие компании IT как AMD, IBM, Activision Blizzard, Intel, NVidia и тд. 

Слайд 21


Технологии параллельного программирования, слайд №21
Описание слайда:

Слайд 22





Попробуем решить одну простую задачу с помощью актуальных технологий параллельного программирования (OpenMP, TBB, MPI, CUDA, OpenCL, OpenACC, Chapel).
Попробуем решить одну простую задачу с помощью актуальных технологий параллельного программирования (OpenMP, TBB, MPI, CUDA, OpenCL, OpenACC, Chapel).
Описание слайда:
Попробуем решить одну простую задачу с помощью актуальных технологий параллельного программирования (OpenMP, TBB, MPI, CUDA, OpenCL, OpenACC, Chapel). Попробуем решить одну простую задачу с помощью актуальных технологий параллельного программирования (OpenMP, TBB, MPI, CUDA, OpenCL, OpenACC, Chapel).

Слайд 23





 Вычислим число Пи путем численного интегрирования, будем использовать метод прямоугольников
Описание слайда:
 Вычислим число Пи путем численного интегрирования, будем использовать метод прямоугольников

Слайд 24





Объявим количество шагов, на которые разобьем интеграл
a – левый предел интеграла
b – правый предел интеграла
n – количество отрезков на которые разбиваем ось ОХ
Описание слайда:
Объявим количество шагов, на которые разобьем интеграл a – левый предел интеграла b – правый предел интеграла n – количество отрезков на которые разбиваем ось ОХ

Слайд 25


Технологии параллельного программирования, слайд №25
Описание слайда:

Слайд 26





Вычислим площадь криволинейной трапеции, посчитав значение функции в каждом прямоугольнике и домножив на основание
 //определение значения функции в середине шага
//Умножение значения функции в середине шага на основание 
        for (int i=0;i<n;i++){
            x=(i+0.5)*step;
            y=(4/(1+x*x));//вычислили значение функции
            pi=pi+y*step; //умножили значение функции на основание прямоугольника
        }
Описание слайда:
Вычислим площадь криволинейной трапеции, посчитав значение функции в каждом прямоугольнике и домножив на основание //определение значения функции в середине шага //Умножение значения функции в середине шага на основание for (int i=0;i<n;i++){ x=(i+0.5)*step; y=(4/(1+x*x));//вычислили значение функции pi=pi+y*step; //умножили значение функции на основание прямоугольника }

Слайд 27





Попробуем решить задачу сначала последовательным алгоритмом, а затем с использованием технологий параллельного программирования. И сравним время выполнения программ
Попробуем решить задачу сначала последовательным алгоритмом, а затем с использованием технологий параллельного программирования. И сравним время выполнения программ
Описание слайда:
Попробуем решить задачу сначала последовательным алгоритмом, а затем с использованием технологий параллельного программирования. И сравним время выполнения программ Попробуем решить задачу сначала последовательным алгоритмом, а затем с использованием технологий параллельного программирования. И сравним время выполнения программ

Слайд 28





Последовательное программирование
package parallelprog;
public class ParallelProg {
    static double x=0;
    static double a=0;//левый предел
    static double b=1;//правый предел
    static double y=0;//значение функции в точке Х
    static double pi=0;//значение интеграла
    static double n=1000000;//количество шагов
    static double step=0; //ширина шага
    static long   start = 0;  //время начала выполнения процесса  
    static long   finish = 0; //время окончания 
    static double   time = 0; //разница времени начала и конца
Описание слайда:
Последовательное программирование package parallelprog; public class ParallelProg { static double x=0; static double a=0;//левый предел static double b=1;//правый предел static double y=0;//значение функции в точке Х static double pi=0;//значение интеграла static double n=1000000;//количество шагов static double step=0; //ширина шага static long start = 0; //время начала выполнения процесса static long finish = 0; //время окончания static double time = 0; //разница времени начала и конца

Слайд 29





 public static void main(String[] args) {
 public static void main(String[] args) {
start = System.nanoTime();//Отметим время начала
        step=Math.abs(a-b)/n;
        System.out.println("Начинаем вычислять интеграл");
        //определение значения функции в середине шага
        for (int i=0;i<n;i++){
            x=(i+0.5)*step;
            y=(4/(1+x*x));//вычислили значение функции
            pi=pi+y*step; //умножили значение функции на основание прямоугольника
        }
        //Закончив вычислять интеграл, проверим прошедшее время
        finish = System.nanoTime();
        time=finish-start;
        //Переводим в секунды 
        time= (double)time / 1000000000.0;
        System.out.println("Закончили вычислять интеграл");
        System.out.println("pi="+pi);
        System.out.println("Время выполнения: "+time+ "сек");
    }
}
Описание слайда:
public static void main(String[] args) { public static void main(String[] args) { start = System.nanoTime();//Отметим время начала step=Math.abs(a-b)/n; System.out.println("Начинаем вычислять интеграл"); //определение значения функции в середине шага for (int i=0;i<n;i++){ x=(i+0.5)*step; y=(4/(1+x*x));//вычислили значение функции pi=pi+y*step; //умножили значение функции на основание прямоугольника } //Закончив вычислять интеграл, проверим прошедшее время finish = System.nanoTime(); time=finish-start; //Переводим в секунды time= (double)time / 1000000000.0; System.out.println("Закончили вычислять интеграл"); System.out.println("pi="+pi); System.out.println("Время выполнения: "+time+ "сек"); } }

Слайд 30





Результат последовательного программирования
Описание слайда:
Результат последовательного программирования

Слайд 31





ТЕПЕРЬ ПОПРОБУЕМ РЕШИТЬ ЗАДАЧУ С ПОМОЩЬЮ ПАРАЛЛЛЕЛЬНОГО ПРОГРАММИРОВАНИЯ
ТЕПЕРЬ ПОПРОБУЕМ РЕШИТЬ ЗАДАЧУ С ПОМОЩЬЮ ПАРАЛЛЛЕЛЬНОГО ПРОГРАММИРОВАНИЯ
Описание слайда:
ТЕПЕРЬ ПОПРОБУЕМ РЕШИТЬ ЗАДАЧУ С ПОМОЩЬЮ ПАРАЛЛЛЕЛЬНОГО ПРОГРАММИРОВАНИЯ ТЕПЕРЬ ПОПРОБУЕМ РЕШИТЬ ЗАДАЧУ С ПОМОЩЬЮ ПАРАЛЛЛЕЛЬНОГО ПРОГРАММИРОВАНИЯ

Слайд 32





Самая доступная простым пользователям параллельная архитектура — это обычный многоядерный процессор или несколько процессоров на одной материнской плате. 
Самая доступная простым пользователям параллельная архитектура — это обычный многоядерный процессор или несколько процессоров на одной материнской плате.
Описание слайда:
Самая доступная простым пользователям параллельная архитектура — это обычный многоядерный процессор или несколько процессоров на одной материнской плате. Самая доступная простым пользователям параллельная архитектура — это обычный многоядерный процессор или несколько процессоров на одной материнской плате.

Слайд 33





Одно ядро также способно исполнять параллельно несколько потоков — такой режим называется псевдо-параллельным или конкурентным. Ядро переключается между процессами, выделяя каждому квант времени. В принципе такой режим выполнения уже может привести к росту производительности за счет сокрытия латентности памяти.
Одно ядро также способно исполнять параллельно несколько потоков — такой режим называется псевдо-параллельным или конкурентным. Ядро переключается между процессами, выделяя каждому квант времени. В принципе такой режим выполнения уже может привести к росту производительности за счет сокрытия латентности памяти.
Описание слайда:
Одно ядро также способно исполнять параллельно несколько потоков — такой режим называется псевдо-параллельным или конкурентным. Ядро переключается между процессами, выделяя каждому квант времени. В принципе такой режим выполнения уже может привести к росту производительности за счет сокрытия латентности памяти. Одно ядро также способно исполнять параллельно несколько потоков — такой режим называется псевдо-параллельным или конкурентным. Ядро переключается между процессами, выделяя каждому квант времени. В принципе такой режим выполнения уже может привести к росту производительности за счет сокрытия латентности памяти.

Слайд 34





Латентность (задержка) - это время, которое затрачивается на чтение из памяти одного слова данных (восьми байт) . Чем ниже латентность оперативной памяти, тем меньше центральный процессор будет находиться в состоянии простоя.
Латентность (задержка) - это время, которое затрачивается на чтение из памяти одного слова данных (восьми байт) . Чем ниже латентность оперативной памяти, тем меньше центральный процессор будет находиться в состоянии простоя.
Описание слайда:
Латентность (задержка) - это время, которое затрачивается на чтение из памяти одного слова данных (восьми байт) . Чем ниже латентность оперативной памяти, тем меньше центральный процессор будет находиться в состоянии простоя. Латентность (задержка) - это время, которое затрачивается на чтение из памяти одного слова данных (восьми байт) . Чем ниже латентность оперативной памяти, тем меньше центральный процессор будет находиться в состоянии простоя.

Слайд 35





Самый «исторический» способ использовать сразу несколько ядер на процессоре — это механизм потоков операционной системы, который существовал задолго до истинно-параллельных процессоров для конкретности хотя бы ради более удобного написания программ. 
Самый «исторический» способ использовать сразу несколько ядер на процессоре — это механизм потоков операционной системы, который существовал задолго до истинно-параллельных процессоров для конкретности хотя бы ради более удобного написания программ.
Описание слайда:
Самый «исторический» способ использовать сразу несколько ядер на процессоре — это механизм потоков операционной системы, который существовал задолго до истинно-параллельных процессоров для конкретности хотя бы ради более удобного написания программ. Самый «исторический» способ использовать сразу несколько ядер на процессоре — это механизм потоков операционной системы, который существовал задолго до истинно-параллельных процессоров для конкретности хотя бы ради более удобного написания программ.

Слайд 36





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

Слайд 37





ВЕРНЕМСЯ К НАШЕЙ ЗАДАЧЕ: ВЫЧИСЛЕНИЕ ИНТЕГРАЛА
ВЕРНЕМСЯ К НАШЕЙ ЗАДАЧЕ: ВЫЧИСЛЕНИЕ ИНТЕГРАЛА
Описание слайда:
ВЕРНЕМСЯ К НАШЕЙ ЗАДАЧЕ: ВЫЧИСЛЕНИЕ ИНТЕГРАЛА ВЕРНЕМСЯ К НАШЕЙ ЗАДАЧЕ: ВЫЧИСЛЕНИЕ ИНТЕГРАЛА

Слайд 38





РАЗОБЬЕМ ИНТЕГРАЛ НА ЛЕВУЮ И ПРАВУЮ ЧАСТИ. ПЕРВЫЙ ПОТОК БУДЕТ ВЫЧИСЛЯТЬ ИНТЕГРАЛ СЛЕВА НАПРАВО, НАЧИНАЯ ОТ ТОЧКИ А, ДРУГОЙ ПОТОК БУДЕТ ВЫЧИСЛЯТЬ ИНТЕГРАЛ СПРАВА НАЛЕВО, НАЧИНАЯ ОТ ПРАВОЙ ГРАНИЦЫ.
РАЗОБЬЕМ ИНТЕГРАЛ НА ЛЕВУЮ И ПРАВУЮ ЧАСТИ. ПЕРВЫЙ ПОТОК БУДЕТ ВЫЧИСЛЯТЬ ИНТЕГРАЛ СЛЕВА НАПРАВО, НАЧИНАЯ ОТ ТОЧКИ А, ДРУГОЙ ПОТОК БУДЕТ ВЫЧИСЛЯТЬ ИНТЕГРАЛ СПРАВА НАЛЕВО, НАЧИНАЯ ОТ ПРАВОЙ ГРАНИЦЫ.
Описание слайда:
РАЗОБЬЕМ ИНТЕГРАЛ НА ЛЕВУЮ И ПРАВУЮ ЧАСТИ. ПЕРВЫЙ ПОТОК БУДЕТ ВЫЧИСЛЯТЬ ИНТЕГРАЛ СЛЕВА НАПРАВО, НАЧИНАЯ ОТ ТОЧКИ А, ДРУГОЙ ПОТОК БУДЕТ ВЫЧИСЛЯТЬ ИНТЕГРАЛ СПРАВА НАЛЕВО, НАЧИНАЯ ОТ ПРАВОЙ ГРАНИЦЫ. РАЗОБЬЕМ ИНТЕГРАЛ НА ЛЕВУЮ И ПРАВУЮ ЧАСТИ. ПЕРВЫЙ ПОТОК БУДЕТ ВЫЧИСЛЯТЬ ИНТЕГРАЛ СЛЕВА НАПРАВО, НАЧИНАЯ ОТ ТОЧКИ А, ДРУГОЙ ПОТОК БУДЕТ ВЫЧИСЛЯТЬ ИНТЕГРАЛ СПРАВА НАЛЕВО, НАЧИНАЯ ОТ ПРАВОЙ ГРАНИЦЫ.

Слайд 39





ВОПРОС: Почему будет неэффективным решением разбить интервал АВ на равные доли и отдать параллельным потокам на исполнение, чтобы один поток вычислял интеграл от А до |A-B|/2, а второй от В до |A-B|/2   ????
ВОПРОС: Почему будет неэффективным решением разбить интервал АВ на равные доли и отдать параллельным потокам на исполнение, чтобы один поток вычислял интеграл от А до |A-B|/2, а второй от В до |A-B|/2   ????
Описание слайда:
ВОПРОС: Почему будет неэффективным решением разбить интервал АВ на равные доли и отдать параллельным потокам на исполнение, чтобы один поток вычислял интеграл от А до |A-B|/2, а второй от В до |A-B|/2 ???? ВОПРОС: Почему будет неэффективным решением разбить интервал АВ на равные доли и отдать параллельным потокам на исполнение, чтобы один поток вычислял интеграл от А до |A-B|/2, а второй от В до |A-B|/2 ????

Слайд 40





ОТВЕТ: Если один из потоков посчитает свою часть раньше — то соответствующее ядро будет простаивать, т.е. мы потеряем производительность.
ОТВЕТ: Если один из потоков посчитает свою часть раньше — то соответствующее ядро будет простаивать, т.е. мы потеряем производительность.
Описание слайда:
ОТВЕТ: Если один из потоков посчитает свою часть раньше — то соответствующее ядро будет простаивать, т.е. мы потеряем производительность. ОТВЕТ: Если один из потоков посчитает свою часть раньше — то соответствующее ядро будет простаивать, т.е. мы потеряем производительность.

Слайд 41





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

Слайд 42





Что касаемо программы
Что касаемо программы
Описание слайда:
Что касаемо программы Что касаемо программы

Слайд 43





Процесс — это совокупность кода и данных, разделяющих общее виртуальное адресное пространство (VAS). Чаще всего одна программа состоит из одного процесса
Процесс — это совокупность кода и данных, разделяющих общее виртуальное адресное пространство (VAS). Чаще всего одна программа состоит из одного процесса
Процессы изолированы друг от друга, поэтому прямой доступ к памяти чужого процесса невозможен.
Для каждого процесса ОС создает VAS, к которому процесс имеет прямой доступ. Это пространство принадлежит процессу, содержит только его данные и находится в полном его распоряжении. ОС же отвечает за то, как виртуальное пространство процесса проецируется на физическую память.
Описание слайда:
Процесс — это совокупность кода и данных, разделяющих общее виртуальное адресное пространство (VAS). Чаще всего одна программа состоит из одного процесса Процесс — это совокупность кода и данных, разделяющих общее виртуальное адресное пространство (VAS). Чаще всего одна программа состоит из одного процесса Процессы изолированы друг от друга, поэтому прямой доступ к памяти чужого процесса невозможен. Для каждого процесса ОС создает VAS, к которому процесс имеет прямой доступ. Это пространство принадлежит процессу, содержит только его данные и находится в полном его распоряжении. ОС же отвечает за то, как виртуальное пространство процесса проецируется на физическую память.

Слайд 44


Технологии параллельного программирования, слайд №44
Описание слайда:

Слайд 45





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

Слайд 46





Один поток – это одна единица исполнения кода. Каждый поток последовательно выполняет инструкции процесса, которому он принадлежит, параллельно с другими потоками этого процесса.
Один поток – это одна единица исполнения кода. Каждый поток последовательно выполняет инструкции процесса, которому он принадлежит, параллельно с другими потоками этого процесса.
Следует отдельно обговорить фразу «параллельно с другими потоками». Известно, что на одно ядро процессора, в каждый момент времени, приходится один поток. То есть одноядерный процессор может обрабатывать команды только последовательно, по одной за раз (в упрощенном случае). Однако запуск нескольких параллельных потоков возможен и в системах с одноядерными процессорами. В этом случае система будет периодически переключаться между потоками, поочередно давая выполняться то одному, то другому потоку. Такая схема называется псевдо-параллелизмом. 
Описание слайда:
Один поток – это одна единица исполнения кода. Каждый поток последовательно выполняет инструкции процесса, которому он принадлежит, параллельно с другими потоками этого процесса. Один поток – это одна единица исполнения кода. Каждый поток последовательно выполняет инструкции процесса, которому он принадлежит, параллельно с другими потоками этого процесса. Следует отдельно обговорить фразу «параллельно с другими потоками». Известно, что на одно ядро процессора, в каждый момент времени, приходится один поток. То есть одноядерный процессор может обрабатывать команды только последовательно, по одной за раз (в упрощенном случае). Однако запуск нескольких параллельных потоков возможен и в системах с одноядерными процессорами. В этом случае система будет периодически переключаться между потоками, поочередно давая выполняться то одному, то другому потоку. Такая схема называется псевдо-параллелизмом. 

Слайд 47





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

Слайд 48





УКРЕПИМ ЗНАНИЯ:
Процессы изолированы друг от друга, поэтому прямой доступ к памяти чужого процесса невозможен.
параллельные потоки, исполняемые на разных ядрах или процессорах видят одно и то же адресное пространство, т.е нет нужды явно передавать данные между потоками. 
Описание слайда:
УКРЕПИМ ЗНАНИЯ: Процессы изолированы друг от друга, поэтому прямой доступ к памяти чужого процесса невозможен. параллельные потоки, исполняемые на разных ядрах или процессорах видят одно и то же адресное пространство, т.е нет нужды явно передавать данные между потоками. 

Слайд 49





JAVA
Каждый процесс имеет хотя бы один выполняющийся поток. Тот поток, с которого начинается выполнение программы, называется главным. В языке Java, после создания процесса, выполнение главного потока начинается с метода main(). Затем, по мере необходимости, запускаются другие побочные потоки.

В языке Java поток представляется в виде объекта-потомка класса Thread.
Описание слайда:
JAVA Каждый процесс имеет хотя бы один выполняющийся поток. Тот поток, с которого начинается выполнение программы, называется главным. В языке Java, после создания процесса, выполнение главного потока начинается с метода main(). Затем, по мере необходимости, запускаются другие побочные потоки. В языке Java поток представляется в виде объекта-потомка класса Thread.

Слайд 50





КАК СОЗДАТЬ ПОТОКИ В JAVA
Описание слайда:
КАК СОЗДАТЬ ПОТОКИ В JAVA

Слайд 51





СПОСОБ №1 СОЗДАТЬ ПОТОК В JAVA С ПОМОЩЬЮ ИНТЕРФЕЙСА RUNNABLE
Описание слайда:
СПОСОБ №1 СОЗДАТЬ ПОТОК В JAVA С ПОМОЩЬЮ ИНТЕРФЕЙСА RUNNABLE

Слайд 52





public class MyThread implements Runnable{     
public class MyThread implements Runnable{     
    @Override
    public void run() {  /*Код который должен выполнить    поток*/ }
}
Описание слайда:
public class MyThread implements Runnable{ public class MyThread implements Runnable{ @Override public void run() { /*Код который должен выполнить поток*/ } }

Слайд 53





СПОСОБ №2: НАСЛЕДОВАНИЕ ОТ КЛАССА THREAD
Описание слайда:
СПОСОБ №2: НАСЛЕДОВАНИЕ ОТ КЛАССА THREAD

Слайд 54





public class MyThread extends Thread{     
public class MyThread extends Thread{     
    @Override
    public void run() {  /*Код который должен выполнить поток*/ }
}
Описание слайда:
public class MyThread extends Thread{ public class MyThread extends Thread{ @Override public void run() { /*Код который должен выполнить поток*/ } }

Слайд 55





В ЧЕМ РАЗНИЦА МЕЖДУ РЕАЛИЗАЦИЕЙ ИНТЕРФЕЙСА RUNNABLE И НАСЛЕДОВАНИЕМ ОТ КЛАССА THREAD?

http://qaru.site/questions/57/implements-runnable-vs-extends-thread
Описание слайда:
В ЧЕМ РАЗНИЦА МЕЖДУ РЕАЛИЗАЦИЕЙ ИНТЕРФЕЙСА RUNNABLE И НАСЛЕДОВАНИЕМ ОТ КЛАССА THREAD? http://qaru.site/questions/57/implements-runnable-vs-extends-thread

Слайд 56





ДАВАЙТЕ ИЗУЧИМ КОД:
Описание слайда:
ДАВАЙТЕ ИЗУЧИМ КОД:

Слайд 57


Технологии параллельного программирования, слайд №57
Описание слайда:

Слайд 58


Технологии параллельного программирования, слайд №58
Описание слайда:

Слайд 59





В интерфейсе Runnable создается только один экземпляр класса, и он разделяется различными потоками. Таким образом, значение счетчика увеличивается для каждого доступа к потоку.
В интерфейсе Runnable создается только один экземпляр класса, и он разделяется различными потоками. Таким образом, значение счетчика увеличивается для каждого доступа к потоку.
В то время как подход класса Thread, вы должны создать отдельный экземпляр для каждого потока. Следовательно, для каждого экземпляра класса выделяется различная память и каждый имеет отдельный счетчик, значение остается таким же, что означает, что приращение не произойдет, потому что ни одна из ссылок на объекты не является такой же.
Описание слайда:
В интерфейсе Runnable создается только один экземпляр класса, и он разделяется различными потоками. Таким образом, значение счетчика увеличивается для каждого доступа к потоку. В интерфейсе Runnable создается только один экземпляр класса, и он разделяется различными потоками. Таким образом, значение счетчика увеличивается для каждого доступа к потоку. В то время как подход класса Thread, вы должны создать отдельный экземпляр для каждого потока. Следовательно, для каждого экземпляра класса выделяется различная память и каждый имеет отдельный счетчик, значение остается таким же, что означает, что приращение не произойдет, потому что ни одна из ссылок на объекты не является такой же.

Слайд 60





Когда использовать Runnable? 
Используйте интерфейс Runnable, если вы хотите получить доступ к одному и тому же ресурсу из группы потоков. Избегайте использования класса Thread здесь, поскольку создание нескольких объектов потребляет больше памяти
Когда использовать Runnable? 
Используйте интерфейс Runnable, если вы хотите получить доступ к одному и тому же ресурсу из группы потоков. Избегайте использования класса Thread здесь, поскольку создание нескольких объектов потребляет больше памяти
Если вы хотите реализовать или расширить какой-либо другой класс, тогда Runnable интерфейс наиболее предпочтителен другим, если вы не хотите, чтобы какой-либо другой класс расширялся или реализовывался, тогда класс Thread предпочтительнее
Описание слайда:
Когда использовать Runnable?  Используйте интерфейс Runnable, если вы хотите получить доступ к одному и тому же ресурсу из группы потоков. Избегайте использования класса Thread здесь, поскольку создание нескольких объектов потребляет больше памяти Когда использовать Runnable?  Используйте интерфейс Runnable, если вы хотите получить доступ к одному и тому же ресурсу из группы потоков. Избегайте использования класса Thread здесь, поскольку создание нескольких объектов потребляет больше памяти Если вы хотите реализовать или расширить какой-либо другой класс, тогда Runnable интерфейс наиболее предпочтителен другим, если вы не хотите, чтобы какой-либо другой класс расширялся или реализовывался, тогда класс Thread предпочтительнее

Слайд 61





Когда вы реализуете интерфейс Runnable, вы можете сохранить пространство для своего класса для расширения любого другого класса.
Когда вы реализуете интерфейс Runnable, вы можете сохранить пространство для своего класса для расширения любого другого класса.
Java не поддерживает множественное наследование, а это значит, что вы можете расширять только один класс на Java, поэтому, как только вы расширили класс Thread, вы потеряли свой шанс и не можете расширять или наследовать другой класс на Java.
Описание слайда:
Когда вы реализуете интерфейс Runnable, вы можете сохранить пространство для своего класса для расширения любого другого класса. Когда вы реализуете интерфейс Runnable, вы можете сохранить пространство для своего класса для расширения любого другого класса. Java не поддерживает множественное наследование, а это значит, что вы можете расширять только один класс на Java, поэтому, как только вы расширили класс Thread, вы потеряли свой шанс и не можете расширять или наследовать другой класс на Java.

Слайд 62





В задачи нашего курса не входит освоение ЯВУ, давайте все же вернемся к нашей задаче, которую мы хотели реализовать параллельно: задача вычисления интеграла
В задачи нашего курса не входит освоение ЯВУ, давайте все же вернемся к нашей задаче, которую мы хотели реализовать параллельно: задача вычисления интеграла
Описание слайда:
В задачи нашего курса не входит освоение ЯВУ, давайте все же вернемся к нашей задаче, которую мы хотели реализовать параллельно: задача вычисления интеграла В задачи нашего курса не входит освоение ЯВУ, давайте все же вернемся к нашей задаче, которую мы хотели реализовать параллельно: задача вычисления интеграла

Слайд 63





Мы создали 2 потока, которые вычисляют интеграл.
Описание слайда:
Мы создали 2 потока, которые вычисляют интеграл.

Слайд 64





Давайте посмотрим как эти два потока борются за один и тот же ресурс – ядро. Пример №1
Описание слайда:
Давайте посмотрим как эти два потока борются за один и тот же ресурс – ядро. Пример №1

Слайд 65





Давайте посмотрим как эти два потока борются за один и тот же ресурс – ядро. Пример №2
Описание слайда:
Давайте посмотрим как эти два потока борются за один и тот же ресурс – ядро. Пример №2

Слайд 66





Вот что происходит с процессором, когда оба потока запущены.
Описание слайда:
Вот что происходит с процессором, когда оба потока запущены.

Слайд 67





Вот что происходит с процессором, когда оба потока прекратили вычисления.
Описание слайда:
Вот что происходит с процессором, когда оба потока прекратили вычисления.

Слайд 68





РЕЗУЛЬТАТЫ ТЕСТИРОВАНИЯ
Описание слайда:
РЕЗУЛЬТАТЫ ТЕСТИРОВАНИЯ

Слайд 69





ВОПРОС: ПОЧЕМУ ВРЕМЯ ВЫЧИСЛЕНИЯ ИНТЕГРАЛА НЕ УЛУЧШИЛОСЬ ПРИ ПАРАЛЛЕЛЬНОМ ПОДХОДЕ НА 50% , ВЕДЬ ПО ИДЕИ ЕСЛИ ДВЕ ПОДЗАДАЧИ ВЫПОЛНЯЮТСЯ ПАРАЛЛЕЛЬНО И НЕЗАВИСИМО ДРУГ ОТ ДРУГА, ТО ЗАДАЧА ДОЛЖНА РЕШИТЬСЯ В 2 РАЗА БЫСТРЕЕ?
ВОПРОС: ПОЧЕМУ ВРЕМЯ ВЫЧИСЛЕНИЯ ИНТЕГРАЛА НЕ УЛУЧШИЛОСЬ ПРИ ПАРАЛЛЕЛЬНОМ ПОДХОДЕ НА 50% , ВЕДЬ ПО ИДЕИ ЕСЛИ ДВЕ ПОДЗАДАЧИ ВЫПОЛНЯЮТСЯ ПАРАЛЛЕЛЬНО И НЕЗАВИСИМО ДРУГ ОТ ДРУГА, ТО ЗАДАЧА ДОЛЖНА РЕШИТЬСЯ В 2 РАЗА БЫСТРЕЕ?
Описание слайда:
ВОПРОС: ПОЧЕМУ ВРЕМЯ ВЫЧИСЛЕНИЯ ИНТЕГРАЛА НЕ УЛУЧШИЛОСЬ ПРИ ПАРАЛЛЕЛЬНОМ ПОДХОДЕ НА 50% , ВЕДЬ ПО ИДЕИ ЕСЛИ ДВЕ ПОДЗАДАЧИ ВЫПОЛНЯЮТСЯ ПАРАЛЛЕЛЬНО И НЕЗАВИСИМО ДРУГ ОТ ДРУГА, ТО ЗАДАЧА ДОЛЖНА РЕШИТЬСЯ В 2 РАЗА БЫСТРЕЕ? ВОПРОС: ПОЧЕМУ ВРЕМЯ ВЫЧИСЛЕНИЯ ИНТЕГРАЛА НЕ УЛУЧШИЛОСЬ ПРИ ПАРАЛЛЕЛЬНОМ ПОДХОДЕ НА 50% , ВЕДЬ ПО ИДЕИ ЕСЛИ ДВЕ ПОДЗАДАЧИ ВЫПОЛНЯЮТСЯ ПАРАЛЛЕЛЬНО И НЕЗАВИСИМО ДРУГ ОТ ДРУГА, ТО ЗАДАЧА ДОЛЖНА РЕШИТЬСЯ В 2 РАЗА БЫСТРЕЕ?

Слайд 70





ОТВЕТ:
ОТВЕТ:
В данном примере обе задачи были однотипные, а значит им требовались одни и те же АЛУ (вычисления с плавающей запятой). Если бы задачи были разного типа, например одна на целочисленные вычисления, другая на вычисления с плавающей запятой то, тогда им бы понабились разные АЛУ, и они бы не стояли в очереди к одному аппаратному ресурсу.
Описание слайда:
ОТВЕТ: ОТВЕТ: В данном примере обе задачи были однотипные, а значит им требовались одни и те же АЛУ (вычисления с плавающей запятой). Если бы задачи были разного типа, например одна на целочисленные вычисления, другая на вычисления с плавающей запятой то, тогда им бы понабились разные АЛУ, и они бы не стояли в очереди к одному аппаратному ресурсу.

Слайд 71





ПРОВЕДЕМ НОВЫЕ ИССЛЕДОВАНИЯ!
Создадим два параллельных потока:
Первый поток будет вычислять интеграл для числа Pi (как в примере раньше)
Второй поток будет работать с графикой и ему понадобиться рисовать фигуру (треугольник) каждый раз на разном фоне (то на белом фоне, то на черном, в зависимости от переключения логической переменной)
Описание слайда:
ПРОВЕДЕМ НОВЫЕ ИССЛЕДОВАНИЯ! Создадим два параллельных потока: Первый поток будет вычислять интеграл для числа Pi (как в примере раньше) Второй поток будет работать с графикой и ему понадобиться рисовать фигуру (треугольник) каждый раз на разном фоне (то на белом фоне, то на черном, в зависимости от переключения логической переменной)

Слайд 72





КОГДА ОБА ПОТОКА РАБОТАЮТ
Описание слайда:
КОГДА ОБА ПОТОКА РАБОТАЮТ

Слайд 73





ПОТОК 1 ЗАВЕРШИЛ ВЫЧИСЛЕНИЯ
Описание слайда:
ПОТОК 1 ЗАВЕРШИЛ ВЫЧИСЛЕНИЯ

Слайд 74





ОБРАТИМСЯ К ФИЛОСОФИИ
Ответит ли нам программа на вечный вопрос: Что появилось раньше: Яйцо или Курица?
Один поток выводит на экран сообщение, что раньше появилось Яйцо, другой выводит ответ, что первее Курица.
Программа будет работать в течении 5 секунд и каждый раз предугадать, какой ответ она выдаст трудно.
Но мы попытаемся предугадать что ответит программа. Проведем 100 исследований и найдем вероятность того или иного ответа.
Описание слайда:
ОБРАТИМСЯ К ФИЛОСОФИИ Ответит ли нам программа на вечный вопрос: Что появилось раньше: Яйцо или Курица? Один поток выводит на экран сообщение, что раньше появилось Яйцо, другой выводит ответ, что первее Курица. Программа будет работать в течении 5 секунд и каждый раз предугадать, какой ответ она выдаст трудно. Но мы попытаемся предугадать что ответит программа. Проведем 100 исследований и найдем вероятность того или иного ответа.

Слайд 75





РЕЗУЛЬТАТЫ СПОРА:
Описание слайда:
РЕЗУЛЬТАТЫ СПОРА:

Слайд 76





НАГРУЗКА НА ЦП МИНИМАЛЬНА (ВЫЧИСЛЕНИЙ НЕТ)
Описание слайда:
НАГРУЗКА НА ЦП МИНИМАЛЬНА (ВЫЧИСЛЕНИЙ НЕТ)

Слайд 77





ПРОВЕДЕМ 100 АНАЛОГИЧНЫХ  ТЕСТОВ, ЧТОБЫ УЗНАТЬ ВЕРОЯТНОСТЬ ВЫДАЧИ ОТВЕТА
Описание слайда:
ПРОВЕДЕМ 100 АНАЛОГИЧНЫХ ТЕСТОВ, ЧТОБЫ УЗНАТЬ ВЕРОЯТНОСТЬ ВЫДАЧИ ОТВЕТА

Слайд 78





РЕЗУЛЬТАТЫ ТЕСТИРОАНИЯ:
Описание слайда:
РЕЗУЛЬТАТЫ ТЕСТИРОАНИЯ:

Слайд 79





The end!
The end!
Описание слайда:
The end! The end!



Похожие презентации
Mypresentation.ru
Загрузить презентацию