blob: 8c22be3afeb78ad3307f51a6cc083846e234654b [file] [log] [blame]
syntax = "proto3";
package openmp.libomptarget.remote;
option cc_enable_arenas = true;
service RemoteOffload {
rpc Shutdown(Null) returns (I32) {}
rpc RegisterLib(TargetBinaryDescription) returns (I32) {}
rpc UnregisterLib(Pointer) returns (I32) {}
rpc IsValidBinary(TargetDeviceImagePtr) returns (I32) {}
rpc GetNumberOfDevices(Null) returns (I32) {}
rpc InitDevice(I32) returns (I32) {}
rpc InitRequires(I64) returns (I32) {}
rpc LoadBinary(Binary) returns (TargetTable) {}
rpc DataAlloc(AllocData) returns (Pointer) {}
rpc DataDelete(DeleteData) returns (I32) {}
rpc DataSubmit(stream SubmitData) returns (I32) {}
rpc DataRetrieve(RetrieveData) returns (stream Data) {}
rpc IsDataExchangeable(DevicePair) returns (I32) {}
rpc DataExchange(ExchangeData) returns (I32) {}
rpc RunTargetRegion(TargetRegion) returns (I32) {}
rpc RunTargetTeamRegion(TargetTeamRegion) returns (I32) {}
}
message Null {}
message Pointer { uint64 number = 1; }
message I32 { int32 number = 1; }
message I64 { int64 number = 1; }
message DevicePair {
int32 src_dev_id = 1;
int32 dst_dev_id = 2;
}
message Binary {
uint64 image_ptr = 1;
int32 device_id = 2;
}
message TargetOffloadEntry {
bytes data = 1;
string name = 2;
int32 flags = 3;
int32 reserved = 4;
}
message DeviceOffloadEntry {
string name = 1;
uint64 addr = 2;
int32 flags = 3;
int32 reserved = 4;
int32 size = 5;
}
message TargetTable {
repeated DeviceOffloadEntry entries = 1;
repeated uint64 entry_ptrs = 2;
}
message TargetDeviceImagePtr {
uint64 image_ptr = 1;
repeated uint64 entry_ptrs = 2;
}
message TargetDeviceImage {
bytes binary = 1;
repeated TargetOffloadEntry entries = 2;
}
message ImagePtrs {
uint64 img_ptr = 1;
repeated uint64 entry_ptrs = 2;
}
message TargetBinaryDescription {
repeated ImagePtrs image_ptrs = 1;
repeated TargetOffloadEntry entries = 2;
repeated TargetDeviceImage images = 3;
repeated uint64 entry_ptrs = 4;
uint64 bin_ptr = 5;
}
message AllocData {
uint64 size = 1;
uint64 hst_ptr = 2;
int32 device_id = 3;
}
message SubmitData {
bytes data = 1;
uint64 hst_ptr = 2;
uint64 tgt_ptr = 3;
uint64 start = 5;
uint64 size = 6;
int32 device_id = 7;
}
message RetrieveData {
uint64 hst_ptr = 1;
uint64 tgt_ptr = 2;
uint64 size = 3;
int32 device_id = 5;
}
message Data {
bytes data = 1;
uint64 start = 2;
uint64 size = 3;
int32 ret = 4;
}
message ExchangeData {
uint64 src_dev_id = 1;
uint64 src_ptr = 2;
uint64 dst_dev_id = 3;
uint64 dst_ptr = 4;
uint64 size = 6;
}
message DeleteData {
uint64 tgt_ptr = 1;
int32 device_id = 2;
}
message TargetRegion {
repeated uint64 tgt_args = 1;
repeated int64 tgt_offsets = 2;
uint64 tgt_entry_ptr = 3;
int32 device_id = 4;
int32 arg_num = 5;
}
message TargetTeamRegion {
repeated uint64 tgt_args = 1;
repeated int64 tgt_offsets = 2;
uint64 tgt_entry_ptr = 3;
uint64 loop_tripcount = 4;
int32 device_id = 5;
int32 arg_num = 6;
int32 team_num = 7;
int32 thread_limit = 8;
}