Conversation
| @@ -0,0 +1,15 @@ | |||
| set(MAJEL_CXX_FILES place.cpp) | |||
There was a problem hiding this comment.
PADDLE includes both CPU and GPU versions. Majel is built with GPU only if it equipped one.
If CMake detects the host machine equipped GPUs, it will invoke cuda_add_library to generate the library, vice visa.
NOTE: The suffix of unit test files should strictly limit to *.cpp, because it doesn't contain any CUDA syntaxes and semantics.
There was a problem hiding this comment.
If CMake detects the host machine equipped GPUs, it will invoke cuda_add_library to generate the library, vice visa.
If we are going to port Majel to Paddle, I think we will have to enable GPU and CPU versions. Also, we'll have to be able to specify which one to build, as we do with Paddle. Also, I think we shouldn't assume that the development computer having a GPU means that the runtime environment would have GPUs.
There was a problem hiding this comment.
NOTE: The suffix of unit test files should strictly limit to
.cpp, because it doesn't contain any CUDA syntaxes and semantics.
I agree that if a source file doesn't include CUDA code, the suffix shouldn't be .cu. But I personally prefer .cc over .cpp following Google C++ Style Guide.
|
我看到paddle/CMakeLists.txt也有更改。现在能够单独编译majel吗(不编译paddle,实在太慢了)? |
|
@helinwang @wangkuiyi 现在两种模式都支持了。
cd Paddle/paddle/majel
mkdir build && cmake ..
make
ctest -V -R majel_tests
|
| @@ -0,0 +1,15 @@ | |||
| set(MAJEL_CXX_FILES place.cpp) | |||
There was a problem hiding this comment.
If CMake detects the host machine equipped GPUs, it will invoke cuda_add_library to generate the library, vice visa.
If we are going to port Majel to Paddle, I think we will have to enable GPU and CPU versions. Also, we'll have to be able to specify which one to build, as we do with Paddle. Also, I think we shouldn't assume that the development computer having a GPU means that the runtime environment would have GPUs.
| @@ -0,0 +1,15 @@ | |||
| set(MAJEL_CXX_FILES place.cpp) | |||
There was a problem hiding this comment.
NOTE: The suffix of unit test files should strictly limit to
.cpp, because it doesn't contain any CUDA syntaxes and semantics.
I agree that if a source file doesn't include CUDA code, the suffix shouldn't be .cu. But I personally prefer .cc over .cpp following Google C++ Style Guide.
| @@ -0,0 +1,6 @@ | |||
| #include "gtest/gtest.h" | |||
There was a problem hiding this comment.
Why we need this file? I think we can just link -lgtest_main to have the main function?
| #include "gtest/gtest.h" | ||
| #include "majel/place.h" | ||
| #include <sstream> | ||
| #include "gtest/gtest.h" |
There was a problem hiding this comment.
Sorry that I forgot to reorder the include files following https://google.github.io/styleguide/cppguide.html#Names_and_Order_of_Includes. You can do that in this PR.
I think the right order is:
#include "majel/place.h"
#include <sstream>
#include "gtest/gtest.h"| @@ -0,0 +1,34 @@ | |||
| cmake_minimum_required(VERSION 3.0) | |||
|
|
|||
| if(GTEST_INCLUDE_DIR AND GTEST_LIBRARIES) | |||
There was a problem hiding this comment.
Given that we are building Docker container, we can assume in CMakeLists.txt that we have boost and gtest already installed and don't need conditions like this, isn't it?
| set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") | ||
|
|
||
| # enable gtest | ||
| set(THIRD_PARTY_PATH ${CMAKE_CURRENT_SOURCE_DIR}/third_party) |
There was a problem hiding this comment.
third_party要不要放到运行cmake的目录(比如./build/)里面,而不是${CMAKE_CURRENT_SOURCE_DIR}里面?这样用户如果删了./build/就肯定是一个clean build。
| add_subdirectory(trainer) | ||
| add_subdirectory(scripts) | ||
|
|
||
| find_package(boost QUIET) |
There was a problem hiding this comment.
我记得design doc里说用轻量级的boost替代品,这里仍然是用的boost吗?
|
|
||
| if(Boost_FOUND) | ||
| include_directories(${Boost_INCLUDE_DIRS}) | ||
| include_directories(${CMAKE_CURRENT_SOURCE_DIR}) |
There was a problem hiding this comment.
我对cmake不是很熟悉,为何这里要把当前目录给include了?repo/paddle下面貌似没有source code呀。
| # enable gtest | ||
| set(THIRD_PARTY_PATH ${CMAKE_CURRENT_SOURCE_DIR}/third_party) | ||
| set(WITH_TESTING ON) | ||
| include(external/gtest) |
There was a problem hiding this comment.
Could you explain where does "external" directory come from (have not found any directory named "external" after building majel)? This line works, but I don't understand how it works...
| 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) |
There was a problem hiding this comment.
请问为何既然有了
add_dependencies(majel_tests majel)
还需要
target_link_libraries(majel_tests
...
majel
)
感觉不是重复地指定依赖了?
我试了一下删掉add_dependencies,貌似也能编译。
wangkuiyi
left a comment
There was a problem hiding this comment.
I noticed that this PR is moving some source files. My recent work on malloc depends on the source tree structure, so I am approving and merging this PR. But please @gangliao take a look at the discussions and raise new issues if viable. Thanks!
issue the command:
ctest -V -R majel_tests