# using program.NAME, program.C_SRCS, etc. There are no structs in Make, so we use this convention
# to keep track of attributes that all belong to the same target or program.
#
-CXX := nvcc
-
PROJECT := caffeine
NAME := lib$(PROJECT).so
TEST_NAME := test_$(PROJECT)
-CXX_SRCS := $(shell find . ! -name "test_*.cpp" -name "*.cpp")
-TEST_SRCS := $(shell find . -name "test_*.cpp")
+CXX_SRCS := $(shell find caffeine ! -name "test_*.cpp" -name "*.cpp")
+TEST_SRCS := $(shell find caffeine -name "test_*.cpp") gtest/gtest-all.cpp
PROTO_SRCS := $(wildcard caffeine/proto/*.proto)
PROTO_GEN_HEADER := ${PROTO_SRCS:.proto=.pb.h}
PROTO_GEN_CC := ${PROTO_SRCS:.proto=.pb.cc}
CUDA_DIR = /usr/local/cuda
CUDA_INCLUDE_DIR = $(CUDA_DIR)/include
-CUDA_LIB_DIR = $(CUDA_DIR)/lib
+CUDA_LIB_DIR = $(CUDA_DIR)/lib64
INCLUDE_DIRS := . $(CUDA_INCLUDE_DIR)
LIBRARY_DIRS := . $(CUDA_LIB_DIR)
LIBRARIES := cuda cudart cublas protobuf
WARNINGS := -Wall
-CPPFLAGS += $(foreach includedir,$(INCLUDE_DIRS),-I$(includedir))
+CXXFLAGS += -fPIC $(foreach includedir,$(INCLUDE_DIRS),-I$(includedir))
LDFLAGS += $(foreach librarydir,$(LIBRARY_DIRS),-L$(librarydir))
LDFLAGS += $(foreach library,$(LIBRARIES),-l$(library))
test: $(TEST_NAME)
$(TEST_NAME): $(TEST_OBJS) $(OBJS)
- $(LINK) -o $(TEST_NAME) -l$(PROJECT) $(CXX_SRCS) $(TEST_SRCS) gtest/gtest-all.cc
+ $(CXX) $(TEST_OBJS) $(OBJS) -o $(TEST_NAME) $(LDFLAGS) $(WARNINGS)
$(NAME): $(PROTO_GEN_CC) $(OBJS)
$(LINK) -shared $(OBJS) -o $(NAME)
$(RM) $(OBJS)
$(RM) $(PROTO_GEN_HEADER) $(PROTO_GEN_CC)
-distclean: clean
\ No newline at end of file
+distclean: clean
+#include <cstring>
#include "cuda_runtime.h"
#include "caffeine/common.hpp"
}
-inline const void* SyncedMemory::cpu_data() {
+const void* SyncedMemory::cpu_data() {
to_cpu();
return (const void*)cpu_ptr_;
}
-inline const void* SyncedMemory::gpu_data() {
+const void* SyncedMemory::gpu_data() {
to_gpu();
return (const void*)gpu_ptr_;
}
-inline void* SyncedMemory::mutable_cpu_data() {
+void* SyncedMemory::mutable_cpu_data() {
to_cpu();
head_ = HEAD_AT_CPU;
return cpu_ptr_;
}
-inline void* SyncedMemory::mutable_gpu_data() {
+void* SyncedMemory::mutable_gpu_data() {
to_gpu();
head_ = HEAD_AT_GPU;
return gpu_ptr_;