Leishmania (Leishmania) amazonensis altera los parámetros ...
OPENCL и Altera FPGA для улучшения соотношения...
Transcript of OPENCL и Altera FPGA для улучшения соотношения...
Применение стандарта OPENCL и Altera FPGA
для улучшения соотношения производительность/ватт
мощности при выполнении параллельных вычислений
в гетерогенной системе
Февраль, 2014
Висторовский Антон, BDM Altera
EBV Elektronik
Содержание
Участие Altera в
развитии стандарта
Обзор решения Altera Маршрут ПО (SW)
Аппаратура (HW)
Отличительные
особенности
Примеры
2
Введение
Февраль, 2014
Висторовский Антон, BDM Altera
EBV Elektronik
Подход Altera: увеличение производительности
гетерогенной вычислительной системы
4
Максимизация пропускной способности
Минимизация латентности
Увеличение операций в сек Быстрее доступ к данным
Принципы параллелизма
• Конвейер
• Инструкции и данные
• Процессы
• Дупликация (SPMD)
• Процесс SMT
(Multi-threading)
Оптимизация доступа к памяти
• Уход от трансферта/копирования
• Работа в локальной памяти, а не в
общем ресурсе памяти
ПЛИС (FPGA) – массивно-параллельная архитектура
Массивная параллельность
обработки ПЛИС Миллионы логических элементов
Тысячи блоков памяти 20Kb
Тысячи масштабируемых DSP блоков
Десятки высокоскоростных
трансиверов
Аппаратные процессорные системы и
контроллеры памяти
Аппаратная плавающая точка
Центричность на HDL Языки аппаратуры VHDL/Verilog
Маршрут проектирования
5
I/O
I/O
I/O
I/O
Программируемая
коммутация
ЛЭ, логический
элемент
ПЛИС - мощная вычислительная, реконфигурируемая
и энергоэффективная вычислительная система
Основное преимущество:
Наличие синтезируемых и
аппаратных ресурсов
Оптимизация под задачу Логические блоки
Синтезируемый процессор Nios
Аппаратный ARM Сortex A9/А53
DSP блоки
Локальная память
Выполнение задачи на
пределе аппаратных
возможностей и
энергоэффективность Вычислительные ядра SMT
Репликация SPMD или
конвейеризация для увеличения
пропускной способности
6
энергоэффективность
Processor Memory
Processor Memory
Processor Memory
I/O
I/O
I/O
I/O
Processor Memory
Processor Memory
Обзор OpenCL
Февраль, 2014
Висторовский Антон, BDM Altera
EBV Elektronik
Host Device
C/C++
API
OpenCL
C
Стандарт 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
Этапы развития Altera OpenCL
2010 НИР Toronto Technology Center
2011 Разработка Proof of concept
Бета-тесты (10)
2012 Программа раннего
доступа Демо - Supercomputing ‘12
Оценка 60 заказчиками
2013 Общая доступность Официальный аннонс
Прохождение v1.0 conformance
Public release v13.1 Installation image accessible
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
9
OpenCL подтвержденная совместимость Altera
Первый FPGA-вендор, прошедший
сертификацию совместимости OpenCL OpenCL v1.0 спецификация
>8500 программ оттестировано для прохождения
10
http://www.khronos.org/conformance/adopters/conformant-companies
http://www.khronos.org/conformance/adopters/conformant-products
Модель гетерогенной вычислительной платформы
11
OpenCL
Platform
Model
Host
(Compute) Device
Compute Unit
Processing
Element
Example
Platform x86
PCIe
Host
Memory
Global
Memory
OpenCL
Модель
платформы
Синтезируемые ядра под ресурсоемкость задачи
12
Host
Пример
платформы x86
PCIe
Device Device
Host
Memory
Global
Memory
OPENCL возможность абстракции от аппаратуры ПЛИС
13
Altera
Offline
Compiler
Standard
gcc
Compiler
AOCX EXE
OpenCL
Host Program + Kernels
main() { read_data( … ); manipulate( … ); clEnqueueWriteBuffer( … ); clEnqueueNDRange(…,sum,…); clEnqueueReadBuffer( … ); display_result( … ); }
__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
Quartus II
x86
Базовый маршрут: clCreateProgramWithBinary
14
host.c
const char**
const char**
const char**
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);
clCreateProgramWithBinary
cl_program
clBuildProgram
Program (exe)
Program (exe)
cl_program Kernel (src)
Kernel (src)
exe
exe
clCreateKernel и clSetKernelArgument
cl_kernel
clEnqueueNDRangeKernel
clGetPlatforms
clGetDevices
OpenCL.h
API
cl_context
clCreateContext
cl_platform
cl_device
cl_command
_queue
clCreateCommandQueue
exe
Offline
Compiler
.cl
kernel
.aocx
CL File
OpenCL “Program”
Bitstream
Реализация подмножества OpenCL
в библиотеке поддержки
Наличие готовых аппаратных платформ
15
Интерконнект Вычислитель (HPC)
+++ Низкая латентность Вычислительная мощность/
Пропускная способность памяти
Form Factor
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)
Reference
Design
• OPRA (Streaming)
• Trading (with global memory access)
• Option Pricing
Вычислительная платформа Altera HPC OpenCL
16
Device
C/C++ API
Software Layer Hardware Layer
Compiler
OpenCL C
Reference
Platform
Reference
Board
Reference
Design
host.c device.cl
Host
64-bit
• RHEL 6.4
• Windows 7
s5_hpc (S5PE-DS)
Сетевая платформа Altera OpenCL
17
Device
C/C++ API
Software Layer Hardware Layer
Compiler
OpenCL C
Reference
Platform
Reference
Board
Reference
Design
host.c device.cl
Host
64-bit
• RHEL 6.4
• Windows 7
s5_hft (S5PH-Q)
Пакет поддержки платы (BSP) и компилятор AOCL
18
PCIe gen2x8 Host
Interface
CvP Update
Inte
rco
nn
ec
t
DDR3 Memory Interface
10Gb MAC/UOE Data
Interface
10Gb MAC/UOE Data
Interface
DDR3 Memory Interface
QDRII Memory Interface
QDRII Memory Interface
QDRII Memory Interface
QDRII Memory Interface
OpenCL
Kernels
OpenCL
Kernels
DDR
DDR
QDR
QDR
QDR
QDR
10G
Network
Host Prebuilt
BSP with
standard
HDL
tools
Built with
Altera
OpenCL
Compiler
Однокристальная платформа 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
19
ARM
Host
FPGA
Kernels
HPS
External
Memory
H2F/F2H
LWH2F CSR
F2S
256bit,
100Mhz
32bit,
50Mz
256bit
100Mhz
FPGA
External
Memory
Поддержка - Multiple Devices v13.1 Beta
Платформа Altera Несколько ПЛИС на плате
Несколько плат на хосте
Пример реализации: “8 slot Terabox” = 16 крупных ПЛИС соединенных высокоскоростным каналом (разработка - Bittware)
20
Board Device
Board Device
Device Host
Host
Memory
IO
Поддержка различных типов памяти v13.1 Beta
Поддержка памяти: DDR
Последовательный доступ
QDR
Random - доступ
Внутренняя память
Буфер TCM
Атрибуты памяти:
Возможность определения
атрибутов для выделения буфера
на конкретном типе памяти
21
Host
Host
Memory
IO
Device
Global
Memory1
Inte
rface
CU
IO
Global
Memory2
__kernel void foo( global uint *data __attribute((buffer_location(QDR) )) ) { … foo(data[i]); … }
Потоковый доступ -
увеличение пропускной способности v13.1 EAP
22
Standard OpenCL
Vendor Extension
Channels Хост создает входной и выходной кернел
для отправки и получения данных
Host
Interface
CvP Update
Inte
rco
nn
ect
DDR3
Interface
10Gb
Interface
10Gb
Interface
DDR3
Interface
QDRII
Interface
QDRII
Interface
QDRII
Interface
QDRII
Interface
OpenCL
Kernels
OpenCL
Kernels
DDR
DDR
QDR
QDR
QDR
QDR
10G
Host Host
Interface
CvP Update
Inte
rco
nn
ect
DDR3
Interface
10Gb
Interface
10Gb
Interface
DDR3
Interface
QDRII
Interface
QDRII
Interface
QDRII
Interface
QDRII
Interface
OpenCL
Kernels
OpenCL
Kernels
DDR
DDR
QDR
QDR
QDR
QDR
Host
Network 10G
Network
Доступная аппаратура
Маршрут разработки
Февраль, 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
Доступность аппаратуры 13.1 Release
27
Partner Board 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
Nallatech 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
Маршрут разработки Altera SDK OpenCL
28
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
Build, compile &
link the host
application (Visual
Studio/GCC)
Run the
application
Se
t U
p
Desig
n
Optimize kernel for
FPGA hardware
Op
tim
ize
Документация - Getting Started Guide
Документация - Programming Guide
Документация - Optimization Guide
Develop kernel code
and compile on
CPU/GPU for
functional correctness
Compile the
OpenCL kernel
with Altera offline
Compiler (aoc)
Примеры и сравнения
Февраль, 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
30
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
PCIe385 A7 Accelerator 25 5.20 2.08e-1
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
Complex Control Flow
Optimizations
Channels, loop pipelining
Results
31
Platform Power
(W)
Performance
(Bsims/s)
Efficiency
(Msims/s/W)
W3690 Xeon Processor 130 .032 0.0025
nVidia Kepler20 212 10.1 48
Bittware S5-PCIe-HQ 45 12.0 266
Document Filtering
Unstructured data analytics
Bloom Filter
Advantage FPGA
Integer Arithmetic
Flexible Memory Configuration
Results
32
Platform Power
(W)
Performance
(MTs)
Efficiency
(MTs/W)
W3690 Xeon Processor 130 2070 15.92
nVidia Tesla C2075 215 3240 15.07
PCIe385 A7 Accelerator 25 3602 144.08
Smith-Waterman
Sequence Alignment
Scoring Matrix
Advantage FPGA
Integer Arithmetic
SMT Streaming
Results
33
Platform Power
(W)
Performance
(MCUPS)
Efficiency
(MCUPS/W)
W3565 Xeon Processor 140 40 .29
nVidia K20 225 704 3.13
PCIe385 A7 Accelerator 25 32596
1303.00
Итоги
Эффективность Синтез параллельных вычислительных ядер под специальную задачу предоставляет
достичь высокого соотношения производительности на ватт мощности
Производительность Высочайшая пропускная способность и низкое время доступа
Оптимизация внутреннего интерконнекта
Скорость и удобство разработки / Абстракция от HDL Разработчику ПО предоставляется удобная среда разработки, ускоряющая путем
абстракции от нижнего уровня разработку на ПЛИС ускорителя гетерогенной платформы
Переносимость и время жизни Переносимость кода на другие платформы (CPU, GPU)
Долгий жизненный цикл ПЛИС
Стоимость решения Доступность однокристального решения SoC, совмещение хоста и ускорителя в одном
устройстве, значительно снижает стоимость системы ускорителя в реальном времени
34
Backup - слайды
Февраль, 2014
Висторовский Антон, BDM Altera
EBV Elektronik
35
Altera’s Next Generation Portfolio Goes to 10
36
High End
FPGAs
& SoCs
Intel 14 nm
Tri-Gate Process
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
High-Performance
Midrange
FPGAs & SoCs
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
Pin Migration
Развитие вычислительных решений
37
Performance
GPGPU
Single-Core Multi-Core
C/C++ AVX/OpenMP
Программирование
в гетерогенной
системе
Aрхитектура
PCIe ускоритель
SOC решение
Язык программирования
OpenCL
Programmability
CPU
Dri
ve
r S
tre
am
AP
I C
UD
A
Видение потенциальных применений
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
• Clock Frequency
• Resource Utilization
• Interface Requirements
• Power
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)
Yes (protocol-level, timing closure,
micro architecture)
38
Today Beta 2014 2014
HLD HLD
Возможность генерации пакета поддержки платы BSP
13.1 EAP
Interfaces to compiler
Host CPU Interface: Avalon Memory Map
Global Memory: Avalon Memory Map
Option IO: Avalon Streaming
39
PCIe gen2x8
Host Interface
CvP Update
Inte
rco
nn
ec
t
DDR3 Memory
Interface
10Gb MAC/UOE Data
Interface
10Gb MAC/UOE Data
Interface
DDR3 Memory
Interface
QDRII Memory
Interface
QDRII Memory
Interface
QDRII Memory
Interface
QDRII Memory
Interface
OpenCL
Kernels
OpenCL
Kernels
DDR
DDR
QDR
QDR
QDR
QDR
10G
Network
Host Avalon MM
Avalon MM
Avalon MM
Avalon MM
Avalon MM
Avalon MM
Avalon MM
Avalon ST
Avalon ST
OpenCL Roadmap – дальнейшее развитие
Beta
Production
Designs
2013 2014 2015
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.0 Conformance 1.2 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
OPRA Device Channel
13.1 14.0 14.1 15.0
Планы по развитию
41
2013
2014 2015 2016
Quality Channels Channels
Multiple Devices Device Virtualization Device Virtualization Device Virtualization
Heterogeneous
Memory
Partial
Reconfiguration
Partial
Reconfiguration
Partial
Reconfiguration
Floating Point (SP) Floating Point (DP) Floating Point (DP) Floating Point (HP) Floating Point (HP)
Task Image Image SVM
C++ Bindings Pipe
Conformance 1.0 Conformance 1.2 Conformance 2.0
Conformance 1.0
CV SoC Dev Kit
QoR Optimizations
Productivity RTE vs SDK install
Power Series RT Power Series RTE
ARM64 RTE ARM64 RTE
64bit Glob Mem ICD
Hello OpenCL Asian Options
OPRA Device Channel
EFI EFI EFI
Emulation Emulation
Profiling Profiling
CV SoC Dev Kit CV SoC Dev Kit
A10 FPGA Dev Kit A10 SoC Dev Kit
S10 SoC Dev Kit S10 SoC Dev Kit
Technology
Advantage APB custom board
APB custom board
(HFT/HPC)
Rapid Prototyping Rapid Prototyping Rapid Prototyping
Rapid Prototyping
APB
Rapid Prototyping
APB
Gen2x8 with CvP gen3x16 with PR
DDR3 RLDRAM DDR4 2.5D Memory
QDRII QDRII QDRIV HMC
Internal RAM
10GbE 10GbE 40GbE
13.1 14.0 14.1 15.0 15.1 16.0 16.1
EAP
Beta
Production
Design
v13.1 Altera SDK for OpenCL – New Feature Overview
42
Feature Status Description
Task Optimizations 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
Требования к хост-машине и лицензирование
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
OpenCL board partners page
44
Consumer (Japan)
Image Processing
Adaptive weighted images
Advantage FPGA
Integer Arithmetic
Results
45
Platform Power
(W)
Performance
(FPS)
Efficiency
(FPS/W)
W3565 Xeon Processor est 130 0.05 .0004
nVidia Quadro 4000 est 150 2.94 .0200
PCIe385 A7 Accelerator 21 4.29 .2040
W
dcdcdcdcp
xyjixyijxyjixyij
xy
2222111)1()1(