Skip to content

Commit 9933e8c

Browse files
committed
Fix codegen CUDA server warnings
1 parent 1eb2ecc commit 9933e8c

4 files changed

Lines changed: 21 additions & 19 deletions

File tree

codegen/annotations.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2040,7 +2040,7 @@ CUresult cuDeviceGetUuid(CUuuid *uuid, CUdevice dev);
20402040
*/
20412041
CUresult cuDeviceGetUuid_v2(CUuuid *uuid, CUdevice dev);
20422042
/**
2043-
* @param luid RECV_ONLY NULL_TERMINATED
2043+
* @param luid RECV_ONLY SIZE:8
20442044
* @param deviceNodeMask RECV_ONLY
20452045
* @param dev SEND_ONLY
20462046
*/

codegen/codegen.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1203,10 +1203,9 @@ def server_declaration(self) -> str:
12031203
else:
12041204
c = self.ptr.ptr_to.const
12051205
self.ptr.ptr_to.const = False
1206-
s = (
1207-
f" {self.ptr.format()} {self.parameter.name};\n"
1208-
f" size_t {self.parameter.name}_size;\n"
1209-
)
1206+
s = f" {self.ptr.format()} {self.parameter.name};\n"
1207+
if self.send:
1208+
s += f" size_t {self.parameter.name}_size;\n"
12101209
self.ptr.ptr_to.const = c
12111210
return s
12121211

@@ -1812,6 +1811,10 @@ def parse_annotation(
18121811
)
18131812
)
18141813
elif null_terminated:
1814+
if recv:
1815+
raise NotImplementedError(
1816+
"NULL_TERMINATED parameters cannot be received; use LENGTH or SIZE for output buffers"
1817+
)
18151818
# if it's null terminated, it's a null terminated operation
18161819
operations.append(
18171820
NullTerminatedOperation(

codegen/gen_client.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -290,17 +290,18 @@ CUresult cuDeviceGetLuid(char *luid, unsigned int *deviceNodeMask,
290290
}
291291
conn_t *conn = lupine_route_remote_conn(route);
292292
CUresult return_value;
293-
std::size_t luid_len;
294293
if (conn == nullptr ||
295294
rpc_write_start_request(conn, RPC_cuDeviceGetLuid) < 0 ||
296295
rpc_write(conn, &dev, sizeof(CUdevice)) < 0 ||
297296
rpc_wait_for_response(conn) < 0 ||
298-
rpc_read(conn, &luid_len, sizeof(std::size_t)) < 0 ||
299-
rpc_read(conn, luid, luid_len) < 0 ||
297+
(lupine_prepare_host_range_write(luid, 8 * sizeof(char)), false) ||
298+
(8 != 0 && rpc_read(conn, luid, 8) < 0) ||
300299
rpc_read(conn, deviceNodeMask, sizeof(unsigned int)) < 0 ||
301300
rpc_read(conn, &return_value, sizeof(CUresult)) < 0 ||
302301
rpc_read_end(conn) < 0)
303302
return CUDA_ERROR_DEVICE_UNAVAILABLE;
303+
if (return_value == CUDA_SUCCESS)
304+
lupine_mark_host_range_clean(luid, 8 * sizeof(char));
304305
return return_value;
305306
}
306307

codegen/gen_server.cpp

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,6 @@ int handle_cuDeviceGetCount(conn_t *conn) {
115115
int handle_cuDeviceGetName(conn_t *conn) {
116116
int len;
117117
char *name;
118-
size_t name_size;
119118
CUdevice dev;
120119
int request_id;
121120
CUresult lupine_intercept_result;
@@ -147,7 +146,6 @@ int handle_cuDeviceGetName(conn_t *conn) {
147146

148147
int handle_cuDeviceGetUuid_v2(conn_t *conn) {
149148
CUuuid *uuid;
150-
size_t uuid_size;
151149
CUdevice dev;
152150
int request_id;
153151
CUresult lupine_intercept_result;
@@ -177,28 +175,31 @@ int handle_cuDeviceGetUuid_v2(conn_t *conn) {
177175

178176
int handle_cuDeviceGetLuid(conn_t *conn) {
179177
char *luid;
180-
std::size_t luid_len;
181178
unsigned int deviceNodeMask;
182179
CUdevice dev;
183180
int request_id;
184181
CUresult lupine_intercept_result;
185-
if (rpc_read(conn, &dev, sizeof(CUdevice)) < 0 || false)
182+
if (false)
186183
goto ERROR_0;
184+
luid = (char *)malloc(8 * sizeof(char));
185+
if (rpc_read(conn, &dev, sizeof(CUdevice)) < 0 || false)
186+
goto ERROR_1;
187187

188188
request_id = rpc_read_end(conn);
189189
if (request_id < 0)
190-
goto ERROR_0;
190+
goto ERROR_1;
191191
lupine_intercept_result = cuDeviceGetLuid(luid, &deviceNodeMask, dev);
192192

193193
if (rpc_write_start_response(conn, request_id) < 0 ||
194-
rpc_write(conn, &luid_len, sizeof(std::size_t)) < 0 ||
195-
rpc_write(conn, luid, luid_len) < 0 ||
194+
(8 != 0 && rpc_write(conn, luid, 8) < 0) ||
196195
rpc_write(conn, &deviceNodeMask, sizeof(unsigned int)) < 0 ||
197196
rpc_write(conn, &lupine_intercept_result, sizeof(CUresult)) < 0 ||
198197
rpc_write_end(conn) < 0)
199-
goto ERROR_0;
198+
goto ERROR_1;
200199

201200
return 0;
201+
ERROR_1:
202+
free((void *)luid);
202203
ERROR_0:
203204
return -1;
204205
}
@@ -2019,7 +2020,6 @@ int handle_cuDeviceGetByPCIBusId(conn_t *conn) {
20192020
int handle_cuDeviceGetPCIBusId(conn_t *conn) {
20202021
int len;
20212022
char *pciBusId;
2022-
size_t pciBusId_size;
20232023
CUdevice dev;
20242024
int request_id;
20252025
CUresult lupine_intercept_result;
@@ -2269,7 +2269,6 @@ int handle_cuMemcpyDtoH_v2(conn_t *conn) {
22692269
CUdeviceptr srcDevice;
22702270
size_t ByteCount;
22712271
void *dstHost;
2272-
size_t dstHost_size;
22732272
int request_id;
22742273
CUresult lupine_intercept_result;
22752274
if (rpc_read(conn, &srcDevice, sizeof(CUdeviceptr)) < 0 ||
@@ -2387,7 +2386,6 @@ int handle_cuMemcpyAtoH_v2(conn_t *conn) {
23872386
size_t srcOffset;
23882387
size_t ByteCount;
23892388
void *dstHost;
2390-
size_t dstHost_size;
23912389
int request_id;
23922390
CUresult lupine_intercept_result;
23932391
if (rpc_read(conn, &srcArray, sizeof(CUarray)) < 0 ||

0 commit comments

Comments
 (0)