"...git@developer.sourcefind.cn:kecinstone/2024-pra-vllm.git" did not exist on "a41c20435eab2abf3584144a056deed9ebe9f18e"
Commit 4a6bdcbe authored by Guolin Ke's avatar Guolin Ke
Browse files

update VS project, fixed some bugs in dataset interface

parent fa643b3d
...@@ -396,45 +396,45 @@ inline void SortForPair(std::vector<T1>& keys, std::vector<T2>& values, size_t s ...@@ -396,45 +396,45 @@ inline void SortForPair(std::vector<T1>& keys, std::vector<T2>& values, size_t s
inline std::function<std::vector<double>(int row_idx)> inline std::function<std::vector<double>(int row_idx)>
RowFunctionFromDenseMatric(const void* data, int num_row, int num_col, int float_type, int is_row_major) { RowFunctionFromDenseMatric(const void* data, int num_row, int num_col, int float_type, int is_row_major) {
if (float_type == 0) { if (float_type == 0) {
const float* dptr = reinterpret_cast<const float*>(data); const float* data_ptr = reinterpret_cast<const float*>(data);
if (is_row_major) { if (is_row_major) {
return [&dptr, &num_col, &num_row](int row_idx) { return [data_ptr, num_col, num_row](int row_idx) {
CHECK(row_idx < num_row); CHECK(row_idx < num_row);
std::vector<double> ret; std::vector<double> ret;
dptr += num_col * row_idx; auto tmp_ptr = data_ptr + num_col * row_idx;
for (int i = 0; i < num_col; ++i) { for (int i = 0; i < num_col; ++i) {
ret.push_back(static_cast<double>(*(dptr + i))); ret.push_back(static_cast<double>(*(tmp_ptr + i)));
} }
return ret; return ret;
}; };
} else { } else {
return [&dptr, &num_col, &num_row](int row_idx) { return [data_ptr, num_col, num_row](int row_idx) {
CHECK(row_idx < num_row); CHECK(row_idx < num_row);
std::vector<double> ret; std::vector<double> ret;
for (int i = 0; i < num_col; ++i) { for (int i = 0; i < num_col; ++i) {
ret.push_back(static_cast<double>(*(dptr + num_row * i + row_idx))); ret.push_back(static_cast<double>(*(data_ptr + num_row * i + row_idx)));
} }
return ret; return ret;
}; };
} }
} else { } else {
const double* dptr = reinterpret_cast<const double*>(data); const double* data_ptr = reinterpret_cast<const double*>(data);
if (is_row_major) { if (is_row_major) {
return [&dptr, &num_col, &num_row](int row_idx) { return [data_ptr, num_col, num_row](int row_idx) {
CHECK(row_idx < num_row); CHECK(row_idx < num_row);
std::vector<double> ret; std::vector<double> ret;
dptr += num_col * row_idx; auto tmp_ptr = data_ptr + num_col * row_idx;
for (int i = 0; i < num_col; ++i) { for (int i = 0; i < num_col; ++i) {
ret.push_back(static_cast<double>(*(dptr + i))); ret.push_back(static_cast<double>(*(tmp_ptr + i)));
} }
return ret; return ret;
}; };
} else { } else {
return [&dptr, &num_col, &num_row](int row_idx) { return [data_ptr, num_col, num_row](int row_idx) {
CHECK(row_idx < num_row); CHECK(row_idx < num_row);
std::vector<double> ret; std::vector<double> ret;
for (int i = 0; i < num_col; ++i) { for (int i = 0; i < num_col; ++i) {
ret.push_back(static_cast<double>(*(dptr + num_row * i + row_idx))); ret.push_back(static_cast<double>(*(data_ptr + num_row * i + row_idx)));
} }
return ret; return ret;
}; };
...@@ -445,45 +445,45 @@ RowFunctionFromDenseMatric(const void* data, int num_row, int num_col, int float ...@@ -445,45 +445,45 @@ RowFunctionFromDenseMatric(const void* data, int num_row, int num_col, int float
inline std::function<std::vector<std::pair<int, double>>(int row_idx)> inline std::function<std::vector<std::pair<int, double>>(int row_idx)>
RowPairFunctionFromDenseMatric(const void* data, int num_row, int num_col, int float_type, int is_row_major) { RowPairFunctionFromDenseMatric(const void* data, int num_row, int num_col, int float_type, int is_row_major) {
if (float_type == 0) { if (float_type == 0) {
const float* dptr = reinterpret_cast<const float*>(data); const float* data_ptr = reinterpret_cast<const float*>(data);
if (is_row_major) { if (is_row_major) {
return [&dptr, &num_col, &num_row](int row_idx) { return [data_ptr, num_col, num_row](int row_idx) {
CHECK(row_idx < num_row); CHECK(row_idx < num_row);
std::vector<std::pair<int, double>> ret; std::vector<std::pair<int, double>> ret;
dptr += num_col * row_idx; auto tmp_ptr = data_ptr + num_col * row_idx;
for (int i = 0; i < num_col; ++i) { for (int i = 0; i < num_col; ++i) {
ret.emplace_back(i, static_cast<double>(*(dptr + i))); ret.emplace_back(i, static_cast<double>(*(tmp_ptr + i)));
} }
return ret; return ret;
}; };
} else { } else {
return [&dptr, &num_col, &num_row](int row_idx) { return [data_ptr, num_col, num_row](int row_idx) {
CHECK(row_idx < num_row); CHECK(row_idx < num_row);
std::vector<std::pair<int, double>> ret; std::vector<std::pair<int, double>> ret;
for (int i = 0; i < num_col; ++i) { for (int i = 0; i < num_col; ++i) {
ret.emplace_back(i, static_cast<double>(*(dptr + num_row * i + row_idx))); ret.emplace_back(i, static_cast<double>(*(data_ptr + num_row * i + row_idx)));
} }
return ret; return ret;
}; };
} }
} else { } else {
const double* dptr = reinterpret_cast<const double*>(data); const double* data_ptr = reinterpret_cast<const double*>(data);
if (is_row_major) { if (is_row_major) {
return [&dptr, &num_col, &num_row](int row_idx) { return [data_ptr, num_col, num_row](int row_idx) {
CHECK(row_idx < num_row); CHECK(row_idx < num_row);
std::vector<std::pair<int, double>> ret; std::vector<std::pair<int, double>> ret;
dptr += num_col * row_idx; auto tmp_ptr = data_ptr + num_col * row_idx;
for (int i = 0; i < num_col; ++i) { for (int i = 0; i < num_col; ++i) {
ret.emplace_back(i, static_cast<double>(*(dptr + i))); ret.emplace_back(i, static_cast<double>(*(tmp_ptr + i)));
} }
return ret; return ret;
}; };
} else { } else {
return [&dptr, &num_col, &num_row](int row_idx) { return [data_ptr, num_col, num_row](int row_idx) {
CHECK(row_idx < num_row); CHECK(row_idx < num_row);
std::vector<std::pair<int, double>> ret; std::vector<std::pair<int, double>> ret;
for (int i = 0; i < num_col; ++i) { for (int i = 0; i < num_col; ++i) {
ret.emplace_back(i, static_cast<double>(*(dptr + num_row * i + row_idx))); ret.emplace_back(i, static_cast<double>(*(data_ptr + num_row * i + row_idx)));
} }
return ret; return ret;
}; };
...@@ -494,28 +494,28 @@ RowPairFunctionFromDenseMatric(const void* data, int num_row, int num_col, int f ...@@ -494,28 +494,28 @@ RowPairFunctionFromDenseMatric(const void* data, int num_row, int num_col, int f
inline std::function<std::vector<std::pair<int, double>>(int idx)> inline std::function<std::vector<std::pair<int, double>>(int idx)>
RowFunctionFromCSR(const int32_t* indptr, const int32_t* indices, const void* data, int float_type, uint64_t nindptr, uint64_t nelem) { RowFunctionFromCSR(const int32_t* indptr, const int32_t* indices, const void* data, int float_type, uint64_t nindptr, uint64_t nelem) {
if (float_type == 0) { if (float_type == 0) {
const float* dptr = reinterpret_cast<const float*>(data); const float* data_ptr = reinterpret_cast<const float*>(data);
return [&indptr, &indices, &dptr, &nindptr, &nelem](int idx) { return [indptr, indices, data_ptr, nindptr, nelem](int idx) {
CHECK(idx + 1 < nindptr); CHECK(idx + 1 < nindptr);
std::vector<std::pair<int, double>> ret; std::vector<std::pair<int, double>> ret;
int32_t start = indptr[idx]; int32_t start = indptr[idx];
int32_t end = indptr[idx + 1]; int32_t end = indptr[idx + 1];
CHECK(start >= 0 && end < nelem); CHECK(start >= 0 && end < nelem);
for (int32_t i = start; i < end; ++i) { for (int32_t i = start; i <= end; ++i) {
ret.emplace_back(indices[i], dptr[i]); ret.emplace_back(indices[i], data_ptr[i]);
} }
return ret; return ret;
}; };
} else { } else {
const double* dptr = reinterpret_cast<const double*>(data); const double* data_ptr = reinterpret_cast<const double*>(data);
return [&indptr, &indices, &dptr, &nindptr, &nelem](int idx) { return [indptr, indices, data_ptr, nindptr, nelem](int idx) {
CHECK(idx + 1 < nindptr); CHECK(idx + 1 < nindptr);
std::vector<std::pair<int, double>> ret; std::vector<std::pair<int, double>> ret;
int32_t start = indptr[idx]; int32_t start = indptr[idx];
int32_t end = indptr[idx + 1]; int32_t end = indptr[idx + 1];
CHECK(start >= 0 && end < nelem); CHECK(start >= 0 && end <= nelem);
for (int32_t i = start; i < end; ++i) { for (int32_t i = start; i < end; ++i) {
ret.emplace_back(indices[i], dptr[i]); ret.emplace_back(indices[i], data_ptr[i]);
} }
return ret; return ret;
}; };
...@@ -525,28 +525,28 @@ RowFunctionFromCSR(const int32_t* indptr, const int32_t* indices, const void* da ...@@ -525,28 +525,28 @@ RowFunctionFromCSR(const int32_t* indptr, const int32_t* indices, const void* da
inline std::function<std::vector<std::pair<int, double>>(int idx)> inline std::function<std::vector<std::pair<int, double>>(int idx)>
ColumnFunctionFromCSC(const int32_t* col_ptr, const int32_t* indices, const void* data, int float_type, uint64_t ncol_ptr, uint64_t nelem) { ColumnFunctionFromCSC(const int32_t* col_ptr, const int32_t* indices, const void* data, int float_type, uint64_t ncol_ptr, uint64_t nelem) {
if (float_type == 0) { if (float_type == 0) {
const float* dptr = reinterpret_cast<const float*>(data); const float* data_ptr = reinterpret_cast<const float*>(data);
return [&col_ptr, &indices, &dptr, &ncol_ptr, &nelem](int idx) { return [col_ptr, indices, data_ptr, ncol_ptr, nelem](int idx) {
CHECK(idx + 1 < ncol_ptr); CHECK(idx + 1 < ncol_ptr);
std::vector<std::pair<int, double>> ret; std::vector<std::pair<int, double>> ret;
int32_t start = col_ptr[idx]; int32_t start = col_ptr[idx];
int32_t end = col_ptr[idx + 1]; int32_t end = col_ptr[idx + 1];
CHECK(start >= 0 && end < nelem); CHECK(start >= 0 && end <= nelem);
for (int32_t i = start; i < end; ++i) { for (int32_t i = start; i < end; ++i) {
ret.emplace_back(indices[i], dptr[i]); ret.emplace_back(indices[i], data_ptr[i]);
} }
return ret; return ret;
}; };
} else { } else {
const double* dptr = reinterpret_cast<const double*>(data); const double* data_ptr = reinterpret_cast<const double*>(data);
return [&col_ptr, &indices, &dptr, &ncol_ptr, &nelem](int idx) { return [col_ptr, indices, data_ptr, ncol_ptr, nelem](int idx) {
CHECK(idx + 1 < ncol_ptr); CHECK(idx + 1 < ncol_ptr);
std::vector<std::pair<int, double>> ret; std::vector<std::pair<int, double>> ret;
int32_t start = col_ptr[idx]; int32_t start = col_ptr[idx];
int32_t end = col_ptr[idx + 1]; int32_t end = col_ptr[idx + 1];
CHECK(start >= 0 && end < nelem); CHECK(start >= 0 && end <= nelem);
for (int32_t i = start; i < end; ++i) { for (int32_t i = start; i < end; ++i) {
ret.emplace_back(indices[i], dptr[i]); ret.emplace_back(indices[i], data_ptr[i]);
} }
return ret; return ret;
}; };
......
...@@ -33,6 +33,9 @@ Application::Application(int argc, char** argv) ...@@ -33,6 +33,9 @@ Application::Application(int argc, char** argv)
if (config_.num_threads > 0) { if (config_.num_threads > 0) {
omp_set_num_threads(config_.num_threads); omp_set_num_threads(config_.num_threads);
} }
if (config_.io_config.data_filename.size() == 0) {
Log::Fatal("No training/prediction data, application quit");
}
} }
Application::~Application() { Application::~Application() {
......
...@@ -186,10 +186,7 @@ void IOConfig::Set(const std::unordered_map<std::string, std::string>& params) { ...@@ -186,10 +186,7 @@ void IOConfig::Set(const std::unordered_map<std::string, std::string>& params) {
CHECK(max_bin > 0); CHECK(max_bin > 0);
GetInt(params, "num_class", &num_class); GetInt(params, "num_class", &num_class);
GetInt(params, "data_random_seed", &data_random_seed); GetInt(params, "data_random_seed", &data_random_seed);
GetString(params, "data", &data_filename);
if (!GetString(params, "data", &data_filename)) {
Log::Fatal("No training/prediction data, application quit");
}
GetInt(params, "verbose", &verbosity); GetInt(params, "verbose", &verbosity);
GetInt(params, "num_model_predict", &num_model_predict); GetInt(params, "num_model_predict", &num_model_predict);
GetInt(params, "bin_construct_sample_cnt", &bin_construct_sample_cnt); GetInt(params, "bin_construct_sample_cnt", &bin_construct_sample_cnt);
......
...@@ -437,6 +437,7 @@ Dataset* DatasetLoader::CostructFromSampleData(std::vector<std::vector<double>>& ...@@ -437,6 +437,7 @@ Dataset* DatasetLoader::CostructFromSampleData(std::vector<std::vector<double>>&
delete bin_mappers[i]; delete bin_mappers[i];
} }
} }
dataset->num_features_ = static_cast<int>(dataset->features_.size());
dataset->metadata_.Init(dataset->num_data_, dataset->num_class_, NO_SPECIFIC, NO_SPECIFIC); dataset->metadata_.Init(dataset->num_data_, dataset->num_class_, NO_SPECIFIC, NO_SPECIFIC);
return dataset; return dataset;
} }
......
 
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.25123.0 VisualStudioVersion = 14.0.25420.1
MinimumVisualStudioVersion = 10.0.40219.1 MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LightGBM", "LightGBM.vcxproj", "{F31C0B5D-715E-4953-AA1B-8D2AEEE4344C}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LightGBM", "LightGBM.vcxproj", "{F31C0B5D-715E-4953-AA1B-8D2AEEE4344C}"
EndProject EndProject
...@@ -9,6 +9,7 @@ Global ...@@ -9,6 +9,7 @@ Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug_mpi|x64 = Debug_mpi|x64 Debug_mpi|x64 = Debug_mpi|x64
Debug|x64 = Debug|x64 Debug|x64 = Debug|x64
DLL|x64 = DLL|x64
Release_mpi|x64 = Release_mpi|x64 Release_mpi|x64 = Release_mpi|x64
Release|x64 = Release|x64 Release|x64 = Release|x64
EndGlobalSection EndGlobalSection
...@@ -17,6 +18,8 @@ Global ...@@ -17,6 +18,8 @@ Global
{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
{F31C0B5D-715E-4953-AA1B-8D2AEEE4344C}.Debug|x64.Build.0 = Debug|x64 {F31C0B5D-715E-4953-AA1B-8D2AEEE4344C}.Debug|x64.Build.0 = Debug|x64
{F31C0B5D-715E-4953-AA1B-8D2AEEE4344C}.DLL|x64.ActiveCfg = DLL|x64
{F31C0B5D-715E-4953-AA1B-8D2AEEE4344C}.DLL|x64.Build.0 = DLL|x64
{F31C0B5D-715E-4953-AA1B-8D2AEEE4344C}.Release_mpi|x64.ActiveCfg = Release_mpi|x64 {F31C0B5D-715E-4953-AA1B-8D2AEEE4344C}.Release_mpi|x64.ActiveCfg = Release_mpi|x64
{F31C0B5D-715E-4953-AA1B-8D2AEEE4344C}.Release_mpi|x64.Build.0 = Release_mpi|x64 {F31C0B5D-715E-4953-AA1B-8D2AEEE4344C}.Release_mpi|x64.Build.0 = Release_mpi|x64
{F31C0B5D-715E-4953-AA1B-8D2AEEE4344C}.Release|x64.ActiveCfg = Release|x64 {F31C0B5D-715E-4953-AA1B-8D2AEEE4344C}.Release|x64.ActiveCfg = Release|x64
......
...@@ -9,6 +9,10 @@ ...@@ -9,6 +9,10 @@
<Configuration>Debug</Configuration> <Configuration>Debug</Configuration>
<Platform>x64</Platform> <Platform>x64</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="DLL|x64">
<Configuration>DLL</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release_mpi|x64"> <ProjectConfiguration Include="Release_mpi|x64">
<Configuration>Release_mpi</Configuration> <Configuration>Release_mpi</Configuration>
<Platform>x64</Platform> <Platform>x64</Platform>
...@@ -35,6 +39,10 @@ ...@@ -35,6 +39,10 @@
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<PlatformToolset>v120</PlatformToolset> <PlatformToolset>v120</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL|x64'" Label="Configuration">
<PlatformToolset>v120</PlatformToolset>
<ConfigurationType>DynamicLibrary</ConfigurationType>
</PropertyGroup>
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<PlatformToolset>v120</PlatformToolset> <PlatformToolset>v120</PlatformToolset>
</PropertyGroup> </PropertyGroup>
...@@ -71,6 +79,10 @@ ...@@ -71,6 +79,10 @@
<LibraryPath>$(MSMPI_LIB64);$(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64);</LibraryPath> <LibraryPath>$(MSMPI_LIB64);$(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64);</LibraryPath>
<TargetName>lightgbm</TargetName> <TargetName>lightgbm</TargetName>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL|x64'">
<IncludePath>..\include;$(VC_IncludePath);$(WindowsSDK_IncludePath);</IncludePath>
<TargetName>lib_lightgbm</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_mpi|x64'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_mpi|x64'">
<ClCompile> <ClCompile>
<PreprocessorDefinitions>USE_MPI</PreprocessorDefinitions> <PreprocessorDefinitions>USE_MPI</PreprocessorDefinitions>
...@@ -154,6 +166,26 @@ ...@@ -154,6 +166,26 @@
<OptimizeReferences>true</OptimizeReferences> <OptimizeReferences>true</OptimizeReferences>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL|x64'">
<ClCompile>
<PreprocessorDefinitions>USE_SOCKET;_MBCS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<WarningLevel>Level4</WarningLevel>
<OpenMPSupport>true</OpenMPSupport>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
<IntrinsicFunctions>true</IntrinsicFunctions>
<EnableFiberSafeOptimizations>false</EnableFiberSafeOptimizations>
<WholeProgramOptimization>true</WholeProgramOptimization>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<OmitFramePointers>true</OmitFramePointers>
<FunctionLevelLinking>true</FunctionLevelLinking>
</ClCompile>
<Link>
<AdditionalDependencies>
</AdditionalDependencies>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\include\LightGBM\application.h" /> <ClInclude Include="..\include\LightGBM\application.h" />
<ClInclude Include="..\include\LightGBM\bin.h" /> <ClInclude Include="..\include\LightGBM\bin.h" />
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment