提交 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 && \
-DCMAKE_BUILD_TYPE=Release . \
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
RUN mkdir /var/run/sshd
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)
add_subdirectory(trainer)
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)
add_subdirectory(capi)
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,58 +4,46 @@ namespace majel {
namespace detail {
class PlacePrinter
: public boost::static_visitor<> {
class PlacePrinter : public boost::static_visitor<> {
private:
std::ostream& os_;
std::ostream& os_;
public:
PlacePrinter(std::ostream& os) : os_(os) {}
PlacePrinter(std::ostream& os) : os_(os) {}
void operator()(const CpuPlace&) {
os_ << "CpuPlace";
}
void operator()(const CpuPlace&) { os_ << "CpuPlace"; }
void operator()(const GpuPlace& p) {
os_ << "GpuPlace(" << p.device << ")";
}
void operator()(const GpuPlace& p) { os_ << "GpuPlace(" << p.device << ")"; }
};
} // namespace majel
static Place the_default_place;
void set_place(const Place& place) {
the_default_place = place;
}
void set_place(const Place& place) { the_default_place = place; }
const Place& get_place() {
return the_default_place;
}
const Place& get_place() { return the_default_place; }
const GpuPlace default_gpu() {
return GpuPlace(0);
}
const GpuPlace default_gpu() { return GpuPlace(0); }
const CpuPlace default_cpu() {
return CpuPlace();
}
const CpuPlace default_cpu() { return CpuPlace(); }
bool is_gpu_place(const Place& p) {
return boost::apply_visitor(IsGpuPlace(), p);
return boost::apply_visitor(IsGpuPlace(), p);
}
bool is_cpu_place(const Place& p) {
return !boost::apply_visitor(IsGpuPlace(), p);
return !boost::apply_visitor(IsGpuPlace(), p);
}
bool places_are_same_class(const Place& p1, const Place& p2) {
return is_gpu_place(p1) == is_gpu_place(p2);
return is_gpu_place(p1) == is_gpu_place(p2);
}
std::ostream& operator<<(std::ostream& os, const majel::Place& p) {
majel::detail::PlacePrinter printer(os);
boost::apply_visitor(printer, p);
return os;
majel::detail::PlacePrinter printer(os);
boost::apply_visitor(printer, p);
return os;
}
} // namespace majel
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 <sstream>
#include "gtest/gtest.h"
TEST(Place, Equality) {
majel::CpuPlace cpu;
......@@ -18,12 +18,12 @@ TEST(Place, Equality) {
}
TEST(Place, Default) {
EXPECT_TRUE(majel::is_gpu_place( majel::get_place()));
EXPECT_TRUE(majel::is_gpu_place( majel::default_gpu()));
EXPECT_TRUE(majel::is_cpu_place( majel::default_cpu()));
EXPECT_TRUE(majel::is_gpu_place(majel::get_place()));
EXPECT_TRUE(majel::is_gpu_place(majel::default_gpu()));
EXPECT_TRUE(majel::is_cpu_place(majel::default_cpu()));
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) {
......@@ -33,8 +33,8 @@ TEST(Place, Print) {
EXPECT_EQ("GpuPlace(1)", ss.str());
}
{
std::stringstream ss;
ss << majel::CpuPlace();
EXPECT_EQ("CpuPlace", ss.str());
std::stringstream ss;
ss << majel::CpuPlace();
EXPECT_EQ("CpuPlace", ss.str());
}
}
#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.
先完成此消息的编辑!
想要评论请 注册