NO343250B1 - Compilation for node device gpu-based parallel processing - Google Patents

Compilation for node device gpu-based parallel processing Download PDF

Info

Publication number
NO343250B1
NO343250B1 NO20171277A NO20171277A NO343250B1 NO 343250 B1 NO343250 B1 NO 343250B1 NO 20171277 A NO20171277 A NO 20171277A NO 20171277 A NO20171277 A NO 20171277A NO 343250 B1 NO343250 B1 NO 343250B1
Authority
NO
Norway
Prior art keywords
task
gpu
routine
data set
node device
Prior art date
Application number
NO20171277A
Other languages
English (en)
Other versions
NO20171277A1 (en
Inventor
Henry Gabriel Victor Bequet
Huina Chen
Original Assignee
Sas Inst Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US15/422,285 external-priority patent/US9760376B1/en
Application filed by Sas Inst Inc filed Critical Sas Inst Inc
Publication of NO20171277A1 publication Critical patent/NO20171277A1/en
Publication of NO343250B1 publication Critical patent/NO343250B1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/456Parallelism detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5055Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering software capabilities, i.e. software resources associated or available to the machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0654Management of faults, events, alarms or notifications using network fault recovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/561Adding application-functional data or data for application control, e.g. adding metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload

Claims (1)

1. Anordning som omfatter en prosessor og en lagring for a lagre instruksjoner som, nar de eksekveres av prosessoren, bevirker prosessoren til a utfore operasjoner som omfatter:
a analysere en aktuell status for ressurser hos minst en nodeanordning av en flerhet av nodeanordninger for a bestemme en tilgjengelighet av minst en grafikkprosessorenhet (GPU) hos den minst ene nodeanordningen som skal tildeles a utfore en forste oppgave av en analyserutine, hvori:
betjening av de flere nodeanordninger koordineres for a utfore oppgaver av analyserutiner i det minste delvis parallelt;
analyserutinen genereres for a eksekveres av minst en sentral prosesseringsenhet (CPU) hos den minst ene noden; og
ressursene hos den minst ene nodeanordningen er valgt fra en gruppe som bestar av den minst ene CPU-en, den minst ene GPU-en, oglagringsrom i minst en lagring hos den minst ene nodeanordningen;
som respons pa en bestemmelse av at den minst ene GPU-en er tilgjengeligfor a tildeles a utfore den forste oppgaven av analyserutinen:
a analysere en forste oppgaverutine av analyserutinen for a bestemme hvorvidt den forste oppgaverutinen kan kompileres til a generere en GPU-oppgaverutine for a eksekveres av den minst ene GPUen for a bevirke den minst ene GPU-en til a utfore flere forekomster av denforste oppgaven av analyserutinen i det minste delvis parallelt uten en avhengighet blant innmating og utmating av de flere forekomstene av den forste oppgaven, hvori:
den forste oppgaverutinen genereres for a eksekveres av den minst ene CPU-en for a utfore den forsteoppgaven av analyserutinen; og
bestemmelsen av hvorvidt den forste
oppgaverutinen kan kompileres for a generere GPUoppgaverutinen omfatter en bestemmelse av hvorvidt den forste oppgaverutinen inkluderer en instruksjon som forhindrer
omperngena generere-oppgaverunen, og enbestemmelse av hvorvidt innmating og utmating av den forste oppgaverutinen er definert til a ikke kreve avhengigheten; og som respons pa en bestemmelse av at den forste oppgaverutinen kan kompileres til a generere GPU-oppgaverutinen:
a tildele en datasettpartisjon av en flerhet av datasettpartisjoner av et datasett til den minst ene nodeanordningen for a muliggjore tilgang til datasettpartisjonen for den minst ene GPU-en;
a anvende en konverteringsregel for a konvertere minst en instruksjon til den forste oppgaverutinen til minst en korresponderende instruksjon til GPU-oppgaverutinen;
a kompilere den minst ene korresponderende instruksjonen til GPU-oppgaverutinen for a eksekveres av denminst ene GPU-en; og
a tildele en utforelse av den forste oppgaven av analyserutinen med datasettpartisjonen til den minst ene nodeanordningen for a muliggjore utforelse av de flere forekomstene av den forste oppgaven med datasettpartisjonen for den minst ene GPU-en.
2. Anordning ifolge krav 1, hvori for a bestemme hvorvidt den forste oppgaverutinen inkluderer en instruksjon som forhindrer kompileringen i a generere GPU-oppgaverutinen, prosessorenbevirkes til a:
a bestemme hvorvidt instruksjonen til den forste oppgaverutinen er inkludert i et sett av instruksjoner som ikke kan konverteres til minst en instruksjon som kan eksekveres av den minst ene GPU-en; og
som respons pa en bestemmelse om at instruksjonen til den forste oppgaverutinen ikke er inkludert i settet av instruksjoner, a bestemme hvorvidt instruksjonen til den forste oppgaverutinen anvendes i den forste oppgaverutinen pa en mate som forhindrer konvertering til minst en instruksjon som kan eksekveres av den minst ene GPU-en.
.nornngogerav,voror aonverereen mnsenensrusonenenorse oppgaverutinen til den minst ene korresponderende instruksjonen til GPU-oppgaverutinen,prosessoren bevirkes til a konvertere den minst ene instruksjonen til den forste oppgaverutinen fra et forste programmeringssprak til den minst ene korresponderende instruksjonen i et andre programmeringssprak i samsvar med konverteringsregelen.
4. Anordning ifolge krav 1, hvori:
den minst ene lagringen av den minst ene nodeanordningen omfatter en forste flyktig lagring som er kommunikativt forbundet med den minst ene CPU-en, ogen andre flyktig lagring som er kommunikativt forbundet med den minst ene GPU-en;
a tildele datasettpartisjonen til den minst ene nodeanordningen for a muliggjore tilgang til datasettpartisjonen for den minst ene GPU-en omfatter aforarsake at datasettpartisjonen lagres i den andre flyktige lagringen; og
som respons pa en bestemmelse av at den minst ene GPU-en ikke ertilgjengelig for a bli tilde It a utfore den forste oppgaven av analyserutinen, bevirkes prosessoren til a utfore operasjoner som omfatter:
a avsta fra a analysere den forste oppgaverutinen for a bestemme hvorvidt den forste oppgaverutinen kan kompileres til a generere GPU-oppgaverutinen;
a tildele datasettpartisjonen til den minst ene nodeanordningen for a forarsake lagring av datasettpartisjonen i den forste flyktige lagringen for a muliggjore tilgang til datasettpartisjonen for den minst ene CPU-en;
a kompilere den forste oppgaverutinen for eksekvering av den minst ene CPU-en; og
a tildele utforelsen av den forste oppgaven av analyserutinen med datasettpartisjonen til den minst ene nodeanordningen for a muliggjore utforelse av den forste oppgaven med datasettpartisjonen for den minst ene CPU-en.
.nornngogerav,vor:
anordningen omfatter en koordineringsanordning som koordinerer operasjonen av flerheten av nodeanordninger;
prosessoren bevirkes til a gjentakende motta oppdateringer av aktuell status fra hver nodeanordning av flerheten av nodeanordninger; og
for a analysere den aktuelle statusen for a bestemme tilgjengelighet av den minst ene GPU-en hos den minst ene nodeanordningen, prosessoren bevirkes til aidentifisere en nodeanordning av flerheten av nodeanordninger som inkorporerer en GPU indikert av den aktuelle statusen som tilgjengelig.
6. Anordning ifolge krav 5, hvori for a tildele datasettpartisjonen av datasettet til den minst ene nodeanordningen, prosessoren bevirkes til a utfore operasjoner som omfatter:
a analysere en metadata som indikerer strukturelle egenskaper i datasettet for a identifisere en restriksjon pa en mate som gjor at datasettet kan deles inn i flerheten av datasettpartisjoner, hvori restriksjonen er valgt fra en gruppe som bestar av en indikasjon pa en minste atomisk dataenhet i datasettet, og en spesifikasjon av et partisjoneringsoppsett; og
a derivere en oppdeling av datasettet inn i flerheten av datasettpartisjoner basert i det minste delvis pa restriksjonen.
7. Anordning ifolge krav 6, hvori prosessoren bevirkes til a utfore operasjoner som omfatter:
a hente metadataen fra minst en lagringsanordning der datasettet er lagret; og
a sende en indikasjon pa tildelingen av datasettpartisjonen til den minst ene nodeanordningen eller den minst ene lagringsanordningen for a forarsake en sending av datasettpartisjonen fra den minst ene lagringsanordningen til den minst ene nodeanordningen.
.nornngogerav,vor:
anordningen omfatter en nodeanordning av den minst ene nodeanordningen;
nodeanordningen omfatter en GPU av den minst ene GPU-en;
prosessoren omfatter en CPU av den minst ene CPU-en; og
for a analysere den aktuelle statusen for a bestemme tilgjengelighet av den minst ene GPU-en hos den minst ene nodeanordningen, CPU-en bevirkes til abestemme hvorvidt GPU-en hos nodeanordningen er indikert av den aktuelle statusensom tilgjengelig.
9. Anordning ifolge krav 1, hvori prosessoren bevirkes til a utfore operasjoner som omfatter:
a analysere en andre oppgaverutine av analyserutinen for a bestemme hvorvidt den andre oppgaverutinen kan bli kompilert til a generere en annen GPUoppgaverutine for a eksekveres av den minst ene GPU-en for a bevirke den minst eneGPU-en til a utfore flere forekomster av den andre oppgaven av analyserutinen i detminste delvis parallelt uten en avhengighet blant innmating og utmating av de flere forekomstene av den andre oppgaven, hvori den andre oppgaverutinen genereres for a eksekveres av den minst ene CPU-en for a utfore en andre oppgave av analyserutinen;og
som respons pa en bestemmelse av at den andre oppgaverutinen ikke kan kompileres til a generere den andre GPU-oppgaverutinen:
a kompilere den andre oppgaverutinen for eksekvering av den minst ene CPU-en; og
a tildele en utforelse av den andre oppgaven av analyserutinen med datasettpartisjonen til den minst ene nodeanordningen for a muliggjore utforelse av den andre oppgaven med datasettpartisjonen for den minst ene CPU-en.
10.Anordning ifolge krav 1, hvori konverteringsregelen er valgt fra en gruppe som bestar av:
en spesason av eseavnsrusoner somverornrer kompilering av den fiarstc oppgaverutinen i a generere GPU-oppgaverutinen dersomden er til stede i den forste oppgaverutinen;
en spesifikasjon av et sett av instruksjoner som hver ikke ville forhindre kompilering av den forste oppgaverutinen i a generere GPU-oppgaverutinen dersomden er til stede i den forste oppgaverutinen;
en spesifikasjon av en bruksmate av en instruksjon som forhindrer kompilering av den forste oppgaverutinen i a generere GPU-oppgaverutinen dersombruksmaten av instruksjonen forekommer i den forste oppgaverutinen, hvori tilstedevserelsen av instruksjonen i den forste oppgaverutinen ellers ikke forhindrer kompilering av den forste oppgaverutinen i a generere GPU-oppgaverutinen;
en spesifikasjon av en prosedyre for a konvertere instruksjoner i den forste oppgaverutinen som skal eksekveres i en lokke av den minst ene CPU-en tilkorresponderende instruksjoner hos GPU-oppgaverutinen som skal eksekveresparallel! av den minst ene GPU-en i en korresponderende lokke med ferre iterasjonerenn lokken;
en spesifikasjon av en prosedyre for a konvertere instruksjoner i den forste oppgaverutinen som skal eksekveres i en lokke av den minst ene CPU-en tilkorresponderende instruksjoner hos GPU-oppgaverutinen som skal eksekveresparallelt av den minst ene GPU-en og ikke i en lokke; og
en spesifikasjon av en prosedyre for a konvertere instruksjoner i den forste oppgaverutinen som definerer en datastruktur som omfatter oppforinger som skal tilgas sekvensielt under eksekvering av den forste oppgaverutinen av den minst ene CPU-en, til korresponderende instruksjoner hos GPU-oppgaverutinen som definereren korresponderende datastruktur som omfatter oppforinger som skal tilgas parallelt under eksekvering av GPU-oppgaverutinen av den minst ene GPU-en.
11. Datamaskinprogramprodukt som er fast innlemmet i et ikke-transitorisk, maskinlesbartlagringsmedium, der datamaskinprogramproduktet inkluderer instruksjoner betjenelige for a forarsake en prosessor til a utfore operasjoner som omfatter:
a analysere en aktuell status for ressurser hos minst en nodeanordning av en flerhet av nodeanordninger for a bestemme en tilgjengelighet av minst en
graprosessoreneosen mnsene noeanornngen som saees a utfore en forste oppgave av en analyserutine, hvori:
operas)on av flerheten av nodeanordninger koordineres for a utfore oppgaver av analyserutinen i det minste delvis parallelt;
analyserutinen genereres for a eksekveres av minst en hovedprosessor (CPU) hos den minst ene noden; og
ressursene hos den minst ene nodeanordningen er valgt fra en gruppe som bestar av den minst ene CPU-en, den minst ene GPU-en, oglagringsrom i minst en lagring hos den minst ene nodeanordningen;
som respons pa en bestemmelse av at den minst ene GPU-en er tilgjengeligfor a tildeles a utfore den forste oppgaven av analyserutinen:
a analysere en forste oppgaverutine av analyserutinen for a bestemme hvorvidt den forste oppgaverutinen kan kompileres til a generere en GPU-oppgaverutine for a eksekveres av den minst ene GPUen for a bevirke den minst ene GPU-en til a utfore flere forekomster av denforste oppgaven av analyserutinen i det minste delvis parallelt uten en avhengighet blant innmating og utmating av de flere forekomstene av den forste oppgaven, hvori:
den forste oppgaverutinen genereres for a eksekveres av den minst ene CPU-en for a utfore den forsteoppgaven av analyserutinen; og
bestemmelsen av hvorvidt den forste oppgaverutinen kan kompileres for a generere GPUoppgaverutinen omfatter en bestemmelse av hvorvidt den forste oppgaverutinen omfatter en instruksjon som forhindrer kompileringen i a generere GPU-oppgaverutinen, og enbestemmelse av hvorvidt innmating og utmating av den forste oppgaverutinen defineres til a ikke kreve avhengigheten; og som respons pa en bestemmelse av at den forste
oppgaverutinen kan kompileres til a generere GPU-oppgaverutinen:
a tildele en datasettpartisjon av en flerhet av datasettpartisjoner av et datasett til den minst ene
noeanornngenor a muggoregangaaseparsonen for den minst ene GPU-en;
a anvende en konverteringsregel for a konvertere minst en instruksjon til den forste oppgaverutinen til minst en korresponderende instruksjon til GPU-oppgaverutinen;
a kompilere den minst ene korresponderende instruksjonen til GPU-oppgaverutinen for eksekvering av denminst ene GPU-en; og
a tildele en utforelse av den forste oppgaven av analyserutinen med datasettpartisjonen til den minst ene nodeanordningen for a muliggjore utforelse av de Here forekomstene av den forste oppgaven med datasettpartisjonen for den minst ene GPU-en.
12. Datamaskinprogramprodukt ifolge krav 11, hvori for a bestemme hvorvidt den forste oppgaverutinen omfatter en instruksjon som forhindrer kompileringen i a generere GPUoppgaverutinen, prosessoren bevirkes til a:
a bestemme hvorvidt instruksjonen til den forste oppgaverutinen er inkludert i et sett av instruksjoner som ikke kan konverteres til minst en instruksjon som kan eksekveres av den minst ene GPU-en; og
som respons pa en bestemmelse om at instruksjonen til den forste oppgaverutinen ikke inkluderes i settet av instruksjoner, a bestemme hvorvidt instruksjonen til den forste oppgaverutinen brukes i den forste oppgaverutinen pa en mate som hindrer konvertering til minst en instruksjon som kan eksekveres av den minst ene GPU-en.
13. Datamaskinprogramprodukt ifolge krav 11, hvori for a konvertere den minst ene instruksjonen til den forste oppgaverutinen til den minst ene korresponderende instruksjonen til GPU-oppgaverutinen, prosessoren bevirkes til a konvertere den minst ene instruksjonen til denforste oppgaverutinen fra et forste programmeringssprak til den minst ene korresponderende instruksjonen i et andre programmeringssprak i samsvar med konverteringsregelen.
14. Datamaskinprogramprodukt ifolge krav 11, hvori:
den minst ene lagringen av den minst ene nodeanordningen omfatter en forste flyktig lagring som er kommunikativt forbundet med den minst ene CPU-en, ogen andre flyktig lagring som er kommunikativt forbundet med den minst ene GPU-en;
a tildele datasettpartisjonen til den minst ene nodeanordningen for a muliggjore tilgang til datasettpartisjonen for den minst ene GPU-en omfatter aforarsake at datasettpartisjonen lagres i den andre flyktige lagringen; og
som respons pa en bestemmelse av at den minst ene GPU-en ikke ertilgjengelig for a tildeles a utfore den forste oppgaven av analyserutinen, bevirkes prosessoren til a utfore operasjoner som omfatter:
a avsta fra a analysere den forste oppgaverutinen for a bestemme hvorvidt den forste oppgaverutinen kan kompileres til a generere GPU-oppgaverutinen;
a tildele datasettpartisjonen til den minst ene nodeanordningen for a forarsake lagring av datasettpartisjonen i den forste flyktige lagringen til a muliggjore tilgang til datasettpartisjonen for den minst ene CPU-en;
a kompilere den forste oppgaverutinen for eksekvering av den minst ene CPU-en; og
a tildele utforelsen av den forste oppgaven av analyserutinen med datasettpartisjonen til den minst ene nodeanordningen for a muliggjore utforelse av den forste oppgaven med datasettpartisjonen for den minst ene CPU-en.
15. Datamaskinprogramprodukt ifolge krav 11, hvori:
prosessoren er en komponent av en koordineringsanordning som koordinerer operasjonen av flerheten av nodeanordninger;
prosessoren bevirkes til a gjentakende motta oppdateringer av den aktuelle statusen fra hver nodeanordning av flerheten av nodeanordninger; og
or a anaysereen auee sausenor aesemmegengegeaven minst ene GPU-en hos den minst ene nodeanordningen, prosessoren bevirkes til aidentifisere en nodeanordning av flerheten av nodeanordninger som inkorporerer en GPU indikert i den aktuelle statusen som tilgjengelig.
16. Datamaskinprogramprodukt ifolge krav 15, hvori for a tildele datasettpartisjonen av datasettet til den minst ene nodeanordningen, prosessoren bevirkes til a utfore operasjoner som omfatter:
a analysere en metadata som indikerer strukturelle egenskaper i datasettet for a identifisere en restriksjon pa en mate som gjor at datasettet kan deles inn i flerheten av datasettpartisjoner, hvori restriksjonen er valgt fra en gruppe som bestar av en indikasjon pa en minste atomisk dataenhet i datasettet, og en spesifikasjon av et partisjoneringsoppsett; og
a derivere en oppdeling av datasettet i flerheten av datasettpartisjoner basert i det minste delvis pa restriksjonen.
17. Datamaskinprogramprodukt ifolge krav 16, hvori prosessoren bevirkes til a utfore operasjoner som omfatter:
a hente metadataen fra minst en lagringsanordning der datasettet er lagret; og
a sende en indikasjon pa tildelingen av datasettpartisjonen til den minst ene nodeanordningen eller den minst ene lagringsanordningen for a forarsake en sending av datasettpartisjonen fra den minst ene lagringsanordningen til den minst ene nodeanordningen.
18. Datamaskinprogramprodukt ifolge krav 11, hvori:
prosessoren omfatter en CPU av den minst ene CPU-en;
CPU-en er en komponent av en nodeanordning av den minst enenodeanordningen;
nodeanordningen omfatter en GPU av den minst ene GPU-en; og
or a anaysereen auee sausenor aesemmegengegeaven minst ene GPU-en hos den minst ene nodeanordningen, CPU-en bevirkes til abestemme hvorvidt GPU-en hos nodeanordningen er indikert av den aktuelle statusensom tilgjengelig.
19. Datamaskinprogramprodukt ifolge krav 11, hvori prosessoren bevirkes til a utfore operasjoner som omfatter:
a analysere en andre oppgaverutine av analyserutinen for a bestemme hvorvidt den andre oppgaverutinen kan kompileres til a generere en annen GPUoppgaverutine for a eksekveres av den minst ene GPU-en for a bevirke den minst eneGPU-en til a utfore flere forekomster av den andre oppgaven av analyserutinen i detminste delvis parallelt uten en avhengighet blant innmating og utmating av de flere forekomstene av den andre oppgaven, hvori den andre oppgaverutinen genereres for eksekvering av den minst ene CPU-en for a utfore en andre oppgave avanalyserutinen; og
som respons pa en bestemmelse av at den andre oppgaverutinen ikke kan kompileres til a generere den andre GPU-oppgaverutinen:
a kompilere den andre oppgaverutinen for eksekvering av den minst ene CPU-en; og
a tildele en utforelse av den andre oppgaven av analyserutinen med datasettpartisjonen til den minst ene nodeanordningen for a muliggjore utforelse av den andre oppgaven med datasettpartisjonen for den minst ene CPU-en.
20. Datamaskinprogramprodukt ifolge krav 11, hvori den minst ene GPU-en stotter eksekveringav den minst ene korresponderende instruksjonen til GPU-oppgaverutinen parallelt pa tvers avminst ett tusen eksekveringstrader.
21. Datamaskinimplementert framgangsmate som omfatter:
a analysere en aktuell status for ressurser hos minst en nodeanordning av en flerhet av nodeanordninger for a bestemme en tilgjengelighet av minst en
graprosessoreneosen mnsene noeanornngen som saees a utfore en forste oppgave av en analyserutine, der:
operas)on av flerheten av nodeanordninger koordineres for a utfore oppgaver av analyserutiner i det minste delvis parallelt;
analyserutinen genereres for a eksekveres av minst en sentral prosesseringsenhet (CPU) hos den minst ene noden; og
ressursene hos den minst ene nodeanordningen er valgt fra en gruppe som bestar av den minst ene CPU-en, den minst ene GPU-en, oglagringsrom i minst en lagring hos den minst ene nodeanordningen;
som respons pa en bestemmelse av at den minst ene GPU-en er tilgjengeligfor a tildeles a utfore den forste oppgaven av analyserutinen:
a analysere en forste oppgaverutine av analyserutinen for a bestemme hvorvidt den forste oppgaverutinen kan kompileres til a generere en GPU-oppgaverutine for a eksekveres av den minst ene GPUen for a forarsake den minst ene GPU-en til a utfore flere forekomster avden forste oppgaven av analyserutinen i det minste delvis parallelt uten en avhengighet blant innmating og utmating av de flere forekomstene av den forste oppgaven, hvori:
den forste oppgaverutinen genereres for a eksekveres av den minst ene CPU-en for a utfore den forsteoppgaven av analyserutinen; og
bestemmelsen av om hvorvidt den forste oppgaverutinen kan kompileres for a generere GPUoppgaverutinen omfatter en bestemmelse av hvorvidt den forste oppgaverutinen inkluderer en instruksjon som forhindrer kompileringen i a generere GPU-oppgaverutinen, og enbestemmelse av om hvorvidt innmating og utmating av den forste oppgaverutinen defineres til a ikke kreve avhengigheten; og
som respons pa en bestemmelse av at den forste oppgaverutinen kan kompileres til a generere GPU-oppgaverutinen:
aee enaaseparson av enereav datasettpartisjoner av et datasett til den minst ene nodeanordningen for a muliggjore tilgang til datasettpartisjonen for den minst ene GPU-en;
a anvende en konverteringsregel for a konvertere minst en instruksjon til den forste oppgaverutinen til minst en korresponderende instruksjon til GPU-oppgaverutinen;
a kompilere den minst ene korresponderende instruksjonen til GPU-oppgaverutinen for a eksekveres av denminst ene GPU-en; og
a tildele en utforelse av den forste oppgaven av analyserutinen med datasettpartisjonen til den minst ene nodeanordningen for a muliggjore utforelse av de Here forekomstene av den forste oppgaven med datasettpartisjonen for den minst ene GPU-en.
22. Datamaskinimplementert framgangsmate ifolge krav 21, hvori a bestemme hvorvidt den forste oppgaverutinen omfatter en instruksjon som forhindrer kompileringen i a generere GPUoppgaverutinen, omfatter:
a bestemme hvorvidt instruksjonen til den forste oppgaverutinen er inkludert i et sett av instruksjoner som ikke kan konverteres til minst en instruksjon som kan eksekveres av den minst ene GPU-en; og
som respons pa en bestemmelse om at instruksjonen til den forste oppgaverutinen ikke inkluderes i settet av instruksjoner, a bestemme hvorvidt instruksjonen til den forste oppgaverutinen blir brukt i den forste oppgaverutinen pa en mate som forhindrer konvertering til minst en instruksjon som kan eksekveres av den minst ene GPU-en.
23. Datamaskinimplementert framgangsmate ifolge krav 21, hvori a konvertere den minst ene instruksjonen til den forste oppgaverutinen til den minst ene korresponderende instruksjonen til GPU-oppgaverutinen, omfatter a konvertere den minst ene instruksjonen til den forste
oppgaverunenra eorse programmerngsspraen mnseneorresponerene instruksjonen i et andre programmeringssprak i samsvar med konverteringsregelen.
24. Datamaskinimplementert framgangsmate ifolge krav 21, hvori:
den minst ene lagringen av den minst ene nodeanordningen omfatter en forste flyktig lagring som er kommunikativt forbundet med den minst ene CPU-en, ogen andre flyktig lagring som er kommunikativt forbundet med den minst ene GPU-en;
a tildele datasettpartisjonen til den minst ene nodeanordningen for a muliggjore tilgang til datasettpartisjonen for den minst ene GPU-en omfatter aforarsake at datasettpartisjonen lagres i den andre flyktige lagringen; og
som respons pa en bestemmelse av at den minst ene GPU-en ikke ertilgjengelig for a tildeles a utfore den forste oppgaven av analyserutinen, omfatter framgangsmaten:
a avsta fra a analysere den forste oppgaverutinen for a bestemme hvorvidt den forste oppgaverutinen kan kompileres til a generere GPU-oppgaverutinen;
a tildele datasettpartisjonen til den minst ene nodeanordningen for a bevirke lagring av datasettpartisjonen i den forste flyktige lagringen for a muliggjore tilgang til datasettpartisjonen for den minst ene CPU-en;
a kompilere den forste oppgaverutinen for eksekvering av den minst ene CPU-en; og
a tildele utforelsen av den forste oppgaven av analyserutinen med datasettpartisjonen til den minst ene nodeanordningen for a muliggjore utforelse av den forste oppgaven med datasettpartisjonen for den minst ene CPU-en.
25. Datamaskinimplementert framgangsmate ifolge krav 21, hvori:
en koordineringsanordning koordinerer operasjonen av flerheten av nodeanordninger;
oornerngsanornngen genaene moar oppaernger aven aktuelle statusen fra hver nodeanordning av flerheten av nodeanordninger; og
a analysere den aktuelle statusen for a bestemme tilgjengelighet av den minst ene GPU-en hos den minst ene nodeanordningen, omfatter a identifisere, hoskoordineringsanordningen, en nodeanordning av flerheten av nodeanordninger som inkorporerer en GPU indikert i den aktuelle statusen som tilgjengelig.
26. Datamaskinimplementert framgangsmate ifolge krav 25, hvori a tildele datasettpartisjonen av datasettet til den minst ene nodeanordningen omfatter:
a analysere, hos koordineringsanordningen, en metadata som indikerer strukturelle egenskaper i datasettet for a identifisere en restriksjon pa en mate som gjor at datasettet kan deles inn i flerheten av datasettpartisjoner, hvori restriksjonen er valgt fra en gruppe som bestar av en indikasjon pa en minste atomisk dataenhet i datasettet, og en spesifikasjon av et partisjoneringsoppsett; og
a derivere en oppdeling av datasettet i flerheten av datasettpartisjoner basert i det minste delvis pa restriksjonen.
27. Datamaskinimplementert framgangsmate ifolge krav 26, som omfatter:
a hente metadataen fra minst en lagringsanordning der datasettet er lagret; og
a sende en indikasjon pa tildelingen av datasettpartisjonen til den minst ene nodeanordningen eller den minst ene lagringsanordningen for a forarsake en sending av datasettpartisjonen fra den minst ene lagringsanordningen til den minst ene nodeanordningen.
28. Datamaskinimplementert framgangsmate ifolge krav 21, hvori:
a analysere den aktuelle statusen for a bestemme tilgjengelighet av den minst ene GPU-en hos den minst ene nodeanordningen, omfatter a analysere, av enCPU hos en nodeanordning, en aktuell status hos nodeanordningen til hvorvidt en GPU hos nodeanordningen er tilgjengelig i oyeblikket, hvori:
en mnsene-en omaer-en;
den minst ene nodeanordningen omfatter nodeanordningen; og
den minst ene GPU-en omfatter GPU-en.
29. Datamaskinimplementert framgangsmate ifolge krav 21, som omfatter:
a analysere en andre oppgaverutine av analyserutinen for a bestemme om den andre oppgaverutinen kan kompileres til a generere en annen GPU-oppgaverutinefor a eksekveres av den minst ene GPU-en for a bevirke den minst ene GPU-en til autfore flere forekomster av den andre oppgaven av analyserutinen i det minste delvis parallelt uten en avhengighet blant innmating og utmating av de flere forekomstene av den andre oppgaven, hvori den andre oppgaverutinen genereres for eksekvering av den minst ene CPU-en for a utfore en andre oppgave av analyserutinen; og
som respons pa en bestemmelse av at den andre oppgaverutinen ikke kan kompileres til a generere den andre GPU-oppgaverutinen:
a kompilere den andre oppgaverutinen for eksekvering av den minst ene CPU-en; og
a tildele en utforelse av den andre oppgaven av analyserutinen med datasettpartisjonen til den minst ene nodeanordningen for a muliggjore utforelse av den andre oppgaven med datasettpartisjonene for den minst ene CPU-en.
30. Datamaskinimplementert framgangsmate ifolge krav 29, som omfatter a analysere analyserutinen for a bestemme en rekkefolge av oppgaver i analyserutinen, hvori rekkefolgen av oppgavene omfatter en relativ rekkefolge av den forste og andre oppgaven.
NO20171277A 2016-08-25 2017-08-01 Compilation for node device gpu-based parallel processing NO343250B1 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201662379512P 2016-08-25 2016-08-25
US201662394411P 2016-09-14 2016-09-14
US15/422,285 US9760376B1 (en) 2016-02-01 2017-02-01 Compilation for node device GPU-based parallel processing

