ืคืจื•ื™ืงื˜ LLVM ื”ืฆื™ื’ ืืช HPVM 1.0, ืžื”ื“ืจ ืขื‘ื•ืจ CPU, GPU, FPGA ื•ืžืื™ืฆื™ื

ืžืคืชื—ื™ ืคืจื•ื™ืงื˜ LLVM ืคืจืกืžื• ืืช ืฉื—ืจื•ืจื• ืฉืœ ืžื”ื“ืจ HPVM 1.0 (Heterogeneous Parallel Virtual Machine), ืฉืžื˜ืจืชื• ืœืคืฉื˜ ืชื›ื ื•ืช ืขื‘ื•ืจ ืžืขืจื›ื•ืช ื”ื˜ืจื•ื’ื ื™ื•ืช ื•ืœืกืคืง ื›ืœื™ื ืœื”ืคืงืช ืงื•ื“ ืขื‘ื•ืจ CPUs, GPUs, FPGAs ื•ืžืื™ืฆื™ ื—ื•ืžืจื” ืกืคืฆื™ืคื™ื™ื ืœืชื—ื•ื (ืชืžื™ื›ื” ื‘- FGPAs ื•ืžืื™ืฆื™ื ืœื ื ื›ืœืœื• ื‘ืžื”ื“ื•ืจืช 1.0). ืงื•ื“ ื”ืคืจื•ื™ืงื˜ ืžื•ืคืฅ ืชื—ืช ืจื™ืฉื™ื•ืŸ Apache 2.0.

ื”ืจืขื™ื•ืŸ ื”ืžืจื›ื–ื™ ืฉืœ HPVM ื”ื•ื ืœืกืคืง ื™ื™ืฆื•ื’ ืื—ื™ื“ ืฉืœ ืชื•ื›ื ื™ื•ืช ื”ื ื™ืชื ื•ืช ืœื”ืจืฆื” ืžืงื‘ื™ืœื•ืช ื‘ืขืช ื”ื”ื™ื“ื•ืจ, ืฉื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ื”ืŸ ืœื‘ื™ืฆื•ืข ื‘ืืžืฆืขื•ืช ืกื•ื’ื™ื ืฉื•ื ื™ื ืฉืœ ื—ื•ืžืจื” ื”ืชื•ืžื›ื™ื ื‘ืžื—ืฉื•ื‘ ืžืงื‘ื™ืœื™, ื›ื•ืœืœ GPUs, ื”ื•ืจืื•ืช ื•ืงื˜ื•ืจื™ื•ืช, ืžืขื‘ื“ื™ื ืžืจื•ื‘ื™ ืœื™ื‘ื•ืช, FPGAs ื• ืฉื‘ื‘ื™ ืžืื™ืฅ ืžื™ื•ื—ื“ื™ื ืฉื•ื ื™ื. ื‘ื ื™ื’ื•ื“ ืœืžืขืจื›ื•ืช ืื—ืจื•ืช, HPVM ื ื™ืกืชื” ืœืฉืœื‘ ืฉืœื•ืฉ ื™ื›ื•ืœื•ืช ืœืืจื’ื•ืŸ ืžื—ืฉื•ื‘ ื”ื˜ืจื•ื’ื ื™: ื™ื™ืฆื•ื’ ื‘ื™ื ื™ื™ื ื‘ืœืชื™ ืชืœื•ื™ ื‘ืฉืคื” ื•ื‘ื—ื•ืžืจื”, ืืจื›ื™ื˜ืงื˜ื•ืจืช ืขืจื›ืช ื”ื•ืจืื•ืช ื•ื™ืจื˜ื•ืืœื™ืช (ISA) ื•ืชื–ืžื•ืŸ ื–ืžืŸ ืจื™ืฆื”.

ื™ื™ืฆื•ื’ ื”ื‘ื™ื ื™ื™ื ื”ื‘ืœืชื™ ืชืœื•ื™ ืฉืœ HPVM (IR) ืžื‘ื•ืกืก ืขืœ ื™ื™ืฆื•ื’ ื”ื•ืจืื•ืช ื”ื‘ื™ื ื™ื™ื LLVM 9.0 ื•ืžืจื—ื™ื‘ ืื•ืชื• ืขื ื’ืจืฃ ื–ืจื™ืžืช ื ืชื•ื ื™ื ื”ื™ืจืจื›ื™ ื›ื“ื™ ืœืœื›ื•ื“ ืžืงื‘ื™ืœื™ื•ืช ื‘ืจืžืช ื”ืžืฉื™ืžื”, ื”ื ืชื•ื ื™ื ื•ื”ืฆื ืจืช. ื™ื™ืฆื•ื’ ื”ื‘ื™ื ื™ื™ื ืฉืœ HPVM ื›ื•ืœืœ ื’ื ื”ื•ืจืื•ืช ื•ืงื˜ื•ืจื™ื•ืช ื•ื–ื™ื›ืจื•ืŸ ืžืฉื•ืชืฃ. ื”ืžื˜ืจื” ื”ืขื™ืงืจื™ืช ืฉืœ ืฉื™ืžื•ืฉ ื‘ื™ื™ืฆื•ื’ ื‘ื™ื ื™ื™ื ื”ื™ื ื™ืฆื™ืจืช ืงื•ื“ ื™ืขื™ืœ ื•ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ืขื‘ื•ืจ ืžืขืจื›ื•ืช ื”ื˜ืจื•ื’ื ื™ื•ืช.

