diff --git a/CMakeLists.txt b/CMakeLists.txt index 3858fd7..161b891 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,8 +8,7 @@ set_property(GLOBAL PROPERTY USE_FOLDERS on) set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) -if (UNIX) -find_package(OpenMP) +find_package(OpenMP REQUIRED) if (OPENMP_FOUND) if (CMAKE_VERSION VERSION_GREATER "3.8") link_libraries(OpenMP::OpenMP_CXX) @@ -17,7 +16,6 @@ if (OPENMP_FOUND) set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") endif() endif(OPENMP_FOUND) -endif (UNIX) OPTION(BUILD_AS_SHARED_LIBS "Build all the libraries as shared" OFF) if (BUILD_AS_SHARED_LIBS) @@ -49,11 +47,6 @@ endif () target_include_directories(CompactNSearch PUBLIC include) -if (APPLE AND CMAKE_CXX_COMPILER_ID MATCHES "Clang") - find_package(oneDPL REQUIRED) - target_link_libraries(CompactNSearch PUBLIC oneDPL) -endif() - install(FILES "include/CompactNSearch" ${HEADER_FILES} DESTINATION include/) diff --git a/demo/main.cpp b/demo/main.cpp index 64dbbff..58c4e22 100644 --- a/demo/main.cpp +++ b/demo/main.cpp @@ -8,6 +8,7 @@ #include #include #include +#include #include @@ -151,21 +152,15 @@ enright_velocity_field(std::array const& x) void advect() { -#ifdef _MSC_VER - concurrency::parallel_for_each( -#elif defined(__APPLE__) && defined(__clang__) - std::for_each(oneapi::dpl::execution::par, -#else - __gnu_parallel::for_each( -#endif - positions.begin(), positions.end(), [&](std::array& x) +#pragma omp parallel for + for (int _i = 0; _i < positions.size(); _i++) { + std::array& x = positions[_i]; std::array v = enright_velocity_field(x); x[0] += static_cast(0.005) * v[0]; x[1] += static_cast(0.005) * v[1]; x[2] += static_cast(0.005) * v[1]; } - ); } int main(int argc, char* argv[]) diff --git a/include/Config.h b/include/Config.h index da73373..962c51c 100644 --- a/include/Config.h +++ b/include/Config.h @@ -11,12 +11,3 @@ namespace CompactNSearch #define INITIAL_NUMBER_OF_INDICES 50 #define INITIAL_NUMBER_OF_NEIGHBORS 50 - -#ifdef _MSC_VER - #include -#elif defined(__APPLE__) && defined(__clang__) - #include - #include -#else - #include -#endif diff --git a/src/CompactNSearch.cpp b/src/CompactNSearch.cpp index 557e52c..b8a2d97 100644 --- a/src/CompactNSearch.cpp +++ b/src/CompactNSearch.cpp @@ -234,15 +234,9 @@ NeighborhoodSearch::update_point_sets() } // Precompute cell indices. -#ifdef _MSC_VER - concurrency::parallel_for_each( -#elif defined(__APPLE__) && defined(__clang__) - std::for_each(oneapi::dpl::execution::par, -#else - __gnu_parallel::for_each( -#endif - m_point_sets.begin(), m_point_sets.end(), [&](PointSet& d) - { +#pragma omp parallel for + for (int j = 0; j < m_point_sets.size(); j++){ + PointSet& d = m_point_sets[j]; if (d.is_dynamic()) { d.m_keys.swap(d.m_old_keys); @@ -251,7 +245,7 @@ NeighborhoodSearch::update_point_sets() d.m_keys[i] = cell_index(d.point(i)); } } - }); + } std::vector to_delete; if (m_erase_empty_cells) @@ -315,15 +309,9 @@ NeighborhoodSearch::erase_empty_entries(std::vector const& to_dele }); // Perform neighborhood search. -#ifdef _MSC_VER - concurrency::parallel_for_each( -#elif defined(__APPLE__) && defined(__clang__) - std::for_each(oneapi::dpl::execution::par, -#else - __gnu_parallel::for_each( -#endif - kvps.begin(), kvps.end(), [&](std::pair* kvp_) - { +#pragma omp parallel for + for (int j =0; j < kvps.size(); j++){ + std::pair* kvp_ = kvps[j]; auto& kvp = *kvp_; for (unsigned int i = 0; i < to_delete.size(); ++i) @@ -334,7 +322,7 @@ NeighborhoodSearch::erase_empty_entries(std::vector const& to_dele break; } } - }); + } } void @@ -415,22 +403,16 @@ NeighborhoodSearch::query() }); // Perform neighborhood search. -#ifdef _MSC_VER - concurrency::parallel_for_each( -#elif defined(__APPLE__) && defined(__clang__) - std::for_each(oneapi::dpl::execution::par, -#else - __gnu_parallel::for_each( -#endif - kvps.begin(), kvps.end(), [&](std::pair const* kvp_) - { +#pragma omp parallel for + for (int _i = 0; _i < kvps.size(); _i++){ + std::pair const* kvp_ = kvps[_i]; auto const& kvp = *kvp_; HashEntry const& entry = m_entries[kvp.second]; HashKey const& key = kvp.first; if (entry.n_searching_points == 0u) { - return; + continue; } for (unsigned int a = 0; a < entry.n_indices(); ++a) @@ -471,26 +453,20 @@ NeighborhoodSearch::query() } } } - ); std::vector> visited(m_entries.size(), {false}); std::vector entry_locks(m_entries.size()); -#ifdef _MSC_VER - concurrency::parallel_for_each( -#elif defined(__APPLE__) && defined(__clang__) - std::for_each(oneapi::dpl::execution::par, -#else - __gnu_parallel::for_each( -#endif - kvps.begin(), kvps.end(), [&](std::pair const* kvp_) - { +#pragma omp parallel for + for (int _i = 0; _i < kvps.size(); _i++){ + std::pair const* kvp_ = kvps[_i]; + auto const& kvp = *kvp_; HashEntry const& entry = m_entries[kvp.second]; if (entry.n_searching_points == 0u) - return; + continue; HashKey const& key = kvp.first; for (int dj = -1; dj <= 1; dj++) @@ -579,8 +555,7 @@ NeighborhoodSearch::query() } } } - }); - + } }