Skip to content

Commit d3d6e68

Browse files
committedJun 5, 2024·
removed SIMD for MSVC
1 parent d7dab06 commit d3d6e68

10 files changed

+233
-67
lines changed
 

‎CMakeLists.txt

+2-6
Original file line numberDiff line numberDiff line change
@@ -125,11 +125,6 @@ if(APPLE)
125125
find_package(OpenMP REQUIRED)
126126
endif()
127127
else()
128-
# Set OpenMP runtime for MSVC
129-
if (MSVC)
130-
set(OpenMP_RUNTIME_MSVC experimental)
131-
message(STATUS "OpenMP_RUNTIME_MSVC set to ${OpenMP_RUNTIME_MSVC}")
132-
endif()
133128
find_package(OpenMP REQUIRED)
134129
set(OpenMP_CXX_FLAGS ${OpenMP_CXX_FLAGS})
135130
set(OpenMP_CXX_LIB_NAMES ${OpenMP_CXX_LIB_NAMES})
@@ -197,7 +192,8 @@ elseif (WIN32)
197192
target_link_libraries(gbrl_cpp PRIVATE OpenMP::OpenMP_CXX)
198193
if (USE_CUDA)
199194
set(cuda_lib_path "${CUDAToolkit_ROOT_DIR}/lib/x64")
200-
target_link_libraries(gbrl_cpp PRIVATE ${cuda_lib_path}/cudart.lib)
195+
# target_link_libraries(gbrl_cpp PRIVATE ${cuda_lib_path}/cudart.lib)
196+
target_link_libraries(gbrl_cpp PRIVATE CUDA::cudart)
201197
endif()
202198
endif()
203199

‎gbrl/src/cpp/CMakeLists.txt

+1-2
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,7 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
3333
elseif (CMAKE_SYSTEM_NAME STREQUAL "Darwin")
3434
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -std=c++14 ${OpenMP_C_FLAGS} -Wall -Wpedantic -Wextra")
3535
elseif (WIN32)
36-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:c++14 ${OpenMP_CXX_FLAGS} /O2 /W3 ")
37-
message(STATUS ${OpenMP_CXX_FLAGS} )
36+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /O2 /std:c++14 ${OpenMP_CXX_FLAGS} /W3")
3837
endif()
3938

4039
if (CMAKE_BUILD_TYPE STREQUAL "Debug")

‎gbrl/src/cpp/fitter.cpp

+6-2
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,9 @@ float Fitter::fit_cpu(dataSet *dataset, const float* targets, ensembleData *edat
177177
if (metadata->split_score_func == L2){
178178
float *mean_grads = calculate_mean(build_grads, batch_n_samples, output_dim, par_th);
179179
float *std = calculate_var_and_center(build_grads, mean_grads, batch_n_samples, output_dim, par_th);
180-
#pragma omp simd
180+
#ifndef _MSC_VER
181+
#pragma omp simd
182+
#endif
181183
for (int i = 0; i < output_dim; ++i)
182184
std[i] = sqrtf(std[i]);
183185
divide_mat_by_vec_inplace(build_grads, std, batch_dataset.n_samples, metadata->output_dim, metadata->par_th);
@@ -527,7 +529,9 @@ void Fitter::calc_leaf_value(dataSet *dataset, ensembleData *edata, ensembleMeta
527529
}
528530
if (passed){
529531
idx = i*output_dim;
530-
#pragma omp simd
532+
#ifndef _MSC_VER
533+
#pragma omp simd
534+
#endif
531535
for (int d = 0; d < output_dim; ++d)
532536
edata->values[leaf_idx*output_dim + d] += grads[idx + d];
533537
count += 1;

‎gbrl/src/cpp/loss.cpp

+6-2
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@ float MultiRMSE::get_loss_and_gradients(const float *raw_preds, const float *raw
2525
int thread_id = omp_get_thread_num();
2626
int start_idx = thread_id * elements_per_thread;
2727
int end_idx = (thread_id == n_threads - 1) ? n_elements : start_idx + elements_per_thread;
28-
#pragma omp simd
28+
#ifndef _MSC_VER
29+
#pragma omp simd
30+
#endif
2931
for (int i = start_idx; i < end_idx; ++i){
3032
row = i / output_dim;
3133
col = i % output_dim;
@@ -55,7 +57,9 @@ float MultiRMSE::get_loss(const float *raw_preds, const float *raw_targets, cons
5557
int end_idx = (thread_id == n_threads - 1) ? n_samples : start_idx + samples_per_thread;
5658
for (int sample_idx = start_idx; sample_idx < end_idx; ++sample_idx){
5759
row = sample_idx * output_dim;
58-
#pragma omp simd
60+
#ifndef _MSC_VER
61+
#pragma omp simd
62+
#endif
5963
for (int d = 0; d < output_dim; ++d){
6064
grad_value = raw_preds[row + d] - raw_targets[row + d];
6165
losses[thread_id] += (grad_value * grad_value);

0 commit comments

Comments
 (0)
Please sign in to comment.