🗊 Программирование процессора Cell Киреев С.Е.

Категория: Информатика
Нажмите для полного просмотра!
  
  Программирование процессора Cell  Киреев С.Е.  , слайд №1  
  Программирование процессора Cell  Киреев С.Е.  , слайд №2  
  Программирование процессора Cell  Киреев С.Е.  , слайд №3  
  Программирование процессора Cell  Киреев С.Е.  , слайд №4  
  Программирование процессора Cell  Киреев С.Е.  , слайд №5  
  Программирование процессора Cell  Киреев С.Е.  , слайд №6  
  Программирование процессора Cell  Киреев С.Е.  , слайд №7  
  Программирование процессора Cell  Киреев С.Е.  , слайд №8  
  Программирование процессора Cell  Киреев С.Е.  , слайд №9  
  Программирование процессора Cell  Киреев С.Е.  , слайд №10  
  Программирование процессора Cell  Киреев С.Е.  , слайд №11  
  Программирование процессора Cell  Киреев С.Е.  , слайд №12  
  Программирование процессора Cell  Киреев С.Е.  , слайд №13  
  Программирование процессора Cell  Киреев С.Е.  , слайд №14  
  Программирование процессора Cell  Киреев С.Е.  , слайд №15  
  Программирование процессора Cell  Киреев С.Е.  , слайд №16  
  Программирование процессора Cell  Киреев С.Е.  , слайд №17  
  Программирование процессора Cell  Киреев С.Е.  , слайд №18  
  Программирование процессора Cell  Киреев С.Е.  , слайд №19  
  Программирование процессора Cell  Киреев С.Е.  , слайд №20  
  Программирование процессора Cell  Киреев С.Е.  , слайд №21  
  Программирование процессора Cell  Киреев С.Е.  , слайд №22  
  Программирование процессора Cell  Киреев С.Е.  , слайд №23  
  Программирование процессора Cell  Киреев С.Е.  , слайд №24  
  Программирование процессора Cell  Киреев С.Е.  , слайд №25  
  Программирование процессора Cell  Киреев С.Е.  , слайд №26  
  Программирование процессора Cell  Киреев С.Е.  , слайд №27  
  Программирование процессора Cell  Киреев С.Е.  , слайд №28  
  Программирование процессора Cell  Киреев С.Е.  , слайд №29  
  Программирование процессора Cell  Киреев С.Е.  , слайд №30  
  Программирование процессора Cell  Киреев С.Е.  , слайд №31  
  Программирование процессора Cell  Киреев С.Е.  , слайд №32  
  Программирование процессора Cell  Киреев С.Е.  , слайд №33  
  Программирование процессора Cell  Киреев С.Е.  , слайд №34  
  Программирование процессора Cell  Киреев С.Е.  , слайд №35  
  Программирование процессора Cell  Киреев С.Е.  , слайд №36  
  Программирование процессора Cell  Киреев С.Е.  , слайд №37  
  Программирование процессора Cell  Киреев С.Е.  , слайд №38  
  Программирование процессора Cell  Киреев С.Е.  , слайд №39  
  Программирование процессора Cell  Киреев С.Е.  , слайд №40  
  Программирование процессора Cell  Киреев С.Е.  , слайд №41  
  Программирование процессора Cell  Киреев С.Е.  , слайд №42  
  Программирование процессора Cell  Киреев С.Е.  , слайд №43  
  Программирование процессора Cell  Киреев С.Е.  , слайд №44  
  Программирование процессора Cell  Киреев С.Е.  , слайд №45  
  Программирование процессора Cell  Киреев С.Е.  , слайд №46  
  Программирование процессора Cell  Киреев С.Е.  , слайд №47  
  Программирование процессора Cell  Киреев С.Е.  , слайд №48  
  Программирование процессора Cell  Киреев С.Е.  , слайд №49  
  Программирование процессора Cell  Киреев С.Е.  , слайд №50  
  Программирование процессора Cell  Киреев С.Е.  , слайд №51  
  Программирование процессора Cell  Киреев С.Е.  , слайд №52  
  Программирование процессора Cell  Киреев С.Е.  , слайд №53  
  Программирование процессора Cell  Киреев С.Е.  , слайд №54  
  Программирование процессора Cell  Киреев С.Е.  , слайд №55  
  Программирование процессора Cell  Киреев С.Е.  , слайд №56  
  Программирование процессора Cell  Киреев С.Е.  , слайд №57  
  Программирование процессора Cell  Киреев С.Е.  , слайд №58  
  Программирование процессора Cell  Киреев С.Е.  , слайд №59  
  Программирование процессора Cell  Киреев С.Е.  , слайд №60  
  Программирование процессора Cell  Киреев С.Е.  , слайд №61  
  Программирование процессора Cell  Киреев С.Е.  , слайд №62  
  Программирование процессора Cell  Киреев С.Е.  , слайд №63  
  Программирование процессора Cell  Киреев С.Е.  , слайд №64  
  Программирование процессора Cell  Киреев С.Е.  , слайд №65  
  Программирование процессора Cell  Киреев С.Е.  , слайд №66  
  Программирование процессора Cell  Киреев С.Е.  , слайд №67  
  Программирование процессора Cell  Киреев С.Е.  , слайд №68  
  Программирование процессора Cell  Киреев С.Е.  , слайд №69

