план на апрель - Самарский Дворец детского и юношеского;doc

Применение стандарта OPENCL и Altera FPGA
для улучшения соотношения производительность/ватт
мощности при выполнении параллельных вычислений
в гетерогенной системе
Февраль, 2014
Висторовский Антон, BDM Altera
EBV Elektronik
Содержание


Участие Altera в
развитии стандарта
Обзор решения Altera
 Маршрут ПО (SW)
 Аппаратура (HW)


2
Отличительные
особенности
Примеры
Введение
Февраль, 2014
Висторовский Антон, BDM Altera
EBV Elektronik
Подход Altera: увеличение производительности
гетерогенной вычислительной системы
Максимизация пропускной способности
Минимизация латентности
Увеличение операций в сек
Быстрее доступ к данным
Принципы параллелизма
Оптимизация доступа к памяти
• Конвейер
• Инструкции и данные
• Процессы
• Дупликация (SPMD)
• Процесс SMT
(Multi-threading)
4
• Уход от трансферта/копирования
• Работа в локальной памяти, а не в
общем ресурсе памяти
ПЛИС (FPGA) – массивно-параллельная архитектура
 Массивная параллельность
обработки ПЛИС

Тысячи блоков памяти 20Kb

Тысячи масштабируемых DSP блоков

Десятки высокоскоростных
трансиверов

Аппаратные процессорные системы и
контроллеры памяти

Аппаратная плавающая точка
I/O
Миллионы логических элементов
I/O

I/O
 Центричность на HDL

Языки аппаратуры VHDL/Verilog
 Маршрут проектирования
ЛЭ, логический
элемент
Программируемая
коммутация
5
I/O
ПЛИС - мощная вычислительная, реконфигурируемая
и энергоэффективная вычислительная система
энергоэффективность
Основное преимущество:
Наличие синтезируемых и
аппаратных ресурсов

I/O
 Оптимизация под задачу
Memory
Processor
 Логические блоки
 DSP блоки
Processor
Memory
Processor
Memory
Processor
Memory
Processor
Memory
 Локальная память

6
Выполнение задачи на
пределе аппаратных
возможностей и
энергоэффективность

Вычислительные ядра SMT

Репликация SPMD или
конвейеризация для увеличения
пропускной способности
I/O
I/O
 Аппаратный ARM Сortex A9/А53
I/O
 Синтезируемый процессор Nios
Обзор OpenCL
Февраль, 2014
Висторовский Антон, BDM Altera
EBV Elektronik
Стандарт OpenCL (Open Computing Language)

Увеличение производительности
через разгрузку СPU - аппаратный
ускоритель
 Локальная память
 Параллелизм
 Задач (SMT)
 Данных (SPMD)

Модель разработки ПО для CPU,
GPU, DSP и FPGA:
 C/C++ API для хост-программы
 Расширение OpenCL для ускорителя

Открытый, без отчислений
 Основан Khronos Group
 Altera - основной участник
 Altera сертифицирована:
 V1.0 is current reference
 V2.0 is current release
 http://www.khronos.org
8
C/C++
API
Host
OpenCL
C
Device
Этапы развития Altera OpenCL

2010 НИР
 Toronto Technology Center

2012 Программа раннего
доступа
 Демо - Supercomputing ‘12
 Оценка 60 заказчиками

2013 Общая доступность
 Официальный аннонс
 Прохождение v1.0
conformance
9
Public release v13.1
 Installation image accessible
2011 Разработка
 Proof of concept
 Бета-тесты (10)








from ACDS download
infrastructure
Documentation available
online
Boards available from vendor
web site and ACDS installation
Support flow in place
Optimization improvements
SoC support
Design Examples on
Altera.com
OpenCL подтвержденная совместимость Altera
Первый FPGA-вендор, прошедший
сертификацию совместимости OpenCL

 OpenCL v1.0 спецификация

