~gcrosswhite/charon/projects-BLACS

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<map version="0.8.0">
<!-- To view this file, download free mind mapping software FreeMind from http://freemind.sourceforge.net -->
<node CREATED="1220241068982" ID="Freemind_Link_183851973" MODIFIED="1220831031011" TEXT="Charon">
<node CREATED="1220996391491" ID="Freemind_Link_60435426" MODIFIED="1220996401078" POSITION="right" TEXT="Summation formula:  n(first+last)/2"/>
<node CREATED="1220466252865" FOLDED="true" ID="Freemind_Link_910325907" MODIFIED="1220466257525" POSITION="right" STYLE="fork" TEXT="Tickets">
<node CREATED="1220466258151" ID="Freemind_Link_654798541" MODIFIED="1220466340424" TEXT="Priority Queues">
<node CREATED="1220466340953" ID="Freemind_Link_813380859" MODIFIED="1220467845784" TEXT="Ticket ID jumps"/>
<node CREATED="1220466354688" ID="Freemind_Link_1814710423" MODIFIED="1220466358029" TEXT="Operation requests"/>
</node>
<node CREATED="1220466276795" ID="Freemind_Link_1321229388" MODIFIED="1220466288512" TEXT="Individual operations have last and next ticket number"/>
<node CREATED="1220466289532" ID="Freemind_Link_1553369986" MODIFIED="1220466309115" TEXT="Broadcast operations include a vector telling the chares who has which ticket numbers before the broadcast"/>
<node CREATED="1220467922138" ID="Freemind_Link_213481353" MODIFIED="1220467926791" TEXT="Chare Ticket Processing Loop"/>
</node>
<node CREATED="1226004886771" FOLDED="true" ID="Freemind_Link_1552992533" MODIFIED="1226004888122" POSITION="left" TEXT="Attic">
<node CREATED="1224270808292" FOLDED="true" ID="Freemind_Link_1543510551" MODIFIED="1224270813976" TEXT="BLACS Grids">
<node CREATED="1224270834177" ID="Freemind_Link_698069782" MODIFIED="1224270835703" TEXT="runner">
<node CREATED="1224270836833" ID="Freemind_Link_306409250" MODIFIED="1224270845655" TEXT="initializes the MPI and BLACS grids"/>
</node>
</node>
<node CREATED="1220283741102" FOLDED="true" ID="Freemind_Link_618518678" MODIFIED="1220283754389" STYLE="fork" TEXT="Initialization of Distributed Array">
<node CREATED="1220283755782" ID="Freemind_Link_1050014864" MODIFIED="1220466250529" TEXT="Calculate distribution"/>
</node>
<node CREATED="1220242183970" FOLDED="true" ID="Freemind_Link_1049672592" MODIFIED="1220243685924" TEXT="Classes" VSHIFT="13">
<node CREATED="1220243690512" ID="Freemind_Link_318529041" MODIFIED="1220243782621" TEXT="DistributedArraySegment">
<font NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1220243702800" ID="Freemind_Link_998515570" MODIFIED="1220243705598" TEXT="DistributedArray"/>
</node>
<node CREATED="1220241082854" FOLDED="true" ID="_" MODIFIED="1220242130199" TEXT="Ideas">
<node CREATED="1220241085523" ID="Freemind_Link_386596479" MODIFIED="1220241151714" TEXT="TinyVectors as indices?">
<node CREATED="1220242131048" ID="Freemind_Link_648601490" MODIFIED="1220242176089" TEXT="Doesn&apos;t work yet -- charm++ parser can&apos;t handle templated types as array indices."/>
</node>
</node>
<node CREATED="1220925584634" FOLDED="true" ID="Freemind_Link_774221074" MODIFIED="1220925589130" TEXT="Roads from here:">
<node CREATED="1220925591021" FOLDED="true" ID="Freemind_Link_75650619" MODIFIED="1220925594712" TEXT="Subarrays">
<node CREATED="1220925862740" ID="Freemind_Link_57276433" MODIFIED="1220925870414" TEXT="Subarrays are just view on existing arrays"/>
<node CREATED="1220925873395" ID="Freemind_Link_968860527" MODIFIED="1220925886605" TEXT="How much code can be shared between them and DistributedArrays?  All?  None?"/>
<node CREATED="1220925937094" ID="Freemind_Link_1641878733" MODIFIED="1220925945226" TEXT="Common superclass which provides interface">
<node CREATED="1220926256377" ID="Freemind_Link_1480953838" MODIFIED="1220926272754" TEXT="Basically everything that doesn&apos;t care about selecting particular processors can be shared"/>
</node>
</node>
<node CREATED="1220925596460" ID="Freemind_Link_992966487" MODIFIED="1220925600221" TEXT="ScaLAPACK arrays"/>
<node CREATED="1220925605588" ID="Freemind_Link_1089240338" MODIFIED="1220925610028" TEXT="Tensor multiplication"/>
</node>
</node>
<node CREATED="1226004915939" ID="Freemind_Link_604227608" MODIFIED="1226004920651" POSITION="left" TEXT="Matrix multiplication algorithm">
<node CREATED="1226004921539" ID="Freemind_Link_1964200175" MODIFIED="1226004923307" TEXT="2D chare"/>
<node CREATED="1226012259224" ID="Freemind_Link_255414129" MODIFIED="1226012265521" TEXT="Chares only see 2D blocks of the matrix"/>
<node CREATED="1226023212993" FOLDED="true" ID="Freemind_Link_596957544" MODIFIED="1226023215639" TEXT="Process">
<node CREATED="1226023218286" ID="Freemind_Link_384446583" MODIFIED="1226023243461" TEXT="First, need to create 2D array"/>
<node CREATED="1226023246080" ID="Freemind_Link_1506288598" MODIFIED="1226023251861" TEXT="For each multiplication">
<node CREATED="1226023253725" ID="Freemind_Link_1114124464" MODIFIED="1226023271381" TEXT="Multiplication is started by sending messages with chunks of A and B into the multiplier">
<node CREATED="1226023282352" ID="Freemind_Link_1737155985" MODIFIED="1226023300454" TEXT="Chunks are transposed and copied in order to put them into matrix form.">
<node CREATED="1226023754720" ID="Freemind_Link_1803883116" MODIFIED="1226023764457" TEXT="Create ArrayMessage with final matrix size"/>
<node CREATED="1226023771426" ID="Freemind_Link_68418415" MODIFIED="1226023788377" TEXT="Create Array sharing the same data space but with N-D size, with indices in correct order"/>
<node CREATED="1226023788881" ID="Freemind_Link_953542882" MODIFIED="1226023801497" TEXT="Transpose indices on original data, and copy into the ND array."/>
</node>
<node CREATED="1226023841218" ID="Freemind_Link_785041503" MODIFIED="1226023848665" TEXT="ArrayMessages are initially tagged with 0"/>
</node>
<node CREATED="1226023852770" ID="Freemind_Link_199697002" MODIFIED="1226023875658" TEXT="After 2D grid is finished, each node forwards its B ArrayMessage to its right"/>
<node CREATED="1226023876418" ID="Freemind_Link_1614458684" MODIFIED="1226023890826" TEXT="After row is finished, each node forwards its A array message down"/>
<node CREATED="1226023891378" ID="Freemind_Link_696903182" MODIFIED="1226023903002" TEXT="When entire computation is finished, data is shipped out to its final destination array">
<node CREATED="1226023907090" ID="Freemind_Link_103474748" MODIFIED="1226023926634" TEXT="As before, a new view array is created referenced to the same memory location but with N dimensions"/>
<node CREATED="1226023944979" ID="Freemind_Link_1446681978" MODIFIED="1226023955050" TEXT="Data is copied from this N-D array into the final storage location"/>
</node>
</node>
</node>
<node CREATED="1226536162315" ID="Freemind_Link_1978553632" MODIFIED="1226536165365" TEXT="Rectangular matrices">
<node CREATED="1226536200589" ID="Freemind_Link_1508921829" MODIFIED="1226536248774" TEXT="Grid will always be square in the largest of the three dimensions: M, N, K"/>
<node CREATED="1226537100210" ID="Freemind_Link_1640463738" MODIFIED="1226537120730" TEXT="if K &lt; L, then K will be *copied* in rotation so that all active sites always have something to do"/>
<node CREATED="1226536216989" ID="Freemind_Link_487331267" MODIFIED="1226536218151" TEXT="Setup">
<node CREATED="1226536219645" ID="Freemind_Link_933768489" MODIFIED="1226536237382" TEXT="1. Determine the largest dimension;  call it L"/>
<node CREATED="1226536262860" ID="Freemind_Link_631185204" MODIFIED="1226536305398" TEXT="2. For each of X = M, N">
<node CREATED="1226536275646" ID="Freemind_Link_827793672" MODIFIED="1226536334086" TEXT="2a. If X = L, easy distribution"/>
<node CREATED="1226536318812" ID="Freemind_Link_85086900" MODIFIED="1226536357222" TEXT="2b. If X &lt; L, then compute spread of active sites"/>
</node>
</node>
<node CREATED="1226537028576" ID="Freemind_Link_716433529" MODIFIED="1226537031641" TEXT="Data structures">
<node CREATED="1226537053630" ID="Freemind_Link_830646507" MODIFIED="1226537064762" TEXT="For each dimension (row, columns)">
<node CREATED="1226537065614" ID="Freemind_Link_326218912" MODIFIED="1226537068394" TEXT="Map to the active sites"/>
</node>
<node CREATED="1226537847252" ID="Freemind_Link_872764393" MODIFIED="1226537865613" TEXT="For K dimension, need to know active sites -- including duplicate sites!"/>
<node CREATED="1226537882423" ID="Freemind_Link_133705444" MODIFIED="1226537902846" TEXT="In fact, these data structures need not actually be computed?">
<node CREATED="1226537922004" ID="Freemind_Link_199266243" MODIFIED="1226537933838" TEXT="Need to compute section of array so that we know to where to send the empty arrays"/>
</node>
<node CREATED="1226538553035" ID="Freemind_Link_310673615" MODIFIED="1226538557489" TEXT="All information is local to each site!"/>
</node>
</node>
</node>
</node>
</map>