Содержание

Вы можете ознакомиться и скачать Программирование процессора Cell Киреев С.Е. . Презентация содержит 69 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

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


Слайд 1





Программирование процессора Cell
Киреев С.Е.
Описание слайда:
Программирование процессора Cell Киреев С.Е.

Слайд 2





Сравнение современных процессоров
Описание слайда:
Сравнение современных процессоров

Слайд 3





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

Слайд 4





Реализации систем на базе Cell
Системы на базе Cell – самые «зеленые»
Описание слайда:
Реализации систем на базе Cell Системы на базе Cell – самые «зеленые»

Слайд 5





Реализации систем на базе Cell
Продукты 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
Описание слайда:
Реализации систем на базе Cell Продукты 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


  
  Программирование процессора Cell  Киреев С.Е.  , слайд №6
Описание слайда:

Слайд 7





Sony PlayStation3 в ИВМиМГ
в отделе МО ВВС
Описание слайда:
Sony PlayStation3 в ИВМиМГ в отделе МО ВВС

Слайд 8





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

Слайд 9





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

Слайд 10





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

Слайд 11





Структура процессора Cell
1 ядро PPE
ядро общего назначения (PowerPC, 2 потока)
выполняет код операционной системы
управляет ходом вычислений

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

Слайд 12





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

Слайд 13





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

Слайд 14





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

Слайд 15





Модель памяти
Описание слайда:
Модель памяти

Слайд 16





Сравнение подсистем памяти
Описание слайда:
Сравнение подсистем памяти

Слайд 17





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

Слайд 18





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

Слайд 19





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

Слайд 20





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

Слайд 21





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

Слайд 22





Сравнение параллельных вычислений на Cell с «традиционными» подходами
SMP-узел + потоки (OpenMP, PThreads, …)

Кластер + библиотека MPI

Узел на базе процессоров Cell
Описание слайда:
Сравнение параллельных вычислений на Cell с «традиционными» подходами SMP-узел + потоки (OpenMP, PThreads, …) Кластер + библиотека MPI Узел на базе процессоров Cell

Слайд 23





Сравнение параллельных вычислений на Cell с «традиционными» подходами
SMP-узел + потоки (OpenMP, PThreads, …)
На одном узле работают несколько потоков исполнения
Данные одинаково доступны всем потокам
Каждый поток выполняет свою часть работы над общими данными
Описание слайда:
Сравнение параллельных вычислений на Cell с «традиционными» подходами SMP-узел + потоки (OpenMP, PThreads, …) На одном узле работают несколько потоков исполнения Данные одинаково доступны всем потокам Каждый поток выполняет свою часть работы над общими данными

Слайд 24





Сравнение параллельных вычислений на Cell с «традиционными» подходами
Кластер + библиотека MPI
На каждом узле работает один или несколько процессов
Данные распределены по процессам
Каждый процесс выполняет свою часть работы над своими данными
Процессы обмениваются сообщениями
Описание слайда:
Сравнение параллельных вычислений на Cell с «традиционными» подходами Кластер + библиотека MPI На каждом узле работает один или несколько процессов Данные распределены по процессам Каждый процесс выполняет свою часть работы над своими данными Процессы обмениваются сообщениями

Слайд 25





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

Слайд 26





Модели программирования процессора Cell
Function offload model
Описание слайда:
Модели программирования процессора Cell Function offload model

Слайд 27





Модели программирования процессора Cell
Портфель задач
Описание слайда:
Модели программирования процессора Cell Портфель задач

Слайд 28





Модели программирования процессора Cell
Потоковый конвейер
Описание слайда:
Модели программирования процессора Cell Потоковый конвейер

Слайд 29





Модели программирования процессора Cell
Взаимодействующие процессы с общей памятью
Описание слайда:
Модели программирования процессора Cell Взаимодействующие процессы с общей памятью

Слайд 30





Модели программирования процессора Cell
Взаимодействующие процессы с распределенной памятью
Описание слайда:
Модели программирования процессора Cell Взаимодействующие процессы с распределенной памятью

Слайд 31





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

Слайд 32





