Initial Commit

This commit is contained in:
Matthias
2017-08-04 15:33:20 +02:00
commit 18f1c768cf
22 changed files with 8224 additions and 0 deletions
BIN
View File
Binary file not shown.
+545
View File
@@ -0,0 +1,545 @@
%!PS-Adobe-2.0 EPSF-2.0
%%Title: /home/matthias/Uni/Work/WorkflowsOnManycores/Documents/FGCS-Paper/figures/Povray.dia
%%Creator: Dia v0.97.3
%%CreationDate: Fri Feb 19 15:30:18 2016
%%For: matthias
%%Orientation: Portrait
%%Magnification: 1.0000
%%BoundingBox: 0 0 359 538
%%BeginSetup
%%EndSetup
%%EndComments
%%BeginProlog
[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright
/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one
/two /three /four /five /six /seven /eight /nine /colon /semicolon
/less /equal /greater /question /at /A /B /C /D /E
/F /G /H /I /J /K /L /M /N /O
/P /Q /R /S /T /U /V /W /X /Y
/Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c
/d /e /f /g /h /i /j /k /l /m
/n /o /p /q /r /s /t /u /v /w
/x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/space /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright
/ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior
/acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf
/threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde
/Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex
/Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring
/ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis
/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave
/uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] /isolatin1encoding exch def
/cp {closepath} bind def
/c {curveto} bind def
/f {fill} bind def
/a {arc} bind def
/ef {eofill} bind def
/ex {exch} bind def
/gr {grestore} bind def
/gs {gsave} bind def
/sa {save} bind def
/rs {restore} bind def
/l {lineto} bind def
/m {moveto} bind def
/rm {rmoveto} bind def
/n {newpath} bind def
/s {stroke} bind def
/sh {show} bind def
/slc {setlinecap} bind def
/slj {setlinejoin} bind def
/slw {setlinewidth} bind def
/srgb {setrgbcolor} bind def
/rot {rotate} bind def
/sc {scale} bind def
/sd {setdash} bind def
/ff {findfont} bind def
/sf {setfont} bind def
/scf {scalefont} bind def
/sw {stringwidth pop} bind def
/tr {translate} bind def
/ellipsedict 8 dict def
ellipsedict /mtrx matrix put
/ellipse
{ ellipsedict begin
/endangle exch def
/startangle exch def
/yrad exch def
/xrad exch def
/y exch def
/x exch def /savematrix mtrx currentmatrix def
x y tr xrad yrad sc
0 0 1 startangle endangle arc
savematrix setmatrix
end
} def
/mergeprocs {
dup length
3 -1 roll
dup
length
dup
5 1 roll
3 -1 roll
add
array cvx
dup
3 -1 roll
0 exch
putinterval
dup
4 2 roll
putinterval
} bind def
/Times-Roman-latin1
/Times-Roman findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/Times-Italic-latin1
/Times-Italic findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/Times-Bold-latin1
/Times-Bold findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/Times-BoldItalic-latin1
/Times-BoldItalic findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/AvantGarde-Gothic-latin1
/AvantGarde-Gothic findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/AvantGarde-BookOblique-latin1
/AvantGarde-BookOblique findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/AvantGarde-Demi-latin1
/AvantGarde-Demi findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/AvantGarde-DemiOblique-latin1
/AvantGarde-DemiOblique findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/Bookman-Light-latin1
/Bookman-Light findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/Bookman-LightItalic-latin1
/Bookman-LightItalic findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/Bookman-Demi-latin1
/Bookman-Demi findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/Bookman-DemiItalic-latin1
/Bookman-DemiItalic findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/Courier-latin1
/Courier findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/Courier-Oblique-latin1
/Courier-Oblique findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/Courier-Bold-latin1
/Courier-Bold findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/Courier-BoldOblique-latin1
/Courier-BoldOblique findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/Helvetica-latin1
/Helvetica findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/Helvetica-Oblique-latin1
/Helvetica-Oblique findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/Helvetica-Bold-latin1
/Helvetica-Bold findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/Helvetica-BoldOblique-latin1
/Helvetica-BoldOblique findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/Helvetica-Narrow-latin1
/Helvetica-Narrow findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/Helvetica-Narrow-Oblique-latin1
/Helvetica-Narrow-Oblique findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/Helvetica-Narrow-Bold-latin1
/Helvetica-Narrow-Bold findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/Helvetica-Narrow-BoldOblique-latin1
/Helvetica-Narrow-BoldOblique findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/NewCenturySchlbk-Roman-latin1
/NewCenturySchlbk-Roman findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/NewCenturySchlbk-Italic-latin1
/NewCenturySchlbk-Italic findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/NewCenturySchlbk-Bold-latin1
/NewCenturySchlbk-Bold findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/NewCenturySchlbk-BoldItalic-latin1
/NewCenturySchlbk-BoldItalic findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/Palatino-Roman-latin1
/Palatino-Roman findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/Palatino-Italic-latin1
/Palatino-Italic findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/Palatino-Bold-latin1
/Palatino-Bold findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/Palatino-BoldItalic-latin1
/Palatino-BoldItalic findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/Symbol-latin1
/Symbol findfont
definefont pop
/ZapfChancery-MediumItalic-latin1
/ZapfChancery-MediumItalic findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
/ZapfDingbats-latin1
/ZapfDingbats findfont
dup length dict begin
{1 index /FID ne {def} {pop pop} ifelse} forall
/Encoding isolatin1encoding def
currentdict end
definefont pop
28.346000 -28.346000 scale
-2.165000 -19.800000 translate
%%EndProlog
1.000000 1.000000 1.000000 srgb
n 2.715000 3.934440 m 2.715000 14.065551 l 14.250000 14.065551 l 14.250000 3.934440 l f
n 2.715000 4.434440 m 2.715000 4.434440 0.500000 0.500000 180.000000 270.000000 ellipse f
n 14.250000 4.434440 m 14.250000 4.434440 0.500000 0.500000 270.000000 360.000000 ellipse f
n 2.215000 4.434440 m 2.215000 13.565551 l 14.750000 13.565551 l 14.750000 4.434440 l f
n 2.715000 13.565551 m 2.715000 13.565551 0.500000 0.500000 90.000000 180.000000 ellipse f
n 14.250000 13.565551 m 14.250000 13.565551 0.500000 0.500000 0.000000 90.000000 ellipse f
0.100000 slw
[] 0 sd
[] 0 sd
0 slj
0.000000 0.000000 0.000000 srgb
n 2.715000 3.934440 m 14.250000 3.934440 l s
n 2.715000 14.065551 m 14.250000 14.065551 l s
n 2.715000 4.434440 0.500000 0.500000 180.000000 270.000000 ellipse s
n 14.250000 4.434440 0.500000 0.500000 270.000000 360.000000 ellipse s
n 2.215000 4.434440 m 2.215000 13.565551 l s
n 14.750000 4.434440 m 14.750000 13.565551 l s
n 2.715000 13.565551 0.500000 0.500000 90.000000 180.000000 ellipse s
n 14.250000 13.565551 0.500000 0.500000 0.000000 90.000000 ellipse s
/Helvetica-Bold-latin1 ff 0.790222 scf sf
(ParallelFor) 2.665000 5.096162 m
gs 1 -1 sc sh gr
1.000000 1.000000 1.000000 srgb
n 6.515000 3.100000 m 6.515000 4.300000 l 10.515000 4.300000 l 10.515000 3.100000 l f
0.100000 slw
[] 0 sd
[] 0 sd
0 slj
0.000000 0.000000 0.000000 srgb
n 6.515000 3.100000 m 6.515000 4.300000 l 10.515000 4.300000 l 10.515000 3.100000 l cp s
/Times-Roman-latin1 ff 0.070000 scf sf
0.100000 slw
[] 0 sd
[] 0 sd
0 slc
n 8.515000 3.100000 m 8.515000 4.300000 l s
0.100000 slw
[] 0 sd
[] 0 sd
0 slc
n 7.515000 3.100000 m 7.515000 4.300000 l s
0.100000 slw
[] 0 sd
[] 0 sd
0 slc
n 8.515000 3.700000 m 8.515000 3.700000 l s
0.100000 slw
[] 0 sd
[] 0 sd
0 slc
n 9.515000 3.100000 m 9.515000 4.300000 l s
1.000000 1.000000 1.000000 srgb
n 6.515000 13.200000 m 6.515000 14.400000 l 10.515000 14.400000 l 10.515000 13.200000 l f
0.100000 slw
[] 0 sd
[] 0 sd
0 slj
0.000000 0.000000 0.000000 srgb
n 6.515000 13.200000 m 6.515000 14.400000 l 10.515000 14.400000 l 10.515000 13.200000 l cp s
/Times-Roman-latin1 ff 0.070000 scf sf
0.100000 slw
[] 0 sd
[] 0 sd
0 slc
n 8.515000 13.200000 m 8.515000 14.400000 l s
0.100000 slw
[] 0 sd
[] 0 sd
0 slc
n 7.515000 13.200000 m 7.515000 14.400000 l s
0.100000 slw
[] 0 sd
[] 0 sd
0 slc
n 8.515000 13.800000 m 8.515000 13.800000 l s
0.100000 slw
[] 0 sd
[] 0 sd
0 slc
n 9.515000 13.200000 m 9.515000 14.400000 l s
1.000000 1.000000 1.000000 srgb
n 8.565000 10.750000 3.500000 1.250000 0 360 ellipse f
0.100000 slw
[] 0 sd
[] 0 sd
0 slj
0.000000 0.000000 0.000000 srgb
n 8.565000 10.750000 3.500000 1.250000 0 360 ellipse cp s
/Helvetica-Bold-latin1 ff 0.790222 scf sf
(Render) dup sw 2 div 8.565000 ex sub 10.797278 m
gs 1 -1 sc sh gr
1.000000 1.000000 1.000000 srgb
n 8.500000 16.662273 3.500000 1.312273 0 360 ellipse f
0.100000 slw
[] 0 sd
[] 0 sd
0 slj
0.000000 0.000000 0.000000 srgb
n 8.500000 16.662273 3.500000 1.312273 0 360 ellipse cp s
/Helvetica-Bold-latin1 ff 0.790222 scf sf
(Convert) dup sw 2 div 8.500000 ex sub 16.709551 m
gs 1 -1 sc sh gr
n 8.515000 1.400000 0.500000 0.500000 0 360 ellipse f
0.100000 slw
[] 0 sd
[] 0 sd
n 8.515000 1.400000 0.500000 0.500000 0 360 ellipse cp s
1.000000 1.000000 1.000000 srgb
n 8.565000 19.250000 0.500000 0.500000 0 360 ellipse f
0.100000 slw
[] 0 sd
[] 0 sd
0.000000 0.000000 0.000000 srgb
n 8.565000 19.250000 0.500000 0.500000 0 360 ellipse cp s
n 8.565001 19.250001 0.250001 0.250001 0 360 ellipse f
0.100000 slw
[] 0 sd
[] 0 sd
n 8.565001 19.250001 0.250001 0.250001 0 360 ellipse cp s
0.100000 slw
[] 0 sd
[] 0 sd
0 slc
n 8.515000 1.949170 m 8.515000 2.500317 l s
0 slj
n 8.265000 2.500317 m 8.515000 3.000317 l 8.765000 2.500317 l ef
0.100000 slw
[] 0 sd
0 slj
n 8.265000 2.500317 m 8.515000 3.000317 l 8.765000 2.500317 l cp s
0.100000 slw
[] 0 sd
[] 0 sd
0 slc
n 8.515000 4.300000 m 8.513673 5.016615 l s
0 slj
n 8.263673 5.016152 m 8.512747 5.516614 l 8.763673 5.017078 l ef
0.100000 slw
[] 0 sd
0 slj
n 8.263673 5.016152 m 8.512747 5.516614 l 8.763673 5.017078 l cp s
0.100000 slw
[] 0 sd
[] 0 sd
0 slc
n 8.565000 12.000000 m 8.537897 12.650477 l s
0 slj
n 8.288114 12.640069 m 8.517082 13.150043 l 8.787680 12.660884 l ef
0.100000 slw
[] 0 sd
0 slj
n 8.288114 12.640069 m 8.517082 13.150043 l 8.787680 12.660884 l cp s
0.100000 slw
[] 0 sd
[] 0 sd
0 slc
n 8.515000 14.400000 m 8.508683 14.800069 l s
0 slj
n 8.258714 14.796122 m 8.500789 15.300006 l 8.758652 14.804015 l ef
0.100000 slw
[] 0 sd
0 slj
n 8.258714 14.796122 m 8.500789 15.300006 l 8.758652 14.804015 l cp s
0.100000 slw
[] 0 sd
[] 0 sd
0 slc
n 8.500000 17.974500 m 8.530209 18.451101 l s
0 slj
n 8.280709 18.466916 m 8.561837 18.950100 l 8.779708 18.435287 l ef
0.100000 slw
[] 0 sd
0 slj
n 8.280709 18.466916 m 8.561837 18.950100 l 8.779708 18.435287 l cp s
1.000000 1.000000 1.000000 srgb
n 8.510000 7.000000 3.872766 1.383131 0 360 ellipse f
0.100000 slw
[] 0 sd
[] 0 sd
0 slj
0.000000 0.000000 0.000000 srgb
n 8.510000 7.000000 3.872766 1.383131 0 360 ellipse cp s
/Helvetica-Bold-latin1 ff 0.790222 scf sf
(SceneFile) dup sw 2 div 8.510000 ex sub 7.047278 m
gs 1 -1 sc sh gr
0.100000 slw
[] 0 sd
[] 0 sd
0 slc
n 8.510000 8.383131 m 8.537948 8.950666 l s
0 slj
n 8.288251 8.962962 m 8.562541 9.450061 l 8.787646 8.938369 l ef
0.100000 slw
[] 0 sd
0 slj
n 8.288251 8.962962 m 8.562541 9.450061 l 8.787646 8.938369 l cp s
showpage
+3550
View File
File diff suppressed because it is too large Load Diff
+337
View File
@@ -0,0 +1,337 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xmlns:yed="http://www.yworks.com/xml/yed/3" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.1/ygraphml.xsd">
<!--Created by yEd 3.14-->
<key for="graphml" id="d0" yfiles.type="resources"/>
<key for="port" id="d1" yfiles.type="portgraphics"/>
<key for="port" id="d2" yfiles.type="portgeometry"/>
<key for="port" id="d3" yfiles.type="portuserdata"/>
<key attr.name="url" attr.type="string" for="node" id="d4"/>
<key attr.name="description" attr.type="string" for="node" id="d5"/>
<key for="node" id="d6" yfiles.type="nodegraphics"/>
<key attr.name="Beschreibung" attr.type="string" for="graph" id="d7"/>
<key attr.name="url" attr.type="string" for="edge" id="d8"/>
<key attr.name="description" attr.type="string" for="edge" id="d9"/>
<key for="edge" id="d10" yfiles.type="edgegraphics"/>
<graph edgedefault="directed" id="G">
<data key="d7"/>
<node id="n0">
<data key="d6">
<y:GenericNode configuration="com.yworks.bpmn.Artifact.withShadow">
<y:Geometry height="55.0" width="35.0" x="-1313.13859375" y="-272.55046875"/>
<y:Fill color="#FFFFFFE6" transparent="false"/>
<y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="14" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="36.59375" modelName="custom" textColor="#000000" visible="true" width="106.4091796875" x="-35.70458984375" y="59.0">Workflow
Specification<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="-0.5" nodeRatioX="0.0" nodeRatioY="0.5" offsetX="0.0" offsetY="4.0" upX="0.0" upY="-1.0"/>
</y:ModelParameter>
</y:NodeLabel>
<y:StyleProperties>
<y:Property class="com.yworks.yfiles.bpmn.view.BPMNTypeEnum" name="com.yworks.bpmn.type" value="ARTIFACT_TYPE_DATA_OBJECT"/>
<y:Property class="com.yworks.yfiles.bpmn.view.DataObjectTypeEnum" name="com.yworks.bpmn.dataObjectType" value="DATA_OBJECT_TYPE_PLAIN"/>
<y:Property class="java.awt.Color" name="com.yworks.bpmn.icon.line.color" value="#000000"/>
<y:Property class="java.awt.Color" name="com.yworks.bpmn.icon.fill" value="#ffffffe6"/>
<y:Property class="java.awt.Color" name="com.yworks.bpmn.icon.fill2" value="#d4d4d4cc"/>
</y:StyleProperties>
</y:GenericNode>
</data>
</node>
<node id="n1">
<data key="d6">
<y:ShapeNode>
<y:Geometry height="165.0" width="239.0" x="-1193.4785937499978" y="-327.55046875"/>
<y:Fill hasColor="false" transparent="false"/>
<y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="custom" textColor="#000000" visible="true" width="4.0" x="117.5" y="80.5">
<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
</y:ModelParameter>
</y:NodeLabel>
<y:Shape type="rectangle"/>
</y:ShapeNode>
</data>
</node>
<node id="n2">
<data key="d6">
<y:ShapeNode>
<y:Geometry height="128.0" width="49.0" x="-1178.4785937499978" y="-309.05046875"/>
<y:Fill hasColor="false" transparent="false"/>
<y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="14" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="20.296875" modelName="custom" rotationAngle="270.0" textColor="#000000" visible="true" width="118.6796875" x="14.3515625" y="4.66015625">IWIR-Frontend<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
</y:ModelParameter>
</y:NodeLabel>
<y:Shape type="roundrectangle"/>
</y:ShapeNode>
</data>
</node>
<node id="n3">
<data key="d6">
<y:ShapeNode>
<y:Geometry height="128.0" width="49.0" x="-1019.1585937499935" y="-309.05046875"/>
<y:Fill hasColor="false" transparent="false"/>
<y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="14" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="20.296875" modelName="custom" rotationAngle="270.0" textColor="#000000" visible="true" width="102.02734375" x="14.3515625" y="12.986328125">WF-Backend<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
</y:ModelParameter>
</y:NodeLabel>
<y:Shape type="roundrectangle"/>
</y:ShapeNode>
</data>
</node>
<node id="n4">
<data key="d6">
<y:ShapeNode>
<y:Geometry height="28.0" width="95.0" x="-1121.8185937499957" y="-268.83046875000014"/>
<y:Fill hasColor="false" transparent="false"/>
<y:BorderStyle hasColor="false" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="17.96875" modelName="custom" textColor="#000000" visible="true" width="98.27734375" x="-1.638671875" y="5.015625">Optimisations<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
</y:ModelParameter>
</y:NodeLabel>
<y:Shape type="rectangle"/>
</y:ShapeNode>
</data>
</node>
<node id="n5">
<data key="d6">
<y:ShapeNode>
<y:Geometry height="165.0" width="208.0" x="-924.4785937499978" y="-327.55046875"/>
<y:Fill hasColor="false" transparent="false"/>
<y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="custom" textColor="#000000" visible="true" width="4.0" x="102.0" y="80.5">
<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
</y:ModelParameter>
</y:NodeLabel>
<y:Shape type="rectangle"/>
</y:ShapeNode>
</data>
</node>
<node id="n6">
<data key="d6">
<y:GenericNode configuration="com.yworks.bpmn.Artifact.withShadow">
<y:Geometry height="55.0" width="35.0" x="-880.2771874999999" y="-272.55046875"/>
<y:Fill color="#FFFFFFE6" transparent="false"/>
<y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="14" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="20.296875" modelName="custom" textColor="#000000" visible="true" width="102.560546875" x="-33.7802734375" y="59.0">WF-Program<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="-0.5" nodeRatioX="0.0" nodeRatioY="0.5" offsetX="0.0" offsetY="4.0" upX="0.0" upY="-1.0"/>
</y:ModelParameter>
</y:NodeLabel>
<y:StyleProperties>
<y:Property class="com.yworks.yfiles.bpmn.view.BPMNTypeEnum" name="com.yworks.bpmn.type" value="ARTIFACT_TYPE_DATA_OBJECT"/>
<y:Property class="com.yworks.yfiles.bpmn.view.DataObjectTypeEnum" name="com.yworks.bpmn.dataObjectType" value="DATA_OBJECT_TYPE_PLAIN"/>
<y:Property class="java.awt.Color" name="com.yworks.bpmn.icon.line.color" value="#000000"/>
<y:Property class="java.awt.Color" name="com.yworks.bpmn.icon.fill" value="#ffffffe6"/>
<y:Property class="java.awt.Color" name="com.yworks.bpmn.icon.fill2" value="#d4d4d4cc"/>
</y:StyleProperties>
</y:GenericNode>
</data>
</node>
<node id="n7">
<data key="d6">
<y:ShapeNode>
<y:Geometry height="128.0" width="49.0" x="-792.3171874999871" y="-309.05046875"/>
<y:Fill hasColor="false" transparent="false"/>
<y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="14" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="20.296875" modelName="custom" rotationAngle="270.0" textColor="#000000" visible="true" width="88.62890625" x="14.3515625" y="19.685546875">WF-Engine<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
</y:ModelParameter>
</y:NodeLabel>
<y:Shape type="roundrectangle"/>
</y:ShapeNode>
</data>
</node>
<node id="n8">
<data key="d6">
<y:ShapeNode>
<y:Geometry height="40.0" width="111.0" x="-1130.1585937499935" y="-157.05046875"/>
<y:Fill hasColor="false" transparent="false"/>
<y:BorderStyle hasColor="false" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="16" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="22.625" modelName="custom" textColor="#000000" visible="true" width="84.5703125" x="13.21484375" y="8.6875">Compiler<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
</y:ModelParameter>
</y:NodeLabel>
<y:Shape type="rectangle"/>
</y:ShapeNode>
</data>
</node>
<node id="n9">
<data key="d6">
<y:ShapeNode>
<y:Geometry height="40.0" width="111.0" x="-880.2771874999999" y="-157.05046875"/>
<y:Fill hasColor="false" transparent="false"/>
<y:BorderStyle hasColor="false" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="16" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="22.625" modelName="custom" textColor="#000000" visible="true" width="79.7578125" x="15.62109375" y="8.6875">Runtime<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
</y:ModelParameter>
</y:NodeLabel>
<y:Shape type="rectangle"/>
</y:ShapeNode>
</data>
</node>
<node id="n10">
<data key="d6">
<y:ShapeNode>
<y:Geometry height="55.0" width="103.16140625001071" x="-1046.239296874999" y="-394.05046875"/>
<y:Fill hasColor="false" transparent="false"/>
<y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="14" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="36.59375" modelName="custom" textColor="#000000" visible="true" width="89.3876953125" x="6.886855468755357" y="9.203125">Activity
Repository<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
</y:ModelParameter>
</y:NodeLabel>
<y:Shape type="roundrectangle"/>
</y:ShapeNode>
</data>
</node>
<node id="n11">
<data key="d6">
<y:ShapeNode>
<y:Geometry height="30.0" width="30.0" x="-1310.63859375" y="-369.05046875"/>
<y:Fill hasColor="false" transparent="false"/>
<y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="18" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="24.953125" modelName="custom" textColor="#000000" visible="true" width="16.5244140625" x="6.73779296875" y="2.5234375">1<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
</y:ModelParameter>
</y:NodeLabel>
<y:Shape type="ellipse"/>
</y:ShapeNode>
</data>
</node>
<node id="n12">
<data key="d6">
<y:ShapeNode>
<y:Geometry height="30.0" width="30.0" x="-1106.239296874999" y="-369.05046875"/>
<y:Fill hasColor="false" transparent="false"/>
<y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="18" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="24.953125" modelName="custom" textColor="#000000" visible="true" width="16.5244140625" x="6.73779296875" y="2.5234375">2<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
</y:ModelParameter>
</y:NodeLabel>
<y:Shape type="ellipse"/>
</y:ShapeNode>
</data>
</node>
<node id="n13">
<data key="d6">
<y:ShapeNode>
<y:Geometry height="30.0" width="30.0" x="-833.7971874999935" y="-369.05046875"/>
<y:Fill hasColor="false" transparent="false"/>
<y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="18" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="24.953125" modelName="custom" textColor="#000000" visible="true" width="16.5244140625" x="6.73779296875" y="2.5234375">3<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
</y:ModelParameter>
</y:NodeLabel>
<y:Shape type="ellipse"/>
</y:ShapeNode>
</data>
</node>
<edge id="e0" source="n2" target="n3">
<data key="d10">
<y:PolyLineEdge>
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
<y:LineStyle color="#000000" type="line" width="1.0"/>
<y:Arrows source="none" target="standard"/>
<y:BendStyle smoothed="false"/>
</y:PolyLineEdge>
</data>
</edge>
<edge id="e1" source="n0" target="n2">
<data key="d10">
<y:PolyLineEdge>
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
<y:LineStyle color="#000000" type="line" width="1.0"/>
<y:Arrows source="none" target="standard"/>
<y:BendStyle smoothed="false"/>
</y:PolyLineEdge>
</data>
</edge>
<edge id="e2" source="n3" target="n6">
<data key="d10">
<y:PolyLineEdge>
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
<y:LineStyle color="#000000" type="line" width="1.0"/>
<y:Arrows source="none" target="standard"/>
<y:BendStyle smoothed="false"/>
</y:PolyLineEdge>
</data>
</edge>
<edge id="e3" source="n6" target="n7">
<data key="d10">
<y:BezierEdge>
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
<y:Point x="-821.4785937499978" y="-274.83046875000014"/>
</y:Path>
<y:LineStyle color="#000000" type="line" width="1.0"/>
<y:Arrows source="none" target="standard"/>
</y:BezierEdge>
</data>
</edge>
<edge id="e4" source="n7" target="n6">
<data key="d10">
<y:BezierEdge>
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
<y:Point x="-818.4785937499978" y="-222.83046875000014"/>
</y:Path>
<y:LineStyle color="#000000" type="line" width="1.0"/>
<y:Arrows source="none" target="standard"/>
</y:BezierEdge>
</data>
</edge>
<edge id="e5" source="n10" target="n3">
<data key="d10">
<y:PolyLineEdge>
<y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
<y:LineStyle color="#000000" type="line" width="1.0"/>
<y:Arrows source="none" target="standard"/>
<y:BendStyle smoothed="false"/>
</y:PolyLineEdge>
</data>
</edge>
</graph>
<data key="d0">
<y:Resources/>
</data>
</graphml>
+92
View File
@@ -0,0 +1,92 @@
\begin{wrapfigure}{R}{0.5\textwidth}
\centering
\includegraphics[width=4cm,keepaspectratio=true]{./mwre/figures/Povray.pdf}
\caption{The POV-Ray workflow.}
\label{fig:ex-povray}
\end{wrapfigure}
\section{MWRE Architecture}\label{sec:workflow_environment}
Based on the requirements outlined in the introduction, we designed a \emph{Manycore Workflow Runtime Engine (MWRE)} tailored to heterogeneous shared-memory manycore systems. Our main design principle was to provide a set of feature similar to the ones found in the current DCI workflow engines, while addressing the special characteristics and requirements of manycore systems. In this section we discuss the basic architecture of our workflow system and give short descriptions of the components.
We use the Persistence of Vision Raytracer (POV-Ray) workflow as a running example to illustrate the workflow representation, translation and enactment.
POV-Ray~\cite{Plachetka98-PVPR} is a free tool for creating three-dimensional graphics, which is known to be a time-consuming process used not only by hobbyists and artists, but also in biochemistry research, medicine, architecture, and mathematical visualization. We modelled a POV-Ray rendering scenario as a workflow depicted in Figure~\ref{fig:ex-povray}, where the description of a movie can be separated in several scenes, each scene being composed of several frames that can be rendered (e.g. in \texttt{.png} format) in a \texttt{parallel for} loop. The \texttt{Scene} activity before the \texttt{Render} returns the scene file for a given scene name.
Finally, all frames are merged into a \texttt{.mpg} movie using a \texttt{Convert} activity (e.g. running a \texttt{png2yuv} followed by an \texttt{ffmpeg} conversion).
Figure~\ref{fig:overall-architecture} presents the overall architecture of the MWRE consisting of three main parts: \circled{1} the workflow specification, \circled{2} a source-to-source compiler, and \circled{3} the workflow runtime environment.
The main difference between the MWRE's architecture and the traditional DCI workflow engines is the source-to-source compiler that generates a native C++ program from the workflow specification. Furthermore, MWRE does the mapping of abstract activity types to concrete activity implementations at compile-time, instead of runtime as done by most DCI engines.
\begin{figure}[t]
\centering
\includegraphics[keepaspectratio=true, width=\textwidth]{./mwre/figures/overall-architecture.pdf}
\caption{MWRE architecture.}
\label{fig:overall-architecture}
\end{figure}
\subsection{Workflow specification}
The input to MWRE is a workflow specification (\circled{1}) encoded in the Interoperable Workflow Intermediate Representation (IWIR)~\cite{Plankensteiner2013}. IWIR is an intermediate workflow specification language designed in the European SHIWA project\footnote{\url{http://www.shiwa-workflow.eu/}} to enable interoperability of different workflow systems. As most workflow environments require workflows to be written in their respective workflow language to be able to execute them, exchanging workflows usually means that the workflow specification needs to be translated from one workflow language to another. IWIR eases this translation process by providing a common intermediate representation and thus reducing the number of required translators from $2\cdot n^2$ to $2\cdot n$. IWIR is currently supported by four workflow systems: ASKALON~\cite{Fahringer2007}, MOTEUR~\cite{glatard2008flexible}, Triana~\cite{taylor2003triana} and WS-PGRADE~\cite{kacsuk2011p}.
Using IWIR to specify MWRE workflows has several advantages allowing reusing existing tool chains with no need to implement existing functionality.
First, because it is designed for interoperability, it captures all concepts and constructs found in most workflow languages, and can therefore be seen as a superset of the major workflow languages. Second, it is well-defined and easy to parse. Third, it allows automatic translation and reuse of existing workflows for experiments across different systems without further modifications.
Fourth, it allows integration of new languages and new platforms with O(1) complexity through IWIR front-end or back-end support. And fifth, the implementation of a MWRE workflows is not tied to a specific development environment, but domain scientists can use their favourite workflow development tools from any workflow environment that supports IWIR translation.
\lstset{ %
backgroundcolor=\color{white}, % choose the background color; you must add \usepackage{color} or \usepackage{xcolor}
basicstyle=\scriptsize\ttfamily, % the size of the fonts that are used for the code
breakatwhitespace=true, % sets if automatic breaks should only happen at whitespace
breaklines=true, % sets automatic line breaking
captionpos=b, % sets the caption-position to bottom
commentstyle=\color{black}, % comment style
deletekeywords={...}, % if you want to delete keywords from the given language
escapeinside={(*@}{@*)}, % if you want to add LaTeX within your code
extendedchars=true, % lets you use non-ASCII characters; for 8-bits encodings only, does not work with UTF-8
frame=none, % adds a frame around the code
keepspaces=false, % keeps spaces in text, useful for keeping indentation of code (possibly needs columns=flexible)
keywordstyle=\color{black}, % keyword style
otherkeywords={*,...}, % if you want to add more keywords to the set
numbers=left, % where to put the line-numbers; possible values are (none, left, right)
numbersep=2pt, % how far the line-numbers are from the code
numberstyle=\tiny\color{gray}, % the style that is used for the line-numbers
rulecolor=\color{black}, % if not set, the frame-color may be changed on line-breaks within not-black text (e.g. comments (green here))
showspaces=false, % show spaces everywhere adding particular underscores; it overrides 'showstringspaces'
showstringspaces=false, % underline spaces within strings only
showtabs=false, % show tabs within strings adding particular underscores
stepnumber=1, % the step between two line-numbers. If it's 1, each line will be numbered
stringstyle=\color{black}, % string literal style
tabsize=2, % sets default tabsize to 2 spaces
columns=fullflexible,
}
\lstdefinelanguage{XML2}{
language=XML,
commentstyle=\color{gray}\upshape,
morestring=[b][\color{black}\itshape\mdseries]",
morestring=[s][\bfseries]{>}{<},
morecomment=[s]{<?}{?>},
stringstyle=\color{black},
identifierstyle=\color{blue}\bfseries,
keywordstyle=\color{black}\bfseries, % keyword style
tagstyle=\color{black}\bfseries,
}
\begin{listing}
\resizebox*{!}{\textheight}{
\lstinputlisting[language=XML2]{mwre/povray.iwir}}
\caption{IWIR specification of the POV-Ray workflow.}
\label{lst:povray_iwir}
\end{listing}
Listing~\ref{lst:povray_iwir} shows the IWIR specification of our POV-Ray workflow. The \texttt{toplevel} composite activity represents the start of the workflow and is defined in lines~\ref{povray:iwir:toplevel:start}~--~\ref{povray:iwir:toplevel:end}. The input ports of the \texttt{toplevel} activity (one file and two integers) are defined in lines~\ref{povray:iwir:toplevel:inports:start}~--~\ref{povray:iwir:toplevel:inports:end} and also represent the workflow input ports. A real-world POV-Ray workflow has more input parameters, but we omitted them for brevity reasons. The output ports of the \texttt{toplevel} activity (one file) defined in lines~\ref{povray:iwir:toplevel:outports:start}~--~\ref{povray:iwir:toplevel:outports:end} again represent the workflow output ports too. Lines~\ref{povray:iwir:pfor:start}~--~\ref{povray:iwir:pfor:end} represent the \texttt{parallel for} \texttt{ParallelFor} loop activity containing the atomic activities \texttt{SceneFile} (lines~\ref{povray:iwir:SceneFile:start}~--~\ref{povray:iwir:SceneFile:end}) and \texttt{Render} (lines~\ref{povray:iwir:Render:start}~--~\ref{povray:iwir:Render:end}). The loop activity is then followed by the atomic activity \texttt{Convert}, represented in lines~\ref{povray:iwir:Convert:start}~--~\ref{povray:iwir:Convert:end}.
\subsection{Source-to-source compiler}
The IWIR workflow specification is then given to the source-to-source compiler (\circled{2}), which translates it into a C++ \emph{workflow program} using the API provided by MWRE. We believe that compiling the workflow application into a native executable program is the way to achieve the ``best'' performance on shared-memory manycore systems while minimizing enactment latencies and other middle-ware overheads. The compiler is also responsible for mapping the abstract workflow activity types to concrete activity implementations. Performing this task at compile-time, instead of runtime as done by most DCI workflow systems, saves additional overhead and eases configuration of the workflow program. For this purpose, the compiler has access to a repository that contains activity implementations in form of pre-compiled libraries, binaries, GPU kernels (i.e. \texttt{CUDA}, \texttt{OpenCL}), source-code snippets, and shell-scripts. The compiler also allows a $1$-to-$n$ mapping of activity types to implementations. Meta-data stored for each mapping allows the scheduler to efficiently select the most suitable implementation at runtime.
Using a source-to-source compiler also allows applying transformations to the workflow structure to optimize the performance of the generated workflow program, similar to the compiler optimisations for shared memory systems.
We describe the source-to-source compiler in Section~\ref{sec:Source-to-Source-Compiler} in detail.
\subsection{Runtime environment}
The runtime environment of MWRE (\circled{3}) invokes and executes the workflow program created by the source-to-source compiler. It is implemented as a C++ library considering several performance concerns, such as overhead, memory footprint, and resource utilization.
We describe MWRE workflow engine in Section~\ref{sec:MWRE-EnactmentModel} in detail.
+4
View File
@@ -0,0 +1,4 @@
\chapter{Manycore Workflow Runtime Engine (MWRE)}
\input{mwre/mwre-architecture}
+67
View File
@@ -0,0 +1,67 @@
<IWIR version="1.1" wfname="NewWorkflow" xmlns="http://shiwa-workflow.eu/IWIR">
<blockScope name="toplevel"> (*@\label{povray:iwir:toplevel:start}@*)
<inputPorts> (*@\label{povray:iwir:toplevel:inports:start}@*)
<inputPort name="scene" type="string"/>
<inputPort name="totalFrames" type="integer"/>
<inputPort name="framesPerActivity" type="integer"/>
</inputPorts> (*@\label{povray:iwir:toplevel:inports:end}@*)
<body>
<parallelFor name="ParallelFor"> (*@\label{povray:iwir:pfor:start}@*)
<inputPorts>
<inputPort name="scene" type="string"/>
<inputPort name="numFrames" type="integer"/>
<loopCounter name="frameCounter" from="1" to="" step=""/>
</inputPorts>
<body>
<task name="SceneFile" tasktype="SceneFile"> (*@\label{povray:iwir:SceneFile:start}@*)
<inputPorts>
<inputPort name="scene" type="string"/>
</inputPorts>
<outputPorts>
<outputPort name="povFile" type="file"/>
</outputPorts>
</task> (*@\label{povray:iwir:SceneFile:end}@*)
<task name="Render" tasktype="Render"> (*@\label{povray:iwir:Render:start}@*)
<inputPorts>
<inputPort name="povFile" type="file"/>
<inputPort name="startFrame" type="integer"/>
<inputPort name="numFrames" type="integer"/>
</inputPorts>
<outputPorts>
<outputPort name="frames" type="collection/file"/>
</outputPorts>
</task> (*@\label{povray:iwir:Render:end}@*)
</body>
<outputPorts>
<outputPort name="frames" type="collection/collection/file"/>
</outputPorts>
<links>
<link from="ParallelFor/scene" to="SceneFile/scene"/>
<link from="SceneFile/povFile" to="Render/povFile"/>
<link from="ParallelFor/numFrames" to="Render/numFrames"/>
<link from="ParallelFor/frameCounter" to="Render/startFrame"/>
<link from="Render/frames" to="ParallelFor/frames"/>
</links>
</parallelFor> (*@\label{povray:iwir:pfor:end}@*)
<task name="Convert" tasktype="Convert"> (*@\label{povray:iwir:Convert:start}@*)
<inputPorts>
<inputPort name="frames" type="collection/file"/>
</inputPorts>
<outputPorts>
<outputPort name="outFile" type="file"/>
</outputPorts>
</task> (*@\label{povray:iwir:Convert:end}@*)
</body>
<outputPorts> (*@\label{povray:iwir:toplevel:outports:start}@*)
<outputPort name="finalMovie" type="file"/>
</outputPorts> (*@\label{povray:iwir:toplevel:outports:end}@*)
<links>
<link from="toplevel/totalFrames" to="ParallelFor/frameCounter/to"/>
<link from="toplevel/framesPerActivity" to="ParallelFor/frameCounter/step"/>
<link from="toplevel/framesPerActivity" to="ParallelFor/numFrames"/>
<link from="toplevel/scene" to="ParallelFor/scene"/>
<link from="ParallelFor/frames" to="Convert/frames"/>
<link from="Convert/outFile" to="toplevel/finalMovie"/>
</links>
</blockScope> (*@\label{povray:iwir:toplevel:end}@*)
</IWIR>