Heterogena Multi-Processor Systems-på-Chips (MPSoCs) som innehåller CPU och GPU-kärnor krävs vanligtvis för att köra program samtidigt. Men, som kommer att visas i detta dokument, befintliga metoder är inte väl lämpade för samtidiga tillämpningar eftersom de är utvecklade antingen genom att överväga bara en enda tillämpning eller de inte utnyttja både CPU och GPU-kärnor på samma gång. I det här dokumentet föreslår vi en energieffektiv run-time-kartläggning och trådpartitioneringsmetod för att utföra samtidiga OpenCL-applikationer på både GPU- och GPU-kärnor samtidigt som prestandakraven uppfylls. Beroende på prestandakraven, för varje samtidig tillämpning, karteringsprocessen finner lämpligt antal CPU-kärnor och operativa frekvenser av CPU- och GPU-kärnor, och partitioneringsprocessen identifierar en effektiv partitionering av applikationernas trådar mellan CPU- och GPU-kärnor. Vi validerar den föreslagna metoden experimentellt på Odroid-XU3-hårdvaruplattformen med olika kombinationer av applikationer från Polybench-riktmärkessviten. Dessutom utförs en fallstudie med en verklig applikation SLAMBench. Resultaten visar en genomsnittlig energibesparing på 32 % jämfört med befintliga metoder, samtidigt som prestandakraven fortfarande uppfylls. Tillstånd att göra digitala eller papperskopior av hela eller delar av detta arbete för personligt bruk eller klassrum beviljas utan avgift, förutsatt att kopiorna inte görs eller distribueras för vinst eller kommersiella fördelar och att kopiorna är försedda med detta meddelande och den fullständiga hänvisningen på första sidan. Upphovsrätt till delar av detta verk som ägs av andra än ACM måste hedras. Abstraktering med kredit är tillåten. För att kopiera på annat sätt, eller återpublicera, för att posta på servrar eller för att omfördela till listor, krävs tidigare specifik behörighet och/eller avgift. Begär tillstånd från authoritys@acm.org.  Moderna inbyggda system, t.ex. mobiltelefoner, förlita sig på heterogena flerprocessorsystem (MPSoC) som innehåller olika typer av kärnor. Ett exempel på en kommersiell heterogen MPSoC är Samsung Exynos 5422 SoC [5], som driver den populära Samsung Galaxy serien av mobiltelefoner. Denna SoC innehåller 4 ARM Cortex-A15 (stor) CPU, 4 ARM Cortex-A7 (LITTLE) CPU och 6 ARM Mali-T628 GPU-kärnor. En sådan arkitektur ger möjlighet att utnyttja olika egenskaper hos olika typer av kärnor för att möta slutanvändarnas krav när det gäller prestanda och energiförbrukning. Dessutom stöder kärnorna i sådana MPSoCs dynamisk spännings- och frekvensskalning (DVFS) som kan utnyttjas för att minska dynamisk strömförbrukning (P  på V 2 f ). Genom att använda DVFS kan energiförbrukningen minimeras om strömförbrukningen minskas tillräckligt för att ta hänsyn till den extra tid som krävs för att köra arbetsbelastningen vid lägre spänning och frekvens. I vissa situationer kan dynamisk effektstyrning (DPM) leda till lägre energiförbrukning än DVFS [20, 23]. För en viss applikation, samtidigt utnyttjande av heterogena kärnor med olika instruktionsuppsättning arkitekturer (ISA) som CPU och GPU är utmanande, eftersom de hanterar instruktioner på olika sätt. Dessutom, CPU-kärnor hanterar vanligtvis uppgifter och tråd nivå parallellismer, medan GPU-kärnor hanterar data nivå parallellism. OpenCL [7] ger en möjlighet att skriva program som kan köras över heterogena kärnor inklusive processorer och GPU [18, 19, 24, 30]. Beroende på vilken typ av parallellism som dominerar i applikationen, kommer prestandan och energiförbrukningen att variera när den endast tilldelas CPU, endast GPU, eller både CPU och GPU-kärnor. Figur 1 visar körtid (barer) och energiförbrukning (linjer) vid utförande av enskilda OpenCL-tillämpningar (SYR2K, SYRK, KORRELATION (CORR) och COVARIENCE (COVR)) från Polybench-riktmärket [16] på Exynos 5422 heterogena MPSoC samtidigt som andelen applikationsbelastning (trådar) som utförs på CPU-kärnor och återstående trådar på GPU-kärnor varierar. Alla kärnor är inställda på att fungera vid maximal möjlig spänningsfrekvens. Ett bråkvärde på noll indikerar att inga trådar utförs på CPU-kärnor, dvs. Alla av dem utförs endast på GPU-kärnorna. På samma sätt, när detta värde är 1, alla trådar utförs endast på CPU-kärnor och ingen på GPU-kärnor. Det kan observeras att vissa applikationer (särskilt med betydande sekventiell fraktion) kör snabbare på CPU-kärnor än GPU-kärnor (t.ex., CORR), medan andra (med omfattande dataparallalism) slutar tidigt på GPU-kärnor (t.ex., COVR). Dessutom visar alla applikationer en betydande minskning av genomförandetid och energiförbrukning när de körs på både CPU- och GPU-kärnor, med ett lämpligt bråkvärde (mellan 0 och 1), som definierar den bästa uppdelningen av trådar mellan CPU- och GPU-kärnor. Dessa observationer visar tydligt fördelarna med att samtidigt utnyttja både CPU- och GPU-kärnor för varje applikation. Det är välkänt att flera applikationer som kör samtidigt i ett modernt inbyggt system måste uppfylla sina prestandakrav, och den totala energiförbrukningen bör optimeras [33]. Till exempel kan en mobiltelefon behöva köra JPEG och MP3 avkodning samtidigt, samtidigt som de uppfyller respektive ramar per sekund (fps) krav när en användare tittar på bilder och lyssnar på musik på samma gång. Befintliga run-time management-verk för samtidiga applikationer anser dock endast single-ISA heterogena MPSoCs, där kärnor har samma instruktionsuppsättning arkitektur [9, 10, 12, 13, 25, 34]. De brukar överväga Pthreads programmering modell och kan inte användas för att samtidigt utnyttja kärnor av olika ISAs såsom CPU och GPU. För en enda applikation, samtidigt utnyttjande av CPU och GPU-kärnor har utförts genom att använda OpenCL programmeringsmodell [30], men det leder till dåliga resultat när tillämpas på samtidiga program (visas i nästa avsnitt). Dessutom, vissa verk utnyttja antingen CPU eller GPU för ett program [37], som inte är effektiv när det gäller utförande tid och
Singh och Al. I REF föreslogs en energieffektiv körtidskartläggning och uppdelning av gängor.
Energy-Efficient Run-Time Mapping and Thread Partitioning of Concurrent OpenCL Applications on CPU-GPU MPSoCs
{'venue': 'TECS', 'journal': None, 'mag_field_of_study': ['Computer Science']}