提交 f9c21f56 编写于 作者: Y Yi Wang 提交者: GitHub

Merge pull request #2118 from gangliao/new_tensor

Add cmake for majel
...@@ -61,15 +61,6 @@ RUN git clone https://github.com/woboq/woboq_codebrowser /woboq && \ ...@@ -61,15 +61,6 @@ RUN git clone https://github.com/woboq/woboq_codebrowser /woboq && \
-DCMAKE_BUILD_TYPE=Release . \ -DCMAKE_BUILD_TYPE=Release . \
make) make)
# Install gtest.
#
# NOTE: This is added for quick hack of the development work of
# majel-in-paddle.
RUN git clone https://github.com/google/googletest /gtest && \
cd /gtest && \
git checkout -b release-1.8.0 && \
cmake . && make install
# Configure OpenSSH server. c.f. https://docs.docker.com/engine/examples/running_ssh_service # Configure OpenSSH server. c.f. https://docs.docker.com/engine/examples/running_ssh_service
RUN mkdir /var/run/sshd RUN mkdir /var/run/sshd
RUN echo 'root:root' | chpasswd RUN echo 'root:root' | chpasswd
......
CCFLAGS = -std=c++11 -I/work/paddle
CC = nvcc
all : place_test
place.o : place.h place.cu
$(CC) $(CCFLAGS) -c place.cu -o $@
place_test : place.o place_test.cu
$(CC) $(CCFLAGS) -lgtest -lgtest_main $^ -o $@
...@@ -9,6 +9,14 @@ add_subdirectory(pserver) ...@@ -9,6 +9,14 @@ add_subdirectory(pserver)
add_subdirectory(trainer) add_subdirectory(trainer)
add_subdirectory(scripts) add_subdirectory(scripts)
find_package(boost QUIET)
if(Boost_FOUND)
include_directories(${Boost_INCLUDE_DIRS})
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
add_subdirectory(majel)
endif()
if(WITH_C_API) if(WITH_C_API)
add_subdirectory(capi) add_subdirectory(capi)
endif() endif()
......
build
third-party
\ No newline at end of file
cmake_minimum_required(VERSION 3.0)
if(GTEST_INCLUDE_DIR AND GTEST_LIBRARIES)
message("-- Found gtest (include: ${GTEST_INCLUDE_DIR}, library: ${GTEST_LIBRARIES})")
else()
# find #include <majel/xx.h>
get_filename_component(PARENT_DIR ${CMAKE_CURRENT_SOURCE_DIR} DIRECTORY)
include_directories(${PARENT_DIR})
# find cmake directory modules
get_filename_component(PARENT_DIR ${PARENT_DIR} DIRECTORY)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PARENT_DIR}/cmake")
# enable c++11
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
# enable gtest
set(THIRD_PARTY_PATH ${CMAKE_CURRENT_SOURCE_DIR}/third_party)
set(WITH_TESTING ON)
include(external/gtest)
endif()
########################### Build Majel #############################
set(MAJEL_CXX_FILES place.cpp)
set(MAJEL_CUDA_FILES "")
if(CUDA_FOUND)
cuda_add_library(majel ${MAJEL_CUDA_FILES} ${MAJEL_CXX_FILES})
else()
add_library(majel ${MAJEL_CXX_FILES})
endif()
#####################################################################
add_subdirectory(test)
...@@ -4,41 +4,29 @@ namespace majel { ...@@ -4,41 +4,29 @@ namespace majel {
namespace detail { namespace detail {
class PlacePrinter class PlacePrinter : public boost::static_visitor<> {
: public boost::static_visitor<> {
private: private:
std::ostream& os_; std::ostream& os_;
public: public:
PlacePrinter(std::ostream& os) : os_(os) {} PlacePrinter(std::ostream& os) : os_(os) {}
void operator()(const CpuPlace&) { void operator()(const CpuPlace&) { os_ << "CpuPlace"; }
os_ << "CpuPlace";
}
void operator()(const GpuPlace& p) { void operator()(const GpuPlace& p) { os_ << "GpuPlace(" << p.device << ")"; }
os_ << "GpuPlace(" << p.device << ")";
}
}; };
} // namespace majel } // namespace majel
static Place the_default_place; static Place the_default_place;
void set_place(const Place& place) { void set_place(const Place& place) { the_default_place = place; }
the_default_place = place;
}
const Place& get_place() { const Place& get_place() { return the_default_place; }
return the_default_place;
}
const GpuPlace default_gpu() { const GpuPlace default_gpu() { return GpuPlace(0); }
return GpuPlace(0);
}
const CpuPlace default_cpu() { const CpuPlace default_cpu() { return CpuPlace(); }
return CpuPlace();
}
bool is_gpu_place(const Place& p) { bool is_gpu_place(const Place& p) {
return boost::apply_visitor(IsGpuPlace(), p); return boost::apply_visitor(IsGpuPlace(), p);
......
file(GLOB_RECURSE ALL_TEST_FILES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "*.cpp" "*.cc")
add_executable(majel_tests ${ALL_TEST_FILES})
add_dependencies(majel_tests majel)
target_link_libraries(majel_tests
${Boost_LIBRARIES}
${GTEST_LIBRARIES}
majel
)
add_test(majel_tests majel_tests)
#include "gtest/gtest.h"
#include "majel/place.h" #include "majel/place.h"
#include <sstream> #include <sstream>
#include "gtest/gtest.h"
TEST(Place, Equality) { TEST(Place, Equality) {
majel::CpuPlace cpu; majel::CpuPlace cpu;
...@@ -18,12 +18,12 @@ TEST(Place, Equality) { ...@@ -18,12 +18,12 @@ TEST(Place, Equality) {
} }
TEST(Place, Default) { TEST(Place, Default) {
EXPECT_TRUE(majel::is_gpu_place( majel::get_place())); EXPECT_TRUE(majel::is_gpu_place(majel::get_place()));
EXPECT_TRUE(majel::is_gpu_place( majel::default_gpu())); EXPECT_TRUE(majel::is_gpu_place(majel::default_gpu()));
EXPECT_TRUE(majel::is_cpu_place( majel::default_cpu())); EXPECT_TRUE(majel::is_cpu_place(majel::default_cpu()));
majel::set_place(majel::CpuPlace()); majel::set_place(majel::CpuPlace());
EXPECT_TRUE(majel::is_cpu_place( majel::get_place())); EXPECT_TRUE(majel::is_cpu_place(majel::get_place()));
} }
TEST(Place, Print) { TEST(Place, Print) {
......
#include "gtest/gtest.h"
int main(int argc, char** argv) {
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册