---
title: re:Invent 2017 で FPGA に入門してみた
tags: 
author: [白鳥 貴久 | Takahisa Shiratori](https://convert.docswell.com/user/takashiratori)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/3JK91PXGJD.jpg?width=480
description: My challenge to learn FPGA in re:Invent 2017 JAWS-UG HPC #12, 15th December, 2017 https://jawsug-hpc.connpass.com/event/73951/
published: December 15, 17
canonical: https://convert.docswell.com/s/takashiratori/KEY61E-2017-12-15-105401
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/3JK91PXGJD.jpg)

re:Invent 2017 で FPGA に入門してみた
株式会社サーバーワークス
白鳥 貴久
2017年12月15日 JAWS-UG : HPC#12勉強会


# Page. 2

![Page Image](https://bcdn.docswell.com/page/LE3WQX55E5.jpg)

参加セッション
AMF304 - Optimizing Design and Engineering Performance in the Cloud for Manufacturing
CMP207 - High Performance Computing on AWS
AMF305 - Autonomous Driving Algorithm Development on Amazon AI
STG205 - #EarthonAWS: How NASA Is Using AWS
STG206 - Big Data: Data Lakes and Data Oceans
CMP323 - AWS Batch: Easy and Efficient Batch Computing on AWS
CMP333 - How to Get the HPC Best-in-class Performance via Intel Xeon Skylake Processors and
AWS C5 Instances with Ease of Deployment Through Rescale
CMP306 - Architectures for HPC/HTC Workloads on AWS
CMP402 - Accelerate Your C/C++ Applications with Amazon EC2 F1 Instances
MCL212-R2 - [REPEAT 2] NEW LAUNCH! AWS DeepLens workshop: Building Computer Vision
Applications


# Page. 3

![Page Image](https://bcdn.docswell.com/page/8EDK92DY7G.jpg)

HPC関連アップデート
AWS Batch Array Job
ジョブの依存関係を管理しやすく
なった
Spread Placement Group
Multi-AZにまたがることができる
Placement Group
Spot Instance Hibernation
Spot instance が削除されそうな
ときに、メモリの情報を退避する
Sequential
dependency
n to n dependency
3


# Page. 4

![Page Image](https://bcdn.docswell.com/page/V7PKZ1X2J8.jpg)

FPGAの話
4


# Page. 5

![Page Image](https://bcdn.docswell.com/page/2JVVWYLXJQ.jpg)

※去年(re:Invent 2016)の画像です


# Page. 6

![Page Image](https://bcdn.docswell.com/page/5EGLD9XRJL.jpg)

FPGAしてみるために
「FPGAの原理と構成」
Workshop in re:Invent 2017
6


# Page. 7

![Page Image](https://bcdn.docswell.com/page/4JQY1W8Y7P.jpg)

FPGA(Field-Programmable Gate Array)とは
プログラムによって回路を構成できるデバイス
ここがすごい
MIMD(Multiple Instruction stream, Multiple Data stream)な処理ができる
Systolic Arrayによる行列積演算
このあたりは気を付けるべし
回路設計時に物理デバイスのサイズを考慮する
まあCPUで処理するときもそうか
演算の桁数が制約されやすい
いろいろ修得が難しい（個人の感想です）
7


# Page. 8

![Page Image](https://bcdn.docswell.com/page/K74WRK2ZE1.jpg)

Workshopの流れ
Hello World
動画エンコードを題材としたFPGAによる高速化体験
統合開発環境 SDAccel を使った開発・ビルド・最適化
使用教材
https://github.com/awslabs/aws-fpga-appnotes/blob/master/reInvent17_Developer_Workshop
/README.md
8


# Page. 9

![Page Image](https://bcdn.docswell.com/page/LJ1YQXMDEG.jpg)

Hello World
1. Connecting to your F1 instance
F1インスタンスのLaunch
Remote Desktop 接続
Hello Worldのビルドと実行
ホストアプリケーションをビルドする
デバイス(FPGA)側での実行ファイルは
コンパイル済
10+32=42 が 256命令 同時に実行さ
れる
9


# Page. 10

![Page Image](https://bcdn.docswell.com/page/GJWGMN3872.jpg)

動画エンコードを題材としたFPGAによる高速化体験
2. Experiencing F1 acceleration
High Efficiency Video Coding (HEVC)による動画圧縮
CPUとFPGAで実行して比較
10


# Page. 11

![Page Image](https://bcdn.docswell.com/page/4EZLQ3V973.jpg)

統合開発環境 SDAccel を使った開発・ビルド・最適化
3. Developing F1 applications
SDAccelの画面の見方を知る
サンプルとして逆離散コサイン変換(IDCT)を実行する
実行レポートの読み方を知る
コードを改善してBuildして再実行する
FPGAで実行する
11


# Page. 12

![Page Image](https://bcdn.docswell.com/page/Y76W6X5D7V.jpg)

まとめ
re:Invent 2017 に行ってきました
FPGA始めてみたかったので、
Workshop参加しました
本を読みました
分からなかったこと（あとで詳しくしらべる）
どこまでホストで実行されていて、どこからデバイス(FPGA)で実行されている
のか
（C++ではなく）Cで書くならどうするか
OpenCLによるFPGAプログラミング
12


