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