Библиотека libspe2
LibSPE предоставляет интерфейс к базовым средствам программирования процессора Cell, реализованным аппаратно.
Разработка программы:
Создается отдельная программа для PPE,
Создается отдельная программа для SPE,
PPE-программа запускает SPE-программу,
SPE-программа может вызвать callback-функцию вызвавшей ее PPE-программы.
Описание слайда:
Библиотека libspe2 LibSPE предоставляет интерфейс к базовым средствам программирования процессора Cell, реализованным аппаратно. Разработка программы: Создается отдельная программа для PPE, Создается отдельная программа для SPE, PPE-программа запускает SPE-программу, SPE-программа может вызвать callback-функцию вызвавшей ее PPE-программы.

Слайд 33





Библиотека libspe2:
Программа «Hello, World!»
Программа для PPE (ppu_prog.c)
#include <libspe2.h>
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 <stdio.h>
int main (unsigned long long spe, unsigned long long argp, unsigned long long envp) 
{
  printf("Hello, World! (%llu,%llu)\n", argp, envp);
  return 0;
}
Описание слайда:
Библиотека libspe2: Программа «Hello, World!» Программа для PPE (ppu_prog.c) #include <libspe2.h> 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 <stdio.h> 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





Библиотека libspe2:
Программа «Hello, World!»
Компиляция программы для Cell:
Описание слайда:
Библиотека libspe2: Программа «Hello, World!» Компиляция программы для Cell:

Слайд 35





Библиотека libspe2:
Многопоточная программа «Hello, World!»
Создание параллельной программы для Cell:
В программе на PPE создать несколько параллельных потоков,
В потоках запустить программы на SPE.
Описание слайда:
Библиотека libspe2: Многопоточная программа «Hello, World!» Создание параллельной программы для Cell: В программе на PPE создать несколько параллельных потоков, В потоках запустить программы на SPE.

Слайд 36





Библиотека libspe2:
Многопоточная программа «Hello, World!»
Программа для PPE многопоточная
#include <libspe2.h>
#include <pthread.h>
#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<NTHREADS;i++) pthread_create (&tid[i], NULL, &thread_func, (void *) i);
  // Параллельная часть
  for (i=0;i<NTHREADS;i++) pthread_join (tid[i], NULL);
  return 0;
}
Описание слайда:
Библиотека libspe2: Многопоточная программа «Hello, World!» Программа для PPE многопоточная #include <libspe2.h> #include <pthread.h> #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<NTHREADS;i++) pthread_create (&tid[i], NULL, &thread_func, (void *) i); // Параллельная часть for (i=0;i<NTHREADS;i++) pthread_join (tid[i], NULL); return 0; }

Слайд 37





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

Слайд 38





Механизмы передачи данных и сообщений
DMA-передача – блок данных до 16 KB:
Операция Get:	общая память  память SPE
Операция Put:	память SPE  общая память
Mailbox-ы – очереди 32-битных сообщений:
SPE in (4)
SPE out (1)
SPE out interrupt (1)
Сигналы – 32-битные сообщения:
Только к SPE
Описание слайда:
Механизмы передачи данных и сообщений 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
Описание слайда:
Механизмы передачи данных и сообщений DMA-передача данных Может запускаться и на PPE, и на SPE

Слайд 40





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

Слайд 41





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

Слайд 42





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

Слайд 43





Механизмы передачи данных и сообщений
DMA-передача данных
Чтобы упорядочить выполнение передач, используются специальные варианты команд get и put:
Barrier:	getb, putb
Fence:	getf, putf
Описание слайда:
Механизмы передачи данных и сообщений 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<<tag;
  mfc_get (dest_lsa, sour_ea, size, tag, 0, 0);	// запуск передачи данных
  mfc_write_tag_mask (mask);
  mfc_read_tag_status_any();		// ожидание завершения передачи

  mfc_tag_release(tag);
}

// PUT: Передача данных из SPE в PPE
void put (void *sour_lsa, unsigned long long dest_ea, unsigned long size)
{
  int tag=mfc_tag_reserve(), mask=1<<tag;
  mfc_put (sour_lsa, dest_ea, size, tag, 0, 0);	 // запуск передачи данных
  mfc_write_tag_mask (mask);
  mfc_read_tag_status_any();		 // ожидание завершения передачи

  mfc_tag_release();
}
Описание слайда:
Библиотека 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<<tag; mfc_get (dest_lsa, sour_ea, size, tag, 0, 0); // запуск передачи данных mfc_write_tag_mask (mask); mfc_read_tag_status_any(); // ожидание завершения передачи mfc_tag_release(tag); } // PUT: Передача данных из SPE в PPE void put (void *sour_lsa, unsigned long long dest_ea, unsigned long size) { int tag=mfc_tag_reserve(), mask=1<<tag; mfc_put (sour_lsa, dest_ea, size, tag, 0, 0); // запуск передачи данных mfc_write_tag_mask (mask); mfc_read_tag_status_any(); // ожидание завершения передачи mfc_tag_release(); }

