1syntax = "proto3";
2
3package openmp.libomptarget.remote;
4option cc_enable_arenas = true;
5
6service RemoteOffload {
7  rpc Shutdown(Null) returns (I32) {}
8
9  rpc RegisterLib(TargetBinaryDescription) returns (I32) {}
10  rpc UnregisterLib(Pointer) returns (I32) {}
11
12  rpc IsValidBinary(TargetDeviceImagePtr) returns (I32) {}
13  rpc GetNumberOfDevices(Null) returns (I32) {}
14
15  rpc InitDevice(I32) returns (I32) {}
16  rpc InitRequires(I64) returns (I32) {}
17
18  rpc LoadBinary(Binary) returns (TargetTable) {}
19
20  rpc DataAlloc(AllocData) returns (Pointer) {}
21  rpc DataDelete(DeleteData) returns (I32) {}
22
23  rpc DataSubmit(stream SubmitData) returns (I32) {}
24  rpc DataRetrieve(RetrieveData) returns (stream Data) {}
25
26  rpc IsDataExchangeable(DevicePair) returns (I32) {}
27  rpc DataExchange(ExchangeData) returns (I32) {}
28
29  rpc RunTargetRegion(TargetRegion) returns (I32) {}
30  rpc RunTargetTeamRegion(TargetTeamRegion) returns (I32) {}
31}
32
33message Null {}
34
35message Pointer { uint64 number = 1; }
36
37message I32 { int32 number = 1; }
38
39message I64 { int64 number = 1; }
40
41message DevicePair {
42  int32 src_dev_id = 1;
43  int32 dst_dev_id = 2;
44}
45
46message Binary {
47  uint64 image_ptr = 1;
48  int32 device_id = 2;
49}
50
51message TargetOffloadEntry {
52  bytes data = 1;
53  string name = 2;
54  int32 flags = 3;
55  int32 reserved = 4;
56}
57
58message DeviceOffloadEntry {
59  string name = 1;
60  uint64 addr = 2;
61  int32 flags = 3;
62  int32 reserved = 4;
63  int32 size = 5;
64}
65
66message TargetTable {
67  repeated DeviceOffloadEntry entries = 1;
68  repeated uint64 entry_ptrs = 2;
69}
70
71message TargetDeviceImagePtr {
72  uint64 image_ptr = 1;
73  repeated uint64 entry_ptrs = 2;
74}
75
76message TargetDeviceImage {
77  bytes binary = 1;
78  repeated TargetOffloadEntry entries = 2;
79}
80
81message ImagePtrs {
82  uint64 img_ptr = 1;
83  repeated uint64 entry_ptrs = 2;
84}
85
86message TargetBinaryDescription {
87  repeated ImagePtrs image_ptrs = 1;
88  repeated TargetOffloadEntry entries = 2;
89  repeated TargetDeviceImage images = 3;
90  repeated uint64 entry_ptrs = 4;
91  uint64 bin_ptr = 5;
92}
93
94message AllocData {
95  uint64 size = 1;
96  uint64 hst_ptr = 2;
97  int32 device_id = 3;
98}
99
100message SubmitData {
101  bytes data = 1;
102  uint64 hst_ptr = 2;
103  uint64 tgt_ptr = 3;
104  uint64 start = 5;
105  uint64 size = 6;
106  int32 device_id = 7;
107}
108
109message RetrieveData {
110  uint64 hst_ptr = 1;
111  uint64 tgt_ptr = 2;
112  uint64 size = 3;
113  int32 device_id = 5;
114}
115
116message Data {
117  bytes data = 1;
118  uint64 start = 2;
119  uint64 size = 3;
120  int32 ret = 4;
121}
122
123message ExchangeData {
124  uint64 src_dev_id = 1;
125  uint64 src_ptr = 2;
126  uint64 dst_dev_id = 3;
127  uint64 dst_ptr = 4;
128  uint64 size = 6;
129}
130
131message DeleteData {
132  uint64 tgt_ptr = 1;
133  int32 device_id = 2;
134}
135
136message TargetRegion {
137  repeated uint64 tgt_args = 1;
138  repeated int64 tgt_offsets = 2;
139  uint64 tgt_entry_ptr = 3;
140  int32 device_id = 4;
141  int32 arg_num = 5;
142}
143
144message TargetTeamRegion {
145  repeated uint64 tgt_args = 1;
146  repeated int64 tgt_offsets = 2;
147  uint64 tgt_entry_ptr = 3;
148  uint64 loop_tripcount = 4;
149  int32 device_id = 5;
150  int32 arg_num = 6;
151  int32 team_num = 7;
152  int32 thread_limit = 8;
153}
154