Publications (2)

Publication Number Publication Date
NO20171277A1 NO20171277A1 (en) 2018-02-26
NO343250B1 true NO343250B1 (en) 2018-12-27

Family

ID=59778869

Family Applications (1)

Application Number Title Priority Date Filing Date
NO20171277A NO343250B1 (en) 2016-08-25 2017-08-01 Compilation for node device gpu-based parallel processing

Country Status (9)

Country Link
CN (1) CN107783782B (no)
BE (1) BE1025002B1 (no)
CA (1) CA2974556C (no)
DE (1) DE102017213160B4 (no)
DK (1) DK179709B1 (no)
FR (1) FR3055438B1 (no)
GB (1) GB2553424B (no)
HK (1) HK1245439B (no)
NO (1) NO343250B1 (no)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111327921A (zh) * 2018-12-17 2020-06-23 深圳市炜博科技有限公司 视频数据处理方法及设备
CN109743453B (zh) * 2018-12-29 2021-01-05 出门问问信息科技有限公司 一种分屏显示方法及装置
CN110163791B (zh) * 2019-05-21 2020-04-17 中科驭数(北京)科技有限公司 数据计算流图的gpu处理方法及装置
CN111984322B (zh) * 2020-09-07 2023-03-24 北京航天数据股份有限公司 一种控制指令传输方法及装置
CN112783506B (zh) * 2021-01-29 2022-09-30 展讯通信(上海)有限公司 一种模型运行方法及相关装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050231514A1 (en) * 2004-04-16 2005-10-20 John Harper System for optimizing graphics operations
US8310492B2 (en) * 2009-09-03 2012-11-13 Ati Technologies Ulc Hardware-based scheduling of GPU work
US8938723B1 (en) * 2009-08-03 2015-01-20 Parallels IP Holdings GmbH Use of GPU for support and acceleration of virtual machines and virtual environments

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8549500B2 (en) * 2007-02-14 2013-10-01 The Mathworks, Inc. Saving and loading graphical processing unit (GPU) arrays providing high computational capabilities in a computing environment
US8769510B2 (en) * 2010-04-08 2014-07-01 The Mathworks, Inc. Identification and translation of program code executable by a graphical processing unit (GPU)
DE102013208418A1 (de) * 2012-05-09 2013-11-14 Nvidia Corp. Verfahren und System zur separaten Kompilierung von Geräte-Code, welcher in Host-Code eingebettet ist
US9152601B2 (en) * 2013-05-09 2015-10-06 Advanced Micro Devices, Inc. Power-efficient nested map-reduce execution on a cloud of heterogeneous accelerated processing units
EP2887219A1 (en) * 2013-12-23 2015-06-24 Deutsche Telekom AG System and method for mobile augmented reality task scheduling
US9632761B2 (en) * 2014-01-13 2017-04-25 Red Hat, Inc. Distribute workload of an application to a graphics processing unit
US9235871B2 (en) * 2014-02-06 2016-01-12 Oxide Interactive, LLC Method and system of a command buffer between a CPU and GPU

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050231514A1 (en) * 2004-04-16 2005-10-20 John Harper System for optimizing graphics operations
US8938723B1 (en) * 2009-08-03 2015-01-20 Parallels IP Holdings GmbH Use of GPU for support and acceleration of virtual machines and virtual environments
US8310492B2 (en) * 2009-09-03 2012-11-13 Ati Technologies Ulc Hardware-based scheduling of GPU work

Also Published As

Publication number Publication date
DK179709B1 (en) 2019-04-09
DK201770596A1 (en) 2018-03-12
NO20171277A1 (en) 2018-02-26
BE1025002B1 (fr) 2018-09-17
FR3055438A1 (fr) 2018-03-02
CN107783782A (zh) 2018-03-09
GB2553424B (en) 2018-11-21
GB2553424A (en) 2018-03-07
DE102017213160A1 (de) 2018-03-01
DE102017213160B4 (de) 2023-05-25
FR3055438B1 (fr) 2022-07-29
CA2974556C (en) 2018-06-05
CA2974556A1 (en) 2018-02-25
CN107783782B (zh) 2019-03-15
GB201712171D0 (en) 2017-09-13
BE1025002A1 (fr) 2018-09-14
HK1245439B (zh) 2019-12-06

Similar Documents

Publication Publication Date Title
US9900378B2 (en) Node device function and cache aware task assignment
US10185722B2 (en) Distributed data set encryption and decryption
US10185721B2 (en) Distributed data set storage and retrieval
US10146593B2 (en) Techniques for decentralized load balancing
CA2974556C (en) Compilation for node device gpu-based parallel processing
US9811575B2 (en) Dynamic distributed generation of data representations from highly condensed data
US9785467B1 (en) Threadsafe use of non-threadsafe libraries with multi-threaded processes
US9742867B1 (en) Network data retrieval
CA3169394C (en) Distributed data set encryption and decryption
US11776090B2 (en) Dynamic per-node pre-pulling in distributed computing
US20220083709A1 (en) Two-level paralleliztion of goodness-of-fit tests for spatial process models
US9778876B1 (en) Load balanced access to distributed storage of data cubes