Skip to content

Commit

Permalink
To make the server to be compatible with Windows.
Browse files Browse the repository at this point in the history
  • Loading branch information
mayong authored and skeskinen committed Sep 1, 2023
1 parent 1957d36 commit 2d2f2aa
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 8 deletions.
2 changes: 1 addition & 1 deletion bert.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -688,7 +688,7 @@ struct bert_ctx * bert_load_from_file(const char *fname)
new_bert->mem_per_input = 1.1 * (new_bert->mem_per_token * N); // add 10% to account for ggml object overhead

}
printf("%s: mem_per_token %d KB, mem_per_input %lld MB\n", __func__, new_bert->mem_per_token / (1 << 10), new_bert->mem_per_input / (1 << 20));
printf("%s: mem_per_token %zu KB, mem_per_input %lld MB\n", __func__, new_bert->mem_per_token / (1 << 10), new_bert->mem_per_input / (1 << 20));

return new_bert;
}
Expand Down
10 changes: 8 additions & 2 deletions examples/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
include_directories(${CMAKE_SOURCE_DIR}/)

if (MSVC)
if (BERT_AVX2)
add_compile_options(/arch:AVX2)
Expand All @@ -9,9 +11,13 @@ endif()
if(WIN32)
add_definitions(-DNOMINMAX=1)
endif()
if(NOT WIN32)


add_executable(server server.cpp)
target_link_libraries(server PRIVATE bert ggml)
if(NOT WIN32)
target_link_libraries(server PRIVATE bert ggml)
else()
target_link_libraries(server PRIVATE bert ggml ws2_32)
endif()
add_executable(main main.cpp)
target_link_libraries(main PRIVATE bert ggml)
Expand Down
34 changes: 29 additions & 5 deletions examples/server.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,42 @@
#include <string>
#include <vector>
#include <cstring>

#ifdef WIN32
#include <io.h>
#include <stdint.h>
#include <winsock2.h>
#include <Ws2ipdef.h>
typedef int socklen_t;

#ifndef _SSIZE_T_DEFINED
#ifdef _WIN64
typedef unsigned __int64 ssize_t;
#else
typedef _W64 unsigned int ssize_t;
#endif
#define _SSIZE_T_DEFINED
#endif
#define read _read
#define close _close

#define SOCKET_HANDLE SOCKET
#else
#include <unistd.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#define SOCKET_HANDLE int
#endif


std::string receive_string(int socket) {
std::string receive_string(SOCKET_HANDLE socket) {
static char buffer[1 << 15] = {0};
ssize_t bytes_received = read(socket, buffer, sizeof(buffer));
return std::string(buffer, bytes_received);
}

void send_floats(int socket, const std::vector<float> floats) {
send(socket, floats.data(), floats.size() * sizeof(float), 0);
void send_floats(SOCKET_HANDLE socket, const std::vector<float> floats) {
send(socket, (const char *)floats.data(), floats.size() * sizeof(float), 0);
}

int main(int argc, char ** argv) {
Expand All @@ -37,7 +61,7 @@ int main(int argc, char ** argv) {
}
}

int server_fd, new_socket;
SOCKET_HANDLE server_fd, new_socket;
struct sockaddr_in address;
int addrlen = sizeof(address);

Expand Down Expand Up @@ -70,7 +94,7 @@ int main(int argc, char ** argv) {
return -1;
}
std::cout << "New connection" << std::endl;
send(new_socket, &n_embd, sizeof(int), 0);
send(new_socket, (const char *) & n_embd, sizeof(int), 0);
while(true) {
std::string string_in = receive_string(new_socket);
if (string_in.empty()) {
Expand Down

0 comments on commit 2d2f2aa

Please sign in to comment.