<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Meiryo, メイリオ, "Hiragino Sans", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Hello,</div>
<div style="font-family: Meiryo, メイリオ, "Hiragino Sans", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Meiryo, メイリオ, "Hiragino Sans", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Git hub address is <a href="https://github.com/sx-aurora-dev/llvm" id="LPNoLP577781">https://github.com/sx-aurora-dev/llvm</a> ?</div>
<br>
<div style="font-family: Meiryo, メイリオ, "Hiragino Sans", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div id="signature">---<br>
Hideyuki Kamei<br>
<div>
<div id="appendonsend"></div>
<div style="font-family:Meiryo,メイリオ,"Hiragino Sans",sans-serif; font-size:12pt; color:rgb(0,0,0)">
<br>
</div>
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" color="#000000" style="font-size:11pt"><b>From:</b> llvm-dev <llvm-dev-bounces@lists.llvm.org> on behalf of Erich Focht via llvm-dev <llvm-dev@lists.llvm.org><br>
<b>Sent:</b> Thursday, April 4, 2019 15:02<br>
<b>To:</b> llvm-dev@lists.llvm.org<br>
<b>Subject:</b> [llvm-dev] [RFC] NEC SX-Aurora VE backend</font>
<div> </div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt">
<div class="PlainText">Hello,<br>
<br>
<br>
we’d like to propose the integration of a new backend into LLVM: NEC<br>
SX-Aurora TSUBASA Vector Engine (VE). We hope to get some feedback here<br>
and at EuroLLVM about the path and proper procedure of merging.<br>
<br>
<br>
The SX-Aurora VE is a Vector CPU on an PCI-E Accelerator card. It has<br>
48GB memory from six HBM2 stacks, accessible with 1.2TB/s bandwidth, 8<br>
cores with vector and scalar units, each. The cores share a last level<br>
cache (LLC) and have 64 scalar registers and a normal scalar unit with<br>
two levels of caches as well as 64 long vector registers (256 x 64<br>
bits), 16 vector mask registers and a vector length register. The VE can<br>
run HPC and AI loads with high efficiency provided that the code is well<br>
vectorized.<br>
<br>
<br>
The VE was released officially in March 2018 and is currently available<br>
integrated into appropriate servers containing 1, 2, 4 or 8 VEs<br>
<a href="https://www.nec.com/en/global/solutions/hpc/sx/">https://www.nec.com/en/global/solutions/hpc/sx/</a>. An SDK is provided,<br>
containing optimized mathematical libraries, proprietary C, C++ and<br>
Fortran compilers as well as a proprietary MPI implementation capable of<br>
communicating over PCIe and in PeerDirect manner over Infiniband. The<br>
main programming model involves running code natively on the VEs, OpenMP<br>
or MPI parallel, with systemcall execution offloaded to the host. Hybrid<br>
programming is possible through offloading kernels from the main program<br>
running on the host CPU to the VEs (accelerator model), or offloading<br>
execution from the VE programs to the host (reverse offloading).<br>
<br>
<br>
In addition to the proprietary compilers an effort has been started to<br>
create a VE backend on LLVM <a href="https://github.com/as-aurora-dev/llvm">https://github.com/as-aurora-dev/llvm</a>.<br>
Initially aimed at compiler and vectorization research, it has reached a<br>
level which we would like to merge into the upstream LLVM repositories.<br>
The state of this development and a sketch of the development plan is<br>
summarized below:<br>
<br>
<br>
1. Assembler, VE CodeGen infrastructure (registers, instruction<br>
encodings): We plan to use the assembler and linker from the<br>
freely-available binutils-ve package. With them LLVM becomes the first<br>
freely-available compiler for VE, and it enables users to use VEs<br>
without any proprietary software. As next step, we will implement<br>
assembler and linker (lld) in llvm like in other backends.<br>
<br>
2. Scalar code backend that produces correct code (capable of handling<br>
vector intrinsics): A complete scalar code backend for C/C++ is already<br>
implemented. We passed all regression tests, check-llvm and check-clang,<br>
and almost all of the test-suite. We are now working to pass the full<br>
test-suite. In this backend we are providing vector intrinsic functions<br>
that cover almost fully the SX-Aurora vector ISA including masked vector<br>
instructions. It helps experienced programmers to write highly optimized<br>
code.<br>
<br>
3. Merging LLVM-VP developments (<a href="https://reviews.llvm.org/D57504">https://reviews.llvm.org/D57504</a>) for<br>
proper vectorization: We plan to use LLVM-VP as the core infrastructure<br>
for vectorization. (Saarland University is working on the LLVM-VP<br>
backend for VE).<br>
<br>
4. Vectorization improvements: We welcome everybody who is interested in<br>
explicit vector length ISA and would like to develop and work on an off<br>
the shelf machine. Detailed information about ISA and Architecture is<br>
available at <a href="https://www.hpc.nec/documents/">https://www.hpc.nec/documents/</a>. We would like to support<br>
researchers who will develop new vectorization technology for true<br>
vector processor.<br>
<br>
Finally: In order to facilitate the integration into the LLVM tree we<br>
intend to provide access to the LLVM community to an Aurora build server<br>
for nightly builds and regression testing.<br>
<br>
<br>
<br>
Erich Focht (NEC), Kazuhisa Ishizaka (NEC), Kazushi Marukawa (NEC),<br>
Simon Moll (CDL Saarland University)<br>
<br>
_______________________________________________<br>
LLVM Developers mailing list<br>
llvm-dev@lists.llvm.org<br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</div>
</span></font></div>
</div>
</div>
</body>
</html>