HPVM 2.0, CPU, GPU, FPGA рдЖрдгрд┐ рд╣рд╛рд░реНрдбрд╡реЗрдЕрд░ рдкреНрд░рд╡реЗрдЧрдХрд╛рдВрд╕рд╛рдареА рд╕рдВрдХрд▓рдХ, рдкреНрд░рдХрд╛рд╢рд┐рдд рдЭрд╛рд▓реЗ рдЖрд╣реЗ.

LLVM рдкреНрд░рдХрд▓реНрдкрд╛рдиреЗ HPVM 2.0 (Heterogeneous Parallel Virtual Machine) рд░рд┐рд▓реАрдЬ рдХрд░рдгреНрдпрд╛рдЪреА рдШреЛрд╖рдгрд╛ рдХреЗрд▓реА, рдПрдХ рд╕рдВрдХрд▓рдХ рдЬреНрдпрд╛рдЪрд╛ рдЙрджреНрджреЗрд╢ рд╡рд┐рд╖рдо рдкреНрд░рдгрд╛рд▓реАрдВрд╕рд╛рдареА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╕реБрд▓рдн рдХрд░рдгреЗ рдЖрдгрд┐ CPUs, GPUs, FPGAs рдЖрдгрд┐ рдбреЛрдореЗрди-рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣рд╛рд░реНрдбрд╡реЗрдЕрд░ рдкреНрд░рд╡реЗрдЧрдХрд╛рдВрд╕рд╛рдареА рдХреЛрдб рдЬрдирд░реЗрд╢рди рд╕рд╛рдзрдиреЗ рдкреНрд░рджрд╛рди рдХрд░рдгреЗ. рдкреНрд░рдХрд▓реНрдк рдХреЛрдб Apache 2.0 рд▓рд╛рдпрд╕рдиреНрд╕ рдЕрдВрддрд░реНрдЧрдд рд╡рд┐рддрд░рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рддреЛ.

рд╡рд┐рд╖рдо рд╕рдорд╛рдВрддрд░ рдкреНрд░рдгрд╛рд▓реАрдВрд╕рд╛рдареА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╕рдорд╛рди рдкреНрд░рдгрд╛рд▓реАрдордзреНрдпреЗ рдШрдЯрдХрд╛рдВрдЪреНрдпрд╛ рдЙрдкрд╕реНрдерд┐рддреАрдореБрд│реЗ рдЧреБрдВрддрд╛рдЧреБрдВрддреАрдЪреЗ рдЖрд╣реЗ рдЬреЗ рд╕рдорд╛рдВрддрд░рддрд╛ (CPU рдХреЛрд░, рд╡реЗрдХреНрдЯрд░ рд╕реВрдЪрдирд╛, GPU, рдЗ.), рднрд┐рдиреНрди рдирд┐рд░реНрджреЗрд╢ рд╕рдВрдЪ рдЖрдгрд┐ рднрд┐рдиреНрди рдореЗрдорд░реА рдкрджрд╛рдиреБрдХреНрд░рдо рд╕рд╛рдзреНрдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рднрд┐рдиреНрди рдореЙрдбреЗрд▓реНрд╕ рд╡рд╛рдкрд░рддрд╛рдд. рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдгрд╛рд▓реА рдпрд╛ рдШрдЯрдХрд╛рдВрдЪреЗ рд╕реНрд╡рддрдГрдЪреЗ рд╕рдВрдпреЛрдЬрди рд╡рд╛рдкрд░рддреЗ. рдПрдЪрдкреАрд╡реНрд╣реАрдПрдо рдкреНрд░рдХрд▓реНрдкрд╛рдЪреА рдореБрдЦреНрдп рдХрд▓реНрдкрдирд╛ рдореНрд╣рдгрдЬреЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛рдирд╛ рд╕рдорд╛рдВрддрд░-рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдХреЗрд▓реЗрд▓реНрдпрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдореНрд╕рдЪреЗ рдПрдХрддреНрд░рд┐рдд рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╡рд╛рдкрд░рдгреЗ, рдЬреЗ GPUs, рд╡реЗрдХреНрдЯрд░ рд╕реВрдЪрдирд╛, рдорд▓реНрдЯреА-рдХреЛрд░ рдкреНрд░реЛрд╕реЗрд╕рд░, FPGA рдЖрдгрд┐ рд╕рдорд╛рдВрддрд░ рд╕рдВрдЧрдгрдирд╛рд▓рд╛ рд╕рдорд░реНрдерди рджреЗрдгрд╛рд▒реНрдпрд╛ рд╡рд┐рд╡рд┐рдз рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ рд╣рд╛рд░реНрдбрд╡реЗрдЕрд░рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ. рд╡рд┐рд╡рд┐рдз рд╡рд┐рд╢реЗрд╖ рдкреНрд░рд╡реЗрдЧрдХ рдЪрд┐рдкреНрд╕.

