integrating external resources into legion · 2020. 10. 19. · attach to in-memory opaque data...

19
December 7, 2015 1 http://legion.stanford.edu Zhihao Jia Integrating External Resources into Legion

Upload: others

Post on 02-Jan-2021

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Integrating External Resources into Legion · 2020. 10. 19. · Attach to in-memory opaque data structures External data comes from other applications Legion may not understand the

December 7, 2015 1 http://legion.stanford.edu

Zhihao Jia

Integrating External Resources into Legion

Page 2: Integrating External Resources into Legion · 2020. 10. 19. · Attach to in-memory opaque data structures External data comes from other applications Legion may not understand the

December 7, 2015 2 http://legion.stanford.edu

Motivation

 Legion assumes a “closed world”  But, applications need to interact with external data

  e.g., files, checkpoints, databases

 Challenge   external interactions are expensive: the data is often huge

Page 3: Integrating External Resources into Legion · 2020. 10. 19. · Attach to in-memory opaque data structures External data comes from other applications Legion may not understand the

December 7, 2015 3 http://legion.stanford.edu

Motivation

 Original solution   Ask users to manage external I/O at application level   Access external data within Legion tasks

 Performance issues   Block computing threads, hard to hide I/O latency, hard to control resource utilization

 Correctness issues   Manually control external data consistency at application level

Page 4: Integrating External Resources into Legion · 2020. 10. 19. · Attach to in-memory opaque data structures External data comes from other applications Legion may not understand the

December 7, 2015 4 http://legion.stanford.edu

Approach

 Define semantics for external resources in Legion   Correctness: Legion guarantees consistency and preservation of dependencies   Performance: runtime automatically performs external I/O optimizations

  Idea: Integrate external resources by mapping them to regions => attach operation

Page 5: Integrating External Resources into Legion · 2020. 10. 19. · Attach to in-memory opaque data structures External data comes from other applications Legion may not understand the

December 7, 2015 5 http://legion.stanford.edu

Attach Operation

 Attach external resource to a region   Normal files, formatted files (HDF5), opaque data structures

PhysicalRegion attach_hdf( const char *filename, LogicalRegion lr, const std::map<FieldID,const char*> &fieldmap, AccessMode mode);

IndexSpace ó HDF DataSpace

Fields ó HDF Datasets

Page 6: Integrating External Resources into Legion · 2020. 10. 19. · Attach to in-memory opaque data structures External data comes from other applications Legion may not understand the

December 7, 2015 6 http://legion.stanford.edu

Attach Operation

 Semantics   Invalidate existing physical instance of lr   Maps lr to a new physical instance that represents external data (no external I/O)

Application

Legion Runtime

Region lr

Instance 1

Instance 2

Node 1

Instance 3

Node 2

Page 7: Integrating External Resources into Legion · 2020. 10. 19. · Attach to in-memory opaque data structures External data comes from other applications Legion may not understand the

December 7, 2015 7 http://legion.stanford.edu

Attach Operation

Application

Legion Runtime

Region lr

Instance 1

Instance 2

Node 1

Instance 3

Node 2

Instance 4

External Resource

Attach

Attach

 Semantics   Invalidate existing physical instance of lr   Maps lr to a new physical instance that represents external data (no external I/O)

Page 8: Integrating External Resources into Legion · 2020. 10. 19. · Attach to in-memory opaque data structures External data comes from other applications Legion may not understand the

December 7, 2015 8 http://legion.stanford.edu

Attach Operation

 Attached region accessed using simultaneous coherence

  Different tasks access the region simultaneously   Requires that all tasks must use the only valid physical instance

 Copy restriction   Simultaneous coherence implies tasks cannot create local copies   May result in inefficient memory accesses

 To address inefficiency => acquire/release

Page 9: Integrating External Resources into Legion · 2020. 10. 19. · Attach to in-memory opaque data structures External data comes from other applications Legion may not understand the

December 7, 2015 9 http://legion.stanford.edu

Acquire/Release

 Mechanism to notify Legion runtime when it is safe to allow local copies

 Acquire removes copy restriction   Can create a copy in any memory

 Release restores copy restriction   Invalidates all existing local copies   Flushes dirty data back to external resource

Page 10: Integrating External Resources into Legion · 2020. 10. 19. · Attach to in-memory opaque data structures External data comes from other applications Legion may not understand the

December 7, 2015 10 http://legion.stanford.edu

Acquire/Release Example

Application

Legion Runtime

Region r

Node 1 Node 2

Ext Inst

External Resource

Local Inst Local Inst Copy

Task Task

Acquire

Release

Flush

Page 11: Integrating External Resources into Legion · 2020. 10. 19. · Attach to in-memory opaque data structures External data comes from other applications Legion may not understand the

December 7, 2015 11 http://legion.stanford.edu

More on Attach Semantics

 Attach to in-memory opaque data structures   External data comes from other applications   Legion may not understand the data format

 User could attach opaque data structures to regions

  Field holds pointers/refs to the opaque data structures

Index space

Field

Page 12: Integrating External Resources into Legion · 2020. 10. 19. · Attach to in-memory opaque data structures External data comes from other applications Legion may not understand the

December 7, 2015 12 http://legion.stanford.edu

Custom SerDes

 Bit-wise copy no longer work  Legion requires custom SerDes methods for fields requiring non-trivial copies  Users define a class with SerDes methods

SerDes registration is similar to reduction operation

 Specify SerDes methods when allocating fields

class SerDesObject { static size_t serialized_size(const FIELD_TYPE& val); static size_t serialize(const FIELD_TYPE& val, void *buffer); static size_t deserialize(FIELD_TYPE& val, const void *buffer); static void destroy(FIELD_TYPE& val); }

runtime->register_custom_serdes_op<SerDesObject>(serdes_id);

allocate_field(sizeof(FIELD_TYPE), field_id, serdes_id);

Page 13: Integrating External Resources into Legion · 2020. 10. 19. · Attach to in-memory opaque data structures External data comes from other applications Legion may not understand the

December 7, 2015 13 http://legion.stanford.edu

Optimization: Deferred Execution

 Legion runtime manages/reschedules external I/O   maximize resource utilization   overlap external I/O with computation

 Matrix multiplication   Load large input matrices from files on disk

Figure 1. Matrix multiplication performance. (For evaluating deferred execution optimization)

Page 14: Integrating External Resources into Legion · 2020. 10. 19. · Attach to in-memory opaque data structures External data comes from other applications Legion may not understand the

December 7, 2015 14 http://legion.stanford.edu

Optimization: Reduce Data Transfer

Application Region r

External Inst

Node 1

Memory  

Run+me  

Local Inst

Node 2

Memory  

Run+me  

Task 1

Task 2

Copy

Task 3

up-to-date w/ better performance

Page 15: Integrating External Resources into Legion · 2020. 10. 19. · Attach to in-memory opaque data structures External data comes from other applications Legion may not understand the

December 7, 2015 15 http://legion.stanford.edu

Optimization: Reduce Data Transfer  Distributed graph rendering

  Each node renders a portion of the screen   Communication: copy physical objects between nodes

Page 16: Integrating External Resources into Legion · 2020. 10. 19. · Attach to in-memory opaque data structures External data comes from other applications Legion may not understand the

December 7, 2015 16 http://legion.stanford.edu

Optimization: Write-After-Read

Region r

External Inst

Node 1

Memory  

Run+me  

Local Inst

Node 2

Memory  

Run+me  

Task (RW)

Task (RO)

Copy

Flush

Task (RW)

Application

Acquire

Release

Page 17: Integrating External Resources into Legion · 2020. 10. 19. · Attach to in-memory opaque data structures External data comes from other applications Legion may not understand the

December 7, 2015 17 http://legion.stanford.edu

 Database benchmark   Perform read queries and read/write queries on external databases on disk

Optimization: Write-After-Read

Page 18: Integrating External Resources into Legion · 2020. 10. 19. · Attach to in-memory opaque data structures External data comes from other applications Legion may not understand the

December 7, 2015 18 http://legion.stanford.edu

S3D

 A production combustion simulation  Checkpoint after fixed time steps  Legion implementation is 7X faster than Fortran

30 76.5

11.5

14.8

7.1

4.6

2.1 1.1

2.7 2.7 2.9 3.3

Page 19: Integrating External Resources into Legion · 2020. 10. 19. · Attach to in-memory opaque data structures External data comes from other applications Legion may not understand the

December 7, 2015 19 http://legion.stanford.edu

Questions