Skip to content

Commit

Permalink
chore: update Boost.Histogram to 1.77+ (#594)
Browse files Browse the repository at this point in the history
* chore: update boost-histogram
  • Loading branch information
henryiii authored Sep 9, 2021
1 parent 17eb0f2 commit a78d54c
Show file tree
Hide file tree
Showing 10 changed files with 20 additions and 16 deletions.
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

0 comments on commit a78d54c

Please sign in to comment.