@@ -131,6 +131,7 @@ set(LLAMA_METAL_MACOSX_VERSION_MIN "" CACHE STRING
131
131
set (LLAMA_METAL_STD "" CACHE STRING "llama: metal standard version (-std flag)" )
132
132
option (LLAMA_KOMPUTE "llama: use Kompute" OFF )
133
133
option (LLAMA_MPI "llama: use MPI" OFF )
134
+ option (LLAMA_RPC "llama: use RPC" OFF )
134
135
option (LLAMA_QKK_64 "llama: use super-block size of 64 for k-quants" OFF )
135
136
option (LLAMA_SYCL "llama: use SYCL" OFF )
136
137
option (LLAMA_SYCL_F16 "llama: use 16 bit floats for sycl calculations" OFF )
@@ -494,6 +495,45 @@ if (LLAMA_MPI)
494
495
endif ()
495
496
endif ()
496
497
498
+ if (LLAMA_RPC )
499
+ find_package (protobuf CONFIG REQUIRED )
500
+ message (STATUS "Using protobuf ${Protobuf_VERSION} " )
501
+ set (_PROTOBUF_LIBPROTOBUF protobuf::libprotobuf )
502
+ set (_PROTOBUF_PROTOC $< TARGET_FILE:protobuf::protoc> )
503
+
504
+ find_package (gRPC CONFIG REQUIRED )
505
+ message (STATUS "Using gRPC ${gRPC_VERSION} " )
506
+ set (_GRPC_CPP_PLUGIN_EXECUTABLE $< TARGET_FILE:gRPC::grpc_cpp_plugin> )
507
+
508
+ # Proto file
509
+ get_filename_component (ggml_proto "ggml-rpc.proto" ABSOLUTE )
510
+ get_filename_component (ggml_proto_path "${ggml_proto} " PATH )
511
+
512
+ # Generated sources
513
+ set (ggml_proto_srcs "${CMAKE_CURRENT_BINARY_DIR} /ggml-rpc.pb.cc" )
514
+ set (ggml_proto_hdrs "${CMAKE_CURRENT_BINARY_DIR} /ggml-rpc.pb.h" )
515
+ set (ggml_grpc_srcs "${CMAKE_CURRENT_BINARY_DIR} /ggml-rpc.grpc.pb.cc" )
516
+ set (ggml_grpc_hdrs "${CMAKE_CURRENT_BINARY_DIR} /ggml-rpc.grpc.pb.h" )
517
+
518
+ add_custom_command (
519
+ OUTPUT "${ggml_proto_srcs} " "${ggml_proto_hdrs} " "${ggml_grpc_srcs} " "${ggml_grpc_hdrs} "
520
+ COMMAND ${_PROTOBUF_PROTOC}
521
+ ARGS --grpc_out "${CMAKE_CURRENT_BINARY_DIR} "
522
+ --cpp_out "${CMAKE_CURRENT_BINARY_DIR} "
523
+ -I "${ggml_proto_path} "
524
+ --plugin=protoc-gen-grpc= "${_GRPC_CPP_PLUGIN_EXECUTABLE} "
525
+ "${ggml_proto} "
526
+ DEPENDS "${ggml_proto} " )
527
+
528
+ set (LLAMA_EXTRA_INCLUDES ${LLAMA_EXTRA_INCLUDES} ${CMAKE_CURRENT_BINARY_DIR} )
529
+ set (LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} gRPC::grpc++ gRPC::grpc gRPC::grpc++_reflection ${_PROTOBUF_LIBPROTOBUF} )
530
+
531
+ add_compile_definitions (GGML_USE_RPC )
532
+
533
+ set (GGML_HEADERS_RPC ggml-rpc.h ${ggml_grpc_hdrs} ${ggml_proto_hdrs} )
534
+ set (GGML_SOURCES_RPC ggml-rpc.cpp ${ggml_grpc_srcs} ${ggml_proto_srcs} )
535
+ endif ()
536
+
497
537
if (LLAMA_CLBLAST )
498
538
find_package (CLBlast )
499
539
if (CLBlast_FOUND )
@@ -1176,6 +1216,7 @@ add_library(ggml OBJECT
1176
1216
${GGML_SOURCES_OPENCL} ${GGML_HEADERS_OPENCL}
1177
1217
${GGML_SOURCES_METAL} ${GGML_HEADERS_METAL}
1178
1218
${GGML_SOURCES_MPI} ${GGML_HEADERS_MPI}
1219
+ ${GGML_SOURCES_RPC} ${GGML_HEADERS_RPC}
1179
1220
${GGML_SOURCES_EXTRA} ${GGML_HEADERS_EXTRA}
1180
1221
${GGML_SOURCES_SYCL} ${GGML_HEADERS_SYCL}
1181
1222
${GGML_SOURCES_KOMPUTE} ${GGML_HEADERS_KOMPUTE}
0 commit comments