-
Notifications
You must be signed in to change notification settings - Fork 190
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added an example and improved comment for cpm_add_patches.
- Loading branch information
1 parent
523c14a
commit 9347302
Showing
5 changed files
with
88 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
cmake_minimum_required(VERSION 3.14 FATAL_ERROR) | ||
|
||
project(CPMExamplePatchHighway) | ||
|
||
# ---- Dependencies ---- | ||
|
||
include(../../cmake/CPM.cmake) | ||
|
||
# Google's highway Includes a SIMD sorting function that is faster than x86-simd-sort for larger | ||
# arrays. See: https://github.com/google/highway/blob/master/g3doc/quick_reference.md | ||
CPMAddPackage( | ||
NAME highway | ||
URL https://github.com/google/highway/archive/refs/tags/1.1.0.tar.gz | ||
URL_HASH SHA256=354a8b4539b588e70b98ec70844273e3f2741302c4c377bcc4e81b3d1866f7c9 | ||
PATCHES "highway.patch" # This adds SYSTEM to the includes. | ||
OPTIONS "HWY_ENABLE_EXAMPLES OFF" "HWY_ENABLE_INSTALL OFF" "HWY_ENABLE_TESTS OFF" | ||
) | ||
|
||
# ---- Executable ---- | ||
|
||
if(LINUX) | ||
# This would cause a float compare error inside the highway header code if the patch is NOT | ||
# applied. | ||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wfloat-equal") | ||
endif() | ||
|
||
add_executable(CPMExamplePatchHighway "main.cpp") | ||
target_link_libraries(CPMExamplePatchHighway hwy hwy_contrib) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
Common subdirectories: a/.bcr and b/.bcr | ||
Common subdirectories: a/.github and b/.github | ||
diff -u a/CMakeLists.txt b/CMakeLists.txt | ||
--- a/CMakeLists.txt 2024-05-21 12:50:37.738318520 -0500 | ||
+++ b/CMakeLists.txt 2024-05-21 12:49:59.914226871 -0500 | ||
@@ -350,7 +350,7 @@ | ||
target_compile_options(hwy PRIVATE ${HWY_FLAGS}) | ||
set_property(TARGET hwy PROPERTY POSITION_INDEPENDENT_CODE ON) | ||
set_target_properties(hwy PROPERTIES VERSION ${LIBRARY_VERSION} SOVERSION ${LIBRARY_SOVERSION}) | ||
-target_include_directories(hwy PUBLIC | ||
+target_include_directories(hwy SYSTEM PUBLIC | ||
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}> | ||
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>) | ||
target_compile_features(hwy PUBLIC cxx_std_11) | ||
@@ -370,7 +370,7 @@ | ||
target_compile_options(hwy_contrib PRIVATE ${HWY_FLAGS}) | ||
set_property(TARGET hwy_contrib PROPERTY POSITION_INDEPENDENT_CODE ON) | ||
set_target_properties(hwy_contrib PROPERTIES VERSION ${LIBRARY_VERSION} SOVERSION ${LIBRARY_SOVERSION}) | ||
-target_include_directories(hwy_contrib PUBLIC | ||
+target_include_directories(hwy_contrib SYSTEM PUBLIC | ||
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}> | ||
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>) | ||
target_compile_features(hwy_contrib PUBLIC cxx_std_11) | ||
Common subdirectories: a/cmake and b/cmake | ||
Common subdirectories: a/debian and b/debian | ||
Common subdirectories: a/docs and b/docs | ||
Common subdirectories: a/g3doc and b/g3doc | ||
Common subdirectories: a/hwy and b/hwy |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
#include <hwy/contrib/sort/vqsort.h> // hwy::VQSort() for large data sets | ||
|
||
#include <cstdint> | ||
#include <random> | ||
#include <vector> | ||
|
||
// Use hwy::VQSort to sort larger vectors | ||
inline void sort_large(std::vector<double>& v) { | ||
hwy::VQSort(v.data(), v.size(), hwy::SortAscending{}); | ||
} | ||
|
||
int main(int, char**) { | ||
std::random_device random_device; | ||
std::default_random_engine random_engine(random_device()); | ||
std::uniform_real_distribution<double> uniform_dist(0.0, 100.0); | ||
|
||
const std::size_t sz = 100000; | ||
std::vector<double> v; | ||
v.reserve(sz); | ||
for (std::size_t i = 0; i < sz; ++i) { | ||
v.push_back(uniform_dist(random_engine)); | ||
} | ||
|
||
sort_large(v); | ||
|
||
return 0; | ||
} |