Презентация на тему "Программирование процессора Cell"

Презентация: Программирование процессора Cell
1 из 69
Ваша оценка презентации
Оцените презентацию по шкале от 1 до 5 баллов
  • 1
  • 2
  • 3
  • 4
  • 5
4.0
1 оценка

Комментарии

Нет комментариев для данной презентации

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


Добавить свой комментарий

Аннотация к презентации

Скачать презентацию (2.48 Мб). Тема: "Программирование процессора Cell". Предмет: информатика. 69 слайдов. Для студентов. Добавлена в 2016 году. Средняя оценка: 4.0 балла из 5.

Содержание

  • Презентация: Программирование процессора Cell
    Слайд 1

    Программирование процессора Cell

    Киреев С.Е. Летняя школа по параллельному программированию, Новосибирск, 28 августа 2009

  • Слайд 2

    Сравнение современных процессоров

  • Слайд 3

    Реализации систем на базе Cell

    Roadrunner – самый мощный суперкомпьютерв мире на базе процессоров Opteron и Cell

  • Слайд 4

    Системы на базе Cell – самые «зеленые»

  • Слайд 5

    Продукты IBM IBM BladeCenter QS 21 2 × Cell B.E. 3.2 GHz IBM BladeCenter QS 22 2 × PowerXCell 8i 3.2 GHz 2 × PowerXCell 8i 4.0 GHz Продукты Mercury Computer Systems Mercury Dual Cell Based System 2 2 × Cell B.E. 3.2 GHz Mercury Dual Cell Based Blade 2 2 × Cell B.E. 3.2 GHz Mercury PCI Express Cell Accelerator Board 2 1 × Cell B.E. 2.8 GHz Продукты Fixstars Fixstars GagaAccell 180 Accelerator Board 1 × PowerXCell 8i 2.8 GHz Продукты Т-Платформы PeakCell S 2 × PowerXCell 8i 3.2 GHz PeakCell W 2 × PowerXCell 8i 3.2 GHz PeakCell YPS 4 × PowerXCell 8i 3.2 GHz

  • Слайд 6
  • Слайд 7

    Sony PlayStation3 в ИВМиМГв отделеМО ВВС

    1 процессор CELL B.E. 3.2 GHz 1 ядро PPE 6 ядер SPE 256 MB оперативной памяти

  • Слайд 8

    План

    Архитектура процессора Cell Принципы программирования Базовые средства программирования Создание и компиляция простых программ Механизмы передачи данных и сообщений Программирование вычислений на SPE Библиотеки

  • Слайд 9

    Структура обычного многоядерного узла

    Все ядра в узле равноправные Кластер МВС-100К (Москва) Кластер НКС-30Т (Новосибирск)

  • Слайд 10

    Структура процессора Cell

    Многоядерный процессор Cell Power Processor Element – ядро общего назначения (главное) Synergistic Processor Element – векторные ядра (дополнительные) Element Interconnect Bus – быстрая шина

  • Слайд 11

    1 ядро PPE ядро общего назначения (PowerPC, 2 потока) выполняет код операционной системы управляет ходом вычислений 8 ядер SPE специализированные векторные ядра (особый набор команд) обеспечивают вычислительную мощность процессора работают с ограниченной локальной памятью: 256 KB имеют много регистров: 128 Шина EIB асинхронная имеет высокую пропускную способность обеспечивает большое число одновременных запросов

  • Слайд 12

    Виды параллелизмав процессоре Cell

    Многоядерность. Независимые задачи, которые могут быть выполнены одновременно на разных ядрах: 2 аппаратных потока PPE 8 программ SPE SPE SPE SPE SPE SPE SPE SPE SPE PPE Данные и вычисления необходимо разрезать на фрагментыи распределять между ядрами

  • Слайд 13

    Многоядерность. Независимые задачи, которые могут быть выполнены одновременно на разных ядрах: 2 аппаратных потока PPE 8 программ SPE Векторизация. Регулярные векторные данные, обработка которых может быть векторизована: SPE SIMD PPE VMX SPE SPE SPE SPE SPE SPE SPE SPE PPE Данные необходимо группировать в вектора и следить за выравниванием

  • Слайд 14

    Многоядерность. Независимые задачи, которые могут быть выполнены одновременно на разных ядрах: 2 аппаратных потока PPE 8 программ SPE Векторизация. Регулярные векторные данные, обработка которых может быть векторизована: SPE SIMD PPE VMX Асинхронная передача данных SPE SPE SPE SPE SPE SPE SPE SPE PPE Необходимо использовать специальные алгоритмы для совмещения передач данных и вычислений

  • Слайд 15

    Модель памяти

    Общее адресное пространство PPE … Обычные операции чтения и записи данных (read / write) Отображениелокальной памяти SPE Локальная память SPE Явные операции передачи данных (put / get) SPE … Обычные операции чтения и записи данных (read / write) Отображениелокальной памяти SPE Локальная память SPE SPE

  • Слайд 16

    Сравнение подсистем памяти

    Обычная иерархия памяти Иерархия памяти ядра SPE

  • Слайд 17

    Обычная иерархия памяти Ядро может обращаться к данным в оперативной памяти После запроса данные из памяти придут неизвестно когда Гарантировать приход данных вовремя можно с помощью: Правильного порядка обращений к данным Предвыборки Кэш Оперативная память Данные Запрос данных Обычное процессорное ядро Запрос данных Данные

  • Слайд 18

    Иерархия памяти ядра SPE Ядро SPE может обращаться к данным в локальной памяти Ядро может отправлять запрос на перемещение данных из оперативной в локальную память (или обратно) и проверять его завершение Данные из локальной памяти доступны за константное время LS Оперативная память Данные Запрос на копирование данных Запрос данных Данные Ядро SPE локальная память SPE

  • Слайд 19

    Выполнение обменов на фоне вычислений

    время Load 1 Count 1 Store 1 Load 2 Count 2 Store 2 время Load 1 Count 1 Store 1 Load 2 Count 2 Store 2 Count 3 Load 3 Load 4 Count 4 Store 3 Вычисления с одним буфером на SPE Вычисления с двумя буферамина SPE Load – копирование данных в память SPE Count – выполнение вычислений Store – копирование результата из памяти SPE

  • Слайд 20

    План

    Архитектура процессора Cell Принципы программирования Базовые средства программирования Создание и компиляция простых программ Механизмы передачи данных и сообщений Программирование вычислений на SPE Библиотеки

  • Слайд 21

    Программирование Cell

    Для организации вычислений на Cell необходимо: Разделить задачу на независимые фрагменты для обработки на ядрах SPE Организовать передачу данных между ядрами на одновременно с вычислениями Выполнить векторизацию вычислений на ядрах SPE

  • Слайд 22

    Сравнение параллельных вычислений на Cell с «традиционными» подходами

    SMP-узел +потоки (OpenMP, PThreads, …) Кластер + библиотека MPI Узел на базе процессоров Cell

  • Слайд 23

    SMP-узел +потоки (OpenMP, PThreads, …) На одном узле работают несколько потоков исполнения Данные одинаково доступны всем потокам Каждый поток выполняет свою часть работы над общими данными 0 1 2 3 Данные обрабатываются в том месте, где они хранятся 4-core SMP

  • Слайд 24

    Кластер + библиотека MPI На каждом узле работает один или несколько процессов Данные распределены по процессам Каждый процесс выполняет свою часть работы над своими данными Процессы обмениваются сообщениями Данные обрабатываются в том месте, где они хранятся C L U S T E R

  • Слайд 25

    Узел на базе процессоров Cell Наядре PPE работает главный поток На ядрах SPE работают вычислительные потоки копируют блоки данных из общей памяти в локальную память ядра производят вычисления над данными в локальной памяти копируют результаты в общую память PPE SPE Для обработки данные необходимо скопировать в локальную память ядер SPE

  • Слайд 26

    Модели программирования процессора Cell

    PPE Function offload model {… matrix a, b, c; multiply(a, b, c); } SPE multiply() { … } mul() { … } SPE mul() { … } SPE mul() { … } Статическое или динамическое распределение подзадач

  • Слайд 27

    SPE SPE SPE SPE PPE Портфель задач work() { … } work() { … } work() { … } work() { … } Task Task Task Task Task Task main() { … AddTask(); … } Task Очередь задач

  • Слайд 28

    SPE SPE SPE SPE PPE Потоковый конвейер step1() { … } step2() { … } step4() { … } step3() { … } Input data Output data main() { … make_input(); … get_output(); … }

  • Слайд 29

    Взаимодействующие процессы с общей памятью SPE PPE SPE SPE SPE SPE SPE SPE SPE Общая память

  • Слайд 30

    Взаимодействующие процессы с распределенной памятью SPE PPE SPE SPE SPE SPE SPE SPE SPE Память PPE

  • Слайд 31

    План

    Архитектура процессора Cell Принципы программирования Базовые средства программирования Создание и компиляция простых программ Механизмы передачи данных и сообщений Программирование вычислений на SPE Библиотеки

  • Слайд 32

    Библиотека libspe2

    LibSPE предоставляет интерфейс к базовым средствам программирования процессора Cell, реализованным аппаратно. Разработка программы: Создается отдельная программа для PPE, Создается отдельная программа для SPE, PPE-программа запускает SPE-программу, SPE-программа может вызвать callback-функцию вызвавшей ее PPE-программы. PPE SPE Callback function Run SPE program main() { count(); printf(“Hello!”); } SPE-program main() { run(); } int printf(…) PPE-program

  • Слайд 33

    Библиотека libspe2:Программа «Hello, World!»

    Программа для PPE (ppu_prog.c) #include extern spe_program_handle_t spu_hello; int main () { unsigned int entry = SPE_DEFAULT_ENTRY; spe_context_ptr_t spe; spe = spe_context_create (0, NULL); spe_program_load (spe, &spu_hello); spe_context_run (spe, &entry, 0, (void *)10, (void *)20, NULL); spe_context_destroy (spe); return 0; } Программа для SPE (spu_prog.c) #include int main (unsigned long long spe, unsigned long long argp, unsigned long long envp) { printf("Hello, World! (%llu,%llu)\n", argp, envp); return 0; }

  • Слайд 34

    main() { … } main() { … } spu_prog.c spu-gcc -o spu_prog spu_prog.c spu_prog Компиляция программы для Cell: ppu_prog.c spu_hello ppu-embedspuspu_hello spu_prog spu_prog.o ppu-gcc -o progppu_prog.c spu_prog.o -lspe2 spu_prog.o prog Исполняемый файл для SPE Исполняемый файл для PPE+SPE

  • Слайд 35

    Библиотека libspe2:Многопоточная программа «Hello, World!»

    Создание параллельной программы для Cell: В программе на PPE создать несколько параллельных потоков, В потоках запустить программы на SPE. main() { … … … … } thread_func() { … } thread_func() { … } thread_func() { … } pthread_create() main() { … } main() { … } main() { … } SPE SPE SPE run() PPE

  • Слайд 36

    Программа для PPE многопоточная #include #include #define NTHREADS 40 extern spe_program_handle_t spu_hello; void *thread_func(void *data) { unsigned int entry = SPE_DEFAULT_ENTRY; spe_context_ptr_t spe; spe = spe_context_create(0,NULL); spe_program_load(spe,&spu_hello); spe_context_run(spe,&entry,0,(void *)data,(void *)NTHREADS,NULL); spe_context_destroy(spe); return 0; } int main () { pthread_t tid[NTHREADS]; unsigned long i; for (i=0;i

  • Слайд 37

    План

    Архитектура процессора Cell Принципы программирования Базовые средства программирования Создание и компиляция простых программ Механизмы передачи данных и сообщений Программирование вычислений на SPE Библиотеки

  • Слайд 38

    Механизмыпередачи данныхи сообщений

    DMA-передача– блок данных до 16 KB: Операция Get: общая память память SPE Операция Put: память SPE общая память Mailbox-ы – очереди 32-битных сообщений: SPE in (4) SPE out (1) SPE out interrupt (1) Сигналы – 32-битные сообщения: Только к SPE

  • Слайд 39

    DMA-передача данных Может запускаться и на PPE, и на SPE Общее адресное пространство SPE SPE SPE SPE get put

  • Слайд 40

    DMA-передача данных Может запускаться и на PPE, и на SPE Общее адресное пространство SPE SPE SPE SPE get put get list

  • Слайд 41

    DMA-передача данных Может запускаться и на PPE, и на SPE Общее адресное пространство SPE SPE SPE SPE get put get list put list

  • Слайд 42

    DMA-передача данных Блоки данных должны быть выровнены в памяти по границе 16 байт. Размер передаваемых данных может быть 1,2,4,8,16 или 16*N байтов. Для идентификации группы DMA-передач используются 5-битные DMA-тэги. Тэг позволяет проверить статус или дождаться завершения соответствующей группы DMA-передач.

  • Слайд 43

    DMA-передача данных Чтобы упорядочить выполнение передач, используются специальные варианты команд get и put: Barrier: getb, putb Fence: getf, putf время

  • Слайд 44

    Библиотека libspe 2.0:Пример передачи данных DMA

    Программа для SPE // GET: Передача данных из PPE в SPE void get (void *dest_lsa, unsigned long long sour_ea, unsigned long size) { int tag=mfc_tag_reserve(), mask=1

  • Слайд 45

    Механизмыпередачи данныхи сообщений

    Mailbox: передача 4-байтовых сообщений PPE SPE spe_in_mbox_write() spu_read_in_mbox() spe_out_mbox_read() spu_write_out_mbox() spe_out_mbox_status() spe_in_mbox_status() spu_stat_in_mbox() spu_stat_out_mbox() блокированные передачи неблокированные передачи in out

  • Слайд 46

    Mailbox: передача 4-байтовых сообщений Signal: передача 4-байтовых сообщений PPE SPE spe_in_mbox_write() spu_read_in_mbox() spe_out_mbox_read() spu_write_out_mbox() spe_out_mbox_status() spe_in_mbox_status() spu_stat_in_mbox() spu_stat_out_mbox() PPE SPE spe_signal_write() spu_read_signal1() spu_stat_signal1() spu_stat_signal2() spe_signal_write() spu_read_signal2() блокированные передачи неблокированные передачи in out sig1 sig2

  • Слайд 47

    Библиотека libspe 2.0:Программа «Ping-pong»

    Фрагмент программы для PPE … while (spe_out_mbox_status(spe)==0); // ожидание данных в очереди spe_out_mbox_read(spe,&data,1); // чтение одного элемента из очереди data++; // изменение данных spe_signal_write(spe,SPE_SIG_NOTIFY_REG_1,data); // запись в регистр сигнала 1 … Фрагмент программы для SPE … spu_write_out_mbox(data); // запись элемента данных в очередь data=spu_read_signal1(); // чтение данных из регистра сигнала 1 … PPE SPE signal mailbox

  • Слайд 48

    Передача данных между SPE

    Локальная память SPE отображается в общее адресное пространство. Обращение SPE к заданному участку адресного пространства позволяет обращаться к памяти другого SPE. Адресное пространство SPE SPE put spe_ls_area_get()

  • Слайд 49

    Передача сообщениймежду SPE

    Регистры mailbox-ов и сигналов SPE отображаются в общее адресное пространство. Запись/чтение заданного элемента адресного пространства позволяет одному SPE отправлять и получать сообщения другого SPE. Адресное пространство SPE SPE spe_ps_area_get() put get

  • Слайд 50

    План

    Архитектура процессора Cell Принципы программирования Базовые средства программирования Создание и компиляция простых программ Механизмы передачи данных и сообщений Программирование вычислений на SPE Библиотеки

  • Слайд 51

    Программирование вычислений на SPE

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

  • Слайд 52

    Локальная память SPE

    Объем локальной памяти для данных и кода: 256 KB Чтение и запись локальной памяти всегда выполняется выровненными блоками размером 16 байт: Если адрес не выровнен, он автоматически округляется до 16 байт Защита памяти отсутствует Можно свободно читать и писать в области данных, кода и стека

  • Слайд 53

    Векторные типы данных

  • Слайд 54

    Элементы векторных типов данных выравниваются автоматически. Элементы других типов можно выравнивать явно: unsigned char buffer[1024] __attribute__ ((aligned(16))); Пример инициализации векторной переменной: vector float vf1 = { 1.0, 2.0, 3.0, 4.0 }; vector float vf2[2] = {{1.0, 2.0, 3.0, 4.0}, {5.0, 6.0, 7.0, 8.0}}; vector float vf3[2] = {1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0};

  • Слайд 55

    Команды уровня компилятора

    Для манипуляции векторными данными используются intrinsics– встроенные в компилятор команды: Специальные (specific)– отображаются в одну инструкцию процессора, Например: d = si_to_int(a); Обобщенные (generic) – отображаются в одну или несколько инструкций процессора в зависимости от входных параметров, Например: c = spu_add (a, b); Составные (built-ins)– последовательности обобщенных и специальных intrinsics (объединенные для удобства). Например, команды DMA-передачи.

  • Слайд 56

    Операции над векторами

    Арифметические операции над элементами векторов: d = spu_add(a,b); d = spu_sub(a, b); d = spu_madd(a, b, c); d = spu_mul(a, b); … Логические операции над битами векторов: d = spu_and(a, b); d = spu_or(a, b); d = spu_eqv(a, b); … Более сложные операции:библиотека simdmath.

  • Слайд 57

    Операции преобразования скалярных и векторных данных: d = spu_insert(s, v, n); d = spu_splats(s); d = spu_promote(s, n); s = spu_extract(v, n); Операции преобразования типов: d = spu_convtf(a, scale); d = spu_convts(a, scale); d = spu_extend(a); …

  • Слайд 58

    Операции для манипулирования элементами векторов: Сдвиг, вращение элементов d = spu_rl(a, count); d = spu_sl(a, count); … Перестановка элементов векторов d = spu_sel(a, b, pattern); d = spu_shuffle(a, b, pattern); …

  • Слайд 59

    Пример:векторное умножение матриц

    void mulv(float *a,float *b,float *c,int n) { int i,j,k; vector float *bv=(vector float *)b; vector float *cv=(vector float *)c; vector float s, t; s = spu_splats(0.0); for (i=0;i

  • Слайд 60

    Особенности векторизации вычислений

    Простой пример: for (i=0; i

  • Слайд 61

    Операнды должны быть приведены к одному типу Пример: int a[n]; short int b[n]; for (i=0; i

  • Слайд 62

    Операнды должны быть выровнены друг относительно друга

  • Слайд 63

    Особенности реализации скалярных вычислений

    При выполнении операции над скалярными переменными в памяти происходит следующее: Чтение векторов, содержащих операнды, в регистры, Относительное выравнивание операндов в векторах, Выполнение операции над векторами, Чтение вектора, содержащего результат, Помещение результата в нужную позицию результирующего вектора, Запись результирующего вектора в память. Это очень долго!

  • Слайд 64

    Оптимизация целочисленной арифметики

    На SPE отсутствует 32-битное умножение. Используйте shortint вместо int, где это возможно. short int i,k; for (i=0; i

  • Слайд 65

    Оптимизация условных переходов

    Устранение условных переходов Подсказка компилятору

  • Слайд 66

    План

    Архитектура процессора Cell Принципы программирования Базовые средства программирования Создание и компиляция простых программ Механизмы передачи данных и сообщений Программирование вычислений на SPE Библиотеки

  • Слайд 67

    Средства программирования процессоров Cell

    Средства от IBM (IBM Cell SDK) Библиотека libspe 2.0 Библиотеки векторизованых операций:SIMD Math Library, MASS Library, FFT, Game math, Image Processing, Matrix, Vector, Multi-precision math, BLAS,LAPACK, Monte-Carlo Sync Library: атомарные операции, мьютексы, условные переменные, … Software managed cache Распараллеливающие векторизующиекомпиляторы (OpenMP): xlc, xlf DaCS – Data Communication and Synchronization library ALF – Accelerated Library Framework Другие средства BSC Cell Superscalar Mercury Computer Systems: MultiCore Framework RapidMind Gedae

  • Слайд 68

    Ссылки

    IBM Cell Broadband Engine resource center, http://www.ibm.com/developerworks/power/cell/documents.html Cell Developer's Corner, http://www.power.org/resources/devcorner/cellcorner STI Center of Competence for the Cell Broadband Engine Processor, http://sti.cc.gatech.edu Barcelona Supercomputing Center: Cell Superscalar, www.bsc.es/cellsuperscalar RapidMind Development Platform, www.rapidmind.net Mercury Computer Systems: MultiCore Framework, http://www.mc.com/software/multicore_framework.aspx

  • Слайд 69
Посмотреть все слайды

Сообщить об ошибке