Слайд 45





Механизмы передачи данных и сообщений
Mailbox: передача 4-байтовых сообщений
Описание слайда:
Механизмы передачи данных и сообщений Mailbox: передача 4-байтовых сообщений

Слайд 46





Механизмы передачи данных и сообщений
Mailbox: передача 4-байтовых сообщений
Signal: передача 4-байтовых сообщений
Описание слайда:
Механизмы передачи данных и сообщений Mailbox: передача 4-байтовых сообщений Signal: передача 4-байтовых сообщений

Слайд 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
…
Описание слайда:
Библиотека 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 …

Слайд 48





Передача данных между SPE
Локальная память SPE отображается в общее адресное пространство.
Обращение SPE к заданному участку адресного пространства позволяет обращаться к памяти другого SPE.
Описание слайда:
Передача данных между SPE Локальная память SPE отображается в общее адресное пространство. Обращение SPE к заданному участку адресного пространства позволяет обращаться к памяти другого SPE.

Слайд 49





Передача сообщений между SPE
Регистры mailbox-ов и сигналов SPE отображаются в общее адресное пространство.
Запись/чтение заданного элемента адресного пространства позволяет одному SPE отправлять и получать сообщения другого SPE.
Описание слайда:
Передача сообщений между SPE Регистры mailbox-ов и сигналов SPE отображаются в общее адресное пространство. Запись/чтение заданного элемента адресного пространства позволяет одному SPE отправлять и получать сообщения другого SPE.

Слайд 50





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

Слайд 51





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

Слайд 52





Локальная память SPE
Объем локальной памяти для данных и кода: 256 KB
Чтение и запись локальной памяти всегда выполняется выровненными блоками размером 16 байт:
Если адрес не выровнен, он автоматически округляется до 16 байт
Защита памяти отсутствует
Можно свободно читать и писать в области данных, кода и стека
Описание слайда:
Локальная память 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};
Описание слайда:
Векторные типы данных Элементы векторных типов данных выравниваются автоматически. Элементы других типов можно выравнивать явно: 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-передачи.
Описание слайда:
Команды уровня компилятора Для манипуляции векторными данными используются 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.
Описание слайда:
Операции над векторами Арифметические операции над элементами векторов: 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);
…
Описание слайда:
Операции над векторами Операции преобразования скалярных и векторных данных: 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);
…
Описание слайда:
Операции над векторами Операции для манипулирования элементами векторов: Сдвиг, вращение элементов 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<n*n/4; i++) cv[i] = s;

  for (i=0; i<n; i++)
    for (k=0; k<n; k++)
    {
      s = spu_splats ( a[i*n+k] );
      for (j=0; j<n/4; j++)
      { t = spu_mul (s, bv[k*n/4+j] );
        cv[i*n/4+j] = spu_add ( cv[i*n/4+j], t );
      }
    }
}
Описание слайда:
Пример: векторное умножение матриц 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<n*n/4; i++) cv[i] = s; for (i=0; i<n; i++) for (k=0; k<n; k++) { s = spu_splats ( a[i*n+k] ); for (j=0; j<n/4; j++) { t = spu_mul (s, bv[k*n/4+j] ); cv[i*n/4+j] = spu_add ( cv[i*n/4+j], t ); } } }

Слайд 60





Особенности векторизации вычислений
Простой пример:
for (i=0; i<n; i++) a[i]=b[i]+c[i];
Описание слайда:
Особенности векторизации вычислений Простой пример: for (i=0; i<n; i++) a[i]=b[i]+c[i];

Слайд 61





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

Слайд 62





Особенности векторизации вычислений
Операнды должны быть выровнены друг относительно друга
Описание слайда:
Особенности векторизации вычислений Операнды должны быть выровнены друг относительно друга

Слайд 63





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

Слайд 64





Оптимизация целочисленной арифметики
На SPE отсутствует 32-битное умножение.
Используйте short int вместо int, где это возможно.
		short int i,k;
		for (i=0; i<N; i++)
		  for (k=0; k<N; k++)
		    x[i*N+k]=i + k;
Описание слайда:
Оптимизация целочисленной арифметики На SPE отсутствует 32-битное умножение. Используйте short int вместо int, где это возможно. short int i,k; for (i=0; i<N; i++) for (k=0; k<N; k++) x[i*N+k]=i + k;

Слайд 65





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

Слайд 66





План
Архитектура процессора Cell
Принципы программирования
Базовые средства программирования
Создание и компиляция простых программ
Механизмы передачи данных и сообщений
Программирование вычислений на SPE
Библиотеки
Описание слайда:
План Архитектура процессора 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
Описание слайда:
Средства программирования процессоров 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
Описание слайда:
Ссылки 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


  
  Программирование процессора Cell  Киреев С.Е.  , слайд №69
Описание слайда:



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