SlideShare a Scribd company logo
1 of 2
Download to read offline
Maak van uw HPC applicatie een parallel succes
regardo.nl/maak-van-uw-hpc-applicatie-een-parallel-succes-2015-02-27/
Ben Kemp
Tegenwoordig is de high performance computing uitdaging niet hoe
krachtig het rekencluster kan zijn, maar kan de applicatie de volledige
rekencapaciteit benutten. Natuurlijk is de parallelle efficiëntie van het
algoritme belangrijk om programmacode iteraties te optimaliseren –
zo ook in hoeverre de gedistribueerde of parallelle HPC architectuur
deze parallelle efficiëntie kan waarmaken. In de ideale geval – met
een perfecte schaalbaarheid – is de HPC applicatie lineair schaalbaar.
Lineair schaalbaar betekent dat de rekentijd omgekeerd recht
evenredig is met het aantal rekennodes. Bijvoorbeeld als de rekentijd
20 minuten is op 1 rekennode, zal de rekentijd gereduceerd worden tot 5 minuten op 4 rekennodes. Dit
is puur theoretisch en in de praktijk niet haalbaar. Zelfs als de cores in dezelfde rekenodes ijn, zijn er
altijd factoren die de performantie benadelen zoals; bus bandbreedte, proces veranderingen, timed
events, hardware interrupts, enz. Al deze factoren verhinderen de HPC applicaties om lineair
schaalbaar te zijn.
Perfect schaalbaar zijn van HPC applicaties zijn bestaat niet
In de meeste gevallen moeten we accepteren dat ‘lineair schaalbaar’ eigenlijk ‘bijna lineair schaalbaar
betekent’. Een voorbeeld om dit toe te lichten. Stel dat de rekentijd voor een applicatie 18 minuten
duurt op een enkel rekennode en 9 minuten en 10 seconden op twee rekennodes, dan bereiken we
een goed resultaat met de HPC software architectuur. Om deze extra 10 seconden te verminderen is
een vraag van tijd en geld. Uit ervaring blijkt dat deze procentuele kleine vertraging een grote
inspanning kost qua tijd en geld (Pareto principe). Om voor de laatste 10 seconden te gaan zal ook een
meer zakelijke beslissing zijn dan een technische vraagstuk.
Er zijn een aantal methodes om High Performance Computing applicaties te parallelliseren over de
beschikbare rekennodes. Hieronder beschrijven we drie voorbeelden:
1. Data decompositie of ook wel data parallellisatie genoemd. Data decompositie is het verdelen
van de te verwerken data over de verschillende rekennodes. Elke rekennodes verwerkt een deel
van de data autonoom. Een Computation Fluid Dyamics (CFD) voorbeeld is om de beweging
binnen een vloeistof volume te berekenen – hydrodynamica. Het vloeistof volume is op te delen
in compartimenten. Een algoritme berekent binnen de bewegingen binnen het deelvolume
autonoom op een rekenode. Om vervolgens de raakvlakken met de andere deelvolumes in de
berekening mee te nemen. Het data decompositie proces kent hiermee een initialisatie fase
waarbinnen de verdeling van data plaatsvindt en een convergentie fase waarbinnen de delen tot
één geheel samenkomen. Beide data decompositie fases benadelen het lineaire schaalbaar
zijn, maar deze extra tijd zal doorgaans te verwaarlozen zijn ten opzichte van de totale
verwerkingstijd. De focus in data de compositie is het rekenen aan de deel data om een hoge
mogelijk parallelle efficiëntie factor te bereiken. Natuurlijk zal de rekentijd aan deel volumes ten
opzichte van de extra tijd om te kunnen paralleliseren een gezonde rationele verhouden moeten
hebben.
2. Een andere vorm van parallellisatie is toe te passen wanneer de beginwaarde van het algoritme
voor elke berekening ander is en de data hetzelfde blijft. Bijvoorbeeld een applicatie pas
verschillende beginwaarden toe op dezelfde data om tot een eindresultaat te komen. Een
praktijk voorbeeld zijn alle algoritmes die vallen in de categorieën parabolische partiële
differentiële vergelijkingen. Deze methode van parallellisatie is redelijk eenvoudig en is ook te
verdelen over de rekennodes. Ook hier is er sprake van een initialisatie fase en een
convergentie fase zoals bij data decompositie. En ook ligt de nadruk bij het verwerken van de
data met als uitgangspunt de beginwaarden.
3. Het parallelliseren van taken binnen een applicatie. Taak parallellisatie is het uitvoeren van de
applicatie in meerdere processen – meestal threads genoemd – die over meerdere rekennodes
verspreid worden. Taak parallellisatie heeft een hogere moeilijkheidsgraad in vergelijk tot data
decompositie aangezien er geen consequente orchestratie is tussen processen, de tijd van de
verwerking en de coördinatie van de toegang tot cache geheugen. Taak parallellisatie zal zowel
verantwoordelijkheid over de controle van de processen als wel de data op zich moeten nemen.
Een praktijk voorbeeld van taak parallellisatie kan het uitvoeren van een complexe database
query zijn. Tijdens uitvoeren van de deel queries (taken) worden tijdelijke tabellen aangemaakt.
Afhankelijk van de data organisatie, software architectuur zijn deze deel queries autonoom uit te
voeren of zullen deze op elkaar moeten wachten.
De bovengenoemde vormen van parallellisatie zijn de basis. Natuurlijk zijn er ook combinaties
mogelijk. Het was geenszins de bedoeling om een uitputtende lijst samen te stellen van alle vormen
van parallellisatie. Alhoewel wij wel zeer nieuwsgierig naar uw ervaringen en welke software patronen
uw gebruik binnen parallellisatie.
In een volgend artikel willen we algemene ontwerp regels aangeven voor het programmeren van
parallelle applicaties.