ืืจื›ื™ื˜ืงื˜ื•ืจืช ืขืจื›ืช ื”ื”ื•ืจืื•ืช ื”ื•ื•ื™ืจื˜ื•ืืœื™ืช (ISA) ืžืืคืฉืจืช ื ื™ื™ื“ื•ืช ื‘ื™ืŸ ืกื•ื’ื™ื ืฉื•ื ื™ื ืฉืœ ื—ื•ืžืจืช ืžื—ืฉื•ื‘ ืžืงื‘ื™ืœื™ืช ื•ืžืืคืฉืจืช ืœื ืœืื‘ื“ ื‘ื™ืฆื•ืขื™ื ื‘ืขืช ืฉื™ืžื•ืฉ ื‘ืืœืžื ื˜ื™ื ืฉื•ื ื™ื ืฉืœ ืžืขืจื›ื•ืช ื”ื˜ืจื•ื’ื ื™ื•ืช. ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘-Virtual ISA ื’ื ื›ื“ื™ ืœืกืคืง ืงื•ื“ ืชื•ื›ื ื™ืช ื”ืคืขืœื” ืื•ื ื™ื‘ืจืกืœื™ ืฉื™ื›ื•ืœ ืœืคืขื•ืœ ื‘ืืžืฆืขื•ืช CPUs, GPUs, FPGAs ื•ืžืื™ืฆื™ื ืฉื•ื ื™ื.

ื‘ืฉืœื‘ ื”ืคื™ืชื•ื— ื”ื ื•ื›ื—ื™, HPVM ืžืฆื™ืขื” ืžื—ื•ืœืœื™ ืงื•ื“ ื”ืžืกื•ื’ืœื™ื ืœืชืจื’ื ืฆืžืชื™ ื™ื™ืฉื•ืžื™ื ื”ืžื•ื’ื“ืจื™ื ื‘ืืžืฆืขื•ืช ISA ื•ื™ืจื˜ื•ืืœื™ ืœื‘ื™ืฆื•ืข ื‘ืืžืฆืขื•ืช NVIDIA GPUs (cuDNN ื•-OpenCL), ื”ื•ืจืื•ืช ื•ืงื˜ื•ืจ ืฉืœ Intel AVX ื•ืžืขื‘ื“ื™ x86 ืžืจื•ื‘ื™ ืœื™ื‘ื•ืช. ื‘ื–ืžืŸ ืจื™ืฆื”, HPVM ืžื™ื™ืฉืžืช ืžื“ื™ื ื™ื•ืช ื’ืžื™ืฉื” ืฉืœ ืชื–ืžื•ืŸ ืชื”ืœื™ื›ื™ ื—ื™ืฉื•ื‘, ื”ืžื™ื•ืฉืžืช ื”ืŸ ืขืœ ืกืžืš ืžื™ื“ืข ืชื•ื›ื ื™ืช (ืžื‘ื ื” ื’ืจืฃ) ื•ื”ืŸ ื‘ืืžืฆืขื•ืช ืงื•ืžืคื™ืœืฆื™ื” ืฉืœ ืฆืžืชื™ ืชื•ื›ื ื™ืช ื‘ื•ื“ื“ื™ื ืœื‘ื™ืฆื•ืข ื‘ื›ืœ ืื—ื“ ืžื”ืชืงื ื™ ืžื—ืฉื•ื‘ ื”ื™ืขื“ ื”ื–ืžื™ื ื™ื ื‘ืžืขืจื›ืช.

ื™ืฆื•ื™ืŸ ื›ื™ ื”ืฉื™ืžื•ืฉ ื‘-HPVM ื™ื›ื•ืœ ืœื”ืฉื™ื’ ืขืœื™ื™ื” ืžืฉืžืขื•ืชื™ืช ื‘ืคืจื™ื•ืŸ. ื”ื‘ื™ืฆื•ืขื™ื ืฉืœ ืžืชืจื’ืžื™ HPVM ื“ื•ืžื™ื ืœืงื•ื“ OpenCL ื‘ื›ืชื‘ ื™ื“ ืขื‘ื•ืจ GPUs ื•ื”ืชืงื ื™ ืžื—ืฉื•ื‘ ื•ืงื˜ื•ืจื™ื™ื.

ื‘ื”ืฉื•ื•ืื” ืœืžื”ื“ื•ืจืช ื”ืชืฆื•ื’ื” ื”ืžืงื“ื™ืžื” ื”ืจืืฉื•ื ื”, HPVM 1.0 ื›ื•ืœืœ ืชืžื™ื›ื” ื‘ืคืขื•ืœื•ืช ื˜ื ื–ื•ืจ ืืœื’ื‘ืจื” ืœื™ื ื™ืืจื™ื•ืช, ื—ื–ื™ืชื•ืช ืขื‘ื•ืจ Pytorch ื•-Keras, ืงื™ืจื•ื‘ื™ื ืœืื•ืคืจื˜ื•ืจ ืงื•ื ื‘ื•ืœื•ืฆื™ื”, ื•ืžืกื’ืจืช ื›ื•ื•ื ื•ืŸ ืงื™ืจื•ื‘ ืฉื‘ื•ื—ืจืช ืื•ื˜ื•ืžื˜ื™ืช ืงื™ืจื•ื‘ื™ื ืื•ืคื˜ื™ืžืœื™ื™ื ืขื‘ื•ืจ ืคืขื•ืœื•ืช ื˜ื ื–ื•ืจ ืกืคืฆื™ืคื™ื•ืช ื•ื‘ื•ื—ืจืช ืืช ื”ืชืฆื•ืจื” ื”ืžืกืคืงืช ื‘ื™ืฆื•ืขื™ื ืžื™ื˜ื‘ื™ื™ื.

ืžืงื•ืจ: OpenNet.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”