Replies: 1 comment 3 replies
-
My vote is to change "OQS_PORTABLE_BUILD" to "OQS_DISTRIBUTABLE_BUILD". I'd also suggest removing the OQS_USE_CPU_EXTENSIONS boolean in favour of an "OQS_TARGET_ARCH" string. Setting OQS_TARGET_ARCH would force OQS_DISTRIBUTABLE_BUILD=OFF and would set "-march=OQS_TARGET_ARCH" in gcc_clang_intrinsics.cmake. CMAKE_BUILD_TYPES can be used to provide sensible defaults, as @baentsch suggests.
Advanced users can also hand pick an implementation. For instance, if there are ref, avx2, and avx512 implementations, and your machine supports AVX512 instructions, neither Reference nor Performance will select the avx2 implementation. You could still override the default by passing OQS_TARGET_ARCH=haswell. |
Beta Was this translation helpful? Give feedback.
-
Following up on this discussion this is to suggest renaming OQS_PORTABLE_BUILD to something like OQS_CPU_RT_EXTENSION_CHECK to avoid future confusion. This would also make it obvious that the combination OQS_USE_CPU_EXTENSIONS=OFF&&OQS_CPU_RT_EXTENSION_CHECK=ON is pointless.
Second, should we add CMAKE_BUILD_TYPES for "Reference" (a configuration permitting benchmarking of all algorithms' baseline, reference code. Build anywhere, run anywhere. Slow. No feature-test overhead) and "Performance" (A configuration permitting benchmarking of all algorithms' best optimized code. Build on CPUs with all required features, executing OK on CPUs with those features, crashing on CPUs without these features. No feature-test overhead) configs documenting what we "mean" by the config flags?
Beta Was this translation helpful? Give feedback.
All reactions