More Related Content

Viewers also liked

Hellooooooo
HelloooooooHellooooooo
Hellooooooobelensid
 
Data Quality- How to clean up your legacy data?
Data Quality- How to clean up your legacy data?Data Quality- How to clean up your legacy data?
Data Quality- How to clean up your legacy data?OSTHUS
 

Viewers also liked (8)

Untitled Presentation
Untitled PresentationUntitled Presentation
Untitled Presentation
 
Proiect
Proiect Proiect
Proiect
 
מי אביבים
מי אביביםמי אביבים
מי אביבים
 
Poster
PosterPoster
Poster
 
Hola mundo
Hola mundoHola mundo
Hola mundo
 
Hellooooooo
HelloooooooHellooooooo
Hellooooooo
 
Animation treatment
Animation treatmentAnimation treatment
Animation treatment
 
Data Quality- How to clean up your legacy data?
Data Quality- How to clean up your legacy data?Data Quality- How to clean up your legacy data?
Data Quality- How to clean up your legacy data?
 

More from Ben Kemp | Adobe Tutorials and Courses

Adobe Premiere Pro Cómo utilizar el efecto Estabilizador de deformación.pptx
Adobe Premiere Pro Cómo utilizar el efecto Estabilizador de deformación.pptxAdobe Premiere Pro Cómo utilizar el efecto Estabilizador de deformación.pptx
Adobe Premiere Pro Cómo utilizar el efecto Estabilizador de deformación.pptxBen Kemp | Adobe Tutorials and Courses
 

More from Ben Kemp | Adobe Tutorials and Courses (20)

OrganizaFlow Announces Development of Power BI Kanban Dashboard.pdf
OrganizaFlow Announces Development of Power BI Kanban Dashboard.pdfOrganizaFlow Announces Development of Power BI Kanban Dashboard.pdf
OrganizaFlow Announces Development of Power BI Kanban Dashboard.pdf
 
Cómo recortar un video en Premiere Pro.pptx
Cómo recortar un video en Premiere Pro.pptxCómo recortar un video en Premiere Pro.pptx
Cómo recortar un video en Premiere Pro.pptx
 
Cómo agregar texto en Premiere Pro.pptx
Cómo agregar texto en Premiere Pro.pptxCómo agregar texto en Premiere Pro.pptx
Cómo agregar texto en Premiere Pro.pptx
 
¿Utiliza Premiere Pro inteligencia artificial.pptx
¿Utiliza Premiere Pro inteligencia artificial.pptx¿Utiliza Premiere Pro inteligencia artificial.pptx
¿Utiliza Premiere Pro inteligencia artificial.pptx
 
¿Qué es una subsecuencia en Premiere Pro.pptx
¿Qué es una subsecuencia en Premiere Pro.pptx¿Qué es una subsecuencia en Premiere Pro.pptx
¿Qué es una subsecuencia en Premiere Pro.pptx
 
Qué es una secuencia en Premiere Pro.pptx
Qué es una secuencia en Premiere Pro.pptxQué es una secuencia en Premiere Pro.pptx
Qué es una secuencia en Premiere Pro.pptx
 
Qué es el anidamiento en Premiere Pro.pptx
Qué es el anidamiento en Premiere Pro.pptxQué es el anidamiento en Premiere Pro.pptx
Qué es el anidamiento en Premiere Pro.pptx
 
