HPVM 2.0, compiler เบชเปเบฒเบฅเบฑเบš CPU, GPU, FPGA เปเบฅเบฐเบฎเบฒเบ”เปเบง accelerators เบˆเบฑเบ”เบžเบตเบกเบกเบฒ

เป‚เบ„เบ‡เบเบฒเบ™ LLVM เป„เบ”เป‰เบ™เปเบฒเบชเบฐเป€เบซเบ™เบตเบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเบ‚เบญเบ‡ HPVM 2.0 (Heterogeneous Parallel Virtual Machine) compiler, เป€เบžเบทเปˆเบญเปเบ™เปƒเบชเปˆเป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ‡เปˆเบฒเบเบ”เบฒเบเบชเปเบฒเบฅเบฑเบšเบฅเบฐเบšเบปเบš heterogeneous เปเบฅเบฐเบชเบฐเบซเบ™เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ”เบชเปเบฒเบฅเบฑเบš CPUs, GPUs, FPGAs, เปเบฅเบฐ domain-specific hardware accelerators. เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบเบฒเบ™เปเบกเปˆเบ™เปเบˆเบเบขเบฒเบเบžเบฒเบเปƒเบ•เป‰เปƒเบšเบญเบฐเบ™เบธเบเบฒเบ” Apache 2.0.

เบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเบชเปเบฒเบฅเบฑเบšเบฅเบฐเบšเบปเบšเบ‚เบฐเบซเบ™เบฒเบ™ heterogeneous เปเบกเปˆเบ™เบชเบฑเบšเบชเบปเบ™เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบกเบตเบขเบนเปˆเปƒเบ™เบฅเบฐเบšเบปเบšเบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบตเปˆเปƒเบŠเป‰เบ•เบปเบงเปเบšเบšเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เป€เบžเบทเปˆเบญเบšเบฑเบ™เบฅเบธเบ„เบงเบฒเบกเบ‚เบฐเบซเบ™เบฒเบ™ (CPU cores, เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ vector, GPUs, เปเบฅเบฐเบญเบทเปˆเบ™เป†), เบŠเบธเบ”เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™, เปเบฅเบฐเบฅเปเบฒเบ”เบฑเบšเบŠเบฑเป‰เบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™. เปเบ•เปˆเบฅเบฐเบฅเบฐเบšเบปเบšเปƒเบŠเป‰เบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡เบ‚เบญเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰. เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ•เบปเป‰เบ™เบ•เปเบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™ HPVM เปเบกเปˆเบ™เป€เบžเบทเปˆเบญเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบเบฒเบ™เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบ‚เบญเบ‡เบšเบฑเบ™เบ”เบฒเป‚เบ„เบ‡เบเบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ™เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบ›เบฐเป€เบžเบ”เบ•เปˆเบฒเบ‡เป†เบ‚เบญเบ‡เบฎเบฒเบ”เปเบงเบ—เบตเปˆเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเป‰เบ‚เบฐเบซเบ™เบฒเบ™, เบฅเบงเบกเบ—เบฑเบ‡ GPUs, เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ vector, เป‚เบ›เป€เบŠเบ”เป€เบŠเบต multi-core, FPGAs, เปเบฅเบฐเบžเบดเป€เบชเบ”เบ•เปˆเบฒเบ‡เป†. เบŠเบดเบšเป€เบฅเบฑเปˆเบ‡.

เบšเปเปˆเป€เบซเบกเบทเบญเบ™เบเบฑเบšเบฅเบฐเบšเบปเบšเบญเบทเปˆเบ™เป†, HPVM เบžเบฐเบเบฒเบเบฒเบกเบฅเบงเบกเป€เบญเบปเบฒเบชเบฒเบกเบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบˆเบฑเบ”เบฅเบฐเบšเบปเบšเบ„เบญเบกเบžเบดเบงเป€เบ•เบตเบ—เบตเปˆเบซเบผเบฒเบเบซเบผเบฒเบเบŠเบฐเบ™เบดเบ” - เบเบฒเบ™เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบฅเบฐเบ”เบฑเบšเบ›เบฒเบ™เบเบฒเบ‡ (IR), เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบŠเบธเบ”เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ virtual (V-ISA), เปเบฅเบฐเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒเปเบฅเปˆเบ™, เป€เบญเบเบฐเบฅเบฒเบ”เบ‚เบญเบ‡เบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเปเบฅเบฐเบญเบธเบ›เบฐเบเบญเบ™:

  • เบเบฒเบ™เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบฅเบฐเบ”เบฑเบšเบ›เบฒเบ™เบเบฒเบ‡ HPVM เบ‚เบฐเบซเบเบฒเบเบเบฒเบ™เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบฅเบฐเบ”เบฑเบšเบ›เบฒเบ™เบเบฒเบ‡เบ‚เบญเบ‡เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ LLVM เป‚เบ”เบเปƒเบŠเป‰เป€เบชเบฑเป‰เบ™เบชเบฐเปเบ”เบ‡เบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เป„เบซเบผเป€เบ‚เบปเป‰เบฒเบ‚เบญเบ‡เบฅเปเบฒเบ”เบฑเบšเบŠเบฑเป‰เบ™เป€เบžเบทเปˆเบญเป€เบเบฑเบšเบเปเบฒเบ„เบงเบฒเบกเบ‚เบฐเบซเบ™เบฒเบ™เปƒเบ™เบฅเบฐเบ”เบฑเบšเบ‚เบญเบ‡เบงเบฝเบเบ‡เบฒเบ™, เบ‚เปเป‰เบกเบนเบ™, เปเบฅเบฐเบ—เปเปˆเบ„เบญเบกเบžเบดเบงเป€เบ•เบตเป‰. เบเบฒเบ™เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบฅเบฐเบ”เบฑเบšเบ›เบฒเบ™เบเบฒเบ‡ HPVM เบเบฑเบ‡เบ›เบฐเบเบญเบšเบกเบตเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ vector เปเบฅเบฐเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบ—เบตเปˆเปƒเบŠเป‰เบฎเปˆเบงเบกเบเบฑเบ™. เบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบ•เบปเป‰เบ™เบ•เปเบ‚เบญเบ‡เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ•เบปเบงเบ•เบฒเบ‡เบซเบ™เป‰เบฒเบฅเบฐเบ”เบฑเบšเบเบฒเบ‡เปเบกเปˆเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปเบฅเบฐเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบชเปเบฒเบฅเบฑเบšเบฅเบฐเบšเบปเบš heterogeneous.
  • Virtual Instruction Set Architecture (V-ISA) abstracts เบฎเบฒเบ”เปเบงเบฅเบฐเบ”เบฑเบšเบ•เปเปˆเบฒ เปเบฅเบฐเบ›เบฐเบเบญเบšเบฎเบนเบšเปเบšเบšเบ•เปˆเบฒเบ‡เป†เบ‚เบญเบ‡เบ‚เบฐเปœเบฒเบ™ เปเบฅเบฐเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเบณเปœเปˆเบงเบเบ„เบงเบฒเบกเบˆเบณเป‚เบ”เบเปƒเบŠเป‰เบžเบฝเบ‡เบ•เบปเบงเปเบšเบšเบ—เบตเปˆเบชเบญเบ”เบ„เปˆเบญเบ‡เบเบฑเบ™, Data Flow Graph. V-ISA เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบšเบฑเบ™เบฅเบธเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบ—เบตเปˆเบฅเบฐเบซเบงเปˆเบฒเบ‡เบ›เบฐเป€เบžเบ”เบ•เปˆเบฒเบ‡เป†เบ‚เบญเบ‡เบฎเบฒเบ”เปเบงเบชเปเบฒเบฅเบฑเบšเบ„เบญเบกเบžเบดเบงเป€เบ•เบตเป‰เบ‚เบฐเบซเบ™เบฒเบ™เปเบฅเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบšเปเปˆเบชเบนเบ™เป€เบชเบเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ™เปเบฒเปƒเบŠเป‰เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบ‚เบญเบ‡เบฅเบฐเบšเบปเบš heterogeneous. Virtual ISA เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบชเบปเปˆเบ‡เบฅเบฐเบซเบฑเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ„เบ‡เบเบฒเบ™เบ—เบปเปˆเบงเป„เบ›เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบเปˆเบฝเบงเบเบฑเบš CPUs, GPUs, FPGAs, เปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เป€เบฅเบฑเปˆเบ‡เบ•เปˆเบฒเบ‡เป†.
  • เบ™เบฐเป‚เบเบšเบฒเบเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒเบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเป‰เปเบšเบšเบเบทเบ”เบซเบเบธเปˆเบ™เปเบกเปˆเบ™เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เป€เบงเบฅเบฒเปเบฅเปˆเบ™เปเบฅเบฐเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบฑเบ‡เบšเบปเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเป‚เบ›เปเบเบก (เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบเบฒเบŸ) เปเบฅเบฐเป‚เบ”เบเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ‚เปเป‰เบ‚เบญเบ‡เปเบ•เปˆเบฅเบฐเป‚เบ›เบฅเปเบเบฅเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™เบญเบธเบ›เบฐเบเบญเบ™เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเป‰เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเปƒเบ”เป†เบ—เบตเปˆเบกเบตเบขเบนเปˆเปƒเบ™เบฅเบฐเบšเบปเบš.

เป€เบ„เบทเปˆเบญเบ‡เบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเป‚เบ„เบ‡เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบกเปˆเบ™เบชเบฒเบกเบฒเบ”เปเบ›เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป‚เบ”เบเปƒเบŠเป‰ virtual ISA เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ”เบเปƒเบŠเป‰ NVIDIA GPUs (cuDNN เปเบฅเบฐ OpenCL), Intel AVX vector เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ, FPGAs, เปเบฅเบฐ multi-core x86 CPUs. เบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบงเปˆเบฒเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ‚เบญเบ‡เบ•เบปเบงเปเบ› HPVM เปเบกเปˆเบ™เบ—เบฝเบšเบเบฑเบšเบฅเบฐเบซเบฑเบ” OpenCL เบ—เบตเปˆเบ‚เบฝเบ™เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡เบชเปเบฒเบฅเบฑเบš GPUs เปเบฅเบฐเบญเบธเบ›เบฐเบเบญเบ™เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเป‰ vector.

เบ™เบฐเบงเบฑเบ”เบ•เบฐเบเปเบฒเบซเบผเบฑเบเบ‚เบญเบ‡ HPVM 2.0:

  • เบ—เบฒเบ‡เปœเป‰เบฒเบ‚เบญเบ‡เบžเบฒเบชเบฒ Hetero-C++ เป„เบ”เป‰เบ–เบทเบเบชเบฐเป€เปœเบต, เป€เบŠเบดเปˆเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบ‚เบฐเปœเบฒเบ™เบเบฑเบ™เบ‡เปˆเบฒเบเบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ C/C++ เบชเบณเบฅเบฑเบšเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเปƒเบ™ HPVM. Hetero-C++ เบเบณเบ™เบปเบ”เบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบเบชเบณเบฅเบฑเบšเบ„เบงเบฒเบกเบ‚เบฐเปœเบฒเบ™เบฅเบฐเบ”เบฑเบšเบ‚เปเป‰เบกเบนเบ™ เปเบฅเบฐเปœเป‰เบฒเบงเบฝเบเบ•เบฒเบกเบฅเบณเบ”เบฑเบšเบ—เบตเปˆเบชเป‰เบฒเบ‡เปเบœเบ™เบ—เบตเปˆเปƒเบชเปˆเบเบฃเบฒเบŸเบเบฐเบ—เบนเป‰ HPVM.
  • backend FPGA เป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบกเป€เบžเบทเปˆเบญเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบฅเบฐเบซเบฑเบ”เปƒเบ™ Intel FPGA. เป€เบžเบทเปˆเบญเบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”, Intel FPGA SDK เบชเปเบฒเบฅเบฑเบš OpenCL เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰.
  • เบเบญเบš DSE (Design Space Exploration) เป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบกเป€เบ‚เบปเป‰เบฒ, เป€เบŠเบดเปˆเบ‡เบฅเบงเบกเบกเบตเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเปเบฅเบฐเบเบปเบ™เป„เบเบเบฒเบ™เบŠเบญเบเบ„เบปเป‰เบ™เบซเบฒเบ„เปเบ‚เบงเบ”เบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ›เบฑเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบชเปเบฒเบฅเบฑเบšเปเบžเบฅเบฐเบ•เบฐเบŸเบญเบกเบฎเบฒเบ”เปเบง. เบเบญเบšเบกเบตเบฎเบนเบšเปเบšเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบเบฝเบกเบžเป‰เบญเบกเบชเปเบฒเบฅเบฑเบš FPGA เบˆเบฒเบ Intel เปเบฅเบฐเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป‚เบ›เป€เบŠเบ”เป€เบŠเบตเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป€เบญเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบชเปเบฒเบฅเบฑเบšเบญเบธเบ›เบฐเบเบญเบ™เปƒเบ”เป†เบ—เบตเปˆเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เป‚เบ”เบ HPVM. เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เป„เบ”เป‰เบ—เบฑเบ‡เบขเบนเปˆเปƒเบ™เบฅเบฐเบ”เบฑเบšเบเบฃเบฒเบŸ HPVM dataflow เปเบฅเบฐเปƒเบ™เบฅเบฐเบ”เบฑเบš LLVM.
  • เบญเบปเบ‡เบ›เบฐเบเบญเบš LLVM เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เป€เบ›เบฑเบ™เป€เบงเบตเบŠเบฑเบ™ 13.0.
  • เบฅเบฐเบซเบฑเบ”เป„เบ”เป‰เบ–เบทเบเบˆเบฑเบ”เบฅเบฝเบ‡เปƒเบซเบกเปˆเป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เบ‡เปˆเบฒเบเบ•เปเปˆเบเบฒเบ™เบ™เปเบฒเบ—เบฒเบ‡เบœเปˆเบฒเบ™ codebase, เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”, เปเบฅเบฐเบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”.
  • เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเป„เบ”เป‰เบ–เบทเบเบ›เบฑเบšเบ›เบธเบ‡, เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเปƒเบซเบกเปˆเป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบกเบชเปเบฒเบฅเบฑเบšเบญเบปเบ‡เบ›เบฐเบเบญเบš HPVM เบ•เปˆเบฒเบ‡เป†.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™