зеркало из https://github.com/microsoft/LightGBM.git
Debug flags (#2825)
* add debug mode in camke * add debug dll * Apply suggestions from code review Co-Authored-By: Nikita Titov <nekit94-08@mail.ru> * fix naming * Apply suggestions from code review * Apply suggestions from code review * Update LightGBM.sln * refine * run MPI job in debug mode * document USE_DEBUG and USE_TIMETAG Co-authored-by: Nikita Titov <nekit94-08@mail.ru>
This commit is contained in:
Родитель
87f80251b9
Коммит
8d90bbe314
|
@ -138,7 +138,7 @@ elif [[ $TASK == "mpi" ]]; then
|
||||||
pytest $BUILD_DIRECTORY/tests/python_package_test || exit -1
|
pytest $BUILD_DIRECTORY/tests/python_package_test || exit -1
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
cmake -DUSE_MPI=ON ..
|
cmake -DUSE_MPI=ON -DUSE_DEBUG=ON ..
|
||||||
else
|
else
|
||||||
cmake ..
|
cmake ..
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -12,6 +12,8 @@ OPTION(USE_GPU "Enable GPU-accelerated training" OFF)
|
||||||
OPTION(USE_SWIG "Enable SWIG to generate Java API" OFF)
|
OPTION(USE_SWIG "Enable SWIG to generate Java API" OFF)
|
||||||
OPTION(USE_HDFS "Enable HDFS support (EXPERIMENTAL)" OFF)
|
OPTION(USE_HDFS "Enable HDFS support (EXPERIMENTAL)" OFF)
|
||||||
OPTION(USE_R35 "Set to ON if your R version is not earlier than 3.5" OFF)
|
OPTION(USE_R35 "Set to ON if your R version is not earlier than 3.5" OFF)
|
||||||
|
OPTION(USE_TIMETAG "Set to ON to output time costs" OFF)
|
||||||
|
OPTION(USE_DEBUG "Set to ON for Debug mode" OFF)
|
||||||
|
|
||||||
if(APPLE)
|
if(APPLE)
|
||||||
OPTION(APPLE_OUTPUT_DYLIB "Output dylib shared library" OFF)
|
OPTION(APPLE_OUTPUT_DYLIB "Output dylib shared library" OFF)
|
||||||
|
@ -72,6 +74,10 @@ if(USE_TIMETAG)
|
||||||
ADD_DEFINITIONS(-DTIMETAG)
|
ADD_DEFINITIONS(-DTIMETAG)
|
||||||
endif(USE_TIMETAG)
|
endif(USE_TIMETAG)
|
||||||
|
|
||||||
|
if(USE_DEBUG)
|
||||||
|
ADD_DEFINITIONS(-DDEBUG)
|
||||||
|
endif(USE_DEBUG)
|
||||||
|
|
||||||
if(USE_MPI)
|
if(USE_MPI)
|
||||||
find_package(MPI REQUIRED)
|
find_package(MPI REQUIRED)
|
||||||
ADD_DEFINITIONS(-DUSE_MPI)
|
ADD_DEFINITIONS(-DUSE_MPI)
|
||||||
|
@ -150,7 +156,12 @@ if(${MM_MALLOC})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(UNIX OR MINGW OR CYGWIN)
|
if(UNIX OR MINGW OR CYGWIN)
|
||||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -pthread -O3 -Wextra -Wall -Wno-ignored-attributes -Wno-unknown-pragmas -Wno-return-type")
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -pthread -Wextra -Wall -Wno-ignored-attributes -Wno-unknown-pragmas -Wno-return-type")
|
||||||
|
if(USE_DEBUG)
|
||||||
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O0")
|
||||||
|
else()
|
||||||
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3")
|
||||||
|
endif()
|
||||||
if(USE_SWIG)
|
if(USE_SWIG)
|
||||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-strict-aliasing")
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-strict-aliasing")
|
||||||
endif()
|
endif()
|
||||||
|
@ -171,10 +182,16 @@ if(MSVC)
|
||||||
CMAKE_CXX_FLAGS_RELEASE
|
CMAKE_CXX_FLAGS_RELEASE
|
||||||
CMAKE_CXX_FLAGS_RELWITHDEBINFO
|
CMAKE_CXX_FLAGS_RELWITHDEBINFO
|
||||||
)
|
)
|
||||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4 /O2 /Ob2 /Oi /Ot /Oy /MP")
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4 /MP")
|
||||||
|
if(USE_DEBUG)
|
||||||
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Od")
|
||||||
|
else()
|
||||||
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /O2 /Ob2 /Oi /Ot /Oy")
|
||||||
|
endif()
|
||||||
else()
|
else()
|
||||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
|
if(NOT USE_DEBUG)
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -funroll-loops")
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -funroll-loops")
|
||||||
|
endif()
|
||||||
endif(MSVC)
|
endif(MSVC)
|
||||||
|
|
||||||
SET(LightGBM_HEADER_DIR ${PROJECT_SOURCE_DIR}/include)
|
SET(LightGBM_HEADER_DIR ${PROJECT_SOURCE_DIR}/include)
|
||||||
|
|
|
@ -7,6 +7,10 @@ All instructions below are aimed to compile 64-bit version of LightGBM.
|
||||||
It is worth to compile 32-bit version only in very rare special cases of environmental limitations.
|
It is worth to compile 32-bit version only in very rare special cases of environmental limitations.
|
||||||
32-bit version is slow and untested, so use it on your own risk and don't forget to adjust some commands in this guide.
|
32-bit version is slow and untested, so use it on your own risk and don't forget to adjust some commands in this guide.
|
||||||
|
|
||||||
|
Users who want to perform benchmarking can make LightGBM output time costs for different internal routines via adding ``-DUSE_TIMETAG=ON`` to CMake flags.
|
||||||
|
|
||||||
|
It is possible to build LightGBM in a debug mode. In this mode all compiler optimizations are disabled and LightGBM performs more checks internally. To enable debug mode you can add ``-DUSE_DEBUG=ON`` to CMake flags or choose ``Debug_*`` configuration (e.g. ``Debug_DLL``, ``Debug_mpi``) in Visual Studio depending on how you are building LightGBM.
|
||||||
|
|
||||||
For the build of Python-package and R-package, please refer to `Python-package`_ and `R-package`_ folders respectively.
|
For the build of Python-package and R-package, please refer to `Python-package`_ and `R-package`_ folders respectively.
|
||||||
|
|
||||||
Also you can download artifacts of the latest successful build in master branch (nightly builds): |download artifacts|.
|
Also you can download artifacts of the latest successful build in master branch (nightly builds): |download artifacts|.
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
# Visual Studio 14
|
# Visual Studio 14
|
||||||
VisualStudioVersion = 14.0.25420.1
|
VisualStudioVersion = 14.0.25420.1
|
||||||
|
@ -7,6 +6,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LightGBM", "LightGBM.vcxpro
|
||||||
EndProject
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug_DLL|x64 = Debug_DLL|x64
|
||||||
Debug_mpi|x64 = Debug_mpi|x64
|
Debug_mpi|x64 = Debug_mpi|x64
|
||||||
Debug|x64 = Debug|x64
|
Debug|x64 = Debug|x64
|
||||||
DLL|x64 = DLL|x64
|
DLL|x64 = DLL|x64
|
||||||
|
@ -14,6 +14,8 @@ Global
|
||||||
Release|x64 = Release|x64
|
Release|x64 = Release|x64
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{F31C0B5D-715E-4953-AA1B-8D2AEEE4344C}.Debug_DLL|x64.ActiveCfg = Debug_DLL|x64
|
||||||
|
{F31C0B5D-715E-4953-AA1B-8D2AEEE4344C}.Debug_DLL|x64.Build.0 = Debug_DLL|x64
|
||||||
{F31C0B5D-715E-4953-AA1B-8D2AEEE4344C}.Debug_mpi|x64.ActiveCfg = Debug_mpi|x64
|
{F31C0B5D-715E-4953-AA1B-8D2AEEE4344C}.Debug_mpi|x64.ActiveCfg = Debug_mpi|x64
|
||||||
{F31C0B5D-715E-4953-AA1B-8D2AEEE4344C}.Debug_mpi|x64.Build.0 = Debug_mpi|x64
|
{F31C0B5D-715E-4953-AA1B-8D2AEEE4344C}.Debug_mpi|x64.Build.0 = Debug_mpi|x64
|
||||||
{F31C0B5D-715E-4953-AA1B-8D2AEEE4344C}.Debug|x64.ActiveCfg = Debug|x64
|
{F31C0B5D-715E-4953-AA1B-8D2AEEE4344C}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<ItemGroup Label="Projectconfigurations">
|
<ItemGroup Label="Projectconfigurations">
|
||||||
|
<ProjectConfiguration Include="Debug_DLL|x64">
|
||||||
|
<Configuration>Debug_DLL</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
<ProjectConfiguration Include="Debug_mpi|x64">
|
<ProjectConfiguration Include="Debug_mpi|x64">
|
||||||
<Configuration>Debug_mpi</Configuration>
|
<Configuration>Debug_mpi</Configuration>
|
||||||
<Platform>x64</Platform>
|
<Platform>x64</Platform>
|
||||||
|
@ -46,6 +50,10 @@
|
||||||
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
<PlatformToolset>v140</PlatformToolset>
|
<PlatformToolset>v140</PlatformToolset>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_DLL|x64'" Label="Configuration">
|
||||||
|
<PlatformToolset>v140</PlatformToolset>
|
||||||
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
|
</PropertyGroup>
|
||||||
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Release_mpi|x64'">
|
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Release_mpi|x64'">
|
||||||
<PlatformToolset>v140</PlatformToolset>
|
<PlatformToolset>v140</PlatformToolset>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
@ -55,6 +63,9 @@
|
||||||
<ImportGroup Condition="'$(configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
|
<ImportGroup Condition="'$(configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
|
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_DLL|x64'" Label="PropertySheets">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
<ImportGroup Condition="'$(configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
<ImportGroup Condition="'$(configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
|
@ -64,6 +75,11 @@
|
||||||
<LibraryPath>$(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64);</LibraryPath>
|
<LibraryPath>$(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64);</LibraryPath>
|
||||||
<TargetName>lightgbm</TargetName>
|
<TargetName>lightgbm</TargetName>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_DLL|x64'">
|
||||||
|
<IncludePath>..\include;$(VC_IncludePath);$(WindowsSDK_IncludePath);</IncludePath>
|
||||||
|
<LibraryPath>$(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64);</LibraryPath>
|
||||||
|
<TargetName>lib_lightgbm</TargetName>
|
||||||
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(configuration)|$(Platform)'=='Debug_mpi|x64'">
|
<PropertyGroup Condition="'$(configuration)|$(Platform)'=='Debug_mpi|x64'">
|
||||||
<IncludePath>$(MSMPI_INC);..\include;$(VC_IncludePath);$(WindowsSDK_IncludePath);</IncludePath>
|
<IncludePath>$(MSMPI_INC);..\include;$(VC_IncludePath);$(WindowsSDK_IncludePath);</IncludePath>
|
||||||
<LibraryPath>$(MSMPI_LIB64);$(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64);</LibraryPath>
|
<LibraryPath>$(MSMPI_LIB64);$(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64);</LibraryPath>
|
||||||
|
@ -124,6 +140,25 @@
|
||||||
</AdditionalDependencies>
|
</AdditionalDependencies>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_DLL|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<PreprocessorDefinitions>USE_SOCKET</PreprocessorDefinitions>
|
||||||
|
<WarningLevel>Level4</WarningLevel>
|
||||||
|
<OpenMPSupport>true</OpenMPSupport>
|
||||||
|
<FavorSizeOrSpeed>Neither</FavorSizeOrSpeed>
|
||||||
|
<InlineFunctionExpansion>Default</InlineFunctionExpansion>
|
||||||
|
<IntrinsicFunctions>false</IntrinsicFunctions>
|
||||||
|
<EnableFiberSafeOptimizations>false</EnableFiberSafeOptimizations>
|
||||||
|
<WholeProgramOptimization>false</WholeProgramOptimization>
|
||||||
|
<Optimization>Disabled</Optimization>
|
||||||
|
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||||
|
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<AdditionalDependencies>
|
||||||
|
</AdditionalDependencies>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(configuration)|$(Platform)'=='Release_mpi|x64'">
|
<ItemDefinitionGroup Condition="'$(configuration)|$(Platform)'=='Release_mpi|x64'">
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
<WarningLevel>Level4</WarningLevel>
|
<WarningLevel>Level4</WarningLevel>
|
||||||
|
|
Загрузка…
Ссылка в новой задаче