¿Qué es una capa de ajuste en Premiere Pro.pptx
¿Qué es una capa de ajuste en Premiere Pro.pptx¿Qué es una capa de ajuste en Premiere Pro.pptx
¿Qué es una capa de ajuste en Premiere Pro.pptx
 
Por qué Adobe Premiere Pro.pptx
Por qué Adobe Premiere Pro.pptxPor qué Adobe Premiere Pro.pptx
Por qué Adobe Premiere Pro.pptx
 
Adobe Premiere Pro Cómo utilizar el efecto Estabilizador de deformación.pptx
Adobe Premiere Pro Cómo utilizar el efecto Estabilizador de deformación.pptxAdobe Premiere Pro Cómo utilizar el efecto Estabilizador de deformación.pptx
Adobe Premiere Pro Cómo utilizar el efecto Estabilizador de deformación.pptx
 
Cómo añadir transiciones en Adobe Premiere Pro.pptx
Cómo añadir transiciones en Adobe Premiere Pro.pptxCómo añadir transiciones en Adobe Premiere Pro.pptx
Cómo añadir transiciones en Adobe Premiere Pro.pptx
 
¿Para qué se utiliza Adobe Premiere Pro.pptx
¿Para qué se utiliza Adobe Premiere Pro.pptx¿Para qué se utiliza Adobe Premiere Pro.pptx
¿Para qué se utiliza Adobe Premiere Pro.pptx
 
Cómo utilizar el efecto de sombra en Adobe Premiere Pro.pptx
Cómo utilizar el efecto de sombra en Adobe Premiere Pro.pptxCómo utilizar el efecto de sombra en Adobe Premiere Pro.pptx
Cómo utilizar el efecto de sombra en Adobe Premiere Pro.pptx
 
Cómo usar el efecto Ultra Key en Premiere Pro.pptx
Cómo usar el efecto Ultra Key en Premiere Pro.pptxCómo usar el efecto Ultra Key en Premiere Pro.pptx
Cómo usar el efecto Ultra Key en Premiere Pro.pptx
 
10 consejos de PREMIERE PRO que DEBERÍAS CONOCER.pptx
10 consejos de PREMIERE PRO que DEBERÍAS CONOCER.pptx10 consejos de PREMIERE PRO que DEBERÍAS CONOCER.pptx
10 consejos de PREMIERE PRO que DEBERÍAS CONOCER.pptx
 
¿Qué editor de video usan los Youtubers.pptx
¿Qué editor de video usan los Youtubers.pptx¿Qué editor de video usan los Youtubers.pptx
¿Qué editor de video usan los Youtubers.pptx
 
Do you need Photoshop for Premiere Pro.pptx
Do you need Photoshop for Premiere Pro.pptxDo you need Photoshop for Premiere Pro.pptx
Do you need Photoshop for Premiere Pro.pptx
 
Adobe Premiere Pro How to Use Drop Shadow Effect.pptx
Adobe Premiere Pro How to Use Drop Shadow Effect.pptxAdobe Premiere Pro How to Use Drop Shadow Effect.pptx
Adobe Premiere Pro How to Use Drop Shadow Effect.pptx
 
Adobe Premiere Pro How to Use Ultra Key Effect.pptx
Adobe Premiere Pro How to Use Ultra Key Effect.pptxAdobe Premiere Pro How to Use Ultra Key Effect.pptx
Adobe Premiere Pro How to Use Ultra Key Effect.pptx
 
Why choose Adobe Premiere Pro.pptx
Why choose Adobe Premiere Pro.pptxWhy choose Adobe Premiere Pro.pptx
Why choose Adobe Premiere Pro.pptx
 

Maak van uw hpc applicatie een parallel succes

  • 1. Maak van uw HPC applicatie een parallel succes regardo.nl/maak-van-uw-hpc-applicatie-een-parallel-succes-2015-02-27/ Ben Kemp Tegenwoordig is de high performance computing uitdaging niet hoe krachtig het rekencluster kan zijn, maar kan de applicatie de volledige rekencapaciteit benutten. Natuurlijk is de parallelle efficiëntie van het algoritme belangrijk om programmacode iteraties te optimaliseren – zo ook in hoeverre de gedistribueerde of parallelle HPC architectuur deze parallelle efficiëntie kan waarmaken. In de ideale geval – met een perfecte schaalbaarheid – is de HPC applicatie lineair schaalbaar. Lineair schaalbaar betekent dat de rekentijd omgekeerd recht evenredig is met het aantal rekennodes. Bijvoorbeeld als de rekentijd 20 minuten is op 1 rekennode, zal de rekentijd gereduceerd worden tot 5 minuten op 4 rekennodes. Dit is puur theoretisch en in de praktijk niet haalbaar. Zelfs als de cores in dezelfde rekenodes ijn, zijn er altijd factoren die de performantie benadelen zoals; bus bandbreedte, proces veranderingen, timed events, hardware interrupts, enz. Al deze factoren verhinderen de HPC applicaties om lineair schaalbaar te zijn. Perfect schaalbaar zijn van HPC applicaties zijn bestaat niet In de meeste gevallen moeten we accepteren dat ‘lineair schaalbaar’ eigenlijk ‘bijna lineair schaalbaar betekent’. Een voorbeeld om dit toe te lichten. Stel dat de rekentijd voor een applicatie 18 minuten duurt op een enkel rekennode en 9 minuten en 10 seconden op twee rekennodes, dan bereiken we een goed resultaat met de HPC software architectuur. Om deze extra 10 seconden te verminderen is een vraag van tijd en geld. Uit ervaring blijkt dat deze procentuele kleine vertraging een grote inspanning kost qua tijd en geld (Pareto principe). Om voor de laatste 10 seconden te gaan zal ook een meer zakelijke beslissing zijn dan een technische vraagstuk. Er zijn een aantal methodes om High Performance Computing applicaties te parallelliseren over de beschikbare rekennodes. Hieronder beschrijven we drie voorbeelden: 1. Data decompositie of ook wel data parallellisatie genoemd. Data decompositie is het verdelen van de te verwerken data over de verschillende rekennodes. Elke rekennodes verwerkt een deel van de data autonoom. Een Computation Fluid Dyamics (CFD) voorbeeld is om de beweging binnen een vloeistof volume te berekenen – hydrodynamica. Het vloeistof volume is op te delen in compartimenten. Een algoritme berekent binnen de bewegingen binnen het deelvolume autonoom op een rekenode. Om vervolgens de raakvlakken met de andere deelvolumes in de berekening mee te nemen. Het data decompositie proces kent hiermee een initialisatie fase waarbinnen de verdeling van data plaatsvindt en een convergentie fase waarbinnen de delen tot één geheel samenkomen. Beide data decompositie fases benadelen het lineaire schaalbaar zijn, maar deze extra tijd zal doorgaans te verwaarlozen zijn ten opzichte van de totale verwerkingstijd. De focus in data de compositie is het rekenen aan de deel data om een hoge mogelijk parallelle efficiëntie factor te bereiken. Natuurlijk zal de rekentijd aan deel volumes ten opzichte van de extra tijd om te kunnen paralleliseren een gezonde rationele verhouden moeten hebben. 2. Een andere vorm van parallellisatie is toe te passen wanneer de beginwaarde van het algoritme voor elke berekening ander is en de data hetzelfde blijft. Bijvoorbeeld een applicatie pas verschillende beginwaarden toe op dezelfde data om tot een eindresultaat te komen. Een praktijk voorbeeld zijn alle algoritmes die vallen in de categorieën parabolische partiële
  • 2. differentiële vergelijkingen. Deze methode van parallellisatie is redelijk eenvoudig en is ook te verdelen over de rekennodes. Ook hier is er sprake van een initialisatie fase en een convergentie fase zoals bij data decompositie. En ook ligt de nadruk bij het verwerken van de data met als uitgangspunt de beginwaarden. 3. Het parallelliseren van taken binnen een applicatie. Taak parallellisatie is het uitvoeren van de applicatie in meerdere processen – meestal threads genoemd – die over meerdere rekennodes verspreid worden. Taak parallellisatie heeft een hogere moeilijkheidsgraad in vergelijk tot data decompositie aangezien er geen consequente orchestratie is tussen processen, de tijd van de verwerking en de coördinatie van de toegang tot cache geheugen. Taak parallellisatie zal zowel verantwoordelijkheid over de controle van de processen als wel de data op zich moeten nemen. Een praktijk voorbeeld van taak parallellisatie kan het uitvoeren van een complexe database query zijn. Tijdens uitvoeren van de deel queries (taken) worden tijdelijke tabellen aangemaakt. Afhankelijk van de data organisatie, software architectuur zijn deze deel queries autonoom uit te voeren of zullen deze op elkaar moeten wachten. De bovengenoemde vormen van parallellisatie zijn de basis. Natuurlijk zijn er ook combinaties mogelijk. Het was geenszins de bedoeling om een uitputtende lijst samen te stellen van alle vormen van parallellisatie. Alhoewel wij wel zeer nieuwsgierig naar uw ervaringen en welke software patronen uw gebruik binnen parallellisatie. In een volgend artikel willen we algemene ontwerp regels aangeven voor het programmeren van parallelle applicaties.