GPU-FPGA 協調プログラミング
を実現するコンパイラの開発
綱島隆太1、小林諒平2,1、藤田典久2、中道安祐未1 、朴泰祐2,1
Seyong Lee3、Jeffrey Vetter3、村井均4、佐藤三久4
1 筑波大学 システム情報工学研究科
2 筑波大学 計算科学研究センター
3 Oak Ridge National Laboratory
4 理化学研究所 計算科学研究センター
2019/12/18情報処理学会 第172回ハイパフォーマンスコンピューティング研究発表会
背景(HPC分野の動向)
•アクセラレータがHPCにおけるランキング TOP500 (2019/11)の
上位10機中7機に搭載されている
–アクセラレータとは?
• コンピュータの演算速度を高めるための追加ハードウェア
• 例:GPU、メニーコアCPU、FPGA
–特に高い並列演算性能に加え電力効率の良さからGPUの搭載率が高い
2019/12/18情報処理学会 第172回ハイパフォーマンスコンピューティング研究発表会 1
背景(GPUの欠点)
2019/12/18情報処理学会 第172回ハイパフォーマンスコンピューティング研究発表会 2
• 条件分岐
• データレベルの並列性が低い処理
• 通信が多い処理(データ交換、制御など)
GPUの苦手な処理
GPUの苦手な処理をFPGAにより高速化
• 宇宙物理分野におけるLocally Essential Tree (LET) 生成のFPGAオフロード
– 計算+通信のオフロードにより、CPU実行に対し7.2倍高速化
[Tsuruta, C. et al, Off-loading let generation to peach2: A switching hub for high performance gpu
clusters. HEART, 2015]
背景(FPGA)
•FPGA(Field Programmable Gate Array)
–内部の論理回路を何度も再構成できる半導体チップ
2019/12/18情報処理学会 第172回ハイパフォーマンスコンピューティング研究発表会 3
• 回路の設計が自由 ⇨ 柔軟性が高い
• データレベルの並列性が低い処理も高速化可能
– 並列化モデルはSIMDだけでなく、パイプラインも実装可
• ハイエンドFPGA同士はCPUを介さずに直接通信
可能 ⇨ 通信が高速
利点
• 扱える問題の規模(リソース)に限りがある
– 演算処理を直接回路化するため
• 演算速度の理論最高性能はGPUに敵わない
– GPUとの連携を前提に活用
欠点
FPGAとGPUで互いの欠点を補うように演算 ⇨ さらなる高速化を目指す
プログラミングコストの問題
• アクセラレータのプログラミングはCPUのみよりずっと複雑
– 新たな言語の記述スキルを習得しなければならないコスト
• CUDA、OpenCLはハードウェア周りを細かく指定する必要がある
• 高度なパフォーマンスチューニングは敷居が高い
• GPUで主に利用されているCUDAはFPGAでは使えない
– FPGAは別の言語(OpenCL)で記述する必要がある
– GPUとFPGAを両方使うには、ますますプログラミングコストが高くなる
2019/12/18情報処理学会 第172回ハイパフォーマンスコンピューティング研究発表会 4
GPUとFPGAの演算を統一的に記述できるプログラミング環境が必要
目的
•GPUとFPGAを相補的に利用するプログラムを開発できる統一した
APIによるプログラミング環境の実現
–本研究ではこのためのメタコンパイラを開発
2019/12/18 5
一つのプログラム
ホストで行う処理
FPGAで行う処理
GPUで行う処理
情報処理学会 第172回ハイパフォーマンスコンピューティング研究発表会
• 一つのプログラムとして
GPUとFPGA両方の処理
を記述できるようにする
–実行時には一つのプロセスから
GPU-FPGAの協調動作を制御させる
既存のプログラミング環境
•OpenCL
–ヘテロジニアスな並列計算機環境に対応したプログラミング言語
–GPU、FPGAにも対応
• FPGAではハードウェア記述言語(HDL)と比べ抽象化した記述が可能
2019/12/18情報処理学会 第172回ハイパフォーマンスコンピューティング研究発表会 6
• CUDAと比較して使用できるライブラリ群が少ない
• CUDAよりも記述が複雑
• OpenCLによりFPGAで性能を出すにはかなりの知見が必要
– アプリケーションユーザーにとっては依然としてプログラミングコストが高い
問題点
既存のプログラミング環境
•OpenCL
–ヘテロジニアスな並列計算機環境に対応したプログラミング言語
–GPU、FPGAにも対応
• FPGAではハードウェア記述言語(HDL)と比べ抽象化した記述が可能
2019/12/18 7
• CUDAと比較して使用できるライブラリ群が少ない
• CUDAよりも記述が複雑
• OpenCLによりFPGAで性能を出すにはかなりの知見が必要
– アプリケーションユーザーにとっては依然としてプログラミングコストが高い
問題点
OpenCLによる統一的な記述
はデメリットが多い
情報処理学会 第172回ハイパフォーマンスコンピューティング研究発表会
既存のプログラミング環境(続き)
•CUDAとOpenCLの組み合わせにより、GPUとFPGAを一つのプロセス
から利用する
–我々はこの手法が実現可能であることを確認している
[中道安祐未. et al, GPU・FPGA 混載ノードにおけるヘテロ演算加速プログラム環境に関する研究, HPC168, 2019]
2019/12/18情報処理学会 第172回ハイパフォーマンスコンピューティング研究発表会 8
• それぞれ全く異なる言語で記述しなければならない
– 2つの言語のプログラミングスキルが必要
– ますますハードルが上がる
• CUDA、OpenCL 両方のホストプログラムの用意が必要
– 記述量が膨大になりかなりユーザーの負担が大きい
• OpenCLに挙げた問題点は依然として残っている
問題点CUDA OpenCL
object object
実行
ファイル
リンク
分割
コンパイル
GPU FPGA
OpenACC
• OpenACC
– アクセラレータへのオフロードを行うためのプログラミング規格で、C、C++、Fortran
対応
– 複数種類のアクセラレータに対応することを想定している
– OpenCLと異なり、OpenMPのようなディレクティブ(指示文)形式の言語拡張
2019/12/18 9
• CUDA、OpenCLに比べて抽象度が高い
– ハードウェアレベルの細かな指定を省ける
– 複雑だったプログラミングコストを大幅に減らせる
• ディレクティブの挿入のみでオフロードが可能
– 簡潔に記述できる
– 移植性が高い
• GPU で高い性能を実現可能
利点
情報処理学会 第172回ハイパフォーマンスコンピューティング研究発表会
• 基本的にCUDAより若干性能が劣る
• FPGAに対応するコンパイラが市場に
存在しない
欠点
OpenACCのアクセラレータ対応状況
•対応アクセラレータはコンパイラの実装次第
–GPU、メニーコアCPUに対応したものが一般向けに存在
• 特にPGI CompilerはNVIDIA社の傘下の企業が開発しており、CUDAに迫る性能を実現可能
–FPGAには研究用コンパイラのみ対応
• 米国 Oak Ridge National Laboratory (ORNL) で開発中の OpenARC
[Lee, S. et al., OpenACC to FPGA: A Directive-Based High-Level Programming Framework for
High-Performance Reconfigurable Computing, SC18, 2018]
2019/12/18 10
本研究ではOpenACCを用いた統一プログラミング環境を提案
情報処理学会 第172回ハイパフォーマンスコンピューティング研究発表会
問題点
OpenACCの複数アクセラレータ対応
2019/12/18 11情報処理学会 第172回ハイパフォーマンスコンピューティング研究発表会
OpenACC
program
OpenACC
program
(a) GPUのみ実行 (b) FPGAのみ実行 (c) 一度に両方実行
可
能
可
能
不
可
能
OpenACC
program
GPU FPGA
GPU + FPGA
– OpenACC ではマルチデバイス同時実行
を想定していない
• OpenACC 2.x まではディレクティブによる
オフロード先の指定自体が非対応
• 最新の3.0でもオフロードする処理(ブロック)毎
にオフロード先を指定することはできない
• 一つのプロセスで一度に異なる種類のアクセラレータを組合わせて利用できない
提案手法
•本研究では既存のGPU、FPGA対応OpenACCコンパイラを活用
2019/12/18 12
① 一つのプログラムとして記述
• オフロード先は指定できるようにOpenACCの
定義を拡張する
② 既存のコンパイラを利用できるよう
に両アクセラレータ向けに分割
• 分割にはメタコンパイラを用いて
ソースtoソースのコンパイルを行う
• このメタコンパイラは本研究で新たに開発
③ それぞれコンパイル&リンク
• このバックエンドコンパイラにはそれぞれの
アクセラレータ対応コンパイラを用いる
一つの
GPU-
協調計算
実行
ファイル
GPU向け
ファイル
FPGA向け
ファイル
OpenACC
ソースファイル
❷ ❸
❶
情報処理学会 第172回ハイパフォーマンスコンピューティング研究発表会
2つのOpenACCプログラムをリンクして一つの実行
ファイルを生成、正しく実行可能であることは確認済
一つのプログラム
ホストで行う処理
FPGAで行う処理
GPUで行う処理
開発したメタコンパイラー
•理研と共同研究しているOmni Compilerに実装
–後述のバックエンドコンパイラの仕様から対応言語はC
–開発段階であり記述に制限はあるが、提案手法の通りにファイル分割可能
• 例:グローバルな宣言はヘッダーに記述する必要がある
•今回コアとなるソース to ソース変換・分割部分を
Multi-Hybrid OpenACC Translator と呼ぶ
–以後、略してMHOAT
2019/12/18情報処理学会 第172回ハイパフォーマンスコンピューティング研究発表会 13
MHOATの処理の流れ
–GPUとFPGAの処理が両方記述された一つのOpenACCプログラムを入力
–GPU向けとFPGA向けの二つのOpenACCソースファイルに分割
• ホストで行う処理はGPU向けのファイルに出力
• OpenARCが開発中であることから万が一の不具合をなるべく回避するため
2019/12/18情報処理学会 第172回ハイパフォーマンスコンピューティング研究発表会 14
OpenACC
Omni Compiler
OpenACC
XcodeML
一つのプログラム
ホストで行う処理
FPGAで行う処理
GPUで行う処理
CPP
C-
Front
End
fpga.c
gpu.c
MHOAT
バックエンドコンパイラの仕様
•OpenARC
–米国ORNLとの共同研究により利用可能
–言語はCのみ対応
–ソースtoソースコンパイラ
• OpenACC → OpenCL for FPGA(ホストコードはC++)
–OpenCLカーネルからFPGA書き込みファイルへの変換は
Intel FPGA SDK for OpenCL をバックエンドで実行
PGI Compiler
–言語はC、C++、Fortranに対応
• 本研究では上記のOpenCL ホストコードとのリンクの都合上、C++を用いる
–OpenACCから直接実行ファイルに変換
2019/12/18情報処理学会 第172回ハイパフォーマンスコンピューティング研究発表会 15
FPGA向けコンパイルに使用
GPU向けコンパイルに使用
コンパイルの流れ(全体)
2019/12/18情報処理学会 第172回ハイパフォーマンスコンピューティング研究発表会 16
オブジェクト
ファイル
OpenACC
fpga.c
gpu.c
fpga.o
gpu.o
fpga.cl
a.out
実行ファイル
fpga
.aocx
pgc++
fpga
.cpp
PGI Compiler
(pgc++ -c)
fpga
.aoco
aoc -c aoc
pgc++
-c
OpenARC
OpenCL
カーネル
OpenCL
ホスト
int main() {
~~~~~~~~~~
#pragma acc ~~~=gpu
~~~~~~~~~~
~~~~~~~~~~
#pragma acc ~~~=fpga
~~~~~~~~~~
~~~~~~~~~~
~~~~~~~~~~
return 0;
}
openacc.c
M
H
O
A
T
バックエンドは既存のコンパイラ一つのプログラム
オフロード先の指定
•#pragma accomn ondevice(デバイス名)
–独自のOpenACC拡張ディレクティブを定義
• Omni Compiler内の拡張であるため accomn
–デバイス名のところにenum型の GPU、FPGA
をどちらか一方記述
–現実装ではこのディレクティブが書かれた関数
ごと、デバイスに対応するそれぞれのファイル
に出力される
–よって、以下の制限がある
• main関数以外の関数の中に記述が必要
• 関数内の先頭に一つだけしか記述できない
2019/12/18情報処理学会 第172回ハイパフォーマンスコンピューティング研究発表会 17
void fpga() {
#pragma accomn ondevice(FPGA)
{
#pragma acc data copy(a, b)
{
#pragma acc kernels loop independent
for(i=0; i < N; i++)
a[i] = a[i] + b[i];
}
}
}
検証:生成されたコードの実行
• MHOATとバックエンドコンパイラの
組み合わせにより、
– 統一APIで記述された一つのプログラムから、
– GPU-FPGA協調計算が1プロセスで実行可能
なプログラムが生成できるか
• 問題を単純化するため、検証しやすい
複雑でないプログラムを用意
– GPU、FPGAでそれぞれベクトル加算を行う
– 右図のようにCPU、GPU、FPGA間で通信
– FPGAでの計算にはGPUの計算結果を用いる
– GPU+FPGAでの計算とは別に、結果が正し
いか確認するため同じ計算をCPU上でも実行
2019/12/18情報処理学会 第172回ハイパフォーマンスコンピューティング研究発表会 18
FPGA側 GPU側CPU側
プログラム開始
GPUからデータを
転送
FPGAにデータを
転送し、
kernelをキック
GPUでデータを
処理
GPUにデータを
転送し、
kernelをキック
FPGAでデータ
を処理
FPGAから
データを転送
データの流れ
実験環境(CCS Cygnus)
• 筑波大学計算科学研究センター(CCS)に
2019年4月導入されたスパコン Cygnus 上で
実験
• GPUのみのノードもあるが、
今回はFPGAが搭載されている1ノードを使用
2019/12/18情報処理学会 第172回ハイパフォーマンスコンピューティング研究発表会 19
実験環境(CCS Cygnus)
• CPU0上でGPU、FPGAをそれぞれ1台ずつ使用
2019/12/18情報処理学会 第172回ハイパフォーマンスコンピューティング研究発表会 20
ハードウェア構成
CPU
Intel Xeon Gold 6126
(12C / 2.6GHz) x2
Host Memory DDR4-2666 16GiB x12
GPU
NVIDIA Tesla V100
(32GiB HBM2 PCIe 3.0 x16) x4
FPGA
Intel Stratix 10 GX 2800
(BittWare 520N[22]
PCIe Gen3 x16) x2
ソフトウェア構成
OS CentOS 7
GPU + Host
Compiler
PGI Compiler 19.1
FPGA Compiler OpenARC V0.17 (Oct, 2019)
OpenCL
Compiler
Intel FPGA SDK for OpenCL
19.1.0.240
CPU
0
CPU
1
PCIenetwork(switch)
PCIenetwork(switch)
GPU
GPUGPU
GPU
SINGLE NODE
(with FPGA)
HCA
FPGA
HCA
FPGA
HCA
HCA
Networkswitch(100Gbpsx2)
Networkswitch(100Gbpsx2)
Inter-FPGA
direct network
(100Gbps x4)
Inter-FPGA
direct network
(100Gbps x4)
Cygnus構成図
MHOAT変換結果(GPU側)
• OpenACC以外のコンパイラ指示文は省略、連続する波括弧は一行に圧縮
2019/12/18情報処理学会 第172回ハイパフォーマンスコンピューティング研究発表会 21
void funcGPU(float * a, float * b, float * d, int size)
{
{
int j;
#pragma acc data copyin ( a [ 0 : size ] , b [ 0 :
size ] ) copyout ( d [ 0 : size ] )
{
#pragma acc kernels loop independent gang worker
( 16 )
for(j = (0); j < size; j++) {
{
(*(d + j)) = ((*(a + j)) + (*(b + j)));
}}}}}
void funcGPU(float* a, float* b, float* d, int size) {
#pragma accomn ondevice(GPU)
{
int j;
#pragma acc data copyin(a[0:size], b[0:size]) 
copyout(d[0:size])
{
#pragma acc kernels loop independent gang 
worker(16)
for (j = 0; j < size; j++) {
d[j] = a[j] + b[j];
}
} } }
入力ファイル(抜粋) 出力ファイル(抜粋)
MHOAT変換結果(FPGA側)
• OpenACC以外のコンパイラ指示文は省略、連続する波括弧は一行に圧縮
2019/12/18情報処理学会 第172回ハイパフォーマンスコンピューティング研究発表会 22
void funcFPGA(float * a, float * b, int size)
{
{
int j;
#pragma acc data copyin ( a [ 0 : size ] ) copyout ( b [ 0 :
size ] )
{
#pragma acc kernels
{
#pragma acc loop independent
for(j = (0); j < size; j++) {
{
(*(b + j)) = ((*(a + j)) + ((float)(j)));
}}}}}}
void funcFPGA(float *a, float *b, int size) {
#pragma accomn ondevice(FPGA)
{
int j;
#pragma acc data copyin(a[0:size]) copyout(b[0:size])
{
#pragma acc kernels
{
#pragma acc loop independent
for (j = 0; j < size; j++) {
b[j] = a[j] + (float)j;
}
} } } }
出力ファイル(抜粋)入力ファイル(抜粋)
バックエンドコンパイルと実行結果
•出力された2つのファイルは、
バックエンドコンパイラで正常にコンパイルされた
•2つのオブジェクトファイルがリンクされ、
1つの実行ファイルを生成できた
•実行したところ、CPU上で行った演算結果とGPU+FPGAで行った結果
が等しいことを確認できた
•以上から、MHOATにより
–統一APIで1プロセスによるGPU-FPGA協調計算を一つのプログラムとして記述
可能
2019/12/18情報処理学会 第172回ハイパフォーマンスコンピューティング研究発表会 23
性能評価
•参考までにHPC169(5月)で発表した記述量、実行時間の評価を再掲
–パフォーマンスチューニングについて改善の余地があるものの、
今回時間の都合上再評価出来なかった
–開発前だったMHOATで出力されるコードと同様のコードを手書きして実験
•プログラムの処理内容
–演算結果には特に意味を持たせていない
• 相補的な活用で想定されるそれぞれのアクセラレータが得意な計算を実行
–GPU
• 行列積、及びその結果にベクトルを乗算
• FPGAで結果を利用
–FPGA
• CG法
2019/12/18情報処理学会 第172回ハイパフォーマンスコンピューティング研究発表会 24
実験環境(PPX)
• 筑波大学計算科学研究センター(CCS)の
Pre-PACS version X (PPX)上で実験
– Cygnusはまだ利用開始前だったためPPXを使用
– CygnusよりGPU、FPGAが1世代古い
– OpenARCの版には最新版と性能に関わる差分は無し
2019/5/10情報処理学会 第169回ハイパフォーマンスコンピューティング研究発表会 25
ハードウェア構成
CPU Intel Xeon E5-2660 v4 x2
Host Memory DDR4-2400 16GB x4
GPU NVIDIA Tesla P100 x2 (PCIe Gen3
x16)
FPGA Intel Arria 10 GX 1150 (BittWare
A10PL4)
(PCIe Gen3 x8)
ソフトウェア構成
OS CentOS 7.3
GPU Compiler PGI Compiler 18.10
FPGA Compiler OpenARC V0.14 (April, 2019)
Host Compiler GCC 4.8.5
OpenCL
Compiler
Intel FPGA SDK for OpenCL
17.1.2.304
1 010
1
0
PCIe
00
QPI
実験結果(記述量:行数)
•空行、コメントを含まな
い行数の比較
•行数ではOpenACCは
CUDA+OpenCLに比べ
約30%削減
2019/12/18情報処理学会 第172回ハイパフォーマンスコンピューティング研究発表会 26
better
532
377
0
100
200
300
400
500
600
CUDA+OpenCL OpenACC
行数
約30%
削減
実験結果(記述量:文字数)
• ホストCUDA、ホスト
OpenCLはホストコードの
関数
• OpenACCのカーネル
GPU、カーネルFPGAは
OpenACCのディレクティ
ブを含んだブロック内
• その他は変数の初期化、
バリデーション関数など
• コメント、スペースは含
まない
2019/12/18情報処理学会 第172回ハイパフォーマンスコンピューティング研究発表会 27
5,502 5,830
1275 1268
399 511
6052
1104
0
2000
4000
6000
8000
10000
12000
14000
16000
CUDA+OpenCL OpenACC
文字数
ホストCUDA
ホストOpenCL
カーネルGPU
カーネルFPGA
その他
約半分まで
削減
better
実験結果(記述量:文字数)
•OpenACC では
CUDA+OpenCL の
53%まで削減
•特にホストコードの削減
が貢献している
–OpenCLはカーネル関数
の引数分だけ設定が必要
–カーネルが増えるとホス
トコードの記述量も増え
る
2019/12/18情報処理学会 第172回ハイパフォーマンスコンピューティング研究発表会 28
5,502 5,830
1275 1268
399 511
6052
1104
0
2000
4000
6000
8000
10000
12000
14000
16000
CUDA+OpenCL OpenACC
文字数
ホストCUDA
ホストOpenCL
カーネルGPU
カーネルFPGA
その他
約半分まで
削減
better
実験結果(実行時間)
•GPUではOpenACCの実行時間が
3.4倍になっている
–当初OpenACCの方が2倍ほど高速だっ
たため、CUDAの実装をチューニング
したところ発表直前にCUDA側が劇的
に高速化した
–OpenACCのチューニングを行う時間が
取れなかったため、再評価が必要
•FPGAではOpenACCが実行時間が
1.67倍伸びている
–ORNLより性能改善の手法について議論
したものの評価はまだ
2019/12/18情報処理学会 第172回ハイパフォーマンスコンピューティング研究発表会 29
better
4664
7814
2094
7147
0
2000
4000
6000
8000
10000
12000
14000
16000
CUDA+OpenCL OpenACC
msec
GPU
FPGA
まとめ
•GPU+FPGA混載システムでのプログラミング環境について検討
•一つのAPIで複数のアクセラレータを一つのプロセスから演算させる
プログラミング手法について提案
•両アクセラレータ用のコンパイラへの入力ファイルを生成する、
OpenACCのソースtoソースコンパイラ=MHOATを開発、検証
OpenACCによるGPU-FPGA協調プログラミング環境を実現
2019/12/18情報処理学会 第172回ハイパフォーマンスコンピューティング研究発表会 30
今後の課題
•記述制限の解消
–main関数内の accomn ondevice 記述の対応
–オフロードする処理の関数化をMHOATで行うようにする
•演算時間の改善
–以前のOpenACCの性能評価は改善の余地がある
–OpenARCはORNLと性能改善について議論を行っており、今後も進める
–FPGAではOpenCLと同様に抽象化によってパフォーマンスチューニングの難化
が懸念される
–GPUではCUDAと互角の性能が出せるという報告が近年増えており、最適化さ
れたコードを自動的にコンパイラで生成できれば性能差は抑えられる
•MHOATで実際に出力したコードで性能評価を行う
2019/12/18情報処理学会 第172回ハイパフォーマンスコンピューティング研究発表会 31
今後の展望
•我々が実装中のGPU-FPGA間DMAをOpenACCから行えるようにす
る
–現在OpenCLでの呼び出しに対応
–本報告ではGPU-FPGA間のデータ転送にホストのメモリを一旦介していた
–現状、GPU上とFPGA上の変数は全く別のスコープなので、ホストでしかデータ
をコピーできない
–まず、両デバイスの変数を同一スコープで扱える必要がある
•XcalableACC*での本手法の包括
–ディレクティブ形式の分散メモリ環境用言語XcalableMP*をOpenACCで拡張
した言語(理研と共同研究中)
–複数プロセス並列、同一デバイスの複数利用にも対応するようにする
*[Nakao, M, et al., Evaluation of XcalableACC with Tightly Coupled Accelerators/InfiniBand Hybrid
Communication on Accelerated Cluster, 2019]
2019/12/18情報処理学会 第172回ハイパフォーマンスコンピューティング研究発表会 32

GPU-FPGA協調プログラミングを実現するコンパイラの開発

Editor's Notes

  • #4 宇宙物理
  • #5 SMIDだけでなく
  • #6 電力が問題 TOP500は消す
  • #7 協調動作 何を作るのか コンパイラ環境
  • #10 リファレンスを大きめに
  • #12 共同研究あとで(バックエンドコンパイラで) リファレンスをちゃんと書くどこで発表? 研究用コンパイラーしか無い
  • #13 種類の 2.0まで非対応 マルチデバイスは3.0でも想定していない
  • #14 メタコンパイラーの実装 一つのプログロムという感じ感じがしない
  • #15 文字ベースで プログラムエントリーはGPU OpenARC は
  • #16 文字ベースで プログラムエントリーはGPU OpenARC は
  • #19 Omni に拡張したからaccomn Cの仕様 関数の中にデバイスを一つだけ先頭 性能評価を出して 変数のスコープがGPU、FPGAでバラバラなのでDMAはでかい課題 別々のコンパイラがちゃんと呼べるけどホストから OpenARCの性能改善 C++が云々は言わなくて良い XACC
  • #26 一枚説明追加 意味のない計算 CG法説明不要 マトリックスマーケット 100回反復でも良い 単精度書く
  • #27 FPGA S10 A10 違いがある 今回は赤枠の部分のみを使用
  • #28 ベター?矢印 吐かれたコードだと思われる 説明(特に) その他は何か 文字はスペース 中尾さん村井さんの表現参照
  • #29 ベター?矢印 吐かれたコードだと思われる 説明(特に) その他は何か 文字はスペース 中尾さん村井さんの表現参照
  • #30 ベター?矢印 吐かれたコードだと思われる 説明(特に) その他は何か 文字はスペース 中尾さん村井さんの表現参照
  • #31 実行時間が半分 どっちが良い結果か矢印で メモリコピーの時間も計測