Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: update Boost.Histogram to 1.77 #594

Merged
merged 2 commits into from
Sep 9, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion extern/config
Submodule config updated 256 files
2 changes: 1 addition & 1 deletion extern/histogram
Submodule histogram updated 60 files
+6 −6 .github/workflows/cov.yml
+1 −14 .github/workflows/fast.yml
+8 −8 .github/workflows/slow.yml
+3 −1 CMakeLists.txt
+2 −2 Jamfile
+8 −6 README.md
+22 −11 benchmark/plot_benchmarks.py
+25 −13 benchmark/run_benchmarks.py
+4 −5 doc/concepts/Accumulator.qbk
+12 −1 doc/doxygen_postprocessing.py
+1 −1 doc/guide.qbk
+2 −0 doc/history.qbk
+13 −9 examples/guide_histogram_streaming.cpp
+1 −1 examples/guide_parallel_filling.cpp
+63 −23 include/boost/histogram/accumulators/count.hpp
+41 −0 include/boost/histogram/accumulators/is_thread_safe.hpp
+44 −13 include/boost/histogram/accumulators/mean.hpp
+6 −3 include/boost/histogram/accumulators/ostream.hpp
+13 −7 include/boost/histogram/accumulators/thread_safe.hpp
+43 −20 include/boost/histogram/accumulators/weighted_mean.hpp
+1 −2 include/boost/histogram/accumulators/weighted_sum.hpp
+1 −0 include/boost/histogram/algorithm/sum.hpp
+11 −6 include/boost/histogram/axis/integer.hpp
+9 −3 include/boost/histogram/detail/accumulator_traits.hpp
+92 −0 include/boost/histogram/detail/atomic_number.hpp
+20 −0 include/boost/histogram/detail/debug.hpp
+44 −40 include/boost/histogram/detail/detect.hpp
+8 −0 include/boost/histogram/detail/ignore_deprecation_warning_begin.hpp
+6 −0 include/boost/histogram/detail/ignore_deprecation_warning_end.hpp
+23 −19 include/boost/histogram/detail/linearize.hpp
+23 −0 include/boost/histogram/detail/square.hpp
+87 −0 include/boost/histogram/detail/term_info.hpp
+2 −4 include/boost/histogram/fwd.hpp
+2 −2 include/boost/histogram/histogram.hpp
+80 −18 include/boost/histogram/indexed.hpp
+73 −35 include/boost/histogram/ostream.hpp
+1 −0 include/boost/histogram/storage_adaptor.hpp
+6 −2 test/CMakeLists.txt
+12 −5 test/Jamfile
+47 −19 test/accumulators_count_test.cpp
+93 −0 test/accumulators_count_thread_safe_test.cpp
+91 −46 test/accumulators_mean_test.cpp
+8 −0 test/accumulators_thread_safe_test.cpp
+87 −21 test/accumulators_weighted_mean_test.cpp
+16 −0 test/axis_traits_test.cpp
+1 −1 test/check_build_system.py
+7 −3 test/check_odr_test.py
+32 −5 test/detail_accumulator_traits_test.cpp
+32 −0 test/detail_detect_test.cpp
+2 −1 test/histogram_fill_test.cpp
+76 −0 test/histogram_ostream_ascii_test.cpp
+202 −49 test/histogram_ostream_test.cpp
+16 −1 test/histogram_test.cpp
+2 −2 test/histogram_threaded_test.cpp
+37 −0 test/indexed_test.cpp
+6 −1 test/storage_adaptor_serialization_test.cpp
+13 −4 test/storage_adaptor_test.cpp
+3 −3 test/storage_adaptor_threaded_test.cpp
+69 −0 tools/cov.py
+0 −46 tools/cov.sh
2 changes: 1 addition & 1 deletion include/bh_python/accumulators/ostream.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ std::basic_ostream<CharT, Traits>& operator<<(std::basic_ostream<CharT, Traits>&
template <class CharT, class Traits, class T>
std::basic_ostream<CharT, Traits>&
operator<<(std::basic_ostream<CharT, Traits>& os,
const ::boost::histogram::accumulators::thread_safe<T>& x) {
const ::boost::histogram::accumulators::count<T, true>& x) {
os << x.load();
return os;
}
Expand Down
4 changes: 2 additions & 2 deletions include/bh_python/histogram.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ namespace pybind11 {
/// The descriptor for atomic_* is the same as the descriptor for *, as long this uses
/// standard layout
template <class T>
struct format_descriptor<bh::accumulators::thread_safe<T>> : format_descriptor<T> {
static_assert(std::is_standard_layout<bh::accumulators::thread_safe<T>>::value, "");
struct format_descriptor<bh::accumulators::count<T, true>> : format_descriptor<T> {
static_assert(std::is_standard_layout<bh::accumulators::count<T, true>>::value, "");
};

} // namespace pybind11
Expand Down
16 changes: 10 additions & 6 deletions include/bh_python/storage.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
#include <bh_python/accumulators/weighted_mean.hpp>
#include <bh_python/accumulators/weighted_sum.hpp>

#include <boost/histogram/accumulators/thread_safe.hpp>
#include <boost/histogram/accumulators/count.hpp>
#include <boost/histogram/storage_adaptor.hpp>
#include <boost/histogram/unlimited_storage.hpp>

Expand All @@ -23,7 +23,7 @@ namespace storage {

// Names match Python names
using int64 = bh::dense_storage<uint64_t>;
using atomic_int64 = bh::dense_storage<bh::accumulators::thread_safe<uint64_t>>;
using atomic_int64 = bh::dense_storage<bh::accumulators::count<uint64_t, true>>;
using double_ = bh::dense_storage<double>;
using unlimited = bh::unlimited_storage<>;
using weight = bh::dense_storage<accumulators::weighted_sum<double>>;
Expand Down Expand Up @@ -80,8 +80,12 @@ template <class Archive>
void save(Archive& ar, const storage::atomic_int64& s, unsigned /* version */) {
// We cannot view the memory as a numpy array, because the internal layout of
// std::atomic is undefined. So no reinterpret_casts are allowed.
py::array_t<std::int64_t> a(static_cast<py::ssize_t>(s.size()));
std::copy(s.begin(), s.end(), a.mutable_data());
py::array_t<std::uint64_t> a(static_cast<py::ssize_t>(s.size()));

auto in_ptr = s.begin();
auto out_ptr = a.mutable_data();
for(; in_ptr != s.end(); ++in_ptr, ++out_ptr)
*out_ptr = in_ptr->value();
ar << a;
}

Expand Down Expand Up @@ -187,15 +191,15 @@ struct type_caster<storage::atomic_int64::value_type> {
auto ptr = PyNumber_Long(src.ptr());
if(!ptr)
return false;
value.store(PyLong_AsUnsignedLongLong(ptr));
value = PyLong_AsUnsignedLongLong(ptr);
Py_DECREF(ptr);
return !PyErr_Occurred();
}

static handle cast(storage::atomic_int64::value_type src,
return_value_policy /* policy */,
handle /* parent */) {
return PyLong_FromUnsignedLongLong(src.load());
return PyLong_FromUnsignedLongLong(src.value());
}
};
} // namespace detail
Expand Down