6. Selected Results: BFS on a Dynamic Data Structure
15 16 17 18 19 20 21
scale
0
20
40
60
80
100
MTEPS
Emu single node - Cilk
Emu multi-node - Cilk
x86 Haswell - STINGER
x86 Haswell - Cilk
0
500
1000
1500
EdgeBandwidth(MB/s)
Note: Streaming data structure, not statically optimized. 3
3
Hein, Eswar, Abdurrahman Yasar, Prasanth Chatarasi, Li, Young, Conte, Ümit Çatalyürek, Vuduc, Riedy, Bora Uçar.
“Programming Strategies for Irregular Algorithms on the Emu Chick.” ACM ToPC, to appear.
https://arxiv.org/abs/1901.02775
GraphBLAS and Emus — 22 Sep 2020 6/8
7. Implications for a GraphBLAS Implementation
• We can be more flexible in data organization.
• Not tied to CSR / CSC / COO.
• NCDIMM: No cache line issues
• Stride between vertices, values can be arbitrary.
• Can incorporate more semantic information.
• Targeting “streaming” use.
• High rate of change in a massive graph.
• Linked list of blocks... (STINGER, HORNET)
• But must remember graphs live in a separate
memory space.
• Gossamer side calls stay there.
• Stationary core calls must transfer input and output.
GraphBLAS and Emus — 22 Sep 2020 7/8
8. Experiences “Porting” Existing Apps & Bindings
Capabilities nice to have:
• Allocating memory to hold k entries w/o knowing the type
• Converting the support to a bool GxB_Matrix (T →bool)
• Eases operating on masks of different types
• Execution context: SC-GC, GC-GC, SC-SC
• A sized blob type that is not a UDT
• Sometimes used to hold keys with no GB meaning
• Selects and ops with bools still useful
• Users want “iterators”
• Some uses are horrible to replace without a relational
join-type operation
• Still coming up with more...
GraphBLAS and Emus — 22 Sep 2020 8/8