LLVM ప్రాజెక్ట్ HPVM 2.0 (హెటెరోజెనియస్ పారలల్ వర్చువల్ మెషిన్) విడుదలను ప్రకటించింది, ఇది భిన్నమైన సిస్టమ్ల కోసం ప్రోగ్రామింగ్ను సరళీకృతం చేయడం మరియు CPUలు, GPUలు, FPGAలు మరియు డొమైన్-నిర్దిష్ట హార్డ్వేర్ యాక్సిలరేటర్ల కోసం కోడ్ ఉత్పత్తి సాధనాలను అందించడం లక్ష్యంగా కంపైలర్. ప్రాజెక్ట్ కోడ్ Apache 2.0 లైసెన్స్ క్రింద పంపిణీ చేయబడింది.
వైవిధ్యమైన సమాంతర వ్యవస్థల కోసం ప్రోగ్రామింగ్ అనేది సమాంతరత (CPU కోర్లు, వెక్టార్ సూచనలు, GPU మొదలైనవి), విభిన్న సూచన సెట్లు మరియు విభిన్న మెమరీ శ్రేణులను సాధించడానికి వేర్వేరు నమూనాలను ఉపయోగించే ఒకే సిస్టమ్లోని భాగాల ఉనికి ద్వారా సంక్లిష్టంగా ఉంటుంది. ప్రతి సిస్టమ్ ఈ భాగాల యొక్క దాని స్వంత కలయికను ఉపయోగిస్తుంది. HPVM ప్రాజెక్ట్ యొక్క ప్రధాన ఆలోచన ఏమిటంటే, కంపైల్ చేసేటప్పుడు సమాంతరంగా అమలు చేయబడిన ప్రోగ్రామ్ల యొక్క ఏకీకృత ప్రాతినిధ్యాన్ని ఉపయోగించడం, ఇది GPUలు, వెక్టార్ సూచనలు, మల్టీ-కోర్ ప్రాసెసర్లు, FPGAలు మరియు సమాంతర కంప్యూటింగ్కు మద్దతు ఇచ్చే వివిధ రకాల హార్డ్వేర్ల కోసం ఉపయోగించవచ్చు. వివిధ ప్రత్యేక యాక్సిలరేటర్ చిప్స్.
ఇతర సిస్టమ్ల మాదిరిగా కాకుండా, HPVM భిన్నమైన కంప్యూటింగ్ను నిర్వహించడానికి మూడు సామర్థ్యాలను కలపడానికి ప్రయత్నించింది - ప్రోగ్రామింగ్ లాంగ్వేజ్ మరియు హార్డ్వేర్-ఇండిపెండెంట్ ఇంటర్మీడియట్ రిప్రజెంటేషన్ (IR), వర్చువల్ ఇన్స్ట్రక్షన్ సెట్ ఆర్కిటెక్చర్ (V-ISA) మరియు రన్టైమ్ షెడ్యూలింగ్:
- HPVM ఇంటర్మీడియట్ ప్రాతినిధ్యం టాస్క్, డేటా మరియు పైప్లైన్ స్థాయిలలో సమాంతరతను సంగ్రహించడానికి క్రమానుగత డేటా ఫ్లో గ్రాఫ్ని ఉపయోగించడం ద్వారా సూచనల యొక్క LLVM ఇంటర్మీడియట్ ప్రాతినిధ్యాన్ని విస్తరించింది. HPVM ఇంటర్మీడియట్ ప్రాతినిధ్యం వెక్టార్ సూచనలు మరియు షేర్డ్ మెమరీని కూడా కలిగి ఉంటుంది. ఇంటర్మీడియట్ ప్రాతినిధ్యాన్ని ఉపయోగించడం యొక్క ముఖ్య ఉద్దేశ్యం సమర్థవంతమైన కోడ్ ఉత్పత్తి మరియు వైవిధ్య వ్యవస్థల కోసం ఆప్టిమైజేషన్.
- వర్చువల్ ఇన్స్ట్రక్షన్ సెట్ ఆర్కిటెక్చర్ (V-ISA) తక్కువ-స్థాయి హార్డ్వేర్ ఫీచర్లను సంగ్రహిస్తుంది మరియు ప్రాథమిక సమాంతర నమూనా-డేటా ఫ్లో గ్రాఫ్ను మాత్రమే ఉపయోగించి వివిధ రకాల సమాంతరత మరియు మెమరీ నిర్మాణాలను ఏకం చేస్తుంది. V-ISA సమాంతర కంప్యూటింగ్ కోసం వివిధ రకాల పరికరాల మధ్య పోర్టబిలిటీని సాధించడానికి మిమ్మల్ని అనుమతిస్తుంది మరియు భిన్నమైన వ్యవస్థల యొక్క విభిన్న అంశాలను ఉపయోగించినప్పుడు పనితీరును కోల్పోకుండా ఉండటానికి వీలు కల్పిస్తుంది. CPUలు, GPUలు, FPGAలు మరియు వివిధ యాక్సిలరేటర్లను ఉపయోగించి అమలు చేయగల యూనివర్సల్ ఎక్జిక్యూటబుల్ ప్రోగ్రామ్ కోడ్ను అందించడానికి వర్చువల్ ISA కూడా ఉపయోగించబడుతుంది.
- గణన ప్రక్రియ కోసం అనువైన షెడ్యూలింగ్ విధానాలు రన్టైమ్లో వర్తింపజేయబడతాయి మరియు ప్రోగ్రామ్ (గ్రాఫ్ నిర్మాణం) గురించిన సమాచారం ఆధారంగా మరియు సిస్టమ్లో అందుబాటులో ఉన్న ఏదైనా లక్ష్య కంప్యూటింగ్ పరికరాలపై అమలు చేయడానికి వ్యక్తిగత ప్రోగ్రామ్ నోడ్ల సంకలనం ద్వారా అమలు చేయబడతాయి.
ప్రాజెక్ట్ ద్వారా అభివృద్ధి చేయబడిన కోడ్ జనరేటర్లు NVIDIA GPUలు (cuDNN మరియు OpenCL), Intel AVX వెక్టార్ సూచనలు, FPGAలు మరియు మల్టీ-కోర్ x86 CPUలను ఉపయోగించి అమలు చేయడానికి వర్చువల్ ISAని ఉపయోగించి నిర్వచించబడిన అప్లికేషన్ నోడ్లను అనువదించగలవు. HPVM అనువాదకుల పనితీరు GPUలు మరియు వెక్టర్ కంప్యూటింగ్ పరికరాల కోసం చేతితో వ్రాసిన OpenCL కోడ్తో పోల్చదగినదిగా గుర్తించబడింది.
HPVM 2.0 యొక్క ముఖ్య ఆవిష్కరణలు:
- హెటెరో-సి++ లాంగ్వేజ్ ఫ్రంట్ఎండ్ ప్రతిపాదించబడింది, ఇది HPVMలో సంకలనం కోసం C/C++లో అప్లికేషన్ కోడ్ యొక్క సమాంతరీకరణను సులభతరం చేస్తుంది. Hetero-C++ డేటా-స్థాయి సమాంతరత మరియు HPVM థ్రెడ్ గ్రాఫ్లకు మ్యాప్ చేసే క్రమానుగత పనుల కోసం పొడిగింపులను నిర్వచిస్తుంది.
- Intel FPGAలపై కోడ్ అమలుకు మద్దతును అందించడానికి FPGA బ్యాకెండ్ జోడించబడింది. అమలును నిర్వహించడానికి, OpenCL కోసం Intel FPGA SDK ఉపయోగించబడుతుంది.
- DSE (డిజైన్ స్పేస్ ఎక్స్ప్లోరేషన్) ఫ్రేమ్వర్క్ జోడించబడింది, ఇందులో కంపైలర్ ఆప్టిమైజేషన్లు మరియు ఇచ్చిన హార్డ్వేర్ ప్లాట్ఫారమ్ కోసం అప్లికేషన్లను స్వయంచాలకంగా ట్యూన్ చేయడం కోసం అడ్డంకులను గుర్తించే విధానాలు ఉన్నాయి. ఫ్రేమ్వర్క్ Intel నుండి FPGAల కోసం రెడీమేడ్ పనితీరు మోడల్ను కలిగి ఉంది మరియు HPVM ద్వారా మద్దతిచ్చే ఏదైనా పరికరాల కోసం ఆప్టిమైజేషన్ కోసం మీ స్వంత ప్రాసెసర్లను కనెక్ట్ చేయడం సాధ్యం చేస్తుంది. ఆప్టిమైజేషన్లు HPVM మరియు LLVM డేటాఫ్లో గ్రాఫ్ స్థాయిలు రెండింటిలోనూ వర్తించవచ్చు.
- LLVM భాగాలు వెర్షన్ 13.0కి నవీకరించబడ్డాయి.
- కోడ్ బేస్, లైబ్రరీలు మరియు యుటిలిటీలను సులభంగా నావిగేట్ చేయడానికి కోడ్ పునర్వ్యవస్థీకరించబడింది.
- టెస్టింగ్ ఇన్ఫ్రాస్ట్రక్చర్ మెరుగుపరచబడింది, వివిధ HPVM భాగాల కోసం కొత్త పరీక్షలు జోడించబడ్డాయి.
మూలం: opennet.ru