Commit Graph

50 Commits

Author SHA1 Message Date
Allison Vacanti
6dd4bebe6e Clonable benchmarks.
Adds clone() methods to benchmark_base and axis_base, along with the
scaffolding to support them.
2021-01-14 17:51:13 -05:00
Allison Vacanti
570aed1373 Bump CMake to 3.18.3 for NVCC/MSVC/C++17 bugfixes.
Otherwise the C++17 flags won't be added.
2021-01-14 17:46:09 -05:00
Allison Vacanti
de6f5ca89f Cleanup markdown formatter ivars. 2021-01-14 11:57:39 -05:00
Allison Vacanti
9a129153a2 Pad hot measurement batch sizes.
The predictions were frequently under by just 1-2 iterations, this should
fix that.
2021-01-02 13:22:34 -05:00
Allison Vacanti
c7902fa353 Force inline kernel launches. 2021-01-02 13:20:42 -05:00
Allison Vacanti
49b34564a1 Better formatting for power-of-two data in markdown output. 2021-01-02 13:19:53 -05:00
Allison Vacanti
169a4050df Fix type axis order in output.
They should now appear in the order they are specified.
2021-01-02 03:13:20 -05:00
Allison Vacanti
0f3f1ef899 Polishing up the proof of concept.
- Enable throughput stats
- Add cold measurements
- Print liveness/log messages while running trials.
- Improve markdown formatting
- nvbench::range
2021-01-02 01:45:12 -05:00
Allison Vacanti
d93462ca09 Improve markdown output for durations.
E.g:

# cub::DeviceReduce::Sum

| ValueType | NumInputs | Hot Trials |   Hot GPU   |   Hot CPU   |
|-----------|-----------|------------|-------------|-------------|
|       I32 |      1024 |     261574 |  3829.22 ns |  3829.65 ns |
|       I32 |   1048576 |      19826 | 50436.60 ns | 50448.06 ns |
|       F32 |      1024 |     272872 |  3664.72 ns |  3665.97 ns |
|       F32 |   1048576 |      20318 | 50499.10 ns | 50501.41 ns |
|       F64 |      1024 |     237534 |  4221.46 ns |  4221.98 ns |
|       F64 |   1048576 |      10850 | 93556.23 ns | 93560.52 ns |
2021-01-01 22:14:45 -05:00
Allison Vacanti
93ed09f2b3 Finish off proof of concept level functionality.
Add `measure_hot` and `markdown_format` as detail classes, since
they're still pretty rough and need to be worked into the design.
But for now, they're functional proofs of concept. The formatting is
rough, but demonstrates basics.

Also added launch, exec, and summary functionality. These aren't details
and will be part of the project's API.
2021-01-01 21:47:20 -05:00
Allison Vacanti
099286867d Update C++17 flags. 2021-01-01 21:39:01 -05:00
Allison Vacanti
f6d275f6e1 Fix documentation snippet. 2021-01-01 02:11:04 -05:00
Allison Vacanti
238cd3e773 Add main nvbench.cuh header. 2021-01-01 02:10:51 -05:00
Allison Vacanti
3ffd2e6aea Add NVBENCH_CREATE and associated machinery. 2021-01-01 01:36:53 -05:00
Allison Vacanti
0776bdc4be Add nvbench::runner. 2020-12-31 21:27:51 -05:00
Allison Vacanti
29d7eafc33 cartesian_product<type_list<...>> -- now with edge cases!
Add test cases for zero or one input type_list.
2020-12-31 19:51:18 -05:00
Allison Vacanti
b1cbf6cab8 Add test for typeless state_generator::create.
Turns out this edgecase was already handled correctly, but let's
make sure it stays that way.
2020-12-31 17:07:19 -05:00
Allison Vacanti
a1bd7b03b3 Update state_generator::create to handle type axes. 2020-12-31 16:28:41 -05:00
Allison Vacanti
a01254fd7a Misc cleanups, no code changes. 2020-12-31 13:36:09 -05:00
Allison Vacanti
fd3b82cc6f Move sleep kernel to its own header.
This will be useful for testing in general.
2020-12-30 14:47:25 -05:00
Allison Vacanti
ad44463d6e Replace params class with nvbench::named_values.
Refactor nvbench::state to use this for axis parameters.

These will also be useful for summaries and measurements.

Also adds a new ASSERT_THROWS_ANY macro to test some of the new API.
2020-12-30 14:45:46 -05:00
Allison Vacanti
8c0b8e3423 Add cpu_timer. 2020-12-29 23:51:09 -05:00
Allison Vacanti
b07ffafff4 Add cuda_timer, cuda_stream. 2020-12-29 23:50:39 -05:00
Allison Vacanti
981031e732 Update axes_metadata test to reflect new API. 2020-12-29 19:41:29 -05:00
Allison Vacanti
754d0c5106 Restore int64_t_axis::get_values method.
This got lost in the shuffle somewhere...
2020-12-29 19:41:10 -05:00
Allison Vacanti
e631f1ff03 Add state_generator::create method to encapsulate state creation. 2020-12-29 19:35:07 -05:00
Allison Vacanti
beaead2c3f Split benchmark into more specialized, nontemplated structs. 2020-12-29 19:34:11 -05:00
Allison Vacanti
093077de5f Add nvbench::state.
This class holds a single value for each runtime axis.
2020-12-27 10:44:22 -05:00
Allison Vacanti
7b14ceb3fe Add detail::state_generator.
This helper utility computes the cartesian product of the runtime
axes.
2020-12-27 10:29:24 -05:00
Allison Vacanti
40f92b4705 Add initial nvbench::benchmark.
It's basically just a container for the various axis classes at this
point.
2020-12-24 17:33:03 -05:00
Allison Vacanti
691ed2c18d Add nvbench::params. 2020-12-22 17:44:33 -05:00
Allison Vacanti
76f9c9b0d6 Add nvbench::string_axis. 2020-12-22 16:57:42 -05:00
Allison Vacanti
1e5fe88c9b Add float64_axis. 2020-12-22 16:38:05 -05:00
Allison Vacanti
65eadda1c1 Add type_axis::get_index. 2020-12-22 16:37:19 -05:00
Allison Vacanti
07e4cc36c2 Add type_axis. 2020-12-22 15:20:04 -05:00
Allison Vacanti
95e2eaf607 Add nvbench::tl::foreach. 2020-12-22 15:20:04 -05:00
Allison Vacanti
fb10be7e72 Add nvbench::tl::size. 2020-12-22 15:20:04 -05:00
Allison Vacanti
9b17a991fc Add type_strings. 2020-12-22 15:20:03 -05:00
Allison Vacanti
621808e16d Propogate standard info to CPM packages. 2020-12-22 15:20:03 -05:00
Allison Vacanti
1c04e49787 Rename type_list header to match convention. 2020-12-22 15:20:03 -05:00
Allison Vacanti
334178dfa8 Tweak int64_axis API.
- Add `int64_axis_flags`.
- Rename `axis_base` virtuals.
2020-12-22 15:20:03 -05:00
Allison Vacanti
13dc404d56 Add int64_axis. 2020-12-21 20:31:12 -05:00
Allison Vacanti
48bd9c9dc4 Add fmt library. 2020-12-21 17:45:36 -05:00
Allison Vacanti
014d94e402 Add nvbench::type_list. 2020-12-20 21:09:47 -05:00
Allison Vacanti
4462460947 Rearrange project structure. 2020-10-18 11:02:03 -04:00
Allison Vacanti
a942f115aa cuda_timer: add ready(), refactor member vars, stream support. 2020-10-18 08:19:25 -04:00
Allison Vacanti
5746769fb6 Add clang-format, update files 2020-10-17 15:31:20 -04:00
Allison Vacanti
4b558191e8 Add CUB DeviceScan. 2020-10-17 15:27:15 -04:00
Allison Vacanti
b6cfbe5623 Don't override CUDA_ARCH for targets, just use the CMake global config. 2020-10-17 10:01:13 -04:00
Allison Vacanti
f7a7373d01 Initial commit. Simple synchronous reduce + scan benchmarks. 2020-10-17 08:49:27 -04:00