
cc29ec62f814953d8dfb763d44ef0538.ppt
- Количество слайдов: 51
Интернет Университет Суперкомпьютерных технологий Введение Учебный курс Параллельное программирование с Open. MP Бахтин В. А. , кандидат физ. -мат. наук, заведующий сектором, Институт прикладной математики им. М. В. Келдыша РАН
Содержание Тенденции развития современных процессоров Существующие подходы для создания параллельных программ Основные возможности Open. MP SMP и DSM - системы Литература Москва, 2016 г. Параллельное программирование с Open. MP: Введение © Бахтин В. А. 2 из 51
Тенденции развития современных процессоров В течение нескольких десятилетий развитие ЭВМ сопровождалось удвоением их быстродействия каждые 1. 5 -2 года. Это обеспечивалось и повышением тактовой частоты и совершенствованием архитектуры (параллельное и конвейерное выполнение команд). Узким местом стала оперативная память. Знаменитый закон Мура, так хорошо работающий для процессоров, совершенно не применим для памяти, где скорости доступа удваиваются в лучшем случае каждые 6 лет. Совершенствовались системы кэш-памяти, увеличивался объем, усложнялись алгоритмы ее использования. Для процессора Intel Itanium: Latency to L 1: 1 -2 cycles Latency to L 2: 5 - 7 cycles Latency to L 3: 12 - 21 cycles Latency to memory: 180 – 225 cycles Важным параметром становится - GUPS (Giga Updates Per Second) Москва, 2016 г. Параллельное программирование с Open. MP: Введение © Бахтин В. А. 3 из 51
Тенденции развития современных процессоров Поток В В П П увеличили производительность процессора в 2 раза Поток В П П В Поток или нить (поанглийски “thread”) – это легковесный процесс, имеющий с другими потоками общие ресурсы, включая общую оперативную память. Время Поток 3 В Поток 2 Поток 1 В В В - вычисления Москва, 2016 г. В П П В Поток 4 В В П В П П П Chip Multi. Threading П П - доступ к памяти Параллельное программирование с Open. MP: Введение © Бахтин В. А. Время 4 из 51
Top 500 Москва, 2016 г. Параллельное программирование с Open. MP: Введение © Бахтин В. А. 5 из 51
Современные суперкомпьютерные системы № 5 в Top 500 Суперкомпьютер K computer, SPARC 64 VIIIfx 2. 0 GHz, Tofu interconnect Пиковая производительность - 11280 TFlop/s Число ядер в системе — 705 024 Производительность на Linpack - 10510 TFlop/s (93. 17 % от пиковой) Энергопотребление комплекса - 12659. 89 к. Вт Москва, 2016 г. Параллельное программирование с Open. MP: Введение © Бахтин В. А. 6 из 51
Современные суперкомпьютерные системы № 1 в Top 500 Суперкомпьютер Sunway Taihu. Light, Sunway MPP, SW 26010 260 C 1. 45 GHz, Custom interconnect Пиковая производительность – 125435. 9 TFlop/s Число ядер в системе — 10 649 600 Производительность на Linpack – 93014. 5 TFlop/s (74. 15 % от пиковой) Энергопотребление комплекса - 15371. 0 к. Вт Важным параметром становится – Power Efficency (Megaflops/watt) Как добиться максимальной производительности на Ватт => Chip Multi. Processing, многоядерность. Москва, 2016 г. Параллельное программирование с Open. MP: Введение © Бахтин В. А. 7 из 51
Тенденции развития современных процессоров Shen. Wei SW 26010 64 -разрядный RISC-процессор с поддержкой SIMD-инструкций и внеочередным исполнением команд Москва, 2016 г. Параллельное программирование с Open. MP: Введение © Бахтин В. А. 8 из 51
Тенденции развития современных процессоров AMD Opteron серии 6300 6380 SE 16 ядер @ 2, 5 ГГц, 16 МБ L 3 Cache 6348 12 ядер @ 2, 8 ГГц, 16 МБ L 3 Cache 6328 8 ядер @ 3, 2 ГГц, 16 МБ L 3 Cache 6308 4 ядра @ 3, 5 ГГц, 16 МБ L 3 Cache технология AMD Turbo CORE встроенный контроллер памяти (4 канала памяти DDR 3) 4 канала «точка-точка» с использованием Hyper. Transort 3. 0 Москва, 2016 г. Параллельное программирование с Open. MP: Введение © Бахтин В. А. 9 из 51
Тенденции развития современных процессоров Intel Xeon Processor серии E 5 -2699 v 4 (55 M Cache, 2. 20 GHz) 22 ядра, 44 нити E 5 -2698 v 4 (50 M Cache, 2. 20 GHz) 20 ядер, 40 нитей E 5 -2697 v 4 (45 M Cache, 2. 30 GHz) 18 ядер, 36 нитей E 5 -2697 A v 4 (40 M Cache, 2. 60 GHz) 16 ядер, 32 нити E 5 -2667 v 4 (25 M Cache, 3. 20 GHz) 8 ядер, 16 нитей Intel® Turbo Boost Intel® Hyper-Threading Intel® Intelligent Power Intel® Quick. Path Москва, 2016 г. Параллельное программирование с Open. MP: Введение © Бахтин В. А. 10 из 51
Тенденции развития современных процессоров Intel Core i 7 High End Desktop Processors i 7 -6950 X Extreme Edition (25 M Cache, up to 3. 50 GHz), 10 ядер, 20 нитей i 7 -6900 K Processor (20 M Cache, up to 3. 70 GHz), 8 ядер, 16 нитей i 7 -6850 K Processor (15 M Cache, up to 3. 80 GHz), 6 ядер, 12 нитей Москва, 2016 г. Параллельное программирование с Open. MP: Введение © Бахтин В. А. 11 из 51
Тенденции развития современных процессоров IBM Power 8 2, 75 – 4, 2 ГГц 12 ядер x 8 нитей Simultaneuos Multi. Threading 64 КБ Data Cache + 32 КБ instruction Cache L 2 512 КБ L 3 96 МБ www. idh. ch/IBM_TU_2013/Power 8. pdf Москва, 2016 г. Параллельное программирование с Open. MP: Введение © Бахтин В. А. 12 из 51
Отечественный процессор «Эльбрус-8 C» Количество ядер 8 Кэш-память 2 го уровня 8 * 512 КБ Кэш-память 3 го уровня 16 МБ Рабочая частота 1. 3 ГГц Производительность Тип контроллеров памяти Кол-во контроллеров памяти Поддержка многопроцессорных систем Каналы межпроцессорного обмена (пропускная способность) Технологический процесс ~250 ГФлопс DDR 3 -1600 4 До 4 процессоров 3 (16 ГБ/с) 28 нм Площадь кристалла Рассеиваемая мощность на уровне Москва, 2016 г. 350 кв. мм 60 – 90 Вт Параллельное программирование с Open. MP: Введение © Бахтин В. А. 13 из 51
Тенденции развития современных процессоров Темпы уменьшения латентности памяти гораздо ниже темпов ускорения процессоров + прогресс в технологии изготовления кристаллов => CMT (Chip Multi. Threading) Опережающий рост потребления энергии при росте тактовой частоты + прогресс в технологии изготовления кристаллов => CMP (Chip Multi. Processing, многоядерность) И то и другое требует более глубокого распараллеливания для эффективного использования аппаратуры Москва, 2016 г. Параллельное программирование с Open. MP: Введение © Бахтин В. А. 14 из 51
Существующие подходы для создания параллельных программ Автоматическое / автоматизированное распараллеливание Библиотеки нитей • Win 32 API • POSIX Библиотеки передачи сообщений • MPI Open. MP Москва, 2016 г. Параллельное программирование с Open. MP: Введение © Бахтин В. А. 15 из 51
Вычисление числа 1 4. 0 (1+x 2) dx = F(x) = 4. 0/(1+x 2) 0 Мы можем аппроксимировать интеграл как сумму прямоугольников: 2. 0 N F(x ) x i i = 0 0. 0 Москва, 2016 г. X 1. 0 Где каждый прямоугольник имеет ширину x и высоту F(xi) в середине интервала Параллельное программирование с Open. MP: Введение © Бахтин В. А. 16 из 51
Вычисление числа . Последовательная программа. #include <stdio. h> int main () { int n =100000, i; double pi, h, sum, x; h = 1. 0 / (double) n; sum = 0. 0; for (i = 1; i <= n; i ++) { x = h * ((double)i - 0. 5); sum += (4. 0 / (1. 0 + x*x)); } pi = h * sum; printf("pi is approximately %. 16 f”, pi); return 0; } Москва, 2016 г. Параллельное программирование с Open. MP: Введение © Бахтин В. А. 17 из 51
Автоматическое распараллеливание Polaris, CAPO, WPP, SUIF, VAST/Parallel, OSCAR, Intel/Open. MP, UTL, Parallware icc -parallel –O 3 pi. c(8): (col. 5) remark: LOOP WAS AUTO-PARALLELIZED. pi. c(8): (col. 5) remark: LOOP WAS VECTORIZED. В общем случае, автоматическое распараллеливание затруднено: косвенная индексация (A[B[i]]); указатели (ассоциация по памяти); сложный межпроцедурный анализ. Москва, 2016 г. Параллельное программирование с Open. MP: Введение © Бахтин В. А. 18 из 51
Автоматизированное распараллеливание Intel/GAP (Guided Auto-Parallel), CAPTools/Para. Wise, BERT 77, FORGE Magic/DM, ДВОР (Диалоговый Высокоуровневый Оптимизирующий Распараллеливатель), САПФОР (Система Автоматизации Параллелизации ФОРтран программ) for (i=0; i<n; i++) { if (A[i] > 0) {b=A[i]; A[i] = 1 / A[i]; } if (A[i] > 1) {A[i] += b; } } icc -guide -parallel –O 3 test. cpp Москва, 2016 г. Параллельное программирование с Open. MP: Введение © Бахтин В. А. 19 из 51
Автоматизированное распараллеливание test. cpp(49): remark #30521: (PAR) Loop at line 49 cannot be parallelized due to conditional assignment(s) into the following variable(s): b. This loop will be parallelized if the variable(s) become unconditionally initialized at the top of every iteration. [VERIFY] Make sure that the value(s) of the variable(s) read in any iteration of the loop must have been written earlier in the same iteration. test. cpp(49): remark #30525: (PAR) If the trip count of the loop at line 49 is greater than 188, then use "#pragma loop count min(188)" to parallelize this loop. [VERIFY] Make sure that the loop has a minimum of 188 iterations. #pragma loop count min (188) for (i=0; i<n; i++) { b = A[i]; if (A[i] > 0) {A[i] = 1 / A[i]; } if (A[i] > 1) {A[i] += b; } } Москва, 2016 г. Параллельное программирование с Open. MP: Введение © Бахтин В. А. 20 из 51
Вычисление числа с использованием Win 32 API #include <stdio. h> #include <windows. h> #define NUM_THREADS 2 CRITICAL_SECTION h. Critical. Section; double pi = 0. 0; int n =100000; void main () { int i, thread. Arg[NUM_THREADS]; DWORD thread. ID; HANDLE thread. Handles[NUM_THREADS]; for(i=0; i<NUM_THREADS; i++) thread. Arg[i] = i+1; Initialize. Critical. Section(&h. Critical. Section); for (i=0; i<NUM_THREADS; i++) thread. Handles[i] = Create. Thread(0, 0, (LPTHREAD_START_ROUTINE) Pi, &thread. Arg[i], 0, &thread. ID); Wait. For. Multiple. Objects(NUM_THREADS, thread. Handles, TRUE, INFINITE); printf("pi is approximately %. 16 f”, pi); } Москва, 2016 г. Параллельное программирование с Open. MP: Введение © Бахтин В. А. 21 из 51
Вычисление числа с использованием Win 32 API void Pi (void *arg) { int i, start; double h, sum, x; h = 1. 0 / (double) n; sum = 0. 0; start = *(int *) arg; for (i=start; i<= n; i=i+NUM_THREADS) { x = h * ((double)i - 0. 5); sum += (4. 0 / (1. 0 + x*x)); } Enter. Critical. Section(&h. Critical. Section); pi += h * sum; Leave. Critical. Section(&h. Critical. Section); } Москва, 2016 г. Параллельное программирование с Open. MP: Введение © Бахтин В. А. 22 из 51
Конфликт доступа к данным При взаимодействии через общую память нити должны синхронизовать свое выполнение. Thread 0: pi = pi + val; && Thread 1: pi = pi + val; Время Thread 0 Thread 1 1 LOAD R 1, pi 2 LOAD R 2, val 3 ADD R 1, R 2 LOAD R 3, pi 4 STORE R 1, pi LOAD R 4, val 5 ADD R 3, R 4 6 STORE R 3, pi Результат зависит от порядка выполнения команд. Требуется взаимное исключение критических интервалов. Москва, 2016 г. Параллельное программирование с Open. MP: Введение © Бахтин В. А. 23 из 51
Вычисление числа с использованием POSIX Threads #include <pthread. h> #define NUM_THREADS 2 pthread_mutex_t mutex. Reduction; double pi = 0. 0; int n =100000; void main () { int i, thread. Arg[NUM_THREADS]; pthread_t thread. Handles[NUM_THREADS]; pthread_mutex_init (&mutex. Reduction, NULL); for (i=0; i<NUM_THREADS; i++) { thread. Arg[i] = i+1; if (pthread_create(&thread. Handles [i], NULL, Pi, &thread. Arg[i]) != 0) return EXIT_FAILURE; } for (i=0; i<NUM_THREADS; i++) { if (pthread_join(&thread. Handles [i], NULL) != 0) return EXIT_FAILURE; } pthread_mutex_destroy(&mutex. Reduction ); printf("pi is approximately %. 16 f”, pi); } Параллельное программирование с Open. MP: Введение Москва, 2016 г. © Бахтин В. А. 24 из 51
Вычисление числа с использованием POSIX Threads static void *Pi (void *arg) { int i, start; double h, sum, x; h = 1. 0 / (double) n; sum = 0. 0; start = *(int *) arg; for (i=start; i<= n; i=i+NUM_THREADS) { x = h * ((double)i - 0. 5); sum += (4. 0 / (1. 0 + x*x)); } pthread_mutex_lock(&mutex. Reduction); pi += h * sum; pthread_mutex_unlock(&mutex. Reduction); return NULL; } Москва, 2016 г. Параллельное программирование с Open. MP: Введение © Бахтин В. А. 25 из 51
Вычисление числа с использованием MPI #include "mpi. h" #include <stdio. h> int main (int argc, char *argv[]) { int n =100000, myid, numprocs, i; double mypi, h, sum, x; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &numprocs); MPI_Comm_rank(MPI_COMM_WORLD, &myid); h = 1. 0 / (double) n; sum = 0. 0; Москва, 2016 г. Параллельное программирование с Open. MP: Введение © Бахтин В. А. 26 из 51
Вычисление числа с использованием MPI for (i = myid + 1; i <= n; i += numprocs) { x = h * ((double)i - 0. 5); sum += (4. 0 / (1. 0 + x*x)); } mypi = h * sum; MPI_Reduce(&mypi, &pi, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD); if (myid == 0) printf("pi is approximately %. 16 f”, pi); MPI_Finalize(); return 0; } Москва, 2016 г. Параллельное программирование с Open. MP: Введение © Бахтин В. А. 27 из 51
Вычисление числа c использованием Open. MP #include <stdio. h> int main () { int n =100000, i; double pi, h, sum, x; h = 1. 0 / (double) n; sum = 0. 0; #pragma omp parallel for reduction(+: sum) private(x) for (i = 1; i <= n; i ++) { x = h * ((double)i - 0. 5); sum += (4. 0 / (1. 0 + x*x)); } pi = h * sum; printf("pi is approximately %. 16 f”, pi); return 0; } Москва, 2016 г. Параллельное программирование с Open. MP: Введение © Бахтин В. А. 28 из 51
Достоинства использования Open. MP вместо MPI для многоядерных процессоров #define Max(a, b) ((a)>(b)? (a): (b)) #define L 8 #define ITMAX 20 int i, j, it, k; double eps, MAXEPS = 0. 5; double A[L][L], B[L][L]; int main(int an, char **as) { for (it=1; it < ITMAX; it++) { eps= 0. ; for(i=1; j<=L-2; j++) for(j=1; j<=L-2; j++) {eps = Max(fabs(B[i][j]-A[i][j]), eps); A[i][j] = B[i][j]; } for(i=1; j<=L-2; j++) for(j=1; j<=L-2; j++) B[i][j] = (A[i-1][j]+A[i+1][j]+A[i][j-1]+A[i][j+1])/4. ; printf( "it=%4 i eps=%fn", it, eps); if (eps < MAXEPS) break; } } Москва, 2016 г. Параллельное программирование с Open. MP: Введение © Бахтин В. А. 29 из 51
Достоинства использования Open. MP вместо MPI для многоядерных процессоров Для получения программы, способной работать на кластере, необходимо распределить данные и вычисления между процессорами. После распределения данных требуется организовать межпроцессорные взаимодействия. В данном случае - для доступа к удаленным данным используются “теневые” грани, которые являются источником дублирования данных. Москва, 2016 г. Параллельное программирование с Open. MP: Введение © Бахтин В. А. 30 из 51
Тесты NAS BT 3 D Навье-Стокс, метод переменных направлений CG Оценка наибольшего собственного значения симметричной разреженной матрицы EP Генерация пар случайных чисел Гаусса FT IS LU Быстрое преобразование Фурье, 3 D спектральный метод Параллельная сортировка 3 D Навье-Стокс, метод верхней релаксации MG 3 D уравнение Пуассона, метод Multigrid SP 3 D Навье-Стокс, Beam-Warning approximate factorization Москва, 2016 г. Параллельное программирование с Open. MP: Введение © Бахтин В. А. 31 из 51
Тесты NAS Analyzing the Effect of Different Programming Models Upon Performance and Memory Usage on Cray XT 5 Platforms https: //www. nersc. gov/assets/NERSC-Staff-Publications/2010/Cug 2010 Shan. pdf Москва, 2016 г. Параллельное программирование с Open. MP: Введение © Бахтин В. А. 32 из 51
Тесты NAS Analyzing the Effect of Different Programming Models Upon Performance and Memory Usage on Cray XT 5 Platforms https: //www. nersc. gov/assets/NERSC-Staff-Publications/2010/Cug 2010 Shan. pdf Москва, 2016 г. Параллельное программирование с Open. MP: Введение © Бахтин В. А. 33 из 51
Достоинства использования Open. MP вместо MPI для многоядерных процессоров(на 1 ом узле кластера) Возможность инкрементального распараллеливания Упрощение программирования и эффективность на нерегулярных вычислениях, проводимых над общими данными Ликвидация дублирования данных в памяти, свойственного MPIпрограммам Объем памяти пропорционален быстродействию процессора. В последние годы увеличение производительности процессора достигается увеличением числа ядер, при этом частота каждого ядра не увеличивается. Наблюдается тенденция к сокращению объема оперативной памяти, приходящейся на одно ядро. Присущая Open. MP экономия памяти становится очень важна. Наличие локальных и/или разделяемых ядрами КЭШей будут учитываться при оптимизации Open. MP-программ компиляторами, что не могут делать компиляторы с последовательных языков для MPI-процессов. Москва, 2016 г. Параллельное программирование с Open. MP: Введение © Бахтин В. А. 34 из 51
История Open. MP 1998 2002 2005 Open. MP C/C++ 2. 0 Open. MP C/C++ 1. 0 1997 Open. MP F/C/C++ 3. 0 Open. MP Fortran 1. 1 1999 Москва, 2016 г. 2011 2013 2015 Open. MP F/C/C++ 4. 5 Open. MP F/C/C++ 2. 5 Open. MP Fortran 1. 0 2008 Open. MP Fortran 2. 0 Параллельное программирование с Open. MP: Введение © Бахтин В. А. Open. MP F/C/C++ 3. 1 Open. MP F/C/C++ 4. 0 35 из 51
Open. MP Architecture Review Board AMD ARM Cray Fujitsu HP IBM Intel Micron NEC NVIDIA Oracle Corporation Red Hat Texas Instrument Москва, 2016 г. ANL ASC/LLNL c. OMPunity EPCC LANL LBNL NASA ORNL RWTH Aachen University Texas Advanced Computing Center SNL- Sandia National Lab BSC - Barcelona Supercomputing Center University of Houston Параллельное программирование с Open. MP: Введение © Бахтин В. А. 36 из 51
Компиляторы, поддерживающие Open. MP 4. 5: GNU GCC 6. 1: Linux, Solaris, AIX, Mac. OSX, Windows, Free. BSD, Net. BSD, Open. BSD, Dragon. Fly BSD, HPUX, RTEMS Open. MP 4. 0: Intel 16. 0: Linux, Windows and Mac. OS Oracle Solaris Studio 12. 4: Linux and Solaris Open. MP 3. 1: Oracle Solaris Studio 12. 3: Linux and Solaris Cray: Cray XT series Linux environment LLVM: clang Linux and Mac. OS IBM 12. 1: Linux and AIX Предыдущие версии Open. MP: PGI 8. 0: Linux and Windows Path. Scale Lahey/Fujitsu Fortran 95 Microsoft Visual Studio 2008 C++ NAG Fortran Complier 6. 0 Open. UH Open. MP 3. 0: Absoft Pro Fortran. MP: 11. 1 Москва, 2016 г. Параллельное программирование с Open. MP: Введение © Бахтин В. А. 37 из 51
Обзор основных возможностей Open. MP C$OMP FLUSH Open. MP: API для написания #pragma omp critical многонитевых приложений C$OMP THREADPRIVATE(/ABC/) CALL OMP_SET_NUM_THREADS(10) • Множество директив компилятора, CALL OMP_TEST_LOCK(LCK) набор функции библиотеки системы поддержки, переменные окружения C$OMP MASTER CALL OMP_INIT_LOCK (LCK) C$OMP ATOMIC • Облегчает создание многонитиевых C$OMP SINGLE PRIVATE(X) SETENVпрограмм на Фортране, C и C++ OMP_SCHEDULE “STATIC, 4” • Обобщение опыта создания C$OMP PARALLEL DO ORDERED PRIVATE (A, B, C) C$OMP ORDERED параллельных программ для SMP и DSM систем за последние 20 лет C$OMP PARALLEL REDUCTION (+: A, B) C$OMP PARALLEL DO SHARED(A, B, C) C$OMP SECTIONS #pragma omp parallel for private(a, b) C$OMP PARALLEL COPYIN(/blk/) C$OMP DO LASTPRIVATE(XX) nthrds = OMP_GET_NUM_PROCS() Москва, 2016 г. C$OMP BARRIER omp_set_lock(lck) Параллельное программирование с Open. MP: Введение © Бахтин В. А. 38 из 51
Cимметричные мультипроцессорные системы (SMP) Все процессоры имеют доступ к любой точке памяти с одинаковой скоростью. Процессоры подключены к памяти либо с помощью общей шины, либо с помощью crossbar-коммутатора. Аппаратно поддерживается когерентность кэшей. Например, серверы HP 9000 V-Class, Convex SPP-1200, … Москва, 2016 г. Параллельное программирование с Open. MP: Введение © Бахтин В. А. 39 из 51
Системы с неоднородным доступом к памяти (NUMA) Модули объединены с помощью высокоскоростного коммутатора. Поддерживается единое адресное пространство. Москва, 2016 г. Система состоит из однородных базовых модулей (плат), состоящих из небольшого числа процессоров и блока памяти. Доступ к локальной памяти в несколько раз быстрее, чем к удаленной. Параллельное программирование с Open. MP: Введение © Бахтин В. А. 40 из 51
Системы с неоднородным доступом к памяти (NUMA) SGI Altix UV (Ultra. Violoet) 2000 256 Intel® Xeon® processor E 5 -4600 product family 2. 4 GHz-3. 3 GHz - 2048 Cores (4096 Threads) 64 TB памяти NUMAlink 6 (NL 6; 6. 7 GB/s bidirectional) http: //www. sgi. com/products/servers/uv/ Москва, 2016 г. Параллельное программирование с Open. MP: Введение © Бахтин В. А. 41 из 51
Top 500 Москва, 2016 г. Параллельное программирование с Open. MP: Введение © Бахтин В. А. 42 из 51
Top 500 Москва, 2016 г. Параллельное программирование с Open. MP: Введение © Бахтин В. А. 43 из 51
Intel Xeon Phi (Many Integrated Core - MIC) Москва, 2016 г. Параллельное программирование с Open. MP: Введение © Бахтин В. А. 44 из 51
Pezy-SC Many Core Processor Logic Cores(PE) 1, 024 Core Frequency 733 MHz Peak Performance Floating Point Single 3. 0 TFlops / Double 1. 5 TFlops Host Interface PCI Express GEN 3. 0 x 8 Lane x 4 Port (x 16 bifurcation available) JESD 204 B Protocol support DRAM Interface DDR 4, DDR 3 combo 64 bit x 8 Port Max B/W 1533. 6 GB/s +Ultra WIDE IO SDRAM (2, 048 bit) x 2 Port Max B/W 102. 4 GB/s Control CPU ARM 926 2 core Process Node 28 nm Package Москва, 2016 г. FCBGA 47. 5 mm x 47. 5 mm, Ball Pitch 1 mm, 2, 112 pin Параллельное программирование с Open. MP: Введение © Бахтин В. А. 45 из 51
Литературa http: //www. openmp. org http: //www. compunity. org http: //www. parallel. ru/tech_dev/openmp. html Презентации по курсу: ftp: //ftp. keldysh. ru/K_student/Open. MP/ Москва, 2016 г. Параллельное программирование с Open. MP: Введение © Бахтин В. А. 46 из 51
Литература Антонов А. С. Параллельное программирование с использованием технологии Open. MP: Учебное пособие. М. : Изд-во МГУ, 2009. http: //parallel. ru/info/parallel/openmp/Open. MP. pdf Воеводин В. В. , Воеводин Вл. В. Параллельные вычисления. - СПб. : БХВ-Петербург, 2002. Гергель В. П. Теория и практика параллельных вычислений. - М. : Интернет-Университет, БИНОМ. Лаборатория знаний, 2007. Москва, 2016 г. Параллельное программирование с Open. MP: Введение © Бахтин В. А. 47 из 51
Литература Учебные курсы Интернет Университета Информационных технологий Гергель В. П. Теория и практика параллельных вычислений. — http: //www. intuit. ru/department/calculate/paralltp/ Левин М. П. Параллельное программирование с Open. MP http: //www. intuit. ru/department/se/openmp/ Москва, 2016 г. Параллельное программирование с Open. MP: Введение © Бахтин В. А. 48 из 51
Вопросы? Москва, 2016 г. Параллельное программирование с Open. MP: Введение © Бахтин В. А. 49 из 51
Следующая тема Open. MP – модель параллелизма по управлению Москва, 2016 г. Параллельное программирование с Open. MP: Введение © Бахтин В. А. 50 из 51
Контакты Бахтин В. А. , кандидат физ. -мат. наук, заведующий сектором, Институт прикладной математики им. М. В. Келдыша РАН bakhtin@keldysh. ru Москва, 2016 г. Параллельное программирование с Open. MP: Введение © Бахтин В. А. 51 из 51
cc29ec62f814953d8dfb763d44ef0538.ppt