10
>8500 программ оттестировано для прохождения
http://www.khronos.org/conformance/adopters/conformant-companies
http://www.khronos.org/conformance/adopters/conformant-products
Модель гетерогенной вычислительной платформы
OpenCL
Platform
Model
Host
Memory
(Compute) Device
Host
Global
Memory
Example
Platform
PCIe
11
x86
Compute Unit
Processing
Element
Синтезируемые ядра под ресурсоемкость задачи
OpenCL
Модель
платформы
Host
Memory
Host
Global
Memory
Пример
платформы
PCIe
12
x86
Device
Device
OPENCL возможность абстракции от аппаратуры ПЛИС
main() {
read_data( … );
manipulate( … );
clEnqueueWriteBuffer( … );
clEnqueueNDRange(…,sum,…);
clEnqueueReadBuffer( … );
display_result( … );
}
OpenCL
Host Program + Kernels
Standard
gcc
Compiler
Altera
Offline
Compiler
EXE
AOCX
__kernel void sum
(__global float *a,
__global float *b,
__global float *y)
{
int gid = get_global_id(0);
y[gid] = a[gid] + b[gid];
}
Verilog
x86
13
Quartus II
Базовый маршрут: clCreateProgramWithBinary
Реализация подмножества OpenCL
в библиотеке поддержки
OpenCL.h
API
fp = fopen(“file.aocx","rb");
fseek(fp,0,SEEK_END);
lengths[0] = ftell(fp);
binaries[0] = (unsigned char*)malloc(sizeof(unsigned char)*lengths[0]);
rewind(fp);
fread(binaries[0],lengths[0],1,fp);
fclose(fp);
.cl
clGetPlatforms
cl_platform
clGetDevices
Program (exe)
const char**
const char**
const char**
clCreateProgramWithBinary
cl_device
Program (exe)
cl_program
kernel
Offline
Compiler
clCreateContext
clBuildProgram
cl_context
clCreateCommandQueue
exe
Kernel (src)
exe
Kernel (src)
exe
14
clEnqueueNDRangeKernel
.aocx
clCreateKernel
и clSetKernelArgument
cl_command
_queue
host.c
cl_program
cl_kernel
CL File
 OpenCL “Program”
 Bitstream
Наличие готовых аппаратных платформ
Интерконнект
Вычислитель (HPC)
Низкая латентность
Вычислительная мощность/
Пропускная способность памяти
Half-Size
Full-Size
Component
Single
Dual
Global Memory
DDR3-1600 and QDRII+ 550MHz
DDR3-1333/FPGA
IO Channels
2x10GbE (MAC/UOE)
None (Minimize IP overhead)
•
•
•
+++
Form Factor
Reference
Design
15
OPRA (Streaming)
Trading (with global memory access)
Option Pricing
Вычислительная платформа Altera HPC OpenCL
C/C++ API
host.c
OpenCL C
device.cl
Reference
Design
Compiler
Software Layer
Hardware Layer
Reference
Platform
Host
Device
64-bit
• RHEL 6.4
• Windows 7
16
s5_hpc (S5PE-DS)
Reference
Board
Сетевая платформа Altera OpenCL
C/C++ API
host.c
OpenCL C
device.cl
Reference
Design
Compiler
Software Layer
Hardware Layer
Reference
Platform
Host
Device
64-bit
• RHEL 6.4
• Windows 7
17
s5_hft (S5PH-Q)
Reference
Board
Пакет поддержки платы (BSP) и компилятор AOCL
DDR
DDR3 Memory Interface
DDR
DDR3 Memory Interface
QDR
QDRII Memory Interface
QDR
QDRII Memory Interface
QDR
QDRII Memory Interface
QDR
QDRII Memory Interface
10G
Network
Host
18
Built with
Altera
OpenCL
Compiler
Interconnect
CvP Update
OpenCL
Kernels
10Gb MAC/UOE Data
Interface
10Gb MAC/UOE Data
Interface
PCIe gen2x8 Host
Interface
Prebuilt
BSP with
standard
HDL
tools
OpenCL
Kernels
Однокристальная платформа OpenCL SoC

Мост управления - Lightweight


Старт/останов kernel, реконфигурация PLL, итд…
Мост FPGA-to-SDRAM

Отдельный мост (по умолчанию) для передачи данных между HPS и FPGA
 256bit – ширина моста @ 100Mhz ~ 2.6GB/s

FPGA внутренняя память

Быстрая тесно-связанная локальная память ОЗУ для FPGA-ядер (kernels)
 Хранение промежуточных данных перед передачей другому ядру

Вторичные мосты FPGA/HPS и HPS/FPGA
 32bits @50Mhz без DMA
FPGA
H2F/F2H
HPS
External
Memory
256bit,
100Mhz
ARM
Host
LWH2F
F2S
19
CSR
Kernels
32bit,
50Mz
FPGA
256bit External
100Mhz Memory
Поддержка - Multiple Devices

v13.1 Beta
Платформа Altera
 Несколько ПЛИС на плате
 Несколько плат на хосте
 Пример реализации: “8 slot Terabox” = 16 крупных ПЛИС
соединенных высокоскоростным каналом (разработка - Bittware)
Host
Memory
Device
Host
Device
Device
IO
20
Board
Board
Поддержка различных типов памяти

Interface
Host
IO
CU
Global
Memory1
Global
Memory2
IO

__kernel void foo(
global uint *data
__attribute((buffer_location(QDR) ))
) {
…
foo(data[i]);
…
}
21
Поддержка памяти:
 DDR
 Последовательный доступ
 QDR
 Random - доступ
 Внутренняя память
 Буфер TCM
Device
Host
Memory
v13.1 Beta
Атрибуты памяти:
Возможность определения
атрибутов для выделения буфера
на конкретном типе памяти
Потоковый доступ увеличение пропускной способности
v13.1 EAP
Vendor Extension
Channels
Standard OpenCL
Хост создает входной и выходной кернел
для отправки и получения данных
QDR
QDR
QDR
QDR
DDR
DDR
CvP Update
QDR
QDR
QDR
OpenCL
Kernels
OpenCL
Kernels
QDR
DDR3
Interface
DDR3
Interface
QDRII
Interface
QDRII
Interface
QDRII
Interface
QDRII
Interface
10G
Network
10Gb
Interface
10Gb
Interface
10G
Network
10Gb
Interface
10Gb
Interface
Host
Host
Interface
Host
Host
Interface
22
CvP Update
Interconnect
DDR
DDR3
Interface
DDR3
Interface
QDRII
Interface
QDRII
Interface
QDRII
Interface
QDRII
Interface
Interconnect
DDR
OpenCL
Kernels
OpenCL
Kernels
Доступная аппаратура
Маршрут разработки
Февраль, 2014
Висторовский Антон, BDM Altera
EBV Elektronik
Установка OpenCL

Часть пакета ACDS v13.1

Отдельная установка http://dl.altera.com/opencl/
Требует лицензированный пакетQuartus
Поддержка AOC на Windows и Linux
Требуется стандартный GCC компилятор для
компиляции кода хост-машины



 Visual Studio, Eclipse….
24
Что включено в пакет Altera SDK OpenCL?

Offline compiler (aoc)
 GCC based model

Altera OpenCL utility (aocl)
 Diagnostics for board installation
 Flash or program FPGA image
 Install board drivers (typically PCIe)

Host libraries
 Required by host code and provided by the vendor (Altera)


APB Board driver
Design examples
 FFT, vectoradd, matrixmult, moving average
25
Рекомендованные средства разработки Altera OpenCL



Наличие программы “Preferred board”, аппаратные
платформы с пакетом поддержки BSP
Для оценки, разработки, прототипирования или
серийного производства
Оттестированный SDK
 Altera SDK OpenCL проверен и отлажен
 Удобство старта работы по принципу Out-of-box

Программа уже включает в себя лицензии:
 Quartus II Development Kit Edition Software (1 год)
 Altera SDK for OpenCL License (1год + продление)
26
Доступность аппаратуры
Partner
Board
13.1 Release
Altera Device
Where to Get?
Altera
DK-DEV-5CSXC6NES
Cyclone V SX SoC
Part of ACDS 13.1
BittWare
S5PH-Q
Stratix V D5
Part of ACDS 13.1
S5PH-Q
Stratix V D8
Part of ACDS 13.1
S5PH-Q
Stratix V A7
Contact BittWare
S5PH-Q
Stratix V AB
Contact BittWare
S5PH-DS
Dual Stratix V AB
Contact BittWare
Terabox
8, S5PH-DS Boards
Contact BittWare
385-A7 Accelerator Card
Stratix V A7
Part of ACDS 13.1
385-D5 Accelerator Card
Stratix V D5
Part of ACDS 13.1
PLDA
XP5S620LP-40G
Stratix V A7
Contact PLDA
Terasic
DE5
Stratix V A7
Contact Terasic
Nallatech
27
Маршрут разработки Altera SDK OpenCL
Set Up
Документация - Getting Started Guide
Install Quartus II
v13.1 with Altera
SDK for OpenCL
Install C
Compiler or
Development
Environment
Obtain and setup
license from the
Self Service
Licensing Center
Install the FPGA
(OpenCL) board
aocl install
Design
Документация - Programming Guide
Develop kernel code
and compile on
CPU/GPU for
functional correctness
Build, compile &
link the host
application (Visual
Studio/GCC)
Compile the
OpenCL kernel
with Altera offline
Compiler (aoc)
Run the
application
Optimize
Документация - Optimization Guide
28
Optimize kernel for
FPGA hardware
Примеры и сравнения
Февраль, 2014
Висторовский Антон, BDM Altera
EBV Elektronik
AES Encryption


Encryption/decryption

256bit key

Counter (CTR) method
Advantage FPGA

Integer arithmetic
 Coarse grain bit operations
 Complex decision making

Results
Platform
Power
(W)
Performance
(GB/s)
Efficiency
(GB/s/W)
E5503 Xeon Processor
(single core)
est 80
0.01
1.25e-4
AMD Radeon HD 7970
est 100
0.33
3.30e-3
25
5.20
2.08e-1
PCIe385 A7 Accelerator
30
Multi-Asset Barrier Option Pricing

Monte-Carlo simulation

No closed form solution possible
 High quality random number
generator required
 Billions of simulations required


Used GPU vendors example code
Advantage FPGA


Optimizations


Complex Control Flow
Channels, loop pipelining
Results
Platform
Power
(W)
Performance
(Bsims/s)
Efficiency
(Msims/s/W)
W3690 Xeon Processor
130
.032
0.0025
nVidia Kepler20
212
10.1
48
45
12.0
266
Bittware S5-PCIe-HQ
31
Document Filtering

Unstructured data analytics


Bloom Filter
Advantage FPGA

Integer Arithmetic
 Flexible Memory Configuration

Results
Platform
Power
(W)
Performance
(MTs)
Efficiency
(MTs/W)
W3690 Xeon Processor
130
2070
15.92
nVidia Tesla C2075
215
3240
15.07
25
3602
144.08
PCIe385 A7 Accelerator
32
Smith-Waterman

Sequence Alignment


Scoring Matrix
Advantage FPGA

Integer Arithmetic
 SMT Streaming

Results
Platform
Power
(W)
Performance
(MCUPS)
Efficiency
(MCUPS/W)
W3565 Xeon Processor
140
40
.29
nVidia K20
225
704
3.13
25
32596
1303.00
PCIe385 A7 Accelerator
33
Итоги

Эффективность



Производительность

Высочайшая пропускная способность и низкое время доступа

Оптимизация внутреннего интерконнекта
Скорость и удобство разработки / Абстракция от HDL



Разработчику ПО предоставляется удобная среда разработки, ускоряющая путем
абстракции от нижнего уровня разработку на ПЛИС ускорителя гетерогенной платформы
Переносимость и время жизни

Переносимость кода на другие платформы (CPU, GPU)

Долгий жизненный цикл ПЛИС
Стоимость решения

34
Синтез параллельных вычислительных ядер под специальную задачу предоставляет
достичь высокого соотношения производительности на ватт мощности
Доступность однокристального решения SoC, совмещение хоста и ускорителя в одном
устройстве, значительно снижает стоимость системы ускорителя в реальном времени
Backup - слайды
Февраль, 2014
Висторовский Антон, BDM Altera
EBV Elektronik
35
Altera’s Next Generation Portfolio Goes to 10
High-Performance
Midrange
FPGAs & SoCs




TSMC
20 nm Process

1.15M LE; 53Mbit +
DDR4 @ 2666Mbps (Ext mem IF 1.2 Tbps)
3,356 18x19 Multipliers
96 XCVRs, up to 28.1 Gbps
PCIe HARD Gen3 x8 and Dual Cortex A9
Pin Migration
High End
FPGAs
& SoCs
Intel 14 nm
Tri-Gate Process
36





2x performance of Stratix V FPGAs
Up to 70% lower power vs. Stratix V FPGAs
4M+ LEs, Up to 56 Gbps XCVRs
Up to 10 TFLOPs DSP performance
HMC support
Развитие вычислительных решений
Programmability
CPU
Single-Core
C/C++
Программирование
в гетерогенной
системе
Multi-Core
AVX/OpenMP
Aрхитектура
PCIe ускоритель
SOC решение
Driver
API
Stream
CUDA
Язык программирования
OpenCL
GPGPU
37
Performance
Видение потенциальных применений
Current Target
GPU
Multi-Core CPU
DSP/
Embedded
FPGA
Scope
System
(Heterogeneous Platform)
Device
IP Block
Application
• High Performance Computing
(HPC)
• Finance (HFT)
• Energy&Oil
• Military
• Medical
• Automotive
• Industrial
• Communications (baseband)
• Broadcast
• Consumer
Designer
Programmer
Embedded Programmer
Hardware Designer
Design Flow
CUDA/OpenCL
Code Composer Studio (TI C)
Quartus II (Verilog/VHDL)
Design Activity
Task Parallelism
Data Parallelism
Real Time Function Acceleration
IP Design and Integration
Design Constraints
• Throughput/Latency
• Power Efficiency
• Real Time Execution
• Cost
•
•
•
•
Data Type
• DP/SP Floating Point
SP Floating Point
32-bit Fixed Point
Fixed Point
Hardware Knowledge
None (Coding Style Guidelines)
Limited (macro architecture
bandwidth level)
38
Today
HLD
Beta
2014
HLD
Clock Frequency
Resource Utilization
Interface Requirements
Power
2014
Yes (protocol-level, timing closure,
micro architecture)
Возможность генерации пакета поддержки платы BSP
13.1 EAP
DDR3 Memory
Interface
Avalon MM
DDR
DDR3 Memory
Interface
Avalon MM
QDR
QDRII Memory
Interface
Avalon MM
QDR
QDRII Memory
Interface
Avalon MM
QDR
QDRII Memory
Interface
Avalon MM
QDR
QDRII Memory
Interface
Avalon MM
10G
Network
Host
Interconnect
DDR
10Gb MAC/UOE Data
Avalon
Interface
ST
10Gb MAC/UOE Data
Avalon
Interface
ST
PCIe gen2x8
Host Interface
CvP Update
OpenCL
Kernels
Avalon MM
Interfaces to compiler

Host CPU Interface: Avalon Memory Map

Global Memory:
Avalon Memory Map

Option IO:
Avalon Streaming
39
OpenCL
Kernels
OpenCL Roadmap – дальнейшее развитие
2013
2014
13.1
2015
14.0
14.1
15.0
Multiple Devices
Channels
Image
Image
(SP) Floating Point
(DP) Floating Point
(DP) Floating Point
(HP) Floating Point
Task Optimizations
QoR Optimizations
ICD
Partial Reconfiguration
1.2 Conformance
1.0 Conformance
Heterogeneous Memory
64 Bit Global memory
ARM64 RTE
ARM64 RTE
CV SoC Dev Kit
CV SoC Dev Kit
A10 SoC Dev Kit
S10 SoC Dev Kit
Custom BSP
Custom BSP w/
HPC/Network Platforms
EFI
EFI
Rapid Prototyping
Rapid Prototyping
Emulation
Profiling
Hello OpenCL
Asian Options
Device Channel
OPRA
Beta
Production
Designs
Планы по развитию
2013
2014
13.1
Quality
2015
14.0
Channels
Multiple Devices
Heterogeneous
Memory
Floating Point (SP)
Task
14.1
15.0
Floating Point (DP)
Power Series RT
Conformance 1.0
CV SoC Dev Kit
QoR Optimizations
RTE vs SDK install
Power Series RTE
Hello OpenCL
64bit Glob Mem
Asian Options
OPRA
CV SoC Dev Kit
41
APB custom board
Rapid Prototyping
16.1
Device Virtualization Device Virtualization Device Virtualization
Partial
Partial
Reconfiguration
Reconfiguration
Floating Point (HP) Floating Point (HP)
Image
SVM
Pipe
Conformance 1.2
Conformance 2.0
EFI
Emulation
Profiling
CV SoC Dev Kit
ARM64 RTE
ICD
Device Channel
EFI
APB custom board
(HFT/HPC)
Rapid Prototyping
Rapid Prototyping
APB
Gen2x8 with CvP
DDR3
QDRII
QDRII
10GbE
10GbE
ARM64 RTE
EFI
Profiling
A10 FPGA Dev Kit
Technology
Advantage
16.0
Partial
Reconfiguration
Floating Point (DP)
Image
C++ Bindings
Emulation
15.1
Channels
Conformance 1.0
Productivity
2016
A10 SoC Dev Kit
S10 SoC Dev Kit
S10 SoC Dev Kit
Rapid Prototyping
Rapid Prototyping
APB
RLDRAM
QDRIV
Internal RAM
40GbE
EAP
Beta
Production
Design
gen3x16 with PR
DDR4
HMC
2.5D Memory
v13.1 Altera SDK for OpenCL – New Feature Overview
Feature
Description
Production
Single threaded task
optimizations
Component Specific Optimizations
Production
Aggressive area reduction in
OpenCL kernels leveraging loop
unrolling techniques
OpenCL Reference Design
Production
“Hello World”
Cyclone V SoC Support
Beta
ARM Cortex-A9 as host
Heterogeneous Memory Platforms
Beta
Support mixed memories
Multi-Platform Support
Beta
Multiple devices, multiple
boards
Functional Debug
Early Access
Ability to debug OpenCL kernels
on x86 platform
Channels
Early Access
API update for ease of use
Altera Preferred Board Support
Package
Early Access
Create a custom OpenCL
hardware platform
Task Optimizations
42
Status
Требования к хост-машине и лицензирование
Altera SDK OpenCL

Altera SDK for OpenCL Licensing
 Purchase a 1 year perpetual license
 Fixed & float available
 60-day evaluation license available on request
 Requires Quartus II v13.1 Subscription Edition or Development Kit Edition

OS
 Microsoft 64-bit Windows 7
 Red Hat Enterprise 64-bit Linux (RHEL) 6.x

Memory requirements
 SDK: Computer equipped with at least 16 GB RAM
 Quartus II: Refer to memory requirements for target FPGA
43
Документация




White papers on OpenCL
OpenCL online demos
OpenCL design examples
Instructor-Led training
 OpenCL for Altera FPGAs Training by Acceleware – (4 Day)
 Parallel Computing with OpenCL Workshop by Altera – (1 Day)
 Optimization of OpenCL for Altera FPGAs Training by Altera – (1 Day)

Online training
 Introduction to Parallel Computing with OpenCL
 Writing OpenCL Programs for Altera FPGAs
 Running OpenCL on Altera FPGAs

44
OpenCL board partners page
Consumer (Japan)

Image Processing

Adaptive weighted images
pxy  

W
Advantage FPGA


c1 ij d1 xy  c1 ( i1) j d 2 xy  c2 ij d xy  c2 ( i1) j d 2 xy
Integer Arithmetic
Results
Platform
Power
(W)
Performance
(FPS)
Efficiency
(FPS/W)
W3565 Xeon Processor
est 130
0.05
.0004
nVidia Quadro 4000
est 150
2.94
.0200
21
4.29
.2040
PCIe385 A7 Accelerator
45