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) рд▓реЗ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░рдХрд╛ рд╕рдорд╛рдирд╛рдиреНрддрд░ рдХрдореНрдкреНрдпреБрдЯрд┐рдЩ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░рд╣рд░реВ рдмреАрдЪ рдкреЛрд░реНрдЯреЗрдмрд┐рд▓рд┐рдЯреАрдХреЛ рд▓рд╛рдЧрд┐ рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ рд░ рд╡рд┐рд╖рдо рдкреНрд░рдгрд╛рд▓реАрдХрд╛ рд╡рд┐рднрд┐рдиреНрди рддрддреНрд╡рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрд╛ рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрди рдЧреБрдорд╛рдЙрди рдирджрд┐рди рд╕рдореНрднрд╡ рдмрдирд╛рдЙрдБрдЫред рднрд░реНрдЪреБрдЕрд▓ ISA рд▓рд╛рдИ рд╡рд┐рд╢реНрд╡рд╡реНрдпрд╛рдкреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдпреЛрдЧреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб рдбреЗрд▓рд┐рднрд░ рдЧрд░реНрди рдкрдирд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ рдЬреБрди CPUs, GPUs, FPGAs, рд░ рд╡рд┐рднрд┐рдиреНрди рдЧрддрд┐рд╡рд░реНрдзрдХрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЪрд▓рд╛рдЙрди рд╕рдХрд┐рдиреНрдЫред

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

рдпреЛ рдЙрд▓реНрд▓реЗрдЦ рдЧрд░рд┐рдПрдХреЛ рдЫ рдХрд┐ HPVM рдХреЛ рдкреНрд░рдпреЛрдЧрд▓реЗ рдЙрддреНрдкрд╛рджрдХрддрд╛ рдорд╛ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╡реГрджреНрдзрд┐ рд╣рд╛рд╕рд┐рд▓ рдЧрд░реНрди рд╕рдХреНрдЫред HPVM рдЕрдиреБрд╡рд╛рджрдХрд╣рд░реВрдХреЛ рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрди GPU рд░ рднреЗрдХреНрдЯрд░ рдХрдореНрдкреНрдпреБрдЯрд┐рдЩ рдпрдиреНрддреНрд░рд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐ рд╣рд╛рддрд▓реЗ рд▓реЗрдЦрд┐рдПрдХреЛ OpenCL рдХреЛрдбрд╕рдБрдЧ рддреБрд▓рдирд╛ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред

рдкрд╣рд┐рд▓реЛ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рд░рд┐рд▓реАрдЬрдХреЛ рддреБрд▓рдирд╛рдорд╛, HPVM 1.0 рд▓реЗ рд░реИрдЦрд┐рдХ рдмреАрдЬрдЧрдгрд┐рдд рдЯреЗрдиреНрд╕рд░ рдЕрдкрд░реЗрд╕рдирд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди, Pytorch рд░ Keras рдХреЛ рд▓рд╛рдЧрд┐ рдлреНрд░рдиреНрдЯрдПрдиреНрдбрд╣рд░реВ, рдХрдиреНрднреЛрд▓реБрд╕рди рдЕрдкрд░реЗрдЯрд░ рдЕрдиреБрдорд╛рдирд╣рд░реВ, рд░ рдПрдХ рдЕрдиреБрдорд╛рдирд┐рдд рдЯреНрдпреБрдирд┐рдЩ рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫ рдЬрд╕рд▓реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЯреЗрдиреНрд╕рд░ рдЕрдкрд░реЗрд╢рдирд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЗрд╖реНрдЯрддрдо рдЕрдиреБрдорд╛рдирд╣рд░реВ рдЪрдпрди рдЧрд░реНрджрдЫ рд░ рдЗрд╖реНрдЯрддрдо рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рджрд╛рди рдЧрд░реНрдиреЗ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдЪрдпрди рдЧрд░реНрджрдЫред

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди