Skip to content

Commit 43eff8a

Browse files
committed
Fix downstream issues with cmake and minor folder renames
Signed-off-by: Ian <[email protected]>
1 parent e708259 commit 43eff8a

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

66 files changed

+4897
-0
lines changed

benchmarks/CMakeLists.txt

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
2+
3+
cmake_minimum_required(VERSION 3.18 FATAL_ERROR)
4+
5+
project(ccmath-benchmark)
6+
7+
option(CCM_BENCH_BASIC "Enable basic benchmarks" OFF)
8+
option(CCM_BENCH_COMPARE "Enable comparison benchmarks" OFF)
9+
option(CCM_BENCH_POWER "Enable power benchmarks" OFF)
10+
option(CCM_BENCH_NEAREST "Enable nearest benchmarks" ON)
11+
12+
option(CCM_BENCH_ALL "Enable all benchmarks" OFF)
13+
14+
# Force cmake to use Release if debug is detected
15+
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
16+
set(CMAKE_BUILD_TYPE "Release" ON CACHE STRING "Build type" FORCE)
17+
endif ()
18+
19+
if (NOT TARGET ccmath)
20+
find_package(ccmath CONFIG REQUIRED)
21+
endif ()
22+
23+
function(add_benchmark function_name source_files)
24+
add_executable(ccm_benchmark_${function_name} helpers/randomizers.hpp ${source_files})
25+
target_link_libraries(ccm_benchmark_${function_name} PRIVATE ccmath::ccmath benchmark::benchmark)
26+
target_compile_features(ccm_benchmark_${function_name} PRIVATE cxx_std_17)
27+
endfunction()
28+
29+
30+
if (CCM_BENCH_BASIC)
31+
add_benchmark(abs benchmarks/basic/abs.bench.cpp benchmarks/basic/abs.bench.hpp)
32+
add_benchmark(fdim benchmarks/basic/fdim.bench.cpp benchmarks/basic/fdim.bench.hpp)
33+
add_benchmark(fma benchmarks/basic/fma.bench.cpp benchmarks/basic/fma.bench.hpp)
34+
endif ()
35+
36+
if (CCM_BENCH_POWER)
37+
add_benchmark(sqrt benchmarks/power/sqrt.bench.cpp benchmarks/power/sqrt.bench.hpp)
38+
endif ()
39+
40+
if (CCM_BENCH_NEAREST)
41+
#add_benchmark(trunc benchmarks/nearest/trunc.bench.cpp benchmarks/nearest/trunc.bench.hpp)
42+
endif ()
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
/*
2+
* Copyright (c) 2024-Present Ian Pike
3+
* Copyright (c) 2024-Present ccmath contributors
4+
*
5+
* This library is provided under the MIT License.
6+
* See LICENSE for more information.
7+
*/
8+
9+
#include "abs.bench.hpp"
10+
11+
// NOLINTBEGIN
12+
13+
14+
BENCHMARK(BM_basic_abs_std)->RangeMultiplier(2)->Range(8, 8<<10)->Complexity();
15+
16+
BENCHMARK(BM_basic_abs_ccmath)->RangeMultiplier(2)->Range(8, 8<<10)->Complexity();
17+
18+
BENCHMARK(BM_basic_abs_rand_int_std)->RangeMultiplier(2)->Range(8, 8<<10)->Complexity();
19+
20+
BENCHMARK(BM_basic_abs_rand_int_ccmath)->RangeMultiplier(2)->Range(8, 8<<10)->Complexity();
21+
22+
BENCHMARK(BM_basic_abs_rand_double_std)->RangeMultiplier(2)->Range(8, 8<<10)->Complexity();
23+
24+
BENCHMARK(BM_basic_abs_rand_double_ccmath)->RangeMultiplier(2)->Range(8, 8<<10)->Complexity();
25+
26+
BENCHMARK_MAIN();
27+
28+
// NOLINTEND
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
/*
2+
* Copyright (c) 2024-Present Ian Pike
3+
* Copyright (c) 2024-Present ccmath contributors
4+
*
5+
* This library is provided under the MIT License.
6+
* See LICENSE for more information.
7+
*/
8+
9+
#include "../../helpers/randomizers.hpp"
10+
#include <benchmark/benchmark.h>
11+
#include <ccmath/ccmath.hpp>
12+
#include <cmath>
13+
14+
namespace bm = benchmark;
15+
16+
// NOLINTBEGIN
17+
18+
19+
static void BM_basic_abs_std(benchmark::State& state) {
20+
for ([[maybe_unused]] auto _ : state) {
21+
benchmark::DoNotOptimize(std::abs(state.range(0)));
22+
}
23+
state.SetComplexityN(state.range(0));
24+
}
25+
26+
static void BM_basic_abs_ccmath(benchmark::State& state) {
27+
for ([[maybe_unused]] auto _ : state) {
28+
benchmark::DoNotOptimize(ccm::abs(state.range(0)));
29+
}
30+
state.SetComplexityN(state.range(0));
31+
}
32+
33+
static void BM_basic_abs_rand_int_std(benchmark::State& state) {
34+
ccm::bench::Randomizer ran;
35+
auto randomIntegers = ran.generateRandomIntegers(state.range(0));
36+
while (state.KeepRunning()) {
37+
for (auto x : randomIntegers) {
38+
benchmark::DoNotOptimize(std::abs(x));
39+
}
40+
}
41+
state.SetComplexityN(state.range(0));
42+
}
43+
44+
static void BM_basic_abs_rand_int_ccmath(benchmark::State& state) {
45+
ccm::bench::Randomizer ran;
46+
auto randomIntegers = ran.generateRandomIntegers(state.range(0));
47+
while (state.KeepRunning()) {
48+
for (auto x : randomIntegers) {
49+
benchmark::DoNotOptimize(ccm::abs(x));
50+
}
51+
}
52+
state.SetComplexityN(state.range(0));
53+
}
54+
55+
static void BM_basic_abs_rand_double_std(benchmark::State& state) {
56+
ccm::bench::Randomizer ran;
57+
auto randomDoubles = ran.generateRandomDoubles(state.range(0));
58+
while (state.KeepRunning()) {
59+
for (auto x : randomDoubles) {
60+
benchmark::DoNotOptimize(std::abs(x));
61+
}
62+
}
63+
state.SetComplexityN(state.range(0));
64+
}
65+
66+
static void BM_basic_abs_rand_double_ccmath(benchmark::State& state) {
67+
ccm::bench::Randomizer ran;
68+
auto randomDoubles = ran.generateRandomDoubles(state.range(0));
69+
while (state.KeepRunning()) {
70+
for (auto x : randomDoubles) {
71+
benchmark::DoNotOptimize(ccm::abs(x));
72+
}
73+
}
74+
state.SetComplexityN(state.range(0));
75+
}
76+
77+
78+
// NOLINTEND
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/*
2+
* Copyright (c) 2024-Present Ian Pike
3+
* Copyright (c) 2024-Present ccmath contributors
4+
*
5+
* This library is provided under the MIT License.
6+
* See LICENSE for more information.
7+
*/
8+
9+
#include "fdim.bench.hpp"
10+
11+
// NOLINTBEGIN
12+
13+
BENCHMARK(BM_basic_fdim_std)->RangeMultiplier(2)->Range(8, 8<<10)->Complexity();
14+
15+
BENCHMARK(BM_basic_fdim_ccmath)->RangeMultiplier(2)->Range(8, 8<<10)->Complexity();
16+
17+
BENCHMARK(BM_basic_fdim_rand_int_std)->RangeMultiplier(2)->Range(8, 8<<10)->Complexity();
18+
19+
BENCHMARK(BM_basic_fdim_rand_int_ccmath)->RangeMultiplier(2)->Range(8, 8<<10)->Complexity();
20+
21+
BENCHMARK(BM_basic_fdim_rand_double_std)->RangeMultiplier(2)->Range(8, 8<<10)->Complexity();
22+
23+
BENCHMARK(BM_basic_fdim_rand_double_ccmath)->RangeMultiplier(2)->Range(8, 8<<10)->Complexity();
24+
25+
BENCHMARK_MAIN();
26+
27+
// NOLINTEND
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
/*
2+
* Copyright (c) 2024-Present Ian Pike
3+
* Copyright (c) 2024-Present ccmath contributors
4+
*
5+
* This library is provided under the MIT License.
6+
* See LICENSE for more information.
7+
*/
8+
9+
#include "../../helpers/randomizers.hpp"
10+
#include <benchmark/benchmark.h>
11+
#include <ccmath/ccmath.hpp>
12+
#include <cmath>
13+
14+
namespace bm = benchmark;
15+
16+
// NOLINTBEGIN
17+
18+
static void BM_basic_fdim_std(benchmark::State& state) {
19+
for ([[maybe_unused]] auto _ : state) {
20+
benchmark::DoNotOptimize(std::fdim(state.range(0), state.range(1)));
21+
}
22+
state.SetComplexityN(state.range(0));
23+
}
24+
25+
static void BM_basic_fdim_ccmath(benchmark::State& state) {
26+
for ([[maybe_unused]] auto _ : state) {
27+
benchmark::DoNotOptimize(ccm::fdim(state.range(0), state.range(1)));
28+
}
29+
state.SetComplexityN(state.range(0));
30+
}
31+
32+
static void BM_basic_fdim_rand_int_std(benchmark::State& state) {
33+
ccm::bench::Randomizer ran;
34+
auto randomIntegers = ran.generateRandomIntegers(state.range(0));
35+
auto randomIntegers2 = ran.generateRandomIntegers(state.range(0));
36+
while (state.KeepRunning()) {
37+
for (size_t i = 0; i < randomIntegers.size(); ++i) {
38+
benchmark::DoNotOptimize(std::fdim(randomIntegers[i], randomIntegers2[i]));
39+
}
40+
}
41+
state.SetComplexityN(state.range(0));
42+
}
43+
44+
static void BM_basic_fdim_rand_int_ccmath(benchmark::State& state) {
45+
ccm::bench::Randomizer ran;
46+
auto randomIntegers = ran.generateRandomIntegers(state.range(0));
47+
auto randomIntegers2 = ran.generateRandomIntegers(state.range(0));
48+
while (state.KeepRunning()) {
49+
for (size_t i = 0; i < randomIntegers.size(); ++i) {
50+
benchmark::DoNotOptimize(ccm::fdim(randomIntegers[i], randomIntegers2[i]));
51+
}
52+
}
53+
state.SetComplexityN(state.range(0));
54+
}
55+
56+
static void BM_basic_fdim_rand_double_std(benchmark::State& state) {
57+
ccm::bench::Randomizer ran;
58+
auto randomDoubles = ran.generateRandomDoubles(state.range(0));
59+
auto randomDoubles2 = ran.generateRandomDoubles(state.range(0));
60+
while (state.KeepRunning()) {
61+
for (size_t i = 0; i < randomDoubles.size(); ++i) {
62+
benchmark::DoNotOptimize(std::fdim(randomDoubles[i], randomDoubles2[i]));
63+
}
64+
}
65+
state.SetComplexityN(state.range(0));
66+
}
67+
68+
static void BM_basic_fdim_rand_double_ccmath(benchmark::State& state) {
69+
ccm::bench::Randomizer ran;
70+
auto randomDoubles = ran.generateRandomDoubles(state.range(0));
71+
auto randomDoubles2 = ran.generateRandomDoubles(state.range(0));
72+
while (state.KeepRunning()) {
73+
for (size_t i = 0; i < randomDoubles.size(); ++i) {
74+
benchmark::DoNotOptimize(ccm::fdim(randomDoubles[i], randomDoubles2[i]));
75+
}
76+
}
77+
state.SetComplexityN(state.range(0));
78+
}
79+
80+
// NOLINTEND
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/*
2+
* Copyright (c) 2024-Present Ian Pike
3+
* Copyright (c) 2024-Present ccmath contributors
4+
*
5+
* This library is provided under the MIT License.
6+
* See LICENSE for more information.
7+
*/
8+
9+
#include "fma.bench.hpp"
10+
11+
// NOLINTBEGIN
12+
13+
BENCHMARK(BM_basic_fma_std)->RangeMultiplier(2)->Range(8, 8<<10)->Complexity();
14+
15+
BENCHMARK(BM_basic_fma_ccmath)->RangeMultiplier(2)->Range(8, 8<<10)->Complexity();
16+
17+
BENCHMARK(BM_basic_fma_rand_int_std)->RangeMultiplier(2)->Range(8, 8<<10)->Complexity();
18+
19+
BENCHMARK(BM_basic_fma_rand_int_ccmath)->RangeMultiplier(2)->Range(8, 8<<10)->Complexity();
20+
21+
BENCHMARK(BM_basic_fma_rand_double_std)->RangeMultiplier(2)->Range(8, 8<<10)->Complexity();
22+
23+
BENCHMARK(BM_basic_fma_rand_double_ccmath)->RangeMultiplier(2)->Range(8, 8<<10)->Complexity();
24+
25+
BENCHMARK_MAIN();
26+
27+
// NOLINTEND
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
/*
2+
* Copyright (c) 2024-Present Ian Pike
3+
* Copyright (c) 2024-Present ccmath contributors
4+
*
5+
* This library is provided under the MIT License.
6+
* See LICENSE for more information.
7+
*/
8+
9+
#include "../../helpers/randomizers.hpp"
10+
#include <benchmark/benchmark.h>
11+
#include <ccmath/ccmath.hpp>
12+
#include <cmath>
13+
14+
namespace bm = benchmark;
15+
16+
// NOLINTBEGIN
17+
18+
static void BM_basic_fma_std(benchmark::State& state) {
19+
for ([[maybe_unused]] auto _ : state) {
20+
benchmark::DoNotOptimize(std::fma(state.range(0), state.range(1), state.range(2)));
21+
}
22+
state.SetComplexityN(state.range(0));
23+
}
24+
25+
static void BM_basic_fma_ccmath(benchmark::State& state) {
26+
for ([[maybe_unused]] auto _ : state) {
27+
benchmark::DoNotOptimize(ccm::fma(state.range(0), state.range(1), state.range(2)));
28+
}
29+
state.SetComplexityN(state.range(0));
30+
}
31+
32+
static void BM_basic_fma_rand_int_std(benchmark::State& state) {
33+
ccm::bench::Randomizer ran;
34+
auto randomIntegers = ran.generateRandomIntegers(state.range(0));
35+
auto randomIntegers2 = ran.generateRandomIntegers(state.range(0));
36+
auto randomIntegers3 = ran.generateRandomIntegers(state.range(0));
37+
while (state.KeepRunning()) {
38+
for (size_t i = 0; i < randomIntegers.size(); ++i) {
39+
benchmark::DoNotOptimize(std::fma(randomIntegers[i], randomIntegers2[i], randomIntegers3[i]));
40+
}
41+
}
42+
state.SetComplexityN(state.range(0));
43+
}
44+
45+
static void BM_basic_fma_rand_int_ccmath(benchmark::State& state) {
46+
ccm::bench::Randomizer ran;
47+
auto randomIntegers = ran.generateRandomIntegers(state.range(0));
48+
auto randomIntegers2 = ran.generateRandomIntegers(state.range(0));
49+
auto randomIntegers3 = ran.generateRandomIntegers(state.range(0));
50+
while (state.KeepRunning()) {
51+
for (size_t i = 0; i < randomIntegers.size(); ++i) {
52+
benchmark::DoNotOptimize(ccm::fma(randomIntegers[i], randomIntegers2[i], randomIntegers3[i]));
53+
}
54+
}
55+
state.SetComplexityN(state.range(0));
56+
}
57+
58+
static void BM_basic_fma_rand_double_std(benchmark::State& state) {
59+
ccm::bench::Randomizer ran;
60+
auto randomDoubles = ran.generateRandomDoubles(state.range(0));
61+
auto randomDoubles2 = ran.generateRandomDoubles(state.range(0));
62+
auto randomDoubles3 = ran.generateRandomDoubles(state.range(0));
63+
while (state.KeepRunning()) {
64+
for (size_t i = 0; i < randomDoubles.size(); ++i) {
65+
benchmark::DoNotOptimize(std::fma(randomDoubles[i], randomDoubles2[i], randomDoubles3[i]));
66+
}
67+
}
68+
state.SetComplexityN(state.range(0));
69+
}
70+
71+
static void BM_basic_fma_rand_double_ccmath(benchmark::State& state) {
72+
ccm::bench::Randomizer ran;
73+
auto randomDoubles = ran.generateRandomDoubles(state.range(0));
74+
auto randomDoubles2 = ran.generateRandomDoubles(state.range(0));
75+
auto randomDoubles3 = ran.generateRandomDoubles(state.range(0));
76+
while (state.KeepRunning()) {
77+
for (size_t i = 0; i < randomDoubles.size(); ++i) {
78+
benchmark::DoNotOptimize(ccm::fma(randomDoubles[i], randomDoubles2[i], randomDoubles3[i]));
79+
}
80+
}
81+
state.SetComplexityN(state.range(0));
82+
}
83+
84+
// NOLINTEND

benchmarks/benchmarks/nearest/trunc.bench.cpp

Whitespace-only changes.

benchmarks/benchmarks/nearest/trunc.bench.hpp

Whitespace-only changes.

0 commit comments

Comments
 (0)