HPVM 2.0, compiler no CPU, GPU, FPGA a me nā lako accelerators i paʻi ʻia

Ua hoʻolaha ka papahana LLVM i ka hoʻokuʻu ʻia ʻana o HPVM 2.0 (Heterogeneous Parallel Virtual Machine), kahi mea hoʻopili i manaʻo ʻia e hoʻomaʻamaʻa i ka polokalamu no nā ʻōnaehana heterogeneous a me ka hāʻawi ʻana i nā mea hana code generation no CPUs, GPUs, FPGAs, a me nā mea hoʻokele waiwai kikoʻī. Hāʻawi ʻia ke code papahana ma lalo o ka laikini Apache 2.0.

Paʻakikī ka papahana no nā ʻōnaehana heterogeneous ma muli o ka loaʻa ʻana o nā ʻāpana i ka ʻōnaehana hoʻokahi e hoʻohana ana i nā hiʻohiʻona like ʻole no ka loaʻa ʻana o ka parallelism (CPU cores, vector instructions, GPU, etc.), nā ʻōkuhi aʻo like ʻole a me nā hierarchies hoʻomanaʻo like ʻole. Hoʻohana kēlā me kēia ʻōnaehana i kāna hui ponoʻī o kēia mau mea. ʻO ka manaʻo nui o ka papahana HPVM ʻo ia ka hoʻohana ʻana i kahi hōʻike like ʻole o nā papahana i hoʻokō ʻia i ka wā e hōʻuluʻulu ai, hiki ke hoʻohana ʻia no nā ʻano mea like ʻole e kākoʻo ana i ka computing parallel, me nā GPU, nā kuhikuhi vector, nā kaʻina hana multi-core, FPGA a me nā ʻāpana hoʻokele kūikawā kūikawā.

ʻAʻole e like me nā ʻōnaehana ʻē aʻe, ua hoʻāʻo ʻo HPVM e hoʻohui i ʻekolu mau mana no ka hoʻonohonoho ʻana i ka helu helu heterogeneous - he ʻōlelo hoʻonohonoho a me ka hardware-independent intermediate representation (IR), virtual instruction set architecture (V-ISA) a me ka hoʻonohonoho manawa holo.

  • Hoʻonui ka hōʻike waena HPVM i ka hōʻike waena waena o LLVM o nā kuhikuhi ma o ka hoʻohana ʻana i kahi kiʻi kahe ʻikepili hierarchical e hopu ai i ka parallelism ma ka hana, ka ʻikepili, a me nā pae pipeline. Hoʻokomo pū ʻia ka hōʻike kikowaena HPVM i nā kuhikuhi vector a me ka hoʻomanaʻo like. ʻO ke kumu nui o ka hoʻohana ʻana i kahi hōʻike waena, ʻo ia ka hoʻokumu ʻana i nā code kūpono a me ka optimization no nā ʻōnaehana heterogeneous.
  • Hoʻokaʻawale ʻo Virtual Instruction Set Architecture (V-ISA) i nā hiʻohiʻona haʻahaʻa haʻahaʻa a hoʻohui i nā ʻano like ʻole o ka parallelism a me nā hale hoʻomanaʻo hoʻomanaʻo me ka hoʻohana ʻana i kahi kumu hoʻohālike kumu wale nō - ka pakuhi kahe o ka ʻikepili. ʻAe ʻo V-ISA iā ʻoe e hoʻokō i ka portability ma waena o nā ʻano mea like ʻole no ka computing parallel a hiki iā ʻoe ke nalowale i ka hana ke hoʻohana ʻana i nā mea like ʻole o nā ʻōnaehana heterogeneous. Hiki ke hoʻohana ʻia ʻo Virtual ISA no ka hāʻawi ʻana i ka code program executable universal e hiki ke holo me ka hoʻohana ʻana i nā CPU, GPU, FPGA, a me nā mea hoʻokele like ʻole.
  • Hoʻohana ʻia nā kulekele hoʻonohonoho maʻalahi no ke kaʻina hana helu i ka wā holo a ua hoʻokō ʻia ma muli o ka ʻike e pili ana i ka papahana (graph structure) a ma o ka hoʻohui ʻana i nā node papahana pākahi no ka hoʻokō ʻana ma kekahi o nā mea hoʻopili helu i loaʻa i ka ʻōnaehana.

Hiki i nā mea hana code i hoʻomohala ʻia e ka papahana ke unuhi i nā nodes noi i wehewehe ʻia me ka ISA virtual no ka hoʻokō ʻana me ka NVIDIA GPUs (cuDNN a me OpenCL), nā kuhikuhi vector Intel AVX, FPGA a me nā CPU x86 multi-core. Hoʻomaopopo ʻia ka hoʻohālikelike ʻana o ka hana a nā mea unuhi HPVM me nā code OpenCL i kākau lima ʻia no nā GPU a me nā polokalamu kamepiula vector.

Nā hana hou nui o HPVM 2.0:

  • Ua manaʻo ʻia kahi ʻōlelo mua Hetero-C++, e hoʻomaʻamaʻa i ka parallelization o ka code noi ma C/C++ no ka hoʻohui ʻana ma HPVM. Wehewehe ʻo Hetero-C++ i nā mea hoʻonui no ka hoʻohālikelike pae ʻikepili a me nā hana hierarchical i palapala ʻia i nā kiʻi kikoʻī HPVM.
  • Ua hoʻohui ʻia kahi backend FPGA e hāʻawi i ke kākoʻo no ka hoʻokō code ma Intel FPGAs. No ka hoʻonohonoho ʻana i ka hoʻokō, hoʻohana ʻia ka Intel FPGA SDK no OpenCL.
  • Ua hoʻohui ʻia ka hoʻolālā DSE (Design Space Exploration), e komo pū ana me ka hoʻopili ʻana i ka compiler a me nā mīkini no ka ʻike ʻana i nā bottlenecks no ka hoʻoponopono ʻana i nā noi no kahi kahua lako lako. Aia i loko o ka papa hana kahi hoʻohālike hana mākaukau no nā FPGA mai Intel a hiki iā ia ke hoʻohui i kāu mau kaʻina hana ponoʻī no ka hoʻonui ʻana i nā mea i kākoʻo ʻia e HPVM. Hiki ke hoʻohana ʻia ka hoʻonui ʻana ma nā pae kiʻi kiʻi HPVM a me LLVM dataflow.
  • Ua hōʻano hou ʻia nā ʻāpana LLVM i ka mana 13.0.
  • Ua hoʻonohonoho hou ʻia ke code i mea e maʻalahi ai ka hoʻokele ʻana i ke kumu code, nā hale waihona puke, a me nā pono hana.
  • Ua hoʻomaikaʻi ʻia ka ʻōnaehana hoʻāʻo, ua hoʻohui ʻia nā hoʻokolohua hou no nā ʻāpana HPVM like ʻole.

Source: opennet.ru

Pākuʻi i ka manaʻo hoʻopuka