Parallel Computing Definition
Parallel computing är en typ av datorarkitektur där flera processorer samtidigt utför flera, mindre beräkningar uppdelade från ett övergripande större, komplext problem.
Vanliga frågor
Vad är Parallel Computing?
Parallel computing avser processen att bryta ner större problem i mindre, oberoende, ofta liknande delar som kan utföras samtidigt av flera processorer som kommunicerar via delat minne, vars resultat kombineras efter avslutad som en del av en övergripande algoritm. Det primära målet med parallell databehandling är att öka tillgänglig beräkningskraft för snabbare applikationsbehandling och problemlösning.
parallell datorinfrastruktur är vanligtvis inrymd i ett enda datacenter där flera processorer installeras i ett serverrack; beräkningsförfrågningar distribueras i små bitar av applikationsservern som sedan körs samtidigt på varje server.
det finns i allmänhet fyra typer av parallell databehandling, tillgängliga från både proprietära och öppen källkod parallella datorleverantörer-parallellism på bitnivå, parallellism på instruktionsnivå, parallellism på uppgiftsnivå eller parallellism på superordnivå:
- parallellism på bitnivå:
- parallellism på bitnivå: ökar processorns ordstorlek, vilket minskar mängden instruktioner processorn måste utföra för att utföra en operation på variabler som är större än ordets längd.
- Instruktionsnivå parallellism: hårdvarans tillvägagångssätt fungerar på dynamisk parallellism, där processorn vid körning bestämmer vilka instruktioner som ska utföras parallellt; programvarumetoden fungerar på statisk parallellism, där kompilatorn bestämmer vilka instruktioner som ska utföras parallellt
- task parallellism: en form av parallellisering av datorkod över flera processorer som kör flera olika uppgifter samtidigt på samma data
- superword-nivå parallellism: en vektoriseringsteknik som kan utnyttja parallellism av inline-kod
parallella applikationer klassificeras vanligtvis som antingen finkornig parallellism, där underuppgifter kommer att kommunicera flera gånger per sekund; grovkornig parallellism, där underuppgifter inte kommunicerar flera gånger per sekund; eller pinsamt parallellism, där underuppgifter sällan eller kommunicera aldrig. Kartläggning i parallell databehandling används för att lösa pinsamt parallella problem genom att tillämpa en enkel operation på alla element i en sekvens utan att kräva kommunikation mellan deluppgifterna.
populariseringen och utvecklingen av parallell databehandling i det 21: a århundradet kom som svar på processorfrekvensskalning som träffade kraftväggen. Ökad frekvens ökar mängden ström som används i en processor, och skalning av processorfrekvensen är inte längre möjlig efter en viss punkt; därför började programmerare och tillverkare designa parallell systemprogramvara och producera energieffektiva processorer med flera kärnor för att ta itu med frågan om strömförbrukning och överhettning av centrala bearbetningsenheter.
betydelsen av parallell databehandling fortsätter att växa med den ökande användningen av flerkärniga processorer och GPU: er. GPU: er arbetar tillsammans med processorer för att öka dataflödet och antalet samtidiga beräkningar i en applikation. Med hjälp av parallellismens kraft kan en GPU slutföra mer arbete än en CPU på en viss tid.
grunderna för parallell datorarkitektur
parallell datorarkitektur finns i en mängd olika parallella datorer, klassificerade enligt den nivå där hårdvaran stöder parallellism. Parallell datorarkitektur och programmeringstekniker arbetar tillsammans för att effektivt utnyttja dessa maskiner. Klasserna av parallella datorarkitekturer inkluderar:
- multi-core computing: En multi-core processor är en datorprocessor integrerad krets med två eller flera separata bearbetningskärnor, som var och en kör programinstruktioner parallellt. Kärnor är integrerade på flera matriser i ett enda chippaket eller på en enda integrerad kretsform och kan implementera arkitekturer som multithreading, superscalar, vector eller VLIW. Flerkärniga arkitekturer kategoriseras som antingen homogena, som endast inkluderar identiska kärnor eller heterogena, vilket inkluderar kärnor som inte är identiska.
- symmetrisk multiprocessing: multiprocessor datormaskinvara och mjukvaruarkitektur där två eller flera oberoende, homogena processorer styrs av en enda operativsysteminstans som behandlar alla processorer lika och är ansluten till ett enda delat huvudminne med full tillgång till alla gemensamma resurser och enheter. Varje processor har ett privat cacheminne, kan anslutas med nätnät på chip och kan fungera på vilken uppgift som helst, oavsett var data för den uppgiften finns i minnet.
- distribuerad databehandling: Distribuerade systemkomponenter finns på olika nätverksdatorer som samordnar sina handlingar genom att kommunicera via rena HTTP, RPC-liknande kontakter och meddelandeköer. Betydande egenskaper hos distribuerade system inkluderar oberoende fel på komponenter och komponenternas samtidighet. Distribuerad programmering kategoriseras vanligtvis som klient-server, tre-tier, n-tier eller peer-to-peer-arkitekturer. Det finns mycket överlappning i distribuerad och parallell databehandling och termerna används ibland omväxlande.
- massivt parallell databehandling: avser användningen av många datorer eller datorprocessorer för att samtidigt utföra en uppsättning beräkningar parallellt. Ett tillvägagångssätt innebär gruppering av flera processorer i ett tätt strukturerat, centraliserat datorkluster. Ett annat tillvägagångssätt är grid computing, där många distribuerade datorer arbetar tillsammans och kommunicerar via Internet för att lösa ett visst problem.
andra parallella datorarkitekturer inkluderar specialiserade parallella datorer, klusterberäkning, grid computing, vektorprocessorer, applikationsspecifika integrerade kretsar, generell databehandling på grafikbehandlingsenheter (GPGPU) och omkonfigurerbar databehandling med fältprogrammerbara grindarrayer. Huvudminnet i en parallell datorstruktur är antingen distribuerat minne eller delat minne.
parallella Datorprogramvarulösningar och tekniker
samtidiga programmeringsspråk, API: er, bibliotek och parallella programmeringsmodeller har utvecklats för att underlätta parallell databehandling på parallell hårdvara. Några parallella datorprogramvarulösningar och tekniker inkluderar:
- application checkpointing: en teknik som ger feltolerans för datorsystem genom att registrera alla programmets nuvarande variabla tillstånd, vilket gör det möjligt för applikationen att återställa och starta om från den punkten i fall av fel. Checkpointing är en avgörande teknik för mycket parallella datorsystem där högpresterande datorer körs över ett stort antal processorer.
- Automatisk parallellisering: avser konvertering av sekventiell kod till flertrådad kod för att använda flera processorer samtidigt i en SMP-maskin med delat minne. Automatiska parallelliseringstekniker inkluderar analys, Analys, schema och kodgenerering. Typiska exempel på vanliga parallelliserande kompilatorer och verktyg är Paradigm kompilator, Polaris kompilator, Rice Fortran d kompilator, SUIF kompilator och Wien Fortran kompilator.
- parallella programmeringsspråk: parallella programmeringsspråk klassificeras vanligtvis som antingen distribuerat minne eller delat minne. Medan distribuerade minnesprogrammeringsspråk använder meddelandepassering för att kommunicera kommunicerar delade minnesprogrammeringsspråk genom att manipulera delade minnesvariabler.
skillnad mellan Parallel Computing och Cloud Computing
Cloud computing är en allmän term som hänvisar till leverans av skalbara tjänster, såsom databaser, datalagring, nätverk, servrar och programvara, över Internet efter behov, pay-as-you-go-basis.
Cloud computing-tjänster kan vara offentliga eller privata, hanteras helt av leverantören och underlättar fjärråtkomst till data, arbete och applikationer från vilken enhet som helst som kan upprätta en Internetanslutning. De tre vanligaste tjänstekategorierna är Infrastructure as as Service (IaaS), Platform as a Service (PaaS) och Software as a Service (SaaS).
Cloud computing är ett relativt nytt paradigm inom mjukvaruutveckling som underlättar bredare tillgång till parallell databehandling via stora, virtuella datorkluster, vilket gör att den genomsnittliga användaren och mindre organisationer kan utnyttja parallell processorkraft och lagringsalternativ som vanligtvis är reserverade för stora företag.
skillnad mellan parallell bearbetning och parallell beräkning
parallell bearbetning är en metod i beräkning där separata delar av en övergripande komplex uppgift bryts upp och körs samtidigt på flera processorer, vilket minskar tiden för bearbetning.
att dela och tilldela varje uppgift till en annan processor utförs vanligtvis av datavetare med hjälp av programverktyg för parallell bearbetning, vilket också kommer att fungera för att återmontera och läsa data när varje processor har löst sin speciella ekvation. Denna process åstadkommes antingen via ett datornätverk eller via en dator med två eller flera processorer.
parallell bearbetning och parallell beräkning sker i tandem, därför används termerna ofta omväxlande; men när parallell bearbetning gäller antalet kärnor och processorer som körs parallellt i datorn, gäller parallell databehandling det sätt på vilket programvara beter sig för att optimera för det tillståndet.
skillnad mellan Sekventiell och parallell beräkning
Sekventiell beräkning, även känd som seriell beräkning, hänvisar till användningen av en enda processor för att utföra ett program som är uppdelat i en sekvens av diskreta instruktioner, var och en exekverad efter varandra utan överlappning vid varje given tidpunkt. Programvaran har traditionellt programmerats sekventiellt, vilket ger ett enklare tillvägagångssätt, men är väsentligt begränsat av processorns hastighet och dess förmåga att utföra varje serie instruktioner. Där uni-processormaskiner använder sekventiella datastrukturer är datastrukturer för parallella datormiljöer samtidiga.
mätprestanda i sekventiell programmering är mycket mindre komplex och viktig än riktmärken i parallell databehandling eftersom det vanligtvis bara innebär att identifiera flaskhalsar i systemet. Riktmärken i parallell databehandling kan uppnås med benchmarking och prestanda regressionstestramar, som använder en mängd olika mätmetoder, såsom statistisk behandling och flera repetitioner. Förmågan att undvika denna flaskhals genom att flytta data genom minneshierarkin är särskilt tydlig i parallell databehandling för datavetenskap, maskininlärning parallell databehandling och parallell datoranvändning av artificiell intelligens.
Sekventiell beräkning är effektivt motsatsen till parallell beräkning. Medan parallell databehandling kan vara mer komplex och komma till en större kostnad framför, överväger fördelen med att kunna lösa ett problem snabbare ofta kostnaden för att förvärva parallell datorhårdvara.
erbjuder OmniSci en parallell datorlösning?
omnisci-plattformen utnyttjar den massiva parallella datorkraften hos GPU: er för Big Data analytics, vilket ger big data-analytiker och datavetenskapare möjlighet att interaktivt fråga, visualisera och driva datavetenskap arbetsflöden över miljarder poster i millisekunder. Omnisci-plattformen är utformad för att övervinna skalbarheten och prestandabegränsningarna för äldre analysverktyg som står inför skala, hastighet och platsattribut för dagens stora datamängder.