the xpi interface
Post on 01-Feb-2016
56 Views
Preview:
DESCRIPTION
TRANSCRIPT
Center for Computation & Technology @ Louisiana State University - http://cct.lsu.edu/Center for Computation & Technology @ Louisiana State University - http://cct.lsu.edu/
ParalleX / XPI Specification - http://parallex.cct.lsu.edu ParalleX / XPI Specification - http://parallex.cct.lsu.edu
The XPI Interface
Center for Computation & Technology @ Louisiana State University - http://cct.lsu.edu/Center for Computation & Technology @ Louisiana State University - http://cct.lsu.edu/
ParalleX / XPI Specification - http://parallex.cct.lsu.edu ParalleX / XPI Specification - http://parallex.cct.lsu.edu
Early thoughts on the XPI RepresentationWill be updated/changed frequently
Center for Computation & Technology @ Louisiana State University - http://cct.lsu.edu/Center for Computation & Technology @ Louisiana State University - http://cct.lsu.edu/
ParalleX / XPI Specification - http://parallex.cct.lsu.edu ParalleX / XPI Specification - http://parallex.cct.lsu.edu
Goals
• Provide Programming Execution Model• Functionality: ParalleX / HPX• Speed: Incur minimal overhead• Interface: Similar to MPI when possible• Small: minimal set of functions and objects
Center for Computation & Technology @ Louisiana State University - http://cct.lsu.edu/Center for Computation & Technology @ Louisiana State University - http://cct.lsu.edu/
ParalleX / XPI Specification - http://parallex.cct.lsu.edu ParalleX / XPI Specification - http://parallex.cct.lsu.edu
Things We Rely on Being Fast• Remote Direct Memory Addressing• Light Weight Threads• Active Messages (Parcels)• Atomic Memory Operations• Work Queues
Center for Computation & Technology @ Louisiana State University - http://cct.lsu.edu/Center for Computation & Technology @ Louisiana State University - http://cct.lsu.edu/
ParalleX / XPI Specification - http://parallex.cct.lsu.edu ParalleX / XPI Specification - http://parallex.cct.lsu.edu
LCO• Constructor
– In: receptor, byte_array• get_gid
– Out: GID• free
Center for Computation & Technology @ Louisiana State University - http://cct.lsu.edu/Center for Computation & Technology @ Louisiana State University - http://cct.lsu.edu/
ParalleX / XPI Specification - http://parallex.cct.lsu.edu ParalleX / XPI Specification - http://parallex.cct.lsu.edu
LCO
• waitany # listen to multiple lco's• counted_waitany # listen to multiple lco's
Center for Computation & Technology @ Louisiana State University - http://cct.lsu.edu/Center for Computation & Technology @ Louisiana State University - http://cct.lsu.edu/
ParalleX / XPI Specification - http://parallex.cct.lsu.edu ParalleX / XPI Specification - http://parallex.cct.lsu.edu
LCO• write # possibly remote operation
– In: byte_array– In: Offset– In: Len
• wait # local, returns when a write occurs– In: Timeout– Out: return code: error, interrupt, success, etc.
• counted_wait # local, return when number of writes is
# greater than the number of # counted waits– In: Timeout
Center for Computation & Technology @ Louisiana State University - http://cct.lsu.edu/Center for Computation & Technology @ Louisiana State University - http://cct.lsu.edu/
ParalleX / XPI Specification - http://parallex.cct.lsu.edu ParalleX / XPI Specification - http://parallex.cct.lsu.edu
Complex/Thread: LCO• Complex/Thread constructor
– In: Action– In: data, byte_array– In: receptor, byte_array # can be null– Optional In: contin1, (T) Thread, (TL)
Thread_list– Optional In: contin2, (G) GID, (GL) GID_list
• start– Optional Out: (R) RunningThread
• set_state• get_state
Center for Computation & Technology @ Louisiana State University - http://cct.lsu.edu/Center for Computation & Technology @ Louisiana State University - http://cct.lsu.edu/
ParalleX / XPI Specification - http://parallex.cct.lsu.edu ParalleX / XPI Specification - http://parallex.cct.lsu.edu
Complex
• send_and_exit– In: byte_array– In: Offset– In: Length– # This writes to all continuations
# and terminates the thread
Center for Computation & Technology @ Louisiana State University - http://cct.lsu.edu/Center for Computation & Technology @ Louisiana State University - http://cct.lsu.edu/
ParalleX / XPI Specification - http://parallex.cct.lsu.edu ParalleX / XPI Specification - http://parallex.cct.lsu.edu
Pseudo C Code
XPI_Action action;XPI_Thread thread, next1, next2;XPI_RunningThread run;XPI_GID gid;struct BH_data *bh_data;XPI_Buffer_init(sizeof(BH_data),XPI_RECEIVE,&bh_data);...XPI_Thread_init_T(&thread,&action,bh_data,&next);XPI_Thread_start_R(&thread,&run);XPI_Thread_getgid(&thread,&gid);....XPI_RunningThread_set_state(&run,XPI_TERMINATE);
Center for Computation & Technology @ Louisiana State University - http://cct.lsu.edu/Center for Computation & Technology @ Louisiana State University - http://cct.lsu.edu/
ParalleX / XPI Specification - http://parallex.cct.lsu.edu ParalleX / XPI Specification - http://parallex.cct.lsu.edu
Action: Portable Function Ref
• Action constructor– In: function_id, String– In: data_size, int– In: data_repacker, Action
• Name of function used to repackage bytes for use on possibly different architectures available on a machine. Potentially difficult to write, auto generated by XPIPP tool based in on interface definition language. Null used on machines with homogeneous architecture.
Center for Computation & Technology @ Louisiana State University - http://cct.lsu.edu/Center for Computation & Technology @ Louisiana State University - http://cct.lsu.edu/
ParalleX / XPI Specification - http://parallex.cct.lsu.edu ParalleX / XPI Specification - http://parallex.cct.lsu.edu
Memory Managment
• mem_alloc– In: size, int– In: flags, int
• RECEIVE: can be a target for RDMA– In: data_repacker, Action
• # special value: IMMOBILE• # special value: ARRAY_OF_INT• # rely on tools to generate repackers
– Out: ref, (P) byte_array, (G) GID
Center for Computation & Technology @ Louisiana State University - http://cct.lsu.edu/Center for Computation & Technology @ Louisiana State University - http://cct.lsu.edu/
ParalleX / XPI Specification - http://parallex.cct.lsu.edu ParalleX / XPI Specification - http://parallex.cct.lsu.edu
Memory Management• mem_free
– In: data, (P) byte_array, (G) GID• mem_getptr
– In: GID– Out: byte_array
• mem_getgid,– In: byte_array– out: GID
• Use this to unify disk and memory access as Jack Dennis suggests?
Center for Computation & Technology @ Louisiana State University - http://cct.lsu.edu/Center for Computation & Technology @ Louisiana State University - http://cct.lsu.edu/
ParalleX / XPI Specification - http://parallex.cct.lsu.edu ParalleX / XPI Specification - http://parallex.cct.lsu.edu
Pseudo C Code
// Data managed by XPIvoid init_data(void *intrinsic,void *recvd) {
struct BH_data *bh_data =(struct BH_data *)intrinsic;
... BH_event_horizon *eh;
XPI_Buffer_init(sizeof(eh),flags,&eh);XPI_send_and_exit(eh); // received by continuations
}XPI_Action action;XPI_Action_init(&action,"black_hole.init_data",10,NULL);
Center for Computation & Technology @ Louisiana State University - http://cct.lsu.edu/Center for Computation & Technology @ Louisiana State University - http://cct.lsu.edu/
ParalleX / XPI Specification - http://parallex.cct.lsu.edu ParalleX / XPI Specification - http://parallex.cct.lsu.edu
WorkQueue: LCO• WorkQueue constructor
– Out: id, (R) GID– In: receptor, byte_array
# WorkQueue runs one thread at a time. All threads share# the receptor as the second argument to the action
• add:– In: Complex/Thread # called if the GID is a parcel target
Center for Computation & Technology @ Louisiana State University - http://cct.lsu.edu/Center for Computation & Technology @ Louisiana State University - http://cct.lsu.edu/
ParalleX / XPI Specification - http://parallex.cct.lsu.edu ParalleX / XPI Specification - http://parallex.cct.lsu.edu
Parcels• Parcel constructor:
– In: Action– In: Data– In: destination, GID– Optional In: contin, (G) GID, (GL) GID_list
• start
Center for Computation & Technology @ Louisiana State University - http://cct.lsu.edu/Center for Computation & Technology @ Louisiana State University - http://cct.lsu.edu/
ParalleX / XPI Specification - http://parallex.cct.lsu.edu ParalleX / XPI Specification - http://parallex.cct.lsu.edu
Locality
• static Locality get_locality()– get_gid:
• Out: GID– get_property:
• In: name, String• Out: value, int
Center for Computation & Technology @ Louisiana State University - http://cct.lsu.edu/Center for Computation & Technology @ Louisiana State University - http://cct.lsu.edu/
ParalleX / XPI Specification - http://parallex.cct.lsu.edu ParalleX / XPI Specification - http://parallex.cct.lsu.edu
Process
• Process constructor– In: parent, GID– In: Locality_List
• set_policy: In: policy, In: param• get_policy: In: policy, Out: param• get_gid: Out: GID
Center for Computation & Technology @ Louisiana State University - http://cct.lsu.edu/Center for Computation & Technology @ Louisiana State University - http://cct.lsu.edu/
ParalleX / XPI Specification - http://parallex.cct.lsu.edu ParalleX / XPI Specification - http://parallex.cct.lsu.edu
Process• bind_symname
– In: sym_name, String # e.g. "console"– In: GID
• unbind_symname– In: sym_name, String
• get_main: static: Out: GID • get_parent: Out: GID, In: GID
– all GID's have a parent process!• get_current: static: Out: GID
Center for Computation & Technology @ Louisiana State University - http://cct.lsu.edu/Center for Computation & Technology @ Louisiana State University - http://cct.lsu.edu/
ParalleX / XPI Specification - http://parallex.cct.lsu.edu ParalleX / XPI Specification - http://parallex.cct.lsu.edu
Parcels
• Semantically similar to Thread• A better way to start a thread: Destination
can be a process, that starts a thread at the least loaded of the managed localities
Center for Computation & Technology @ Louisiana State University - http://cct.lsu.edu/Center for Computation & Technology @ Louisiana State University - http://cct.lsu.edu/
ParalleX / XPI Specification - http://parallex.cct.lsu.edu ParalleX / XPI Specification - http://parallex.cct.lsu.edu
Mobile Objects (AGAS)
• WorkQueue (easy)• Suspended Thread (difficult)
Just move work queues to start?
top related