ืคืจืืืงื LLVM ืืฆืื ืืช ืฉืืจืืจื ืฉื ืืืืจ HPVM 2.0 (Heterogeneous Parallel Virtual Machine), ืฉืืืจืชื ืืคืฉื ืืช ืืชืื ืืช ืขืืืจ ืืขืจืืืช ืืืจืืื ืืืช ืืืกืคืง ืืืื ืืืคืงืช ืงืื ืขืืืจ CPUs, GPUs, FPGAs ืืืืืฆื ืืืืจื ืกืคืฆืืคืืื ืืชืืื. ืงืื ืืคืจืืืงื ืืืคืฅ ืชืืช ืจืืฉืืื Apache 2.0.
ืชืื ืืช ืขืืืจ ืืขืจืืืช ืืงืืืืืช ืืืจืืื ืืืช ืืกืืื ืืฉื ืืืืฆืืืช ืืืขืจืืช ืืืช ืฉื ืจืืืืื ืืืฉืชืืฉืื ืืืืืืื ืฉืื ืื ืืืฉืืช ืืงืืืืืืช (ืืืืืช CPU, ืืืจืืืช ืืงืืืจืืืช, GPUs ืืื'), ืงืืืฆืืช ืฉืื ืืช ืฉื ืืืจืืืช ืืืืจืจืืืืช ืืืืจืื ืฉืื ืืช. ืื ืืขืจืืช ืืฉืชืืฉืช ืืฉืืืื ืืฉืื ืฉื ืจืืืืื ืืื. ืืจืขืืื ืืืจืืื ืฉื ืคืจืืืงื HPVM ืืื ืืืฉืชืืฉ ืืืจืืืช ืืืฆืื ืืืืื ืฉื ืชืืื ืืืช ืืงืืืืืช ืฉืืืืืืช ืืฉืืฉ ืขืืืจ ืกืืืื ืฉืื ืื ืฉื ืืืืจื ืืชืืืืช ืืืืฉืื ืืงืืืื, ืืืื GPUs, ืืืจืืืช ืืงืืืจืืืช, ืืขืืืื ืืจืืื ืืืืืช, FPGAs ืืืืืื ืืืืืืื. ืฉืืื ืืืืฅ.
ืื ืืืื ืืืขืจืืืช ืืืจืืช, HPVM ื ืืกืชื ืืฉืื ืฉืืืฉ ืืคืฉืจืืืืช ืืืจืืื ืืืฉืื ืืืจืืื ื - ืืืฆืื ืืื ืืื (IR), ืืจืืืืงืืืจืช ืขืจืืช ืืืจืืืช ืืืจืืืืืืช (V-ISA), ืืชืืืื ืืื ืจืืฆื, ืืื ืชืืืช ืืฉืคืช ืืชืื ืืช ืืืฆืืื:
- ืืืฆืื ืืื ืืื HPVM ืืจืืื ืืช ืืืฆืื ืืืื ืืื ืฉื ืืืจืืืช LLVM ืขื ืืื ืฉืืืืฉ ืืืจืฃ ืืจืืืช ื ืชืื ืื ืืืจืจืื ืืื ืืืืื ืืงืืืืืืช ืืจืืช ืืืฉืืืืช, ืื ืชืื ืื ืืืฆืื ืืจืืช ืืืืฉืืืืื. ืืืฆืื ืืืื ืืื ืฉื HPVM ืืืื ืื ืืืจืืืช ืืงืืืจืืืช ืืืืืจืื ืืฉืืชืฃ. ืืืืจื ืืขืืงืจืืช ืฉื ืฉืืืืฉ ืืืืฆืื ืืื ืืื ืืื ืืฆืืจืช ืงืื ืืขืื ืืืืคืืืืืืฆืื ืขืืืจ ืืขืจืืืช ืืืจืืื ืืืช.
- ืืจืืืืงืืืจืช ืขืจืืช ืืืจืืืช ืืืจืืืืืืช (V-ISA) ืืคืฉืืช ืืืืจื ืืจืื ื ืืืื ืืืืืืช ืฆืืจืืช ืฉืื ืืช ืฉื ืืงืืืืืืช ืืืจืืืืงืืืจืืช ืืืืจืื ืชืื ืฉืืืืฉ ืจืง ืืืืื ืืืงืืืืืืช ืืืกืืกื, ืืจืฃ ืืจืืืช ืื ืชืื ืื. V-ISA ืืืคืฉืจ ืืืฉืื ื ืืืืืช ืืื ืกืืืื ืฉืื ืื ืฉื ืืืืจื ืืืืฉืื ืืงืืื ืืืืคืฉืจืช ืื ืืืื ืืืฆืืขืื ืืขืช ืฉืืืืฉ ืืืืื ืืื ืฉืื ืื ืฉื ืืขืจืืืช ืืืจืืื ืืืช. ื ืืชื ืืืฉืชืืฉ ื-Virtual ISA ืื ืืื ืืกืคืง ืงืื ืืคืขืื ืื ืจื ืฉื ืชืืื ืืืช ืฉืืืื ืืจืืฅ ืขื CPUs, GPUs, FPGAs ืืืืืฆืื ืฉืื ืื.
- ืืืื ืืืช ืชืืืื ืืืืฉื ืฉื ืชืืืืื ืืืฉืื ืืืืฉืืืช ืืืื ืจืืฆื ืืืืืฉืืืช ืื ืขื ืืกืืก ืืืืข ืขื ืืชืืื ืืช (ืืื ื ืืืจืฃ) ืืื ืขื ืืื ืืืืืจ ืฆืืชื ืชืืื ืืช ืืืืืื ืืืืฆืืข ืืื ืืื ืืืชืงื ื ืืืฉืื ืืืขื ืืืืื ืื ืืืขืจืืช.
ืืืืืื ืืงืื ืฉืคืืชืื ืขื ืืื ืืคืจืืืงื ืืกืืืืื ืืชืจืื ืฆืืชื ืืืฉืืืื ืฉืืืืืจื ืืืืฆืขืืช ISA ืืืจืืืืื ืืืืฆืืข ืืืืฆืขืืช NVIDIA GPUs (cuDNN ื-OpenCL), ืืืจืืืช ืืงืืืจ ืืื ืื AVX, FPGAs ืืืขืืื x86 ืืจืืื ืืืืืช. ืืฆืืื ืื ืืืฆืืขื ืืชืืฆืืืช ืฉื ืืชืจืืื HPVM ืืืืื ืืงืื OpenCL ืฉื ืืชื ืืืืคื ืืื ื ืขืืืจ GPUs ืืืชืงื ื ืืืฉืื ืืงืืืจืืื.
ืืืืืืฉืื ืืขืืงืจืืื ืฉื HPVM 2.0:
- ืืืฆืข ืืืืช ืืฉืคื Hetero-C++, ืืฉืจ ืืคืฉืืช ืืช ืืืงืืื ืฉื ืงืื ืืืฉืื C/C++ ืืืืืืจ ื-HPVM. Hetero-C++ ืืืืืจ ืืจืืืืช ืขืืืจ ืืงืืืืืืช ืืจืืช ืื ืชืื ืื ืืืฉืืืืช ืืืจืจืืืืช ืืืืืคืืช ืืืจืคื ืืื ืฉื HPVM.
- FPGA backend ื ืืกืฃ ืืื ืืชืืื ืืืืฆืืข ืงืื ื-Intel FPGA. ืืื ืืืจืื ืืช ืืืืฆืืข, ื ืขืฉื ืฉืืืืฉ ื-Intel FPGA SDK ืขืืืจ OpenCL.
- ื ืืกืคื ืืกืืจืช ื-DSE (Design Space Exploration), ืืืืืืช ืืืคืืืืืืฆืืืช ืืืืจ ืืื ืื ืื ื ืืืืื ืฆืืืืจื ืืงืืืง ืืืืื ืื ืืืืืืื ืฉื ืืืฉืืืื ืขืืืจ ืคืืืคืืจืืช ืืืืจื ื ืชืื ื. ืืืกืืจืช ืืืืื ืืืื ืืืฆืืขืื ืืืื ืขืืืจ FPGA ืืืืช ืืื ืื ืืืืคืฉืจืช ืื ืืืืจ ืืขืืืื ืืฉืื ืืฆืืจื ืืืคืืืืืืฆืื ืขืืืจ ืื ืืืฉืืจ ืฉื ืชืื ืขื ืืื HPVM. ื ืืชื ืืืืื ืืืคืืืืืืฆืืืช ืื ืืจืืช ืืจืฃ ืืจืืืช ืื ืชืื ืื ืฉื HPVM ืืื ืืจืืช LLVM.
- ืจืืืื LLVM ืขืืืื ื ืืืจืกื 13.0.
- ืืงืื ืืืจืื ืืืืฉ ืืื ืืืงื ืขื ืื ืืืื ืืื ืืกืืก ืืงืื, ืืกืคืจืืืช ืืืื ืืฉืืจืืช.
- ืชืฉืชืืช ืืืืืงืืช ืฉืืคืจื, ื ืืกืคื ืืืืงืืช ืืืฉืืช ืืจืืืื HPVM ืฉืื ืื.
ืืงืืจ: OpenNet.ru