рдЗрддрд░ рдкреНрд░рдгрд╛рд▓реАрдВрдЪреНрдпрд╛ рд╡рд┐рдкрд░реАрдд, HPVM рдиреЗ рд╡рд┐рд╖рдо рд╕рдВрдЧрдгрди рдЖрдпреЛрдЬрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддреАрди рдХреНрд╖рдорддрд╛ рдПрдХрддреНрд░ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХреЗрд▓рд╛ - рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдЖрдгрд┐ рд╣рд╛рд░реНрдбрд╡реЗрдЕрд░-рд╕реНрд╡рддрдВрддреНрд░ рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ (IR), рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдЗрдВрд╕реНрдЯреНрд░рдХреНрд╢рди рд╕реЗрдЯ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ (V-ISA) рдЖрдгрд┐ рд░рдирдЯрд╛рдЗрдо рд╢реЗрдбреНрдпреВрд▓рд┐рдВрдЧ:

  • HPVM рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рдкреНрд░рд╕реНрддреБрддреАрдХрд░рдг рдХрд╛рд░реНрдп, рдбреЗрдЯрд╛ рдЖрдгрд┐ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд╕реНрддрд░рд╛рдВрд╡рд░ рд╕рдорд╛рдВрддрд░рддрд╛ рдХреЕрдкреНрдЪрд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╢реНрд░реЗрдгреАрдмрджреНрдз рдбреЗрдЯрд╛ рдкреНрд░рд╡рд╛рд╣ рдЖрд▓реЗрдЦ рд╡рд╛рдкрд░реВрди рд╕реВрдЪрдирд╛рдВрдЪреЗ LLVM рдордзреНрдпрд╡рд░реНрддреА рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рддреЗ. HPVM рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡рд╛рдордзреНрдпреЗ рд╡реЗрдХреНрдЯрд░ рд╕реВрдЪрдирд╛ рдЖрдгрд┐ рд╕рд╛рдорд╛рдпрд┐рдХ рдореЗрдорд░реА рджреЗрдЦреАрд▓ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗ. рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪрд╛ рдореБрдЦреНрдп рдЙрджреНрджреЗрд╢ рдХрд╛рд░реНрдпрдХреНрд╖рдо рдХреЛрдб рдирд┐рд░реНрдорд┐рддреА рдЖрдгрд┐ рд╡рд┐рд╖рдо рдкреНрд░рдгрд╛рд▓реАрдВрд╕рд╛рдареА рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рди рдЖрд╣реЗ.
  • рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдЗрдВрд╕реНрдЯреНрд░рдХреНрд╢рди рд╕реЗрдЯ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ (V-ISA) рд▓реЛ-рд▓реЗрд╡реНрд╣рд▓ рд╣рд╛рд░реНрдбрд╡реЗрдЕрд░ рд╡реИрд╢рд┐рд╖реНтАНрдЯреНрдпреЗ рдЕтАНреЕрдмреНрд╕реНрдЯреНрд░реЕрдХреНрдЯ рдХрд░рддреЗ рдЖрдгрд┐ рд╕рдорд╛рдВрддрд░рддрд╛ рдЖрдгрд┐ рдореЗрдорд░реА рдЖрд░реНрдХрд┐рдЯреЗрдХреНтАНрдЪрд░рдЪреЗ рд╡рд┐рд╡рд┐рдз рд░реВрдкреЗ рдХреЗрд╡рд│ рдореВрд▓рднреВрдд рд╕рдорд╛рдВрддрд░ рдореЙрдбреЗрд▓-рдбреЗрдЯрд╛ рдлреНрд▓реЛ рдЖрд▓реЗрдЦ рд╡рд╛рдкрд░реВрди рдПрдХрддреНрд░рд┐рдд рдХрд░рддреЗ. V-ISA рддреБрдореНрд╣рд╛рд▓рд╛ рд╕рдорд╛рдВрддрд░ рд╕рдВрдЧрдгрдирд╛рд╕рд╛рдареА рд╡рд┐рд╡рд┐рдз рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ рдЙрдкрдХрд░рдгрд╛рдВрдордзреНрдпреЗ рдкреЛрд░реНрдЯреЗрдмрд┐рд▓рд┐рдЯреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ рдЖрдгрд┐ рд╡рд┐рд╖рдо рдкреНрд░рдгрд╛рд▓реАрдЪреЗ рд╡рд┐рд╡рд┐рдз рдШрдЯрдХ рд╡рд╛рдкрд░рддрд╛рдирд╛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЧрдорд╛рд╡реВ рдирдпреЗ рд╣реЗ рд╢рдХреНрдп рдХрд░рддреЗ. рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ ISA рдЪрд╛ рд╡рд╛рдкрд░ рд╕рд╛рд░реНрд╡рддреНрд░рд┐рдХ рдПрдХреНрдЭрд┐рдХреНрдпреБрдЯреЗрдмрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб рд╡рд┐рддрд░реАрдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рджреЗрдЦреАрд▓ рдХреЗрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ рдЬреЛ CPUs, GPUs, FPGAs рдЖрдгрд┐ рд╡рд┐рд╡рд┐рдз рдкреНрд░рд╡реЗрдЧрдХ рд╡рд╛рдкрд░реВрди рдЪрд╛рд▓реВ рд╢рдХрддреЛ.
  • рд╕рдВрдЧрдгрдХреАрдп рдкреНрд░рдХреНрд░рд┐рдпреЗрд╕рд╛рдареА рд▓рд╡рдЪрд┐рдХ рд╢реЗрдбреНрдпреБрд▓рд┐рдВрдЧ рдзреЛрд░рдгреЗ рд░рдирдЯрд╛рдЗрдордЪреНрдпрд╛ рд╡реЗрд│реА рд▓рд╛рдЧреВ рдХреЗрд▓реА рдЬрд╛рддрд╛рдд рдЖрдгрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдордмрджреНрджрд▓рдЪреНрдпрд╛ рдорд╛рд╣рд┐рддреАрдЪреНрдпрд╛ рдЖрдзрд╛рд░реЗ (рдЧреНрд░рд╛рдл рд╕реНрдЯреНрд░рдХреНрдЪрд░) рдЖрдгрд┐ рд╕рд┐рд╕реНрдЯрдордордзреНрдпреЗ рдЙрдкрд▓рдмреНрдз рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдХреЛрдгрддреНрдпрд╛рд╣реА рд▓рдХреНрд╖реНрдп рд╕рдВрдЧрдгрдХреАрдп рдЙрдкрдХрд░рдгрд╛рдВрд╡рд░ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрд╕рд╛рдареА рд╡реИрдпрдХреНрддрд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдиреЛрдбреНрд╕рдЪреНрдпрд╛ рд╕рдВрдХрд▓рдирд╛рджреНрд╡рд╛рд░реЗ рд▓рд╛рдЧреВ рдХреЗрд▓реА рдЬрд╛рддрд╛рдд.

рдкреНрд░рдХрд▓реНрдкрд╛рджреНрд╡рд╛рд░реЗ рд╡рд┐рдХрд╕рд┐рдд рдХреЗрд▓реЗрд▓реЗ рдХреЛрдб рдЬрдирд░реЗрдЯрд░ NVIDIA GPUs (cuDNN рдЖрдгрд┐ OpenCL), Intel AVX рд╡реЗрдХреНрдЯрд░ рд╕реВрдЪрдирд╛, FPGAs рдЖрдгрд┐ рдорд▓реНрдЯреА-рдХреЛрд░ x86 CPUs рд╡рд╛рдкрд░реВрди рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ ISA рд╡рд╛рдкрд░реВрди рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдиреЛрдбреНрд╕рдЪреЗ рднрд╛рд╖рд╛рдВрддрд░ рдХрд░рдгреНрдпрд╛рд╕ рд╕рдХреНрд╖рдо рдЖрд╣реЗрдд. рд╣реЗ рдиреЛрдВрджрд╡рд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ рдХреА HPVM рдЕрдиреБрд╡рд╛рджрдХрд╛рдВрдЪреА рдХрд╛рдордЧрд┐рд░реА GPU рдЖрдгрд┐ рд╡реЗрдХреНрдЯрд░ рд╕рдВрдЧрдгрдХреАрдп рдЙрдкрдХрд░рдгрд╛рдВрд╕рд╛рдареА рд╣рд╛рддрд╛рдиреЗ рд▓рд┐рд╣рд┐рд▓реЗрд▓реНрдпрд╛ OpenCL рдХреЛрдбрд╢реА рддреБрд▓рдирд╛ рдХрд░рддрд╛ рдпреЗрддреЗ.

HPVM 2.0 рдЪреЗ рдкреНрд░рдореБрдЦ рдирд╡рдХрд▓реНрдкрдирд╛:

  • рдПрдХ Hetero-C++ рд▓рдБрдЧреНрд╡реЗрдЬ рдлреНрд░рдВрдЯрдПрдВрдб рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХреЗрд▓рд╛ рдЖрд╣реЗ, рдЬреЛ HPVM рдордзреНрдпреЗ рд╕рдВрдХрд▓рдирд╛рд╕рд╛рдареА C/C++ рдордзреАрд▓ рдНрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдбрдЪреЗ рд╕рдорд╛рдВрддрд░реАрдХрд░рдг рд╕реБрд▓рдн рдХрд░рддреЛ. Hetero-C++ рдбреЗрдЯрд╛-рд╕реНрддрд░реАрдп рд╕рдорд╛рдВрддрд░рддрд╛ рдЖрдгрд┐ рд╢реНрд░реЗрдгреАрдмрджреНрдз рдХрд╛рд░реНрдпрд╛рдВрд╕рд╛рдареА рд╡рд┐рд╕реНрддрд╛рд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рдЬреЗ HPVM рдереНрд░реЗрдб рдЖрд▓реЗрдЦрд╛рдВрд╡рд░ рдореЕрдк рдХрд░рддрд╛рдд.
  • Intel FPGAs рд╡рд░ рдХреЛрдб рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрд╕рд╛рдареА рд╕рдорд░реНрдерди рдкреБрд░рд╡рдгреНрдпрд╛рд╕рд╛рдареА FPGA рдмреЕрдХрдПрдВрдб рдЬреЛрдбрд▓рд╛ рдЧреЗрд▓рд╛ рдЖрд╣реЗ. рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдЖрдпреЛрдЬрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, OpenCL рд╕рд╛рдареА Intel FPGA SDK рд╡рд╛рдкрд░рд▓рд╛ рдЬрд╛рддреЛ.
  • DSE (рдбрд┐рдЭрд╛рдЗрди рд╕реНрдкреЗрд╕ рдПрдХреНрд╕рдкреНрд▓реЛрд░реЗрд╢рди) рдлреНрд░реЗрдорд╡рд░реНрдХ рдЬреЛрдбрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ, рдЬреНрдпрд╛рдордзреНрдпреЗ рдХрдВрдкрд╛рдЗрд▓рд░ рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рди рдЖрдгрд┐ рджрд┐рд▓реЗрд▓реНрдпрд╛ рд╣рд╛рд░реНрдбрд╡реЗрдЕрд░ рдкреНрд▓реЕрдЯрдлреЙрд░реНрдорд╕рд╛рдареА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рддрдкрдгреЗ рдЯреНрдпреВрдирд┐рдВрдЧ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЕрдбрдерд│реЗ рдУрд│рдЦрдгреНрдпрд╛рд╕рд╛рдареА рдпрдВрддреНрд░рдгрд╛ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗ. рдлреНрд░реЗрдорд╡рд░реНрдХрдордзреНрдпреЗ Intel рдХрдбреАрд▓ FPGAs рд╕рд╛рдареА рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реЗ рдХрд╛рд░реНрдпрдкреНрд░рджрд░реНрд╢рди рдореЙрдбреЗрд▓ рдЖрд╣реЗ рдЖрдгрд┐ HPVM рджреНрд╡рд╛рд░реЗ рд╕рдорд░реНрдерд┐рдд рдХреЛрдгрддреНрдпрд╛рд╣реА рдЙрдкрдХрд░рдгрд╛рдВрд╕рд╛рдареА рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рдирд╕рд╛рдареА рдЖрдкрд▓реЗ рд╕реНрд╡рддрдГрдЪреЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрдиреЗрдХреНрдЯ рдХрд░рдгреЗ рд╢рдХреНрдп рдХрд░рддреЗ. HPVM рдЖрдгрд┐ LLVM рдбреЗрдЯрд╛рдлреНрд▓реЛ рдЖрд▓реЗрдЦ рджреЛрдиреНрд╣реА рд╕реНрддрд░рд╛рдВрд╡рд░ рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рди рд▓рд╛рдЧреВ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ.
  • LLVM рдШрдЯрдХ рдЖрд╡реГрддреНрддреА 13.0 рдордзреНрдпреЗ рд╕реБрдзрд╛рд░рд┐рдд рдХреЗрд▓реЗ рдЖрд╣реЗрдд.
  • рдХреЛрдб рдмреЗрд╕, рд▓рд╛рдпрдмреНрд░рд░реА рдЖрдгрд┐ рдпреБрдЯрд┐рд▓рд┐рдЯреАрдЬрдордзреНрдпреЗ рдиреЗрд╡реНрд╣рд┐рдЧреЗрдЯ рдХрд░рдгреЗ рд╕реЛрдкреЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХреЛрдбрдЪреА рдкреБрдирд░реНрд░рдЪрдирд╛ рдХрд░рдгреНрдпрд╛рдд рдЖрд▓реА рдЖрд╣реЗ.
  • рдЪрд╛рдЪрдгреА рдкрд╛рдпрд╛рднреВрдд рд╕реБрд╡рд┐рдзрд╛ рд╕реБрдзрд╛рд░рд▓реНрдпрд╛ рдЧреЗрд▓реНрдпрд╛ рдЖрд╣реЗрдд, рд╡рд┐рд╡рд┐рдз HPVM рдШрдЯрдХрд╛рдВрд╕рд╛рдареА рдирд╡реАрди рдЪрд╛рдЪрдгреНрдпрд╛ рдЬреЛрдбрд▓реНрдпрд╛ рдЧреЗрд▓реНрдпрд╛ рдЖрд╣реЗрдд.

рд╕реНрддреНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