From 0b936cd4b0459af04dd5272bac9ba8600582db9d Mon Sep 17 00:00:00 2001 From: github-actions Date: Wed, 1 Nov 2023 15:09:45 +0000 Subject: [PATCH] Update from github actions --- .github/dependabot.yml | 19 + .github/workflows/ci.yml | 117 + .nojekyll | 0 .pre-commit-config.yaml | 60 + ...ench-001626b200c94e298fb17b25002c08ec.json | 150 ++ ...ench-142ea438a6a94fca8605521c1e1e8510.json | 133 ++ ...ench-5aac2e5f06e24b8abdcf604005302cd9.json | 133 ++ ...ench-6bd83067f15e49569b6339a89f3a60fb.json | 99 + ...ench-723eb1a265cc4de1aa3ccda22a4e5bd7.json | 136 ++ ...ench-7c6ff308c4c94a338fec3a7d93cc0836.json | 135 ++ ...ench-826b52538e9b40beba259c5816055d19.json | 133 ++ ...ench-ca810e980aa6492fbbeddd66af6966aa.json | 133 ++ ...ench-fde9faaceaf6481ca944b5c4b55211fb.json | 134 ++ ...ench-fe6010029e514e7d930ec46bc1e8d4bf.json | 133 ++ doxygen/algorithms_8hpp_source.html | 102 + doxygen/alignment_8hpp_source.html | 157 ++ doxygen/allocators_8hpp_source.html | 217 ++ doxygen/annotated.html | 228 ++ doxygen/bc_s.png | Bin 0 -> 676 bytes doxygen/bc_sd.png | Bin 0 -> 635 bytes doxygen/bdwn.png | Bin 0 -> 147 bytes ...___detail_1_1direct__iterator-members.html | 119 + ...sdr_1_1____detail_1_1direct__iterator.html | 190 ++ ..._1enumerate__adapter__closure-members.html | 90 + ...detail_1_1enumerate__adapter__closure.html | 107 + ...____detail_1_1enumerate__fn__-members.html | 90 + ...ssdr_1_1____detail_1_1enumerate__fn__.html | 102 + ...ail_1_1mdspan__iter__accessor-members.html | 94 + ...1____detail_1_1mdspan__iter__accessor.html | 114 + ..._1_1____detail_1_1mdtranspose-members.html | 93 + .../classdr_1_1____detail_1_1mdtranspose.html | 129 ++ ...____detail_1_1mdtranspose__coll__graph.map | 4 + ...____detail_1_1mdtranspose__coll__graph.md5 | 1 + ...____detail_1_1mdtranspose__coll__graph.png | Bin 0 -> 4325 bytes ..._detail_1_1mdtranspose__inherit__graph.map | 4 + ..._detail_1_1mdtranspose__inherit__graph.md5 | 1 + ..._detail_1_1mdtranspose__inherit__graph.png | Bin 0 -> 4325 bytes ...1_1____detail_1_1owning__view-members.html | 102 + ...classdr_1_1____detail_1_1owning__view.html | 152 ++ ...___detail_1_1owning__view__coll__graph.map | 4 + ...___detail_1_1owning__view__coll__graph.md5 | 1 + ...___detail_1_1owning__view__coll__graph.png | Bin 0 -> 6298 bytes ...detail_1_1owning__view__inherit__graph.map | 4 + ...detail_1_1owning__view__inherit__graph.md5 | 1 + ...detail_1_1owning__view__inherit__graph.png | Bin 0 -> 6298 bytes doxygen/classdr_1_1communicator-members.html | 117 + doxygen/classdr_1_1communicator.html | 202 ++ doxygen/classdr_1_1index-members.html | 107 + doxygen/classdr_1_1index.html | 162 ++ .../classdr_1_1iterator__adaptor-members.html | 126 ++ doxygen/classdr_1_1iterator__adaptor.html | 213 ++ doxygen/classdr_1_1logger-members.html | 91 + doxygen/classdr_1_1logger.html | 106 + ...hp_1_1____detail_1_1allocator-members.html | 90 + ...sdr_1_1mhp_1_1____detail_1_1allocator.html | 101 + ..._1_1____detail_1_1md__segment-members.html | 97 + ...r_1_1mhp_1_1____detail_1_1md__segment.html | 141 ++ ...____detail_1_1md__segment__coll__graph.map | 4 + ...____detail_1_1md__segment__coll__graph.md5 | 1 + ...____detail_1_1md__segment__coll__graph.png | Bin 0 -> 7804 bytes ..._detail_1_1md__segment__inherit__graph.map | 4 + ..._detail_1_1md__segment__inherit__graph.md5 | 1 + ..._detail_1_1md__segment__inherit__graph.png | Bin 0 -> 7804 bytes ...1____detail_1_1mdsub__segment-members.html | 93 + ..._1mhp_1_1____detail_1_1mdsub__segment.html | 129 ++ ..._detail_1_1mdsub__segment__coll__graph.map | 4 + ..._detail_1_1mdsub__segment__coll__graph.md5 | 1 + ..._detail_1_1mdsub__segment__coll__graph.png | Bin 0 -> 6157 bytes ...tail_1_1mdsub__segment__inherit__graph.map | 4 + ...tail_1_1mdsub__segment__inherit__graph.md5 | 1 + ...tail_1_1mdsub__segment__inherit__graph.png | Bin 0 -> 6157 bytes ..._1mhp_1_1distributed__mdarray-members.html | 101 + ...lassdr_1_1mhp_1_1distributed__mdarray.html | 138 ++ ...1_1mhp_1_1distributed__vector-members.html | 103 + ...classdr_1_1mhp_1_1distributed__vector.html | 161 ++ ...stributed__vector_1_1iterator-members.html | 109 + ...hp_1_1distributed__vector_1_1iterator.html | 163 ++ ...classdr_1_1mhp_1_1dv__segment-members.html | 96 + doxygen/classdr_1_1mhp_1_1dv__segment.html | 120 + ...1mhp_1_1dv__segment__iterator-members.html | 116 + ...assdr_1_1mhp_1_1dv__segment__iterator.html | 184 ++ ...mhp_1_1dv__segment__reference-members.html | 94 + ...ssdr_1_1mhp_1_1dv__segment__reference.html | 117 + .../classdr_1_1mhp_1_1halo__impl-members.html | 104 + doxygen/classdr_1_1mhp_1_1halo__impl.html | 191 ++ ...ssdr_1_1mhp_1_1halo__impl__coll__graph.map | 8 + ...ssdr_1_1mhp_1_1halo__impl__coll__graph.md5 | 1 + ...ssdr_1_1mhp_1_1halo__impl__coll__graph.png | Bin 0 -> 24085 bytes ...r_1_1mhp_1_1halo__impl__inherit__graph.map | 5 + ...r_1_1mhp_1_1halo__impl__inherit__graph.md5 | 1 + ...r_1_1mhp_1_1halo__impl__inherit__graph.png | Bin 0 -> 8021 bytes ...lassdr_1_1mhp_1_1index__group-members.html | 104 + doxygen/classdr_1_1mhp_1_1index__group.html | 149 ++ ...sdr_1_1mhp_1_1segmented__view-members.html | 92 + .../classdr_1_1mhp_1_1segmented__view.html | 126 ++ ...1_1mhp_1_1segmented__view__coll__graph.map | 4 + ...1_1mhp_1_1segmented__view__coll__graph.md5 | 1 + ...1_1mhp_1_1segmented__view__coll__graph.png | Bin 0 -> 7454 bytes ...mhp_1_1segmented__view__inherit__graph.map | 4 + ...mhp_1_1segmented__view__inherit__graph.md5 | 1 + ...mhp_1_1segmented__view__inherit__graph.png | Bin 0 -> 7454 bytes ..._1_1segmented__view__iterator-members.html | 97 + ...r_1_1mhp_1_1segmented__view__iterator.html | 123 + ...classdr_1_1mhp_1_1span__group-members.html | 102 + doxygen/classdr_1_1mhp_1_1span__group.html | 145 ++ .../classdr_1_1mhp_1_1span__halo-members.html | 107 + doxygen/classdr_1_1mhp_1_1span__halo.html | 188 ++ ...ssdr_1_1mhp_1_1span__halo__coll__graph.map | 9 + ...ssdr_1_1mhp_1_1span__halo__coll__graph.md5 | 1 + ...ssdr_1_1mhp_1_1span__halo__coll__graph.png | Bin 0 -> 28935 bytes ...r_1_1mhp_1_1span__halo__inherit__graph.map | 4 + ...r_1_1mhp_1_1span__halo__inherit__graph.md5 | 1 + ...r_1_1mhp_1_1span__halo__inherit__graph.png | Bin 0 -> 6042 bytes .../classdr_1_1mhp_1_1subrange-members.html | 96 + doxygen/classdr_1_1mhp_1_1subrange.html | 141 ++ ...lassdr_1_1mhp_1_1subrange__coll__graph.map | 4 + ...lassdr_1_1mhp_1_1subrange__coll__graph.md5 | 1 + ...lassdr_1_1mhp_1_1subrange__coll__graph.png | Bin 0 -> 6200 bytes ...sdr_1_1mhp_1_1subrange__inherit__graph.map | 4 + ...sdr_1_1mhp_1_1subrange__inherit__graph.md5 | 1 + ...sdr_1_1mhp_1_1subrange__inherit__graph.png | Bin 0 -> 6200 bytes ..._1_1mhp_1_1subrange__iterator-members.html | 114 + .../classdr_1_1mhp_1_1subrange__iterator.html | 178 ++ ..._1_1mhp_1_1unstructured__halo-members.html | 106 + .../classdr_1_1mhp_1_1unstructured__halo.html | 245 ++ ...mhp_1_1unstructured__halo__coll__graph.map | 9 + ...mhp_1_1unstructured__halo__coll__graph.md5 | 1 + ...mhp_1_1unstructured__halo__coll__graph.png | Bin 0 -> 30236 bytes ..._1_1unstructured__halo__inherit__graph.map | 4 + ..._1_1unstructured__halo__inherit__graph.md5 | 1 + ..._1_1unstructured__halo__inherit__graph.png | Bin 0 -> 6631 bytes ..._1enumerate__adapter__closure-members.html | 90 + ...1views_1_1enumerate__adapter__closure.html | 108 + ...p_1_1views_1_1enumerate__fn__-members.html | 90 + ...dr_1_1mhp_1_1views_1_1enumerate__fn__.html | 102 + ...s_1_1mdspan__adapter__closure-members.html | 92 + ..._1_1views_1_1mdspan__adapter__closure.html | 113 + ...1mhp_1_1views_1_1mdspan__fn__-members.html | 92 + ...assdr_1_1mhp_1_1views_1_1mdspan__fn__.html | 111 + ..._1submdspan__adapter__closure-members.html | 91 + ...1views_1_1submdspan__adapter__closure.html | 110 + ...p_1_1views_1_1submdspan__fn__-members.html | 90 + ...dr_1_1mhp_1_1views_1_1submdspan__fn__.html | 103 + ...assdr_1_1mhp_1_1zip__iterator-members.html | 110 + doxygen/classdr_1_1mhp_1_1zip__iterator.html | 166 ++ .../classdr_1_1mhp_1_1zip__view-members.html | 97 + doxygen/classdr_1_1mhp_1_1zip__view.html | 140 ++ ...assdr_1_1mhp_1_1zip__view__coll__graph.map | 4 + ...assdr_1_1mhp_1_1zip__view__coll__graph.md5 | 1 + ...assdr_1_1mhp_1_1zip__view__coll__graph.png | Bin 0 -> 6042 bytes ...dr_1_1mhp_1_1zip__view__inherit__graph.map | 4 + ...dr_1_1mhp_1_1zip__view__inherit__graph.md5 | 1 + ...dr_1_1mhp_1_1zip__view__inherit__graph.png | Bin 0 -> 6042 bytes ...stributed__iterator__accessor-members.html | 108 + ...rmal__distributed__iterator__accessor.html | 153 ++ .../classdr_1_1remote__subrange-members.html | 93 + doxygen/classdr_1_1remote__subrange.html | 127 ++ ...assdr_1_1remote__subrange__coll__graph.map | 4 + ...assdr_1_1remote__subrange__coll__graph.md5 | 1 + ...assdr_1_1remote__subrange__coll__graph.png | Bin 0 -> 4731 bytes ...dr_1_1remote__subrange__inherit__graph.map | 4 + ...dr_1_1remote__subrange__inherit__graph.md5 | 1 + ...dr_1_1remote__subrange__inherit__graph.png | Bin 0 -> 4731 bytes doxygen/classdr_1_1rma__window-members.html | 102 + doxygen/classdr_1_1rma__window.html | 139 ++ ..._1_1____detail_1_1coo__matrix-members.html | 128 ++ ...r_1_1shp_1_1____detail_1_1coo__matrix.html | 217 ++ ...assdr_1_1shp_1_1block__cyclic-members.html | 96 + doxygen/classdr_1_1shp_1_1block__cyclic.html | 264 +++ ...r_1_1shp_1_1block__cyclic__coll__graph.map | 4 + ...r_1_1shp_1_1block__cyclic__coll__graph.md5 | 1 + ...r_1_1shp_1_1block__cyclic__coll__graph.png | Bin 0 -> 4023 bytes ..._1shp_1_1block__cyclic__inherit__graph.map | 4 + ..._1shp_1_1block__cyclic__inherit__graph.md5 | 1 + ..._1shp_1_1block__cyclic__inherit__graph.png | Bin 0 -> 4023 bytes ...1_1shp_1_1buffered__allocator-members.html | 100 + ...classdr_1_1shp_1_1buffered__allocator.html | 132 ++ ...r_1_1shp_1_1csr__matrix__view-members.html | 109 + .../classdr_1_1shp_1_1csr__matrix__view.html | 180 ++ ..._1csr__matrix__view__accessor-members.html | 113 + ...1_1shp_1_1csr__matrix__view__accessor.html | 168 ++ ...1shp_1_1csr__matrix__view__coll__graph.map | 4 + ...1shp_1_1csr__matrix__view__coll__graph.md5 | 1 + ...1shp_1_1csr__matrix__view__coll__graph.png | Bin 0 -> 6983 bytes ...p_1_1csr__matrix__view__inherit__graph.map | 4 + ...p_1_1csr__matrix__view__inherit__graph.md5 | 1 + ...p_1_1csr__matrix__view__inherit__graph.png | Bin 0 -> 6983 bytes ...assdr_1_1shp_1_1dense__matrix-members.html | 114 + doxygen/classdr_1_1shp_1_1dense__matrix.html | 174 ++ ...hp_1_1dense__matrix__accessor-members.html | 111 + ...sdr_1_1shp_1_1dense__matrix__accessor.html | 162 ++ ...nse__matrix__column__accessor-members.html | 109 + ...hp_1_1dense__matrix__column__accessor.html | 156 ++ ..._1dense__matrix__column__view-members.html | 103 + ...1_1shp_1_1dense__matrix__column__view.html | 157 ++ ...nse__matrix__column__view__coll__graph.map | 4 + ...nse__matrix__column__view__coll__graph.md5 | 1 + ...nse__matrix__column__view__coll__graph.png | Bin 0 -> 4764 bytes ...1dense__matrix__row__accessor-members.html | 109 + ..._1shp_1_1dense__matrix__row__accessor.html | 156 ++ ...p_1_1dense__matrix__row__view-members.html | 102 + ...dr_1_1shp_1_1dense__matrix__row__view.html | 154 ++ ...1dense__matrix__row__view__coll__graph.map | 4 + ...1dense__matrix__row__view__coll__graph.md5 | 1 + ...1dense__matrix__row__view__coll__graph.png | Bin 0 -> 4611 bytes ...1_1shp_1_1dense__matrix__view-members.html | 109 + ...classdr_1_1shp_1_1dense__matrix__view.html | 182 ++ ...hp_1_1dense__matrix__view__coll__graph.map | 4 + ...hp_1_1dense__matrix__view__coll__graph.md5 | 1 + ...hp_1_1dense__matrix__view__coll__graph.png | Bin 0 -> 6881 bytes ...1_1dense__matrix__view__inherit__graph.map | 4 + ...1_1dense__matrix__view__inherit__graph.md5 | 1 + ...1_1dense__matrix__view__inherit__graph.png | Bin 0 -> 6881 bytes ...r_1_1shp_1_1device__allocator-members.html | 108 + .../classdr_1_1shp_1_1device__allocator.html | 163 ++ ...classdr_1_1shp_1_1device__ptr-members.html | 130 ++ doxygen/classdr_1_1shp_1_1device__ptr.html | 227 ++ ...classdr_1_1shp_1_1device__ref-members.html | 95 + doxygen/classdr_1_1shp_1_1device__ref.html | 110 + ...lassdr_1_1shp_1_1device__span-members.html | 113 + doxygen/classdr_1_1shp_1_1device__span.html | 217 ++ ...dr_1_1shp_1_1device__span__coll__graph.map | 5 + ...dr_1_1shp_1_1device__span__coll__graph.md5 | 1 + ...dr_1_1shp_1_1device__span__coll__graph.png | Bin 0 -> 8348 bytes ...1_1shp_1_1device__span__inherit__graph.map | 5 + ...1_1shp_1_1device__span__inherit__graph.md5 | 1 + ...1_1shp_1_1device__span__inherit__graph.png | Bin 0 -> 8348 bytes ...ssdr_1_1shp_1_1device__vector-members.html | 95 + doxygen/classdr_1_1shp_1_1device__vector.html | 254 +++ ..._1_1shp_1_1device__vector__coll__graph.map | 4 + ..._1_1shp_1_1device__vector__coll__graph.md5 | 1 + ..._1_1shp_1_1device__vector__coll__graph.png | Bin 0 -> 5856 bytes ...1shp_1_1device__vector__inherit__graph.map | 4 + ...1shp_1_1device__vector__inherit__graph.md5 | 1 + ...1shp_1_1device__vector__inherit__graph.png | Bin 0 -> 5856 bytes ...1_1distributed__dense__matrix-members.html | 112 + ..._1_1shp_1_1distributed__dense__matrix.html | 173 ++ ...uted__dense__matrix__accessor-members.html | 110 + ...1distributed__dense__matrix__accessor.html | 159 ++ ...1distributed__range__accessor-members.html | 107 + ..._1shp_1_1distributed__range__accessor.html | 150 ++ ...r_1_1shp_1_1distributed__span-members.html | 113 + .../classdr_1_1shp_1_1distributed__span.html | 192 ++ ..._1distributed__span__accessor-members.html | 109 + ...1_1shp_1_1distributed__span__accessor.html | 156 ++ ...1shp_1_1distributed__span__coll__graph.map | 4 + ...1shp_1_1distributed__span__coll__graph.md5 | 1 + ...1shp_1_1distributed__span__coll__graph.png | Bin 0 -> 6265 bytes ...p_1_1distributed__span__inherit__graph.map | 4 + ...p_1_1distributed__span__inherit__graph.md5 | 1 + ...p_1_1distributed__span__inherit__graph.png | Bin 0 -> 6265 bytes ...distributed__vector__accessor-members.html | 111 + ...1shp_1_1distributed__vector__accessor.html | 162 ++ ..._1_1shp_1_1duplicated__vector-members.html | 97 + .../classdr_1_1shp_1_1duplicated__vector.html | 126 ++ doxygen/classdr_1_1shp_1_1future-members.html | 100 + doxygen/classdr_1_1shp_1_1future.html | 135 ++ doxygen/classdr_1_1shp_1_1id-members.html | 94 + doxygen/classdr_1_1shp_1_1id.html | 110 + ...assdr_1_1shp_1_1matrix__entry-members.html | 107 + doxygen/classdr_1_1shp_1_1matrix__entry.html | 158 ++ ...r_1_1shp_1_1matrix__partition-members.html | 93 + .../classdr_1_1shp_1_1matrix__partition.html | 116 + ...p_1_1matrix__partition__inherit__graph.map | 4 + ...p_1_1matrix__partition__inherit__graph.md5 | 1 + ...p_1_1matrix__partition__inherit__graph.png | Bin 0 -> 4035 bytes ...classdr_1_1shp_1_1matrix__ref-members.html | 109 + doxygen/classdr_1_1shp_1_1matrix__ref.html | 162 ++ ...ssdr_1_1shp_1_1segment__range-members.html | 99 + doxygen/classdr_1_1shp_1_1segment__range.html | 132 ++ ...p_1_1segment__range__accessor-members.html | 107 + ...dr_1_1shp_1_1segment__range__accessor.html | 150 ++ doxygen/classdr_1_1shp_1_1span-members.html | 107 + doxygen/classdr_1_1shp_1_1span.html | 173 ++ .../classdr_1_1shp_1_1span__coll__graph.map | 4 + .../classdr_1_1shp_1_1span__coll__graph.md5 | 1 + .../classdr_1_1shp_1_1span__coll__graph.png | Bin 0 -> 5566 bytes ...classdr_1_1shp_1_1span__inherit__graph.map | 5 + ...classdr_1_1shp_1_1span__inherit__graph.md5 | 1 + ...classdr_1_1shp_1_1span__inherit__graph.png | Bin 0 -> 8434 bytes ...ssdr_1_1shp_1_1sparse__matrix-members.html | 113 + doxygen/classdr_1_1shp_1_1sparse__matrix.html | 176 ++ doxygen/classdr_1_1shp_1_1vector-members.html | 129 ++ doxygen/classdr_1_1shp_1_1vector.html | 218 ++ ..._1enumerate__adapter__closure-members.html | 90 + ...1views_1_1enumerate__adapter__closure.html | 108 + ...p_1_1views_1_1enumerate__fn__-members.html | 90 + ...dr_1_1shp_1_1views_1_1enumerate__fn__.html | 102 + ...ws_1_1slice__adaptor__closure-members.html | 91 + ...p_1_1views_1_1slice__adaptor__closure.html | 110 + ...assdr_1_1shp_1_1zip__accessor-members.html | 107 + doxygen/classdr_1_1shp_1_1zip__accessor.html | 150 ++ .../classdr_1_1shp_1_1zip__view-members.html | 101 + doxygen/classdr_1_1shp_1_1zip__view.html | 169 ++ ...assdr_1_1shp_1_1zip__view__coll__graph.map | 4 + ...assdr_1_1shp_1_1zip__view__coll__graph.md5 | 1 + ...assdr_1_1shp_1_1zip__view__coll__graph.png | Bin 0 -> 5944 bytes ...dr_1_1shp_1_1zip__view__inherit__graph.map | 4 + ...dr_1_1shp_1_1zip__view__inherit__graph.md5 | 1 + ...dr_1_1shp_1_1zip__view__inherit__graph.png | Bin 0 -> 5944 bytes ...lassdr_1_1transform__iterator-members.html | 118 + doxygen/classdr_1_1transform__iterator.html | 187 ++ .../classdr_1_1transform__view-members.html | 95 + doxygen/classdr_1_1transform__view.html | 135 ++ ...lassdr_1_1transform__view__coll__graph.map | 4 + ...lassdr_1_1transform__view__coll__graph.md5 | 1 + ...lassdr_1_1transform__view__coll__graph.png | Bin 0 -> 6573 bytes ...sdr_1_1transform__view__inherit__graph.map | 4 + ...sdr_1_1transform__view__inherit__graph.md5 | 1 + ...sdr_1_1transform__view__inherit__graph.png | Bin 0 -> 6573 bytes ..._1transform__adapter__closure-members.html | 91 + ...1views_1_1transform__adapter__closure.html | 110 + ...r_1_1views_1_1transform__fn__-members.html | 90 + .../classdr_1_1views_1_1transform__fn__.html | 103 + doxygen/classes.html | 144 ++ doxygen/closed.png | Bin 0 -> 132 bytes doxygen/communicator_8hpp_source.html | 336 +++ doxygen/conceptdr_1_1TupleLike.html | 99 + ...eptdr_1_1_0d4_1_1TupleElementGettable.html | 91 + ...ptdr_1_1_0d5_1_1has__segments__method.html | 91 + ...nceptdr_1_1____detail_1_1mdspan__like.html | 92 + ..._1_1distributed__contiguous__iterator.html | 96 + ...tdr_1_1distributed__contiguous__range.html | 96 + .../conceptdr_1_1distributed__iterator.html | 91 + doxygen/conceptdr_1_1distributed__range.html | 90 + ...1mhp_1_1____detail_1_1is__distributed.html | 92 + ...1_1mhp_1_1____detail_1_1one__argument.html | 91 + ..._1mhp_1_1____detail_1_1two__arguments.html | 91 + ...eptdr_1_1mhp_1_1____detail_1_1zipable.html | 89 + ...conceptdr_1_1mhp_1_1has__halo__method.html | 92 + .../conceptdr_1_1mhp_1_1has__segments.html | 89 + .../conceptdr_1_1mhp_1_1is__mdspan__view.html | 91 + doxygen/conceptdr_1_1mhp_1_1no__segments.html | 90 + ...1_1ranges_1_1_0d13_1_1has__local__adl.html | 91 + ..._1_1ranges_1_1_0d13_1_1has__rank__adl.html | 91 + ...1ranges_1_1_0d13_1_1has__rank__method.html | 91 + ...ranges_1_1_0d13_1_1has__segments__adl.html | 92 + ...ges_1_1_0d13_1_1has__segments__method.html | 92 + ...1_1ranges_1_1_0d13_1_1is__localizable.html | 89 + ...1is__remote__iterator__shadow__impl__.html | 92 + ..._1_1_0d13_1_1iter__has__local__method.html | 92 + ...0d13_1_1remote__range__shadow__impl__.html | 90 + ...1_0d13_1_1segment__has__local__method.html | 92 + ...1_1ranges_1_1_0d13_1_1segments__range.html | 91 + ...1_1ranges_1_1____detail_1_1has__local.html | 91 + ...eptdr_1_1remote__contiguous__iterator.html | 93 + ...onceptdr_1_1remote__contiguous__range.html | 93 + doxygen/conceptdr_1_1remote__iterator.html | 90 + doxygen/conceptdr_1_1remote__range.html | 90 + ..._1_1____detail_1_1is__syclmemcopyable.html | 90 + ...1____detail_1_1sycl__device__selector.html | 91 + doxygen/concepts.html | 114 + doxygen/concepts_8hpp_source.html | 152 ++ doxygen/containers_2detail_8hpp_source.html | 113 + doxygen/coo__matrix_8hpp_source.html | 259 +++ doxygen/csr__matrix__view_8hpp_source.html | 316 +++ doxygen/dense__column__view_8hpp_source.html | 202 ++ doxygen/dense__matrix_8hpp_source.html | 232 ++ .../dense__matrix__iterator_8hpp_source.html | 199 ++ doxygen/dense__matrix__view_8hpp_source.html | 214 ++ doxygen/dense__row__view_8hpp_source.html | 200 ++ doxygen/detail_2enumerate_8hpp_source.html | 149 ++ doxygen/detail_8hpp_source.html | 177 ++ doxygen/device__ptr_8hpp_source.html | 231 ++ doxygen/device__ref_8hpp_source.html | 146 ++ doxygen/device__span_8hpp_source.html | 185 ++ doxygen/device__vector_8hpp_source.html | 124 + .../dir_14ee7c343b929a37ea63a8b178bcb898.html | 120 + ...r_14ee7c343b929a37ea63a8b178bcb898_dep.map | 4 + ...r_14ee7c343b929a37ea63a8b178bcb898_dep.md5 | 1 + ...r_14ee7c343b929a37ea63a8b178bcb898_dep.png | Bin 0 -> 2183 bytes .../dir_1cfe8e00bd9dfe72fc53a9846db2893f.html | 100 + ...r_1cfe8e00bd9dfe72fc53a9846db2893f_dep.map | 4 + ...r_1cfe8e00bd9dfe72fc53a9846db2893f_dep.md5 | 1 + ...r_1cfe8e00bd9dfe72fc53a9846db2893f_dep.png | Bin 0 -> 2268 bytes .../dir_323acea4eb551240b18003d2e88b28b7.html | 104 + ...r_323acea4eb551240b18003d2e88b28b7_dep.map | 4 + ...r_323acea4eb551240b18003d2e88b28b7_dep.md5 | 1 + ...r_323acea4eb551240b18003d2e88b28b7_dep.png | Bin 0 -> 1817 bytes .../dir_3e0780f9fd691ce6aa718969242efd7f.html | 101 + ...r_3e0780f9fd691ce6aa718969242efd7f_dep.map | 5 + ...r_3e0780f9fd691ce6aa718969242efd7f_dep.md5 | 1 + ...r_3e0780f9fd691ce6aa718969242efd7f_dep.png | Bin 0 -> 3943 bytes .../dir_4a11d3f5fb7a8fdc61e1e1f87277b621.html | 104 + ...r_4a11d3f5fb7a8fdc61e1e1f87277b621_dep.map | 4 + ...r_4a11d3f5fb7a8fdc61e1e1f87277b621_dep.md5 | 1 + ...r_4a11d3f5fb7a8fdc61e1e1f87277b621_dep.png | Bin 0 -> 1372 bytes .../dir_4c0da47f5488ee935cb4372f760579e2.html | 120 + ...r_4c0da47f5488ee935cb4372f760579e2_dep.map | 9 + ...r_4c0da47f5488ee935cb4372f760579e2_dep.md5 | 1 + ...r_4c0da47f5488ee935cb4372f760579e2_dep.png | Bin 0 -> 5000 bytes .../dir_5915a580df0ec2fa6a1c1b2debb4bdbd.html | 118 + ...r_5915a580df0ec2fa6a1c1b2debb4bdbd_dep.map | 7 + ...r_5915a580df0ec2fa6a1c1b2debb4bdbd_dep.md5 | 1 + ...r_5915a580df0ec2fa6a1c1b2debb4bdbd_dep.png | Bin 0 -> 4323 bytes .../dir_6619e339e135944080d183968eaad8ad.html | 108 + ...r_6619e339e135944080d183968eaad8ad_dep.map | 4 + ...r_6619e339e135944080d183968eaad8ad_dep.md5 | 1 + ...r_6619e339e135944080d183968eaad8ad_dep.png | Bin 0 -> 2209 bytes .../dir_73601acfd5a2822dd473820b789b56e4.html | 140 ++ ...r_73601acfd5a2822dd473820b789b56e4_dep.map | 4 + ...r_73601acfd5a2822dd473820b789b56e4_dep.md5 | 1 + ...r_73601acfd5a2822dd473820b789b56e4_dep.png | Bin 0 -> 1480 bytes .../dir_773570e071a7f6eb5f21c8991c43558c.html | 112 + ...r_773570e071a7f6eb5f21c8991c43558c_dep.map | 4 + ...r_773570e071a7f6eb5f21c8991c43558c_dep.md5 | 1 + ...r_773570e071a7f6eb5f21c8991c43558c_dep.png | Bin 0 -> 1996 bytes .../dir_a385eca21dc3d8045dcdc4e17916b108.html | 100 + ...r_a385eca21dc3d8045dcdc4e17916b108_dep.map | 4 + ...r_a385eca21dc3d8045dcdc4e17916b108_dep.md5 | 1 + ...r_a385eca21dc3d8045dcdc4e17916b108_dep.png | Bin 0 -> 2538 bytes .../dir_aa3ba46e7b5e341940d314e57af78bea.html | 145 ++ ...r_aa3ba46e7b5e341940d314e57af78bea_dep.map | 8 + ...r_aa3ba46e7b5e341940d314e57af78bea_dep.md5 | 1 + ...r_aa3ba46e7b5e341940d314e57af78bea_dep.png | Bin 0 -> 4588 bytes .../dir_ad1fcb57fe88fc977cd33acae3e499c7.html | 126 ++ ...r_ad1fcb57fe88fc977cd33acae3e499c7_dep.map | 5 + ...r_ad1fcb57fe88fc977cd33acae3e499c7_dep.md5 | 1 + ...r_ad1fcb57fe88fc977cd33acae3e499c7_dep.png | Bin 0 -> 3461 bytes .../dir_b55ceb0166778f6f645d8761656b8ad8.html | 114 + ...r_b55ceb0166778f6f645d8761656b8ad8_dep.map | 4 + ...r_b55ceb0166778f6f645d8761656b8ad8_dep.md5 | 1 + ...r_b55ceb0166778f6f645d8761656b8ad8_dep.png | Bin 0 -> 1962 bytes .../dir_c8b8cfb288a36c9e6df9dd28eaffc0ac.html | 108 + ...r_c8b8cfb288a36c9e6df9dd28eaffc0ac_dep.map | 4 + ...r_c8b8cfb288a36c9e6df9dd28eaffc0ac_dep.md5 | 1 + ...r_c8b8cfb288a36c9e6df9dd28eaffc0ac_dep.png | Bin 0 -> 2318 bytes .../dir_ce06eccc165702df51b9ab16680c58ae.html | 116 + ...r_ce06eccc165702df51b9ab16680c58ae_dep.map | 5 + ...r_ce06eccc165702df51b9ab16680c58ae_dep.md5 | 1 + ...r_ce06eccc165702df51b9ab16680c58ae_dep.png | Bin 0 -> 3798 bytes .../dir_d44c64559bbebec7f509842c48db8b23.html | 91 + .../dir_d7c528dc6ed0943eef8ba09c0b02746e.html | 100 + ...r_d7c528dc6ed0943eef8ba09c0b02746e_dep.map | 4 + ...r_d7c528dc6ed0943eef8ba09c0b02746e_dep.md5 | 1 + ...r_d7c528dc6ed0943eef8ba09c0b02746e_dep.png | Bin 0 -> 2047 bytes ...istributed__dense__matrix_8hpp_source.html | 431 ++++ doxygen/distributed__mdarray_8hpp_source.html | 184 ++ doxygen/distributed__span_8hpp_source.html | 347 +++ doxygen/distribution_8hpp_source.html | 133 ++ doxygen/doc.png | Bin 0 -> 746 bytes doxygen/docd.png | Bin 0 -> 756 bytes doxygen/doxygen.css | 2007 +++++++++++++++++ doxygen/doxygen.svg | 26 + doxygen/duplicated__vector_8hpp_source.html | 135 ++ doxygen/dynsections.js | 123 + doxygen/execution__policy_8hpp_source.html | 120 + doxygen/files.html | 208 ++ doxygen/folderclosed.png | Bin 0 -> 616 bytes doxygen/folderopen.png | Bin 0 -> 597 bytes doxygen/format__shim_8hpp_source.html | 98 + doxygen/functions.html | 92 + doxygen/functions_func.html | 92 + doxygen/future_8hpp_source.html | 134 ++ doxygen/gemm_8hpp_source.html | 333 +++ doxygen/gemv_8hpp_source.html | 299 +++ doxygen/generate__random_8hpp_source.html | 178 ++ doxygen/global_8hpp_source.html | 334 +++ doxygen/graph_legend.html | 141 ++ doxygen/graph_legend.md5 | 1 + doxygen/graph_legend.png | Bin 0 -> 20093 bytes doxygen/halo_8hpp_source.html | 523 +++++ doxygen/hierarchy.html | 229 ++ ...ve__exclusive__scan__impl_8hpp_source.html | 278 +++ doxygen/index.html | 81 + doxygen/index_8hpp_source.html | 210 ++ doxygen/inherit_graph_0.map | 4 + doxygen/inherit_graph_0.md5 | 1 + doxygen/inherit_graph_0.png | Bin 0 -> 6211 bytes doxygen/inherit_graph_1.map | 3 + doxygen/inherit_graph_1.md5 | 1 + doxygen/inherit_graph_1.png | Bin 0 -> 2162 bytes doxygen/inherit_graph_10.map | 3 + doxygen/inherit_graph_10.md5 | 1 + doxygen/inherit_graph_10.png | Bin 0 -> 1431 bytes doxygen/inherit_graph_11.map | 3 + doxygen/inherit_graph_11.md5 | 1 + doxygen/inherit_graph_11.png | Bin 0 -> 2358 bytes doxygen/inherit_graph_12.map | 3 + doxygen/inherit_graph_12.md5 | 1 + doxygen/inherit_graph_12.png | Bin 0 -> 1077 bytes doxygen/inherit_graph_13.map | 3 + doxygen/inherit_graph_13.md5 | 1 + doxygen/inherit_graph_13.png | Bin 0 -> 2303 bytes doxygen/inherit_graph_14.map | 3 + doxygen/inherit_graph_14.md5 | 1 + doxygen/inherit_graph_14.png | Bin 0 -> 1647 bytes doxygen/inherit_graph_15.map | 3 + doxygen/inherit_graph_15.md5 | 1 + doxygen/inherit_graph_15.png | Bin 0 -> 2374 bytes doxygen/inherit_graph_16.map | 3 + doxygen/inherit_graph_16.md5 | 1 + doxygen/inherit_graph_16.png | Bin 0 -> 1868 bytes doxygen/inherit_graph_17.map | 3 + doxygen/inherit_graph_17.md5 | 1 + doxygen/inherit_graph_17.png | Bin 0 -> 2857 bytes doxygen/inherit_graph_18.map | 3 + doxygen/inherit_graph_18.md5 | 1 + doxygen/inherit_graph_18.png | Bin 0 -> 2565 bytes doxygen/inherit_graph_19.map | 3 + doxygen/inherit_graph_19.md5 | 1 + doxygen/inherit_graph_19.png | Bin 0 -> 2822 bytes doxygen/inherit_graph_2.map | 3 + doxygen/inherit_graph_2.md5 | 1 + doxygen/inherit_graph_2.png | Bin 0 -> 2426 bytes doxygen/inherit_graph_20.map | 3 + doxygen/inherit_graph_20.md5 | 1 + doxygen/inherit_graph_20.png | Bin 0 -> 1552 bytes doxygen/inherit_graph_21.map | 3 + doxygen/inherit_graph_21.md5 | 1 + doxygen/inherit_graph_21.png | Bin 0 -> 2565 bytes doxygen/inherit_graph_22.map | 3 + doxygen/inherit_graph_22.md5 | 1 + doxygen/inherit_graph_22.png | Bin 0 -> 3003 bytes doxygen/inherit_graph_23.map | 3 + doxygen/inherit_graph_23.md5 | 1 + doxygen/inherit_graph_23.png | Bin 0 -> 2894 bytes doxygen/inherit_graph_24.map | 3 + doxygen/inherit_graph_24.md5 | 1 + doxygen/inherit_graph_24.png | Bin 0 -> 1610 bytes doxygen/inherit_graph_25.map | 5 + doxygen/inherit_graph_25.md5 | 1 + doxygen/inherit_graph_25.png | Bin 0 -> 9033 bytes doxygen/inherit_graph_26.map | 3 + doxygen/inherit_graph_26.md5 | 1 + doxygen/inherit_graph_26.png | Bin 0 -> 2516 bytes doxygen/inherit_graph_27.map | 3 + doxygen/inherit_graph_27.md5 | 1 + doxygen/inherit_graph_27.png | Bin 0 -> 2263 bytes doxygen/inherit_graph_28.map | 3 + doxygen/inherit_graph_28.md5 | 1 + doxygen/inherit_graph_28.png | Bin 0 -> 2723 bytes doxygen/inherit_graph_29.map | 3 + doxygen/inherit_graph_29.md5 | 1 + doxygen/inherit_graph_29.png | Bin 0 -> 2396 bytes doxygen/inherit_graph_3.map | 3 + doxygen/inherit_graph_3.md5 | 1 + doxygen/inherit_graph_3.png | Bin 0 -> 1595 bytes doxygen/inherit_graph_30.map | 3 + doxygen/inherit_graph_30.md5 | 1 + doxygen/inherit_graph_30.png | Bin 0 -> 2885 bytes doxygen/inherit_graph_31.map | 3 + doxygen/inherit_graph_31.md5 | 1 + doxygen/inherit_graph_31.png | Bin 0 -> 2782 bytes doxygen/inherit_graph_32.map | 3 + doxygen/inherit_graph_32.md5 | 1 + doxygen/inherit_graph_32.png | Bin 0 -> 3997 bytes doxygen/inherit_graph_33.map | 3 + doxygen/inherit_graph_33.md5 | 1 + doxygen/inherit_graph_33.png | Bin 0 -> 2907 bytes doxygen/inherit_graph_34.map | 3 + doxygen/inherit_graph_34.md5 | 1 + doxygen/inherit_graph_34.png | Bin 0 -> 2853 bytes doxygen/inherit_graph_35.map | 3 + doxygen/inherit_graph_35.md5 | 1 + doxygen/inherit_graph_35.png | Bin 0 -> 3036 bytes doxygen/inherit_graph_36.map | 3 + doxygen/inherit_graph_36.md5 | 1 + doxygen/inherit_graph_36.png | Bin 0 -> 3036 bytes doxygen/inherit_graph_37.map | 3 + doxygen/inherit_graph_37.md5 | 1 + doxygen/inherit_graph_37.png | Bin 0 -> 2595 bytes doxygen/inherit_graph_38.map | 3 + doxygen/inherit_graph_38.md5 | 1 + doxygen/inherit_graph_38.png | Bin 0 -> 2896 bytes doxygen/inherit_graph_39.map | 3 + doxygen/inherit_graph_39.md5 | 1 + doxygen/inherit_graph_39.png | Bin 0 -> 2226 bytes doxygen/inherit_graph_4.map | 3 + doxygen/inherit_graph_4.md5 | 1 + doxygen/inherit_graph_4.png | Bin 0 -> 2696 bytes doxygen/inherit_graph_40.map | 3 + doxygen/inherit_graph_40.md5 | 1 + doxygen/inherit_graph_40.png | Bin 0 -> 3423 bytes doxygen/inherit_graph_41.map | 3 + doxygen/inherit_graph_41.md5 | 1 + doxygen/inherit_graph_41.png | Bin 0 -> 2025 bytes doxygen/inherit_graph_42.map | 3 + doxygen/inherit_graph_42.md5 | 1 + doxygen/inherit_graph_42.png | Bin 0 -> 3481 bytes doxygen/inherit_graph_43.map | 3 + doxygen/inherit_graph_43.md5 | 1 + doxygen/inherit_graph_43.png | Bin 0 -> 2153 bytes doxygen/inherit_graph_44.map | 3 + doxygen/inherit_graph_44.md5 | 1 + doxygen/inherit_graph_44.png | Bin 0 -> 2947 bytes doxygen/inherit_graph_45.map | 3 + doxygen/inherit_graph_45.md5 | 1 + doxygen/inherit_graph_45.png | Bin 0 -> 2926 bytes doxygen/inherit_graph_46.map | 3 + doxygen/inherit_graph_46.md5 | 1 + doxygen/inherit_graph_46.png | Bin 0 -> 2053 bytes doxygen/inherit_graph_47.map | 3 + doxygen/inherit_graph_47.md5 | 1 + doxygen/inherit_graph_47.png | Bin 0 -> 1394 bytes doxygen/inherit_graph_48.map | 3 + doxygen/inherit_graph_48.md5 | 1 + doxygen/inherit_graph_48.png | Bin 0 -> 3060 bytes doxygen/inherit_graph_49.map | 3 + doxygen/inherit_graph_49.md5 | 1 + doxygen/inherit_graph_49.png | Bin 0 -> 2813 bytes doxygen/inherit_graph_5.map | 3 + doxygen/inherit_graph_5.md5 | 1 + doxygen/inherit_graph_5.png | Bin 0 -> 1446 bytes doxygen/inherit_graph_50.map | 3 + doxygen/inherit_graph_50.md5 | 1 + doxygen/inherit_graph_50.png | Bin 0 -> 2591 bytes doxygen/inherit_graph_51.map | 3 + doxygen/inherit_graph_51.md5 | 1 + doxygen/inherit_graph_51.png | Bin 0 -> 2804 bytes doxygen/inherit_graph_52.map | 3 + doxygen/inherit_graph_52.md5 | 1 + doxygen/inherit_graph_52.png | Bin 0 -> 3477 bytes doxygen/inherit_graph_53.map | 3 + doxygen/inherit_graph_53.md5 | 1 + doxygen/inherit_graph_53.png | Bin 0 -> 2909 bytes doxygen/inherit_graph_54.map | 3 + doxygen/inherit_graph_54.md5 | 1 + doxygen/inherit_graph_54.png | Bin 0 -> 2806 bytes doxygen/inherit_graph_55.map | 3 + doxygen/inherit_graph_55.md5 | 1 + doxygen/inherit_graph_55.png | Bin 0 -> 3172 bytes doxygen/inherit_graph_56.map | 3 + doxygen/inherit_graph_56.md5 | 1 + doxygen/inherit_graph_56.png | Bin 0 -> 3348 bytes doxygen/inherit_graph_57.map | 3 + doxygen/inherit_graph_57.md5 | 1 + doxygen/inherit_graph_57.png | Bin 0 -> 3076 bytes doxygen/inherit_graph_58.map | 3 + doxygen/inherit_graph_58.md5 | 1 + doxygen/inherit_graph_58.png | Bin 0 -> 3061 bytes doxygen/inherit_graph_59.map | 3 + doxygen/inherit_graph_59.md5 | 1 + doxygen/inherit_graph_59.png | Bin 0 -> 3072 bytes doxygen/inherit_graph_6.map | 3 + doxygen/inherit_graph_6.md5 | 1 + doxygen/inherit_graph_6.png | Bin 0 -> 2137 bytes doxygen/inherit_graph_60.map | 3 + doxygen/inherit_graph_60.md5 | 1 + doxygen/inherit_graph_60.png | Bin 0 -> 3432 bytes doxygen/inherit_graph_61.map | 3 + doxygen/inherit_graph_61.md5 | 1 + doxygen/inherit_graph_61.png | Bin 0 -> 1905 bytes doxygen/inherit_graph_62.map | 3 + doxygen/inherit_graph_62.md5 | 1 + doxygen/inherit_graph_62.png | Bin 0 -> 2013 bytes doxygen/inherit_graph_63.map | 3 + doxygen/inherit_graph_63.md5 | 1 + doxygen/inherit_graph_63.png | Bin 0 -> 2030 bytes doxygen/inherit_graph_64.map | 3 + doxygen/inherit_graph_64.md5 | 1 + doxygen/inherit_graph_64.png | Bin 0 -> 2595 bytes doxygen/inherit_graph_65.map | 3 + doxygen/inherit_graph_65.md5 | 1 + doxygen/inherit_graph_65.png | Bin 0 -> 3209 bytes doxygen/inherit_graph_66.map | 3 + doxygen/inherit_graph_66.md5 | 1 + doxygen/inherit_graph_66.png | Bin 0 -> 3320 bytes doxygen/inherit_graph_67.map | 3 + doxygen/inherit_graph_67.md5 | 1 + doxygen/inherit_graph_67.png | Bin 0 -> 2769 bytes doxygen/inherit_graph_68.map | 3 + doxygen/inherit_graph_68.md5 | 1 + doxygen/inherit_graph_68.png | Bin 0 -> 2924 bytes doxygen/inherit_graph_69.map | 3 + doxygen/inherit_graph_69.md5 | 1 + doxygen/inherit_graph_69.png | Bin 0 -> 2871 bytes doxygen/inherit_graph_7.map | 3 + doxygen/inherit_graph_7.md5 | 1 + doxygen/inherit_graph_7.png | Bin 0 -> 1408 bytes doxygen/inherit_graph_70.map | 3 + doxygen/inherit_graph_70.md5 | 1 + doxygen/inherit_graph_70.png | Bin 0 -> 2930 bytes doxygen/inherit_graph_71.map | 3 + doxygen/inherit_graph_71.md5 | 1 + doxygen/inherit_graph_71.png | Bin 0 -> 2285 bytes doxygen/inherit_graph_72.map | 3 + doxygen/inherit_graph_72.md5 | 1 + doxygen/inherit_graph_72.png | Bin 0 -> 1986 bytes doxygen/inherit_graph_73.map | 3 + doxygen/inherit_graph_73.md5 | 1 + doxygen/inherit_graph_73.png | Bin 0 -> 2468 bytes doxygen/inherit_graph_74.map | 4 + doxygen/inherit_graph_74.md5 | 1 + doxygen/inherit_graph_74.png | Bin 0 -> 2977 bytes doxygen/inherit_graph_75.map | 3 + doxygen/inherit_graph_75.md5 | 1 + doxygen/inherit_graph_75.png | Bin 0 -> 2627 bytes doxygen/inherit_graph_76.map | 3 + doxygen/inherit_graph_76.md5 | 1 + doxygen/inherit_graph_76.png | Bin 0 -> 2605 bytes doxygen/inherit_graph_77.map | 3 + doxygen/inherit_graph_77.md5 | 1 + doxygen/inherit_graph_77.png | Bin 0 -> 2316 bytes doxygen/inherit_graph_78.map | 3 + doxygen/inherit_graph_78.md5 | 1 + doxygen/inherit_graph_78.png | Bin 0 -> 2321 bytes doxygen/inherit_graph_79.map | 4 + doxygen/inherit_graph_79.md5 | 1 + doxygen/inherit_graph_79.png | Bin 0 -> 3485 bytes doxygen/inherit_graph_8.map | 3 + doxygen/inherit_graph_8.md5 | 1 + doxygen/inherit_graph_8.png | Bin 0 -> 2075 bytes doxygen/inherit_graph_80.map | 3 + doxygen/inherit_graph_80.md5 | 1 + doxygen/inherit_graph_80.png | Bin 0 -> 2603 bytes doxygen/inherit_graph_81.map | 3 + doxygen/inherit_graph_81.md5 | 1 + doxygen/inherit_graph_81.png | Bin 0 -> 2889 bytes doxygen/inherit_graph_82.map | 3 + doxygen/inherit_graph_82.md5 | 1 + doxygen/inherit_graph_82.png | Bin 0 -> 2235 bytes doxygen/inherit_graph_83.map | 3 + doxygen/inherit_graph_83.md5 | 1 + doxygen/inherit_graph_83.png | Bin 0 -> 2618 bytes doxygen/inherit_graph_84.map | 3 + doxygen/inherit_graph_84.md5 | 1 + doxygen/inherit_graph_84.png | Bin 0 -> 2597 bytes doxygen/inherit_graph_85.map | 3 + doxygen/inherit_graph_85.md5 | 1 + doxygen/inherit_graph_85.png | Bin 0 -> 2539 bytes doxygen/inherit_graph_86.map | 3 + doxygen/inherit_graph_86.md5 | 1 + doxygen/inherit_graph_86.png | Bin 0 -> 1898 bytes doxygen/inherit_graph_87.map | 3 + doxygen/inherit_graph_87.md5 | 1 + doxygen/inherit_graph_87.png | Bin 0 -> 3212 bytes doxygen/inherit_graph_88.map | 3 + doxygen/inherit_graph_88.md5 | 1 + doxygen/inherit_graph_88.png | Bin 0 -> 2058 bytes doxygen/inherit_graph_89.map | 4 + doxygen/inherit_graph_89.md5 | 1 + doxygen/inherit_graph_89.png | Bin 0 -> 4209 bytes doxygen/inherit_graph_9.map | 3 + doxygen/inherit_graph_9.md5 | 1 + doxygen/inherit_graph_9.png | Bin 0 -> 1877 bytes doxygen/inherit_graph_90.map | 6 + doxygen/inherit_graph_90.md5 | 1 + doxygen/inherit_graph_90.png | Bin 0 -> 13578 bytes doxygen/inherit_graph_91.map | 4 + doxygen/inherit_graph_91.md5 | 1 + doxygen/inherit_graph_91.png | Bin 0 -> 4179 bytes doxygen/inherit_graph_92.map | 3 + doxygen/inherit_graph_92.md5 | 1 + doxygen/inherit_graph_92.png | Bin 0 -> 1718 bytes doxygen/inherit_graph_93.map | 4 + doxygen/inherit_graph_93.md5 | 1 + doxygen/inherit_graph_93.png | Bin 0 -> 4079 bytes doxygen/inherit_graph_94.map | 18 + doxygen/inherit_graph_94.md5 | 1 + doxygen/inherit_graph_94.png | Bin 0 -> 85037 bytes doxygen/inherit_graph_95.map | 11 + doxygen/inherit_graph_95.md5 | 1 + doxygen/inherit_graph_95.png | Bin 0 -> 31696 bytes doxygen/inherit_graph_96.map | 10 + doxygen/inherit_graph_96.md5 | 1 + doxygen/inherit_graph_96.png | Bin 0 -> 33776 bytes doxygen/inherit_graph_97.map | 6 + doxygen/inherit_graph_97.md5 | 1 + doxygen/inherit_graph_97.png | Bin 0 -> 12915 bytes doxygen/inherits.html | 619 +++++ doxygen/init_8hpp_source.html | 191 ++ doxygen/iterator__adaptor_8hpp_source.html | 287 +++ doxygen/jquery.js | 34 + doxygen/local__gemm_8hpp_source.html | 169 ++ doxygen/local__gemv_8hpp_source.html | 185 ++ doxygen/logger_8hpp_source.html | 148 ++ doxygen/matrix__algorithms_8hpp_source.html | 93 + doxygen/matrix__entry_8hpp_source.html | 320 +++ doxygen/matrix__io_8hpp_source.html | 376 +++ doxygen/matrix__partition_8hpp_source.html | 203 ++ doxygen/md__for__each_8hpp_source.html | 294 +++ doxygen/mdspan__shim_8hpp_source.html | 93 + doxygen/mdspan__utils_8hpp_source.html | 254 +++ doxygen/mdspan__view_8hpp_source.html | 353 +++ doxygen/memory_8hpp_source.html | 190 ++ doxygen/menu.js | 136 ++ doxygen/menudata.js | 36 + .../mhp_2algorithms_2copy_8hpp_source.html | 143 ++ ...gorithms_2exclusive__scan_8hpp_source.html | 136 ++ .../mhp_2algorithms_2fill_8hpp_source.html | 117 + ...hp_2algorithms_2for__each_8hpp_source.html | 140 ++ ...gorithms_2inclusive__scan_8hpp_source.html | 158 ++ .../mhp_2algorithms_2iota_8hpp_source.html | 120 + .../mhp_2algorithms_2reduce_8hpp_source.html | 292 +++ .../mhp_2algorithms_2sort_8hpp_source.html | 396 ++++ ...hp_2algorithms_2transform_8hpp_source.html | 127 ++ ...ners_2distributed__vector_8hpp_source.html | 292 +++ .../mhp_2views_2enumerate_8hpp_source.html | 144 ++ doxygen/mhp_2views_2views_8hpp_source.html | 173 ++ doxygen/mhp_8hpp_source.html | 157 ++ doxygen/nav_f.png | Bin 0 -> 153 bytes doxygen/nav_fd.png | Bin 0 -> 169 bytes doxygen/nav_g.png | Bin 0 -> 95 bytes doxygen/nav_h.png | Bin 0 -> 98 bytes doxygen/nav_hd.png | Bin 0 -> 114 bytes ...al__distributed__iterator_8hpp_source.html | 210 ++ .../onedpl__direct__iterator_8hpp_source.html | 197 ++ doxygen/open.png | Bin 0 -> 123 bytes doxygen/owning__view_8hpp_source.html | 155 ++ doxygen/range_8hpp_source.html | 241 ++ doxygen/range__adaptors_8hpp_source.html | 103 + doxygen/ranges_8hpp_source.html | 360 +++ doxygen/ranges__shim_8hpp_source.html | 112 + doxygen/ranges__utils_8hpp_source.html | 106 + doxygen/remote__subrange_8hpp_source.html | 140 ++ doxygen/search/all_0.js | 5 + doxygen/search/all_1.js | 6 + doxygen/search/all_10.js | 15 + doxygen/search/all_11.js | 4 + doxygen/search/all_12.js | 5 + doxygen/search/all_13.js | 6 + doxygen/search/all_2.js | 7 + doxygen/search/all_3.js | 64 + doxygen/search/all_4.js | 8 + doxygen/search/all_5.js | 5 + doxygen/search/all_6.js | 4 + doxygen/search/all_7.js | 5 + doxygen/search/all_8.js | 27 + doxygen/search/all_9.js | 5 + doxygen/search/all_a.js | 16 + doxygen/search/all_b.js | 4 + doxygen/search/all_c.js | 5 + doxygen/search/all_d.js | 4 + doxygen/search/all_e.js | 10 + doxygen/search/all_f.js | 22 + doxygen/search/classes_0.js | 5 + doxygen/search/classes_1.js | 5 + doxygen/search/classes_10.js | 15 + doxygen/search/classes_11.js | 4 + doxygen/search/classes_12.js | 5 + doxygen/search/classes_13.js | 6 + doxygen/search/classes_2.js | 7 + doxygen/search/classes_3.js | 31 + doxygen/search/classes_4.js | 5 + doxygen/search/classes_5.js | 5 + doxygen/search/classes_6.js | 4 + doxygen/search/classes_7.js | 5 + doxygen/search/classes_8.js | 27 + doxygen/search/classes_9.js | 5 + doxygen/search/classes_a.js | 16 + doxygen/search/classes_b.js | 4 + doxygen/search/classes_c.js | 4 + doxygen/search/classes_d.js | 4 + doxygen/search/classes_e.js | 8 + doxygen/search/classes_f.js | 21 + doxygen/search/close.svg | 31 + doxygen/search/concepts_0.js | 36 + doxygen/search/functions_0.js | 4 + doxygen/search/functions_1.js | 4 + doxygen/search/functions_2.js | 6 + doxygen/search/functions_3.js | 4 + doxygen/search/functions_4.js | 4 + doxygen/search/functions_5.js | 4 + doxygen/search/functions_6.js | 5 + doxygen/search/functions_7.js | 4 + doxygen/search/functions_8.js | 4 + doxygen/search/mag.svg | 37 + doxygen/search/mag_d.svg | 37 + doxygen/search/mag_sel.svg | 74 + doxygen/search/mag_seld.svg | 74 + doxygen/search/search.css | 291 +++ doxygen/search/search.js | 816 +++++++ doxygen/search/searchdata.js | 24 + doxygen/segment_8hpp_source.html | 351 +++ doxygen/segmented_8hpp_source.html | 182 ++ doxygen/segments__tools_8hpp_source.html | 228 ++ .../shp_2algorithms_2copy_8hpp_source.html | 304 +++ ...gorithms_2exclusive__scan_8hpp_source.html | 315 +++ .../shp_2algorithms_2fill_8hpp_source.html | 179 ++ ...hp_2algorithms_2for__each_8hpp_source.html | 142 ++ ...gorithms_2inclusive__scan_8hpp_source.html | 342 +++ .../shp_2algorithms_2iota_8hpp_source.html | 116 + .../shp_2algorithms_2reduce_8hpp_source.html | 256 +++ .../shp_2algorithms_2sort_8hpp_source.html | 374 +++ ...hp_2algorithms_2transform_8hpp_source.html | 168 ++ .../shp_2distributed__vector_8hpp_source.html | 296 +++ .../shp_2views_2enumerate_8hpp_source.html | 144 ++ doxygen/shp_2views_2views_8hpp_source.html | 111 + doxygen/shp_8hpp_source.html | 104 + doxygen/sliding_8hpp_source.html | 148 ++ doxygen/source__location_8hpp_source.html | 151 ++ doxygen/span_8hpp_source.html | 148 ++ doxygen/sparse__matrix_8hpp_source.html | 509 +++++ doxygen/splitbar.png | Bin 0 -> 314 bytes doxygen/splitbard.png | Bin 0 -> 282 bytes doxygen/standard__views_8hpp_source.html | 135 ++ .../structdr_1_1default__memory-members.html | 96 + doxygen/structdr_1_1default__memory.html | 130 ++ doxygen/structdr_1_1is__drop__view.html | 106 + ...3_01rng_1_1drop__view_3_01T_01_4_01_4.html | 106 + ...rop__view_3_01T_01_4_01_4__coll__graph.map | 4 + ...rop__view_3_01T_01_4_01_4__coll__graph.md5 | 1 + ...rop__view_3_01T_01_4_01_4__coll__graph.png | Bin 0 -> 4402 bytes ...__view_3_01T_01_4_01_4__inherit__graph.map | 4 + ...__view_3_01T_01_4_01_4__inherit__graph.md5 | 1 + ...__view_3_01T_01_4_01_4__inherit__graph.png | Bin 0 -> 4402 bytes ...tructdr_1_1is__drop__view__coll__graph.map | 4 + ...tructdr_1_1is__drop__view__coll__graph.md5 | 1 + ...tructdr_1_1is__drop__view__coll__graph.png | Bin 0 -> 4106 bytes ...ctdr_1_1is__drop__view__inherit__graph.map | 4 + ...ctdr_1_1is__drop__view__inherit__graph.md5 | 1 + ...ctdr_1_1is__drop__view__inherit__graph.png | Bin 0 -> 4106 bytes doxygen/structdr_1_1is__iota__view.html | 106 + ...3_01rng_1_1iota__view_3_01W_01_4_01_4.html | 106 + ...ota__view_3_01W_01_4_01_4__coll__graph.map | 4 + ...ota__view_3_01W_01_4_01_4__coll__graph.md5 | 1 + ...ota__view_3_01W_01_4_01_4__coll__graph.png | Bin 0 -> 4953 bytes ...__view_3_01W_01_4_01_4__inherit__graph.map | 4 + ...__view_3_01W_01_4_01_4__inherit__graph.md5 | 1 + ...__view_3_01W_01_4_01_4__inherit__graph.png | Bin 0 -> 4953 bytes ...tructdr_1_1is__iota__view__coll__graph.map | 4 + ...tructdr_1_1is__iota__view__coll__graph.md5 | 1 + ...tructdr_1_1is__iota__view__coll__graph.png | Bin 0 -> 4167 bytes ...ctdr_1_1is__iota__view__inherit__graph.map | 4 + ...ctdr_1_1is__iota__view__inherit__graph.md5 | 1 + ...ctdr_1_1is__iota__view__inherit__graph.png | Bin 0 -> 4167 bytes doxygen/structdr_1_1is__owning__view.html | 106 + ...uctdr_1_1is__owning__view__coll__graph.map | 4 + ...uctdr_1_1is__owning__view__coll__graph.md5 | 1 + ...uctdr_1_1is__owning__view__coll__graph.png | Bin 0 -> 4256 bytes ...dr_1_1is__owning__view__inherit__graph.map | 4 + ...dr_1_1is__owning__view__inherit__graph.md5 | 1 + ...dr_1_1is__owning__view__inherit__graph.png | Bin 0 -> 4256 bytes doxygen/structdr_1_1is__ref__view.html | 106 + ..._3_01rng_1_1ref__view_3_01R_01_4_01_4.html | 106 + ...ref__view_3_01R_01_4_01_4__coll__graph.map | 4 + ...ref__view_3_01R_01_4_01_4__coll__graph.md5 | 1 + ...ref__view_3_01R_01_4_01_4__coll__graph.png | Bin 0 -> 4680 bytes ...__view_3_01R_01_4_01_4__inherit__graph.map | 4 + ...__view_3_01R_01_4_01_4__inherit__graph.md5 | 1 + ...__view_3_01R_01_4_01_4__inherit__graph.png | Bin 0 -> 4680 bytes ...structdr_1_1is__ref__view__coll__graph.map | 4 + ...structdr_1_1is__ref__view__coll__graph.md5 | 1 + ...structdr_1_1is__ref__view__coll__graph.png | Bin 0 -> 3904 bytes ...uctdr_1_1is__ref__view__inherit__graph.map | 4 + ...uctdr_1_1is__ref__view__inherit__graph.md5 | 1 + ...uctdr_1_1is__ref__view__inherit__graph.png | Bin 0 -> 3904 bytes doxygen/structdr_1_1is__sliding__view.html | 106 + ...1rng_1_1sliding__view_3_01T_01_4_01_4.html | 106 + ...ing__view_3_01T_01_4_01_4__coll__graph.map | 4 + ...ing__view_3_01T_01_4_01_4__coll__graph.md5 | 1 + ...ing__view_3_01T_01_4_01_4__coll__graph.png | Bin 0 -> 4289 bytes ...__view_3_01T_01_4_01_4__inherit__graph.map | 4 + ...__view_3_01T_01_4_01_4__inherit__graph.md5 | 1 + ...__view_3_01T_01_4_01_4__inherit__graph.png | Bin 0 -> 4289 bytes ...ctdr_1_1is__sliding__view__coll__graph.map | 4 + ...ctdr_1_1is__sliding__view__coll__graph.md5 | 1 + ...ctdr_1_1is__sliding__view__coll__graph.png | Bin 0 -> 4106 bytes ...r_1_1is__sliding__view__inherit__graph.map | 4 + ...r_1_1is__sliding__view__inherit__graph.md5 | 1 + ...r_1_1is__sliding__view__inherit__graph.png | Bin 0 -> 4106 bytes doxygen/structdr_1_1is__subrange__view.html | 106 + ...w_3_01rng_1_1subrange_3_01T_01_4_01_4.html | 106 + ...1subrange_3_01T_01_4_01_4__coll__graph.map | 4 + ...1subrange_3_01T_01_4_01_4__coll__graph.md5 | 1 + ...1subrange_3_01T_01_4_01_4__coll__graph.png | Bin 0 -> 4587 bytes ...brange_3_01T_01_4_01_4__inherit__graph.map | 4 + ...brange_3_01T_01_4_01_4__inherit__graph.md5 | 1 + ...brange_3_01T_01_4_01_4__inherit__graph.png | Bin 0 -> 4587 bytes ...tdr_1_1is__subrange__view__coll__graph.map | 4 + ...tdr_1_1is__subrange__view__coll__graph.md5 | 1 + ...tdr_1_1is__subrange__view__coll__graph.png | Bin 0 -> 4444 bytes ..._1_1is__subrange__view__inherit__graph.map | 4 + ..._1_1is__subrange__view__inherit__graph.md5 | 1 + ..._1_1is__subrange__view__inherit__graph.png | Bin 0 -> 4444 bytes doxygen/structdr_1_1is__take__view.html | 106 + ...3_01rng_1_1take__view_3_01T_01_4_01_4.html | 106 + ...ake__view_3_01T_01_4_01_4__coll__graph.map | 4 + ...ake__view_3_01T_01_4_01_4__coll__graph.md5 | 1 + ...ake__view_3_01T_01_4_01_4__coll__graph.png | Bin 0 -> 4473 bytes ...__view_3_01T_01_4_01_4__inherit__graph.map | 4 + ...__view_3_01T_01_4_01_4__inherit__graph.md5 | 1 + ...__view_3_01T_01_4_01_4__inherit__graph.png | Bin 0 -> 4473 bytes ...tructdr_1_1is__take__view__coll__graph.map | 4 + ...tructdr_1_1is__take__view__coll__graph.md5 | 1 + ...tructdr_1_1is__take__view__coll__graph.png | Bin 0 -> 4092 bytes ...ctdr_1_1is__take__view__inherit__graph.map | 4 + ...ctdr_1_1is__take__view__inherit__graph.md5 | 1 + ...ctdr_1_1is__take__view__inherit__graph.png | Bin 0 -> 4092 bytes doxygen/structdr_1_1is__zip__view.html | 106 + ..._1zip__view_3_01Views_8_8_8_01_4_01_4.html | 106 + ...3_01Views_8_8_8_01_4_01_4__coll__graph.map | 4 + ...3_01Views_8_8_8_01_4_01_4__coll__graph.md5 | 1 + ...3_01Views_8_8_8_01_4_01_4__coll__graph.png | Bin 0 -> 4810 bytes ...1Views_8_8_8_01_4_01_4__inherit__graph.map | 4 + ...1Views_8_8_8_01_4_01_4__inherit__graph.md5 | 1 + ...1Views_8_8_8_01_4_01_4__inherit__graph.png | Bin 0 -> 4810 bytes ...structdr_1_1is__zip__view__coll__graph.map | 4 + ...structdr_1_1is__zip__view__coll__graph.md5 | 1 + ...structdr_1_1is__zip__view__coll__graph.png | Bin 0 -> 4012 bytes ...uctdr_1_1is__zip__view__inherit__graph.map | 4 + ...uctdr_1_1is__zip__view__inherit__graph.md5 | 1 + ...uctdr_1_1is__zip__view__inherit__graph.png | Bin 0 -> 4012 bytes ...r_1_1mhp_1_1____detail_1_1any-members.html | 89 + .../structdr_1_1mhp_1_1____detail_1_1any.html | 99 + ...____detail_1_1global__context-members.html | 97 + ...1mhp_1_1____detail_1_1global__context.html | 134 ++ ...detail_1_1global__context__coll__graph.map | 5 + ...detail_1_1global__context__coll__graph.md5 | 1 + ...detail_1_1global__context__coll__graph.png | Bin 0 -> 7177 bytes .../structdr_1_1mhp_1_1device__policy.html | 88 + ...ructdr_1_1mhp_1_1distribution-members.html | 95 + doxygen/structdr_1_1mhp_1_1distribution.html | 116 + ...ructdr_1_1mhp_1_1halo__bounds-members.html | 91 + doxygen/structdr_1_1mhp_1_1halo__bounds.html | 104 + ...1mhp_1_1halo__impl_1_1max__op-members.html | 89 + ...uctdr_1_1mhp_1_1halo__impl_1_1max__op.html | 98 + ...1mhp_1_1halo__impl_1_1min__op-members.html | 89 + ...uctdr_1_1mhp_1_1halo__impl_1_1min__op.html | 98 + ...1halo__impl_1_1multiplies__op-members.html | 89 + ..._1mhp_1_1halo__impl_1_1multiplies__op.html | 98 + ...mhp_1_1halo__impl_1_1plus__op-members.html | 89 + ...ctdr_1_1mhp_1_1halo__impl_1_1plus__op.html | 98 + ...p_1_1halo__impl_1_1second__op-members.html | 89 + ...dr_1_1mhp_1_1halo__impl_1_1second__op.html | 98 + ...ructdr_1_1mhp_1_1mdspan__view-members.html | 97 + doxygen/structdr_1_1mhp_1_1mdspan__view.html | 144 ++ ...dr_1_1mhp_1_1mdspan__view__coll__graph.map | 4 + ...dr_1_1mhp_1_1mdspan__view__coll__graph.md5 | 1 + ...dr_1_1mhp_1_1mdspan__view__coll__graph.png | Bin 0 -> 7289 bytes ...1_1mhp_1_1mdspan__view__inherit__graph.map | 4 + ...1_1mhp_1_1mdspan__view__inherit__graph.md5 | 1 + ...1_1mhp_1_1mdspan__view__inherit__graph.png | Bin 0 -> 7289 bytes ...tdr_1_1mhp_1_1submdspan__view-members.html | 95 + .../structdr_1_1mhp_1_1submdspan__view.html | 134 ++ ...1_1mhp_1_1submdspan__view__coll__graph.map | 4 + ...1_1mhp_1_1submdspan__view__coll__graph.md5 | 1 + ...1_1mhp_1_1submdspan__view__coll__graph.png | Bin 0 -> 6823 bytes ...mhp_1_1submdspan__view__inherit__graph.map | 4 + ...mhp_1_1submdspan__view__inherit__graph.md5 | 1 + ...mhp_1_1submdspan__view__inherit__graph.png | Bin 0 -> 6823 bytes ..._1_1____detail_1_1range__size-members.html | 89 + ...1_1views_1_1____detail_1_1range__size.html | 98 + ...ail_1_1range__size_3_01R_01_4-members.html | 89 + ...1____detail_1_1range__size_3_01R_01_4.html | 98 + ..._1_1____detail_1_1sliding__fn-members.html | 89 + ...1_1views_1_1____detail_1_1sliding__fn.html | 100 + ..._1_1____detail_1_1local__fn__-members.html | 90 + ..._1ranges_1_1____detail_1_1local__fn__.html | 104 + ...____detail_1_1tuple__or__pair-members.html | 89 + ...1shp_1_1____detail_1_1tuple__or__pair.html | 98 + ...e__or__pair_3_01T_00_01U_01_4-members.html | 89 + ..._1_1tuple__or__pair_3_01T_00_01U_01_4.html | 98 + ..._1device__allocator_1_1rebind-members.html | 89 + ...1_1shp_1_1device__allocator_1_1rebind.html | 98 + ...ctdr_1_1shp_1_1device__policy-members.html | 94 + .../structdr_1_1shp_1_1device__policy.html | 112 + ...1_1shp_1_1distributed__vector-members.html | 112 + ...tructdr_1_1shp_1_1distributed__vector.html | 179 ++ ...ructdr_1_1views_1_1iota__fn__-members.html | 90 + doxygen/structdr_1_1views_1_1iota__fn__.html | 103 + ...ter_3_01Mdspan_00_01char_01_4-members.html | 90 + ..._1formatter_3_01Mdspan_00_01char_01_4.html | 120 + ...3_01Mdspan_00_01char_01_4__coll__graph.map | 4 + ...3_01Mdspan_00_01char_01_4__coll__graph.md5 | 1 + ...3_01Mdspan_00_01char_01_4__coll__graph.png | Bin 0 -> 5605 bytes ...1Mdspan_00_01char_01_4__inherit__graph.map | 4 + ...1Mdspan_00_01char_01_4__inherit__graph.md5 | 1 + ...1Mdspan_00_01char_01_4__inherit__graph.png | Bin 0 -> 5605 bytes ...ructnostd_1_1source__location-members.html | 95 + doxygen/structnostd_1_1source__location.html | 120 + ...ndex_00_01dr_1_1index_3_01I_01_4_01_4.html | 106 + ..._1_1index_3_01I_01_4_01_4__coll__graph.map | 4 + ..._1_1index_3_01I_01_4_01_4__coll__graph.md5 | 1 + ..._1_1index_3_01I_01_4_01_4__coll__graph.png | Bin 0 -> 5341 bytes ...1index_3_01I_01_4_01_4__inherit__graph.map | 4 + ...1index_3_01I_01_4_01_4__inherit__graph.md5 | 1 + ...1index_3_01I_01_4_01_4__inherit__graph.png | Bin 0 -> 5341 bytes ...1matrix__entry_3_01T_00_01I_01_4_01_4.html | 106 + ...ry_3_01T_00_01I_01_4_01_4__coll__graph.map | 4 + ...ry_3_01T_00_01I_01_4_01_4__coll__graph.md5 | 1 + ...ry_3_01T_00_01I_01_4_01_4__coll__graph.png | Bin 0 -> 6492 bytes ...3_01T_00_01I_01_4_01_4__inherit__graph.map | 4 + ...3_01T_00_01I_01_4_01_4__inherit__graph.md5 | 1 + ...3_01T_00_01I_01_4_01_4__inherit__graph.png | Bin 0 -> 6492 bytes ..._ref_3_01T_00_01I_00_01TRef_01_4_01_4.html | 106 + ...0_01I_00_01TRef_01_4_01_4__coll__graph.map | 4 + ...0_01I_00_01TRef_01_4_01_4__coll__graph.md5 | 1 + ...0_01I_00_01TRef_01_4_01_4__coll__graph.png | Bin 0 -> 6858 bytes ...1I_00_01TRef_01_4_01_4__inherit__graph.map | 4 + ...1I_00_01TRef_01_4_01_4__inherit__graph.md5 | 1 + ...1I_00_01TRef_01_4_01_4__inherit__graph.png | Bin 0 -> 6858 bytes ..._size_3_01dr_1_1index_3_01I_01_4_01_4.html | 106 + ..._1_1index_3_01I_01_4_01_4__coll__graph.map | 4 + ..._1_1index_3_01I_01_4_01_4__coll__graph.md5 | 1 + ..._1_1index_3_01I_01_4_01_4__coll__graph.png | Bin 0 -> 5565 bytes ...1index_3_01I_01_4_01_4__inherit__graph.map | 4 + ...1index_3_01I_01_4_01_4__inherit__graph.md5 | 1 + ...1index_3_01I_01_4_01_4__inherit__graph.png | Bin 0 -> 5565 bytes ...1matrix__entry_3_01T_00_01I_01_4_01_4.html | 106 + ...ry_3_01T_00_01I_01_4_01_4__coll__graph.map | 4 + ...ry_3_01T_00_01I_01_4_01_4__coll__graph.md5 | 1 + ...ry_3_01T_00_01I_01_4_01_4__coll__graph.png | Bin 0 -> 6168 bytes ...3_01T_00_01I_01_4_01_4__inherit__graph.map | 4 + ...3_01T_00_01I_01_4_01_4__inherit__graph.md5 | 1 + ...3_01T_00_01I_01_4_01_4__inherit__graph.png | Bin 0 -> 6168 bytes ..._ref_3_01T_00_01I_00_01TRef_01_4_01_4.html | 106 + ...0_01I_00_01TRef_01_4_01_4__coll__graph.map | 4 + ...0_01I_00_01TRef_01_4_01_4__coll__graph.md5 | 1 + ...0_01I_00_01TRef_01_4_01_4__coll__graph.png | Bin 0 -> 6471 bytes ...1I_00_01TRef_01_4_01_4__inherit__graph.map | 4 + ...1I_00_01TRef_01_4_01_4__inherit__graph.md5 | 1 + ...1I_00_01TRef_01_4_01_4__inherit__graph.png | Bin 0 -> 6471 bytes doxygen/submdspan__view_8hpp_source.html | 256 +++ doxygen/subrange_8hpp_source.html | 289 +++ doxygen/sycl__support_8hpp_source.html | 160 ++ doxygen/sycl__utils_8hpp_source.html | 222 ++ doxygen/sync_off.png | Bin 0 -> 853 bytes doxygen/sync_on.png | Bin 0 -> 845 bytes doxygen/tab_a.png | Bin 0 -> 142 bytes doxygen/tab_ad.png | Bin 0 -> 135 bytes doxygen/tab_b.png | Bin 0 -> 169 bytes doxygen/tab_bd.png | Bin 0 -> 173 bytes doxygen/tab_h.png | Bin 0 -> 177 bytes doxygen/tab_hd.png | Bin 0 -> 180 bytes doxygen/tab_s.png | Bin 0 -> 184 bytes doxygen/tab_sd.png | Bin 0 -> 188 bytes doxygen/tabs.css | 1 + doxygen/tuple__utils_8hpp_source.html | 113 + doxygen/util_8hpp_source.html | 332 +++ doxygen/utils_8hpp_source.html | 115 + doxygen/vector_8hpp_source.html | 334 +++ doxygen/view__detectors_8hpp_source.html | 151 ++ doxygen/views_2iota_8hpp_source.html | 113 + doxygen/views_2transform_8hpp_source.html | 299 +++ doxygen/views_2views_8hpp_source.html | 104 + doxygen/zip_8hpp_source.html | 366 +++ doxygen/zip__view_8hpp_source.html | 442 ++++ spec/.buildinfo | 4 + spec/_sources/algorithms/algorithms.rst | 32 + spec/_sources/algorithms/copy.rst | 45 + spec/_sources/algorithms/exclusive_scan.rst | 46 + spec/_sources/algorithms/fill.rst | 57 + spec/_sources/algorithms/for_each.rst | 45 + spec/_sources/algorithms/inclusive_scan.rst | 61 + spec/_sources/algorithms/iota.rst | 45 + spec/_sources/algorithms/reduce.rst | 78 + spec/_sources/algorithms/shp_matrix_gemm.rst | 23 + spec/_sources/algorithms/shp_matrix_gemv.rst | 27 + spec/_sources/algorithms/sort.rst | 38 + spec/_sources/algorithms/transform.rst | 44 + spec/_sources/arch.rst | 7 + spec/_sources/concepts.rst | 177 ++ spec/_sources/containers/containers.rst | 22 + .../mhp_distributed_dense_matrix.rst | 26 + .../containers/mhp_distributed_vector.rst | 27 + spec/_sources/containers/shp_dense_matrix.rst | 20 + .../containers/shp_distributed_vector.rst | 24 + .../_sources/containers/shp_sparse_matrix.rst | 20 + spec/_sources/include/distributed-ranges.rst | 41 + spec/_sources/index.rst | 31 + spec/_sources/intro.rst | 7 + spec/_sources/views/all_view.rst | 21 + spec/_sources/views/counted_view.rst | 21 + spec/_sources/views/drop_view.rst | 21 + spec/_sources/views/iota_view.rst | 21 + spec/_sources/views/sliding_view.rst | 28 + spec/_sources/views/take_view.rst | 21 + spec/_sources/views/transform_view.rst | 21 + spec/_sources/views/views.rst | 21 + spec/_sources/views/zip_view.rst | 39 + spec/_static/basic.css | 903 ++++++++ spec/_static/doctools.js | 156 ++ spec/_static/documentation_options.js | 14 + spec/_static/file.png | Bin 0 -> 286 bytes spec/_static/images/logo_binder.svg | 19 + spec/_static/images/logo_colab.png | Bin 0 -> 7601 bytes spec/_static/images/logo_deepnote.svg | 1 + spec/_static/images/logo_jupyterhub.svg | 1 + spec/_static/language_data.js | 199 ++ .../locales/ar/LC_MESSAGES/booktheme.mo | Bin 0 -> 1541 bytes .../locales/ar/LC_MESSAGES/booktheme.po | 75 + .../locales/bg/LC_MESSAGES/booktheme.mo | Bin 0 -> 1708 bytes .../locales/bg/LC_MESSAGES/booktheme.po | 75 + .../locales/bn/LC_MESSAGES/booktheme.mo | Bin 0 -> 1646 bytes .../locales/bn/LC_MESSAGES/booktheme.po | 63 + .../locales/ca/LC_MESSAGES/booktheme.mo | Bin 0 -> 1246 bytes .../locales/ca/LC_MESSAGES/booktheme.po | 66 + .../locales/cs/LC_MESSAGES/booktheme.mo | Bin 0 -> 1405 bytes .../locales/cs/LC_MESSAGES/booktheme.po | 75 + .../locales/da/LC_MESSAGES/booktheme.mo | Bin 0 -> 1304 bytes .../locales/da/LC_MESSAGES/booktheme.po | 75 + .../locales/de/LC_MESSAGES/booktheme.mo | Bin 0 -> 1388 bytes .../locales/de/LC_MESSAGES/booktheme.po | 75 + .../locales/el/LC_MESSAGES/booktheme.mo | Bin 0 -> 1722 bytes .../locales/el/LC_MESSAGES/booktheme.po | 75 + .../locales/eo/LC_MESSAGES/booktheme.mo | Bin 0 -> 1337 bytes .../locales/eo/LC_MESSAGES/booktheme.po | 75 + .../locales/es/LC_MESSAGES/booktheme.mo | Bin 0 -> 1396 bytes .../locales/es/LC_MESSAGES/booktheme.po | 75 + .../locales/et/LC_MESSAGES/booktheme.mo | Bin 0 -> 1341 bytes .../locales/et/LC_MESSAGES/booktheme.po | 75 + .../locales/fi/LC_MESSAGES/booktheme.mo | Bin 0 -> 1368 bytes .../locales/fi/LC_MESSAGES/booktheme.po | 75 + .../locales/fr/LC_MESSAGES/booktheme.mo | Bin 0 -> 1412 bytes .../locales/fr/LC_MESSAGES/booktheme.po | 75 + .../locales/hr/LC_MESSAGES/booktheme.mo | Bin 0 -> 1402 bytes .../locales/hr/LC_MESSAGES/booktheme.po | 75 + .../locales/id/LC_MESSAGES/booktheme.mo | Bin 0 -> 1323 bytes .../locales/id/LC_MESSAGES/booktheme.po | 75 + .../locales/it/LC_MESSAGES/booktheme.mo | Bin 0 -> 1403 bytes .../locales/it/LC_MESSAGES/booktheme.po | 75 + .../locales/iw/LC_MESSAGES/booktheme.mo | Bin 0 -> 1445 bytes .../locales/iw/LC_MESSAGES/booktheme.po | 75 + .../locales/ja/LC_MESSAGES/booktheme.mo | Bin 0 -> 1471 bytes .../locales/ja/LC_MESSAGES/booktheme.po | 75 + .../locales/ko/LC_MESSAGES/booktheme.mo | Bin 0 -> 1375 bytes .../locales/ko/LC_MESSAGES/booktheme.po | 75 + .../locales/lt/LC_MESSAGES/booktheme.mo | Bin 0 -> 1413 bytes .../locales/lt/LC_MESSAGES/booktheme.po | 75 + .../locales/lv/LC_MESSAGES/booktheme.mo | Bin 0 -> 1404 bytes .../locales/lv/LC_MESSAGES/booktheme.po | 75 + .../locales/ml/LC_MESSAGES/booktheme.mo | Bin 0 -> 1883 bytes .../locales/ml/LC_MESSAGES/booktheme.po | 66 + .../locales/mr/LC_MESSAGES/booktheme.mo | Bin 0 -> 1674 bytes .../locales/mr/LC_MESSAGES/booktheme.po | 66 + .../locales/ms/LC_MESSAGES/booktheme.mo | Bin 0 -> 1213 bytes .../locales/ms/LC_MESSAGES/booktheme.po | 66 + .../locales/nl/LC_MESSAGES/booktheme.mo | Bin 0 -> 1356 bytes .../locales/nl/LC_MESSAGES/booktheme.po | 75 + .../locales/no/LC_MESSAGES/booktheme.mo | Bin 0 -> 1317 bytes .../locales/no/LC_MESSAGES/booktheme.po | 75 + .../locales/pl/LC_MESSAGES/booktheme.mo | Bin 0 -> 1371 bytes .../locales/pl/LC_MESSAGES/booktheme.po | 75 + .../locales/pt/LC_MESSAGES/booktheme.mo | Bin 0 -> 1364 bytes .../locales/pt/LC_MESSAGES/booktheme.po | 75 + .../locales/ro/LC_MESSAGES/booktheme.mo | Bin 0 -> 1390 bytes .../locales/ro/LC_MESSAGES/booktheme.po | 75 + .../locales/ru/LC_MESSAGES/booktheme.mo | Bin 0 -> 1722 bytes .../locales/ru/LC_MESSAGES/booktheme.po | 75 + .../locales/sk/LC_MESSAGES/booktheme.mo | Bin 0 -> 1393 bytes .../locales/sk/LC_MESSAGES/booktheme.po | 75 + .../locales/sl/LC_MESSAGES/booktheme.mo | Bin 0 -> 1374 bytes .../locales/sl/LC_MESSAGES/booktheme.po | 75 + .../locales/sr/LC_MESSAGES/booktheme.mo | Bin 0 -> 1679 bytes .../locales/sr/LC_MESSAGES/booktheme.po | 75 + .../locales/sv/LC_MESSAGES/booktheme.mo | Bin 0 -> 1349 bytes .../locales/sv/LC_MESSAGES/booktheme.po | 75 + .../locales/ta/LC_MESSAGES/booktheme.mo | Bin 0 -> 1928 bytes .../locales/ta/LC_MESSAGES/booktheme.po | 66 + .../locales/te/LC_MESSAGES/booktheme.mo | Bin 0 -> 1806 bytes .../locales/te/LC_MESSAGES/booktheme.po | 66 + .../locales/tg/LC_MESSAGES/booktheme.mo | Bin 0 -> 1628 bytes .../locales/tg/LC_MESSAGES/booktheme.po | 75 + .../locales/th/LC_MESSAGES/booktheme.mo | Bin 0 -> 1766 bytes .../locales/th/LC_MESSAGES/booktheme.po | 75 + .../locales/tl/LC_MESSAGES/booktheme.mo | Bin 0 -> 1273 bytes .../locales/tl/LC_MESSAGES/booktheme.po | 66 + .../locales/tr/LC_MESSAGES/booktheme.mo | Bin 0 -> 1373 bytes .../locales/tr/LC_MESSAGES/booktheme.po | 75 + .../locales/uk/LC_MESSAGES/booktheme.mo | Bin 0 -> 1681 bytes .../locales/uk/LC_MESSAGES/booktheme.po | 75 + .../locales/ur/LC_MESSAGES/booktheme.mo | Bin 0 -> 1462 bytes .../locales/ur/LC_MESSAGES/booktheme.po | 66 + .../locales/vi/LC_MESSAGES/booktheme.mo | Bin 0 -> 1431 bytes .../locales/vi/LC_MESSAGES/booktheme.po | 75 + .../locales/zh_CN/LC_MESSAGES/booktheme.mo | Bin 0 -> 1310 bytes .../locales/zh_CN/LC_MESSAGES/booktheme.po | 75 + .../locales/zh_TW/LC_MESSAGES/booktheme.mo | Bin 0 -> 1341 bytes .../locales/zh_TW/LC_MESSAGES/booktheme.po | 75 + spec/_static/minus.png | Bin 0 -> 90 bytes spec/_static/plus.png | Bin 0 -> 90 bytes spec/_static/pygments.css | 152 ++ spec/_static/sbt-webpack-macros.html | 11 + spec/_static/scripts/bootstrap.js | 3 + spec/_static/scripts/bootstrap.js.LICENSE.txt | 5 + spec/_static/scripts/bootstrap.js.map | 1 + spec/_static/scripts/pydata-sphinx-theme.js | 2 + .../scripts/pydata-sphinx-theme.js.map | 1 + spec/_static/scripts/sphinx-book-theme.js | 2 + spec/_static/scripts/sphinx-book-theme.js.map | 1 + spec/_static/searchtools.js | 566 +++++ spec/_static/sphinx_highlight.js | 144 ++ spec/_static/styles/bootstrap.css | 6 + spec/_static/styles/bootstrap.css.map | 1 + spec/_static/styles/pydata-sphinx-theme.css | 2 + .../styles/pydata-sphinx-theme.css.map | 1 + spec/_static/styles/sphinx-book-theme.css | 8 + spec/_static/styles/theme.css | 2 + .../vendor/fontawesome/6.1.2/LICENSE.txt | 165 ++ .../vendor/fontawesome/6.1.2/css/all.min.css | 5 + .../vendor/fontawesome/6.1.2/js/all.min.js | 2 + .../6.1.2/js/all.min.js.LICENSE.txt | 5 + .../6.1.2/webfonts/fa-brands-400.ttf | Bin 0 -> 181264 bytes .../6.1.2/webfonts/fa-brands-400.woff2 | Bin 0 -> 105112 bytes .../6.1.2/webfonts/fa-regular-400.ttf | Bin 0 -> 60236 bytes .../6.1.2/webfonts/fa-regular-400.woff2 | Bin 0 -> 24028 bytes .../6.1.2/webfonts/fa-solid-900.ttf | Bin 0 -> 389948 bytes .../6.1.2/webfonts/fa-solid-900.woff2 | Bin 0 -> 154840 bytes .../6.1.2/webfonts/fa-v4compatibility.ttf | Bin 0 -> 10084 bytes .../6.1.2/webfonts/fa-v4compatibility.woff2 | Bin 0 -> 4776 bytes spec/_static/webpack-macros.html | 31 + spec/algorithms/algorithms.html | 473 ++++ spec/algorithms/copy.html | 536 +++++ spec/algorithms/exclusive_scan.html | 546 +++++ spec/algorithms/fill.html | 566 +++++ spec/algorithms/for_each.html | 541 +++++ spec/algorithms/inclusive_scan.html | 568 +++++ spec/algorithms/iota.html | 531 +++++ spec/algorithms/reduce.html | 613 +++++ spec/algorithms/shp_matrix_gemm.html | 493 ++++ spec/algorithms/shp_matrix_gemv.html | 513 +++++ spec/algorithms/sort.html | 521 +++++ spec/algorithms/transform.html | 557 +++++ spec/arch.html | 451 ++++ spec/concepts.html | 704 ++++++ spec/containers/containers.html | 463 ++++ .../mhp_distributed_dense_matrix.html | 488 ++++ spec/containers/mhp_distributed_vector.html | 539 +++++ spec/containers/shp_dense_matrix.html | 488 ++++ spec/containers/shp_distributed_vector.html | 493 ++++ spec/containers/shp_sparse_matrix.html | 488 ++++ spec/genindex.html | 444 ++++ spec/include/distributed-ranges.html | 452 ++++ spec/index.html | 488 ++++ spec/intro.html | 451 ++++ spec/objects.inv | Bin 0 -> 7601 bytes spec/search.html | 365 +++ spec/searchindex.js | 1 + spec/views/all_view.html | 483 ++++ spec/views/counted_view.html | 483 ++++ spec/views/drop_view.html | 483 ++++ spec/views/iota_view.html | 483 ++++ spec/views/sliding_view.html | 494 ++++ spec/views/take_view.html | 483 ++++ spec/views/transform_view.html | 483 ++++ spec/views/views.html | 464 ++++ spec/views/zip_view.html | 515 +++++ src-python/drbench/drbench.egg-info/PKG-INFO | 4 + .../drbench/drbench.egg-info/SOURCES.txt | 12 + .../drbench.egg-info/dependency_links.txt | 1 + .../drbench/drbench.egg-info/entry_points.txt | 2 + .../drbench/drbench.egg-info/requires.txt | 6 + .../drbench/drbench.egg-info/top_level.txt | 1 + 1335 files changed, 88632 insertions(+) create mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/ci.yml create mode 100644 .nojekyll create mode 100644 .pre-commit-config.yaml create mode 100644 bench/devcloud/dr-bench-001626b200c94e298fb17b25002c08ec.json create mode 100644 bench/devcloud/dr-bench-142ea438a6a94fca8605521c1e1e8510.json create mode 100644 bench/devcloud/dr-bench-5aac2e5f06e24b8abdcf604005302cd9.json create mode 100644 bench/devcloud/dr-bench-6bd83067f15e49569b6339a89f3a60fb.json create mode 100644 bench/devcloud/dr-bench-723eb1a265cc4de1aa3ccda22a4e5bd7.json create mode 100644 bench/devcloud/dr-bench-7c6ff308c4c94a338fec3a7d93cc0836.json create mode 100644 bench/devcloud/dr-bench-826b52538e9b40beba259c5816055d19.json create mode 100644 bench/devcloud/dr-bench-ca810e980aa6492fbbeddd66af6966aa.json create mode 100644 bench/devcloud/dr-bench-fde9faaceaf6481ca944b5c4b55211fb.json create mode 100644 bench/devcloud/dr-bench-fe6010029e514e7d930ec46bc1e8d4bf.json create mode 100644 doxygen/algorithms_8hpp_source.html create mode 100644 doxygen/alignment_8hpp_source.html create mode 100644 doxygen/allocators_8hpp_source.html create mode 100644 doxygen/annotated.html create mode 100644 doxygen/bc_s.png create mode 100644 doxygen/bc_sd.png create mode 100644 doxygen/bdwn.png create mode 100644 doxygen/classdr_1_1____detail_1_1direct__iterator-members.html create mode 100644 doxygen/classdr_1_1____detail_1_1direct__iterator.html create mode 100644 doxygen/classdr_1_1____detail_1_1enumerate__adapter__closure-members.html create mode 100644 doxygen/classdr_1_1____detail_1_1enumerate__adapter__closure.html create mode 100644 doxygen/classdr_1_1____detail_1_1enumerate__fn__-members.html create mode 100644 doxygen/classdr_1_1____detail_1_1enumerate__fn__.html create mode 100644 doxygen/classdr_1_1____detail_1_1mdspan__iter__accessor-members.html create mode 100644 doxygen/classdr_1_1____detail_1_1mdspan__iter__accessor.html create mode 100644 doxygen/classdr_1_1____detail_1_1mdtranspose-members.html create mode 100644 doxygen/classdr_1_1____detail_1_1mdtranspose.html create mode 100644 doxygen/classdr_1_1____detail_1_1mdtranspose__coll__graph.map create mode 100644 doxygen/classdr_1_1____detail_1_1mdtranspose__coll__graph.md5 create mode 100644 doxygen/classdr_1_1____detail_1_1mdtranspose__coll__graph.png create mode 100644 doxygen/classdr_1_1____detail_1_1mdtranspose__inherit__graph.map create mode 100644 doxygen/classdr_1_1____detail_1_1mdtranspose__inherit__graph.md5 create mode 100644 doxygen/classdr_1_1____detail_1_1mdtranspose__inherit__graph.png create mode 100644 doxygen/classdr_1_1____detail_1_1owning__view-members.html create mode 100644 doxygen/classdr_1_1____detail_1_1owning__view.html create mode 100644 doxygen/classdr_1_1____detail_1_1owning__view__coll__graph.map create mode 100644 doxygen/classdr_1_1____detail_1_1owning__view__coll__graph.md5 create mode 100644 doxygen/classdr_1_1____detail_1_1owning__view__coll__graph.png create mode 100644 doxygen/classdr_1_1____detail_1_1owning__view__inherit__graph.map create mode 100644 doxygen/classdr_1_1____detail_1_1owning__view__inherit__graph.md5 create mode 100644 doxygen/classdr_1_1____detail_1_1owning__view__inherit__graph.png create mode 100644 doxygen/classdr_1_1communicator-members.html create mode 100644 doxygen/classdr_1_1communicator.html create mode 100644 doxygen/classdr_1_1index-members.html create mode 100644 doxygen/classdr_1_1index.html create mode 100644 doxygen/classdr_1_1iterator__adaptor-members.html create mode 100644 doxygen/classdr_1_1iterator__adaptor.html create mode 100644 doxygen/classdr_1_1logger-members.html create mode 100644 doxygen/classdr_1_1logger.html create mode 100644 doxygen/classdr_1_1mhp_1_1____detail_1_1allocator-members.html create mode 100644 doxygen/classdr_1_1mhp_1_1____detail_1_1allocator.html create mode 100644 doxygen/classdr_1_1mhp_1_1____detail_1_1md__segment-members.html create mode 100644 doxygen/classdr_1_1mhp_1_1____detail_1_1md__segment.html create mode 100644 doxygen/classdr_1_1mhp_1_1____detail_1_1md__segment__coll__graph.map create mode 100644 doxygen/classdr_1_1mhp_1_1____detail_1_1md__segment__coll__graph.md5 create mode 100644 doxygen/classdr_1_1mhp_1_1____detail_1_1md__segment__coll__graph.png create mode 100644 doxygen/classdr_1_1mhp_1_1____detail_1_1md__segment__inherit__graph.map create mode 100644 doxygen/classdr_1_1mhp_1_1____detail_1_1md__segment__inherit__graph.md5 create mode 100644 doxygen/classdr_1_1mhp_1_1____detail_1_1md__segment__inherit__graph.png create mode 100644 doxygen/classdr_1_1mhp_1_1____detail_1_1mdsub__segment-members.html create mode 100644 doxygen/classdr_1_1mhp_1_1____detail_1_1mdsub__segment.html create mode 100644 doxygen/classdr_1_1mhp_1_1____detail_1_1mdsub__segment__coll__graph.map create mode 100644 doxygen/classdr_1_1mhp_1_1____detail_1_1mdsub__segment__coll__graph.md5 create mode 100644 doxygen/classdr_1_1mhp_1_1____detail_1_1mdsub__segment__coll__graph.png create mode 100644 doxygen/classdr_1_1mhp_1_1____detail_1_1mdsub__segment__inherit__graph.map create mode 100644 doxygen/classdr_1_1mhp_1_1____detail_1_1mdsub__segment__inherit__graph.md5 create mode 100644 doxygen/classdr_1_1mhp_1_1____detail_1_1mdsub__segment__inherit__graph.png create mode 100644 doxygen/classdr_1_1mhp_1_1distributed__mdarray-members.html create mode 100644 doxygen/classdr_1_1mhp_1_1distributed__mdarray.html create mode 100644 doxygen/classdr_1_1mhp_1_1distributed__vector-members.html create mode 100644 doxygen/classdr_1_1mhp_1_1distributed__vector.html create mode 100644 doxygen/classdr_1_1mhp_1_1distributed__vector_1_1iterator-members.html create mode 100644 doxygen/classdr_1_1mhp_1_1distributed__vector_1_1iterator.html create mode 100644 doxygen/classdr_1_1mhp_1_1dv__segment-members.html create mode 100644 doxygen/classdr_1_1mhp_1_1dv__segment.html create mode 100644 doxygen/classdr_1_1mhp_1_1dv__segment__iterator-members.html create mode 100644 doxygen/classdr_1_1mhp_1_1dv__segment__iterator.html create mode 100644 doxygen/classdr_1_1mhp_1_1dv__segment__reference-members.html create mode 100644 doxygen/classdr_1_1mhp_1_1dv__segment__reference.html create mode 100644 doxygen/classdr_1_1mhp_1_1halo__impl-members.html create mode 100644 doxygen/classdr_1_1mhp_1_1halo__impl.html create mode 100644 doxygen/classdr_1_1mhp_1_1halo__impl__coll__graph.map create mode 100644 doxygen/classdr_1_1mhp_1_1halo__impl__coll__graph.md5 create mode 100644 doxygen/classdr_1_1mhp_1_1halo__impl__coll__graph.png create mode 100644 doxygen/classdr_1_1mhp_1_1halo__impl__inherit__graph.map create mode 100644 doxygen/classdr_1_1mhp_1_1halo__impl__inherit__graph.md5 create mode 100644 doxygen/classdr_1_1mhp_1_1halo__impl__inherit__graph.png create mode 100644 doxygen/classdr_1_1mhp_1_1index__group-members.html create mode 100644 doxygen/classdr_1_1mhp_1_1index__group.html create mode 100644 doxygen/classdr_1_1mhp_1_1segmented__view-members.html create mode 100644 doxygen/classdr_1_1mhp_1_1segmented__view.html create mode 100644 doxygen/classdr_1_1mhp_1_1segmented__view__coll__graph.map create mode 100644 doxygen/classdr_1_1mhp_1_1segmented__view__coll__graph.md5 create mode 100644 doxygen/classdr_1_1mhp_1_1segmented__view__coll__graph.png create mode 100644 doxygen/classdr_1_1mhp_1_1segmented__view__inherit__graph.map create mode 100644 doxygen/classdr_1_1mhp_1_1segmented__view__inherit__graph.md5 create mode 100644 doxygen/classdr_1_1mhp_1_1segmented__view__inherit__graph.png create mode 100644 doxygen/classdr_1_1mhp_1_1segmented__view__iterator-members.html create mode 100644 doxygen/classdr_1_1mhp_1_1segmented__view__iterator.html create mode 100644 doxygen/classdr_1_1mhp_1_1span__group-members.html create mode 100644 doxygen/classdr_1_1mhp_1_1span__group.html create mode 100644 doxygen/classdr_1_1mhp_1_1span__halo-members.html create mode 100644 doxygen/classdr_1_1mhp_1_1span__halo.html create mode 100644 doxygen/classdr_1_1mhp_1_1span__halo__coll__graph.map create mode 100644 doxygen/classdr_1_1mhp_1_1span__halo__coll__graph.md5 create mode 100644 doxygen/classdr_1_1mhp_1_1span__halo__coll__graph.png create mode 100644 doxygen/classdr_1_1mhp_1_1span__halo__inherit__graph.map create mode 100644 doxygen/classdr_1_1mhp_1_1span__halo__inherit__graph.md5 create mode 100644 doxygen/classdr_1_1mhp_1_1span__halo__inherit__graph.png create mode 100644 doxygen/classdr_1_1mhp_1_1subrange-members.html create mode 100644 doxygen/classdr_1_1mhp_1_1subrange.html create mode 100644 doxygen/classdr_1_1mhp_1_1subrange__coll__graph.map create mode 100644 doxygen/classdr_1_1mhp_1_1subrange__coll__graph.md5 create mode 100644 doxygen/classdr_1_1mhp_1_1subrange__coll__graph.png create mode 100644 doxygen/classdr_1_1mhp_1_1subrange__inherit__graph.map create mode 100644 doxygen/classdr_1_1mhp_1_1subrange__inherit__graph.md5 create mode 100644 doxygen/classdr_1_1mhp_1_1subrange__inherit__graph.png create mode 100644 doxygen/classdr_1_1mhp_1_1subrange__iterator-members.html create mode 100644 doxygen/classdr_1_1mhp_1_1subrange__iterator.html create mode 100644 doxygen/classdr_1_1mhp_1_1unstructured__halo-members.html create mode 100644 doxygen/classdr_1_1mhp_1_1unstructured__halo.html create mode 100644 doxygen/classdr_1_1mhp_1_1unstructured__halo__coll__graph.map create mode 100644 doxygen/classdr_1_1mhp_1_1unstructured__halo__coll__graph.md5 create mode 100644 doxygen/classdr_1_1mhp_1_1unstructured__halo__coll__graph.png create mode 100644 doxygen/classdr_1_1mhp_1_1unstructured__halo__inherit__graph.map create mode 100644 doxygen/classdr_1_1mhp_1_1unstructured__halo__inherit__graph.md5 create mode 100644 doxygen/classdr_1_1mhp_1_1unstructured__halo__inherit__graph.png create mode 100644 doxygen/classdr_1_1mhp_1_1views_1_1enumerate__adapter__closure-members.html create mode 100644 doxygen/classdr_1_1mhp_1_1views_1_1enumerate__adapter__closure.html create mode 100644 doxygen/classdr_1_1mhp_1_1views_1_1enumerate__fn__-members.html create mode 100644 doxygen/classdr_1_1mhp_1_1views_1_1enumerate__fn__.html create mode 100644 doxygen/classdr_1_1mhp_1_1views_1_1mdspan__adapter__closure-members.html create mode 100644 doxygen/classdr_1_1mhp_1_1views_1_1mdspan__adapter__closure.html create mode 100644 doxygen/classdr_1_1mhp_1_1views_1_1mdspan__fn__-members.html create mode 100644 doxygen/classdr_1_1mhp_1_1views_1_1mdspan__fn__.html create mode 100644 doxygen/classdr_1_1mhp_1_1views_1_1submdspan__adapter__closure-members.html create mode 100644 doxygen/classdr_1_1mhp_1_1views_1_1submdspan__adapter__closure.html create mode 100644 doxygen/classdr_1_1mhp_1_1views_1_1submdspan__fn__-members.html create mode 100644 doxygen/classdr_1_1mhp_1_1views_1_1submdspan__fn__.html create mode 100644 doxygen/classdr_1_1mhp_1_1zip__iterator-members.html create mode 100644 doxygen/classdr_1_1mhp_1_1zip__iterator.html create mode 100644 doxygen/classdr_1_1mhp_1_1zip__view-members.html create mode 100644 doxygen/classdr_1_1mhp_1_1zip__view.html create mode 100644 doxygen/classdr_1_1mhp_1_1zip__view__coll__graph.map create mode 100644 doxygen/classdr_1_1mhp_1_1zip__view__coll__graph.md5 create mode 100644 doxygen/classdr_1_1mhp_1_1zip__view__coll__graph.png create mode 100644 doxygen/classdr_1_1mhp_1_1zip__view__inherit__graph.map create mode 100644 doxygen/classdr_1_1mhp_1_1zip__view__inherit__graph.md5 create mode 100644 doxygen/classdr_1_1mhp_1_1zip__view__inherit__graph.png create mode 100644 doxygen/classdr_1_1normal__distributed__iterator__accessor-members.html create mode 100644 doxygen/classdr_1_1normal__distributed__iterator__accessor.html create mode 100644 doxygen/classdr_1_1remote__subrange-members.html create mode 100644 doxygen/classdr_1_1remote__subrange.html create mode 100644 doxygen/classdr_1_1remote__subrange__coll__graph.map create mode 100644 doxygen/classdr_1_1remote__subrange__coll__graph.md5 create mode 100644 doxygen/classdr_1_1remote__subrange__coll__graph.png create mode 100644 doxygen/classdr_1_1remote__subrange__inherit__graph.map create mode 100644 doxygen/classdr_1_1remote__subrange__inherit__graph.md5 create mode 100644 doxygen/classdr_1_1remote__subrange__inherit__graph.png create mode 100644 doxygen/classdr_1_1rma__window-members.html create mode 100644 doxygen/classdr_1_1rma__window.html create mode 100644 doxygen/classdr_1_1shp_1_1____detail_1_1coo__matrix-members.html create mode 100644 doxygen/classdr_1_1shp_1_1____detail_1_1coo__matrix.html create mode 100644 doxygen/classdr_1_1shp_1_1block__cyclic-members.html create mode 100644 doxygen/classdr_1_1shp_1_1block__cyclic.html create mode 100644 doxygen/classdr_1_1shp_1_1block__cyclic__coll__graph.map create mode 100644 doxygen/classdr_1_1shp_1_1block__cyclic__coll__graph.md5 create mode 100644 doxygen/classdr_1_1shp_1_1block__cyclic__coll__graph.png create mode 100644 doxygen/classdr_1_1shp_1_1block__cyclic__inherit__graph.map create mode 100644 doxygen/classdr_1_1shp_1_1block__cyclic__inherit__graph.md5 create mode 100644 doxygen/classdr_1_1shp_1_1block__cyclic__inherit__graph.png create mode 100644 doxygen/classdr_1_1shp_1_1buffered__allocator-members.html create mode 100644 doxygen/classdr_1_1shp_1_1buffered__allocator.html create mode 100644 doxygen/classdr_1_1shp_1_1csr__matrix__view-members.html create mode 100644 doxygen/classdr_1_1shp_1_1csr__matrix__view.html create mode 100644 doxygen/classdr_1_1shp_1_1csr__matrix__view__accessor-members.html create mode 100644 doxygen/classdr_1_1shp_1_1csr__matrix__view__accessor.html create mode 100644 doxygen/classdr_1_1shp_1_1csr__matrix__view__coll__graph.map create mode 100644 doxygen/classdr_1_1shp_1_1csr__matrix__view__coll__graph.md5 create mode 100644 doxygen/classdr_1_1shp_1_1csr__matrix__view__coll__graph.png create mode 100644 doxygen/classdr_1_1shp_1_1csr__matrix__view__inherit__graph.map create mode 100644 doxygen/classdr_1_1shp_1_1csr__matrix__view__inherit__graph.md5 create mode 100644 doxygen/classdr_1_1shp_1_1csr__matrix__view__inherit__graph.png create mode 100644 doxygen/classdr_1_1shp_1_1dense__matrix-members.html create mode 100644 doxygen/classdr_1_1shp_1_1dense__matrix.html create mode 100644 doxygen/classdr_1_1shp_1_1dense__matrix__accessor-members.html create mode 100644 doxygen/classdr_1_1shp_1_1dense__matrix__accessor.html create mode 100644 doxygen/classdr_1_1shp_1_1dense__matrix__column__accessor-members.html create mode 100644 doxygen/classdr_1_1shp_1_1dense__matrix__column__accessor.html create mode 100644 doxygen/classdr_1_1shp_1_1dense__matrix__column__view-members.html create mode 100644 doxygen/classdr_1_1shp_1_1dense__matrix__column__view.html create mode 100644 doxygen/classdr_1_1shp_1_1dense__matrix__column__view__coll__graph.map create mode 100644 doxygen/classdr_1_1shp_1_1dense__matrix__column__view__coll__graph.md5 create mode 100644 doxygen/classdr_1_1shp_1_1dense__matrix__column__view__coll__graph.png create mode 100644 doxygen/classdr_1_1shp_1_1dense__matrix__row__accessor-members.html create mode 100644 doxygen/classdr_1_1shp_1_1dense__matrix__row__accessor.html create mode 100644 doxygen/classdr_1_1shp_1_1dense__matrix__row__view-members.html create mode 100644 doxygen/classdr_1_1shp_1_1dense__matrix__row__view.html create mode 100644 doxygen/classdr_1_1shp_1_1dense__matrix__row__view__coll__graph.map create mode 100644 doxygen/classdr_1_1shp_1_1dense__matrix__row__view__coll__graph.md5 create mode 100644 doxygen/classdr_1_1shp_1_1dense__matrix__row__view__coll__graph.png create mode 100644 doxygen/classdr_1_1shp_1_1dense__matrix__view-members.html create mode 100644 doxygen/classdr_1_1shp_1_1dense__matrix__view.html create mode 100644 doxygen/classdr_1_1shp_1_1dense__matrix__view__coll__graph.map create mode 100644 doxygen/classdr_1_1shp_1_1dense__matrix__view__coll__graph.md5 create mode 100644 doxygen/classdr_1_1shp_1_1dense__matrix__view__coll__graph.png create mode 100644 doxygen/classdr_1_1shp_1_1dense__matrix__view__inherit__graph.map create mode 100644 doxygen/classdr_1_1shp_1_1dense__matrix__view__inherit__graph.md5 create mode 100644 doxygen/classdr_1_1shp_1_1dense__matrix__view__inherit__graph.png create mode 100644 doxygen/classdr_1_1shp_1_1device__allocator-members.html create mode 100644 doxygen/classdr_1_1shp_1_1device__allocator.html create mode 100644 doxygen/classdr_1_1shp_1_1device__ptr-members.html create mode 100644 doxygen/classdr_1_1shp_1_1device__ptr.html create mode 100644 doxygen/classdr_1_1shp_1_1device__ref-members.html create mode 100644 doxygen/classdr_1_1shp_1_1device__ref.html create mode 100644 doxygen/classdr_1_1shp_1_1device__span-members.html create mode 100644 doxygen/classdr_1_1shp_1_1device__span.html create mode 100644 doxygen/classdr_1_1shp_1_1device__span__coll__graph.map create mode 100644 doxygen/classdr_1_1shp_1_1device__span__coll__graph.md5 create mode 100644 doxygen/classdr_1_1shp_1_1device__span__coll__graph.png create mode 100644 doxygen/classdr_1_1shp_1_1device__span__inherit__graph.map create mode 100644 doxygen/classdr_1_1shp_1_1device__span__inherit__graph.md5 create mode 100644 doxygen/classdr_1_1shp_1_1device__span__inherit__graph.png create mode 100644 doxygen/classdr_1_1shp_1_1device__vector-members.html create mode 100644 doxygen/classdr_1_1shp_1_1device__vector.html create mode 100644 doxygen/classdr_1_1shp_1_1device__vector__coll__graph.map create mode 100644 doxygen/classdr_1_1shp_1_1device__vector__coll__graph.md5 create mode 100644 doxygen/classdr_1_1shp_1_1device__vector__coll__graph.png create mode 100644 doxygen/classdr_1_1shp_1_1device__vector__inherit__graph.map create mode 100644 doxygen/classdr_1_1shp_1_1device__vector__inherit__graph.md5 create mode 100644 doxygen/classdr_1_1shp_1_1device__vector__inherit__graph.png create mode 100644 doxygen/classdr_1_1shp_1_1distributed__dense__matrix-members.html create mode 100644 doxygen/classdr_1_1shp_1_1distributed__dense__matrix.html create mode 100644 doxygen/classdr_1_1shp_1_1distributed__dense__matrix__accessor-members.html create mode 100644 doxygen/classdr_1_1shp_1_1distributed__dense__matrix__accessor.html create mode 100644 doxygen/classdr_1_1shp_1_1distributed__range__accessor-members.html create mode 100644 doxygen/classdr_1_1shp_1_1distributed__range__accessor.html create mode 100644 doxygen/classdr_1_1shp_1_1distributed__span-members.html create mode 100644 doxygen/classdr_1_1shp_1_1distributed__span.html create mode 100644 doxygen/classdr_1_1shp_1_1distributed__span__accessor-members.html create mode 100644 doxygen/classdr_1_1shp_1_1distributed__span__accessor.html create mode 100644 doxygen/classdr_1_1shp_1_1distributed__span__coll__graph.map create mode 100644 doxygen/classdr_1_1shp_1_1distributed__span__coll__graph.md5 create mode 100644 doxygen/classdr_1_1shp_1_1distributed__span__coll__graph.png create mode 100644 doxygen/classdr_1_1shp_1_1distributed__span__inherit__graph.map create mode 100644 doxygen/classdr_1_1shp_1_1distributed__span__inherit__graph.md5 create mode 100644 doxygen/classdr_1_1shp_1_1distributed__span__inherit__graph.png create mode 100644 doxygen/classdr_1_1shp_1_1distributed__vector__accessor-members.html create mode 100644 doxygen/classdr_1_1shp_1_1distributed__vector__accessor.html create mode 100644 doxygen/classdr_1_1shp_1_1duplicated__vector-members.html create mode 100644 doxygen/classdr_1_1shp_1_1duplicated__vector.html create mode 100644 doxygen/classdr_1_1shp_1_1future-members.html create mode 100644 doxygen/classdr_1_1shp_1_1future.html create mode 100644 doxygen/classdr_1_1shp_1_1id-members.html create mode 100644 doxygen/classdr_1_1shp_1_1id.html create mode 100644 doxygen/classdr_1_1shp_1_1matrix__entry-members.html create mode 100644 doxygen/classdr_1_1shp_1_1matrix__entry.html create mode 100644 doxygen/classdr_1_1shp_1_1matrix__partition-members.html create mode 100644 doxygen/classdr_1_1shp_1_1matrix__partition.html create mode 100644 doxygen/classdr_1_1shp_1_1matrix__partition__inherit__graph.map create mode 100644 doxygen/classdr_1_1shp_1_1matrix__partition__inherit__graph.md5 create mode 100644 doxygen/classdr_1_1shp_1_1matrix__partition__inherit__graph.png create mode 100644 doxygen/classdr_1_1shp_1_1matrix__ref-members.html create mode 100644 doxygen/classdr_1_1shp_1_1matrix__ref.html create mode 100644 doxygen/classdr_1_1shp_1_1segment__range-members.html create mode 100644 doxygen/classdr_1_1shp_1_1segment__range.html create mode 100644 doxygen/classdr_1_1shp_1_1segment__range__accessor-members.html create mode 100644 doxygen/classdr_1_1shp_1_1segment__range__accessor.html create mode 100644 doxygen/classdr_1_1shp_1_1span-members.html create mode 100644 doxygen/classdr_1_1shp_1_1span.html create mode 100644 doxygen/classdr_1_1shp_1_1span__coll__graph.map create mode 100644 doxygen/classdr_1_1shp_1_1span__coll__graph.md5 create mode 100644 doxygen/classdr_1_1shp_1_1span__coll__graph.png create mode 100644 doxygen/classdr_1_1shp_1_1span__inherit__graph.map create mode 100644 doxygen/classdr_1_1shp_1_1span__inherit__graph.md5 create mode 100644 doxygen/classdr_1_1shp_1_1span__inherit__graph.png create mode 100644 doxygen/classdr_1_1shp_1_1sparse__matrix-members.html create mode 100644 doxygen/classdr_1_1shp_1_1sparse__matrix.html create mode 100644 doxygen/classdr_1_1shp_1_1vector-members.html create mode 100644 doxygen/classdr_1_1shp_1_1vector.html create mode 100644 doxygen/classdr_1_1shp_1_1views_1_1enumerate__adapter__closure-members.html create mode 100644 doxygen/classdr_1_1shp_1_1views_1_1enumerate__adapter__closure.html create mode 100644 doxygen/classdr_1_1shp_1_1views_1_1enumerate__fn__-members.html create mode 100644 doxygen/classdr_1_1shp_1_1views_1_1enumerate__fn__.html create mode 100644 doxygen/classdr_1_1shp_1_1views_1_1slice__adaptor__closure-members.html create mode 100644 doxygen/classdr_1_1shp_1_1views_1_1slice__adaptor__closure.html create mode 100644 doxygen/classdr_1_1shp_1_1zip__accessor-members.html create mode 100644 doxygen/classdr_1_1shp_1_1zip__accessor.html create mode 100644 doxygen/classdr_1_1shp_1_1zip__view-members.html create mode 100644 doxygen/classdr_1_1shp_1_1zip__view.html create mode 100644 doxygen/classdr_1_1shp_1_1zip__view__coll__graph.map create mode 100644 doxygen/classdr_1_1shp_1_1zip__view__coll__graph.md5 create mode 100644 doxygen/classdr_1_1shp_1_1zip__view__coll__graph.png create mode 100644 doxygen/classdr_1_1shp_1_1zip__view__inherit__graph.map create mode 100644 doxygen/classdr_1_1shp_1_1zip__view__inherit__graph.md5 create mode 100644 doxygen/classdr_1_1shp_1_1zip__view__inherit__graph.png create mode 100644 doxygen/classdr_1_1transform__iterator-members.html create mode 100644 doxygen/classdr_1_1transform__iterator.html create mode 100644 doxygen/classdr_1_1transform__view-members.html create mode 100644 doxygen/classdr_1_1transform__view.html create mode 100644 doxygen/classdr_1_1transform__view__coll__graph.map create mode 100644 doxygen/classdr_1_1transform__view__coll__graph.md5 create mode 100644 doxygen/classdr_1_1transform__view__coll__graph.png create mode 100644 doxygen/classdr_1_1transform__view__inherit__graph.map create mode 100644 doxygen/classdr_1_1transform__view__inherit__graph.md5 create mode 100644 doxygen/classdr_1_1transform__view__inherit__graph.png create mode 100644 doxygen/classdr_1_1views_1_1transform__adapter__closure-members.html create mode 100644 doxygen/classdr_1_1views_1_1transform__adapter__closure.html create mode 100644 doxygen/classdr_1_1views_1_1transform__fn__-members.html create mode 100644 doxygen/classdr_1_1views_1_1transform__fn__.html create mode 100644 doxygen/classes.html create mode 100644 doxygen/closed.png create mode 100644 doxygen/communicator_8hpp_source.html create mode 100644 doxygen/conceptdr_1_1TupleLike.html create mode 100644 doxygen/conceptdr_1_1_0d4_1_1TupleElementGettable.html create mode 100644 doxygen/conceptdr_1_1_0d5_1_1has__segments__method.html create mode 100644 doxygen/conceptdr_1_1____detail_1_1mdspan__like.html create mode 100644 doxygen/conceptdr_1_1distributed__contiguous__iterator.html create mode 100644 doxygen/conceptdr_1_1distributed__contiguous__range.html create mode 100644 doxygen/conceptdr_1_1distributed__iterator.html create mode 100644 doxygen/conceptdr_1_1distributed__range.html create mode 100644 doxygen/conceptdr_1_1mhp_1_1____detail_1_1is__distributed.html create mode 100644 doxygen/conceptdr_1_1mhp_1_1____detail_1_1one__argument.html create mode 100644 doxygen/conceptdr_1_1mhp_1_1____detail_1_1two__arguments.html create mode 100644 doxygen/conceptdr_1_1mhp_1_1____detail_1_1zipable.html create mode 100644 doxygen/conceptdr_1_1mhp_1_1has__halo__method.html create mode 100644 doxygen/conceptdr_1_1mhp_1_1has__segments.html create mode 100644 doxygen/conceptdr_1_1mhp_1_1is__mdspan__view.html create mode 100644 doxygen/conceptdr_1_1mhp_1_1no__segments.html create mode 100644 doxygen/conceptdr_1_1ranges_1_1_0d13_1_1has__local__adl.html create mode 100644 doxygen/conceptdr_1_1ranges_1_1_0d13_1_1has__rank__adl.html create mode 100644 doxygen/conceptdr_1_1ranges_1_1_0d13_1_1has__rank__method.html create mode 100644 doxygen/conceptdr_1_1ranges_1_1_0d13_1_1has__segments__adl.html create mode 100644 doxygen/conceptdr_1_1ranges_1_1_0d13_1_1has__segments__method.html create mode 100644 doxygen/conceptdr_1_1ranges_1_1_0d13_1_1is__localizable.html create mode 100644 doxygen/conceptdr_1_1ranges_1_1_0d13_1_1is__remote__iterator__shadow__impl__.html create mode 100644 doxygen/conceptdr_1_1ranges_1_1_0d13_1_1iter__has__local__method.html create mode 100644 doxygen/conceptdr_1_1ranges_1_1_0d13_1_1remote__range__shadow__impl__.html create mode 100644 doxygen/conceptdr_1_1ranges_1_1_0d13_1_1segment__has__local__method.html create mode 100644 doxygen/conceptdr_1_1ranges_1_1_0d13_1_1segments__range.html create mode 100644 doxygen/conceptdr_1_1ranges_1_1____detail_1_1has__local.html create mode 100644 doxygen/conceptdr_1_1remote__contiguous__iterator.html create mode 100644 doxygen/conceptdr_1_1remote__contiguous__range.html create mode 100644 doxygen/conceptdr_1_1remote__iterator.html create mode 100644 doxygen/conceptdr_1_1remote__range.html create mode 100644 doxygen/conceptdr_1_1shp_1_1____detail_1_1is__syclmemcopyable.html create mode 100644 doxygen/conceptdr_1_1shp_1_1____detail_1_1sycl__device__selector.html create mode 100644 doxygen/concepts.html create mode 100644 doxygen/concepts_8hpp_source.html create mode 100644 doxygen/containers_2detail_8hpp_source.html create mode 100644 doxygen/coo__matrix_8hpp_source.html create mode 100644 doxygen/csr__matrix__view_8hpp_source.html create mode 100644 doxygen/dense__column__view_8hpp_source.html create mode 100644 doxygen/dense__matrix_8hpp_source.html create mode 100644 doxygen/dense__matrix__iterator_8hpp_source.html create mode 100644 doxygen/dense__matrix__view_8hpp_source.html create mode 100644 doxygen/dense__row__view_8hpp_source.html create mode 100644 doxygen/detail_2enumerate_8hpp_source.html create mode 100644 doxygen/detail_8hpp_source.html create mode 100644 doxygen/device__ptr_8hpp_source.html create mode 100644 doxygen/device__ref_8hpp_source.html create mode 100644 doxygen/device__span_8hpp_source.html create mode 100644 doxygen/device__vector_8hpp_source.html create mode 100644 doxygen/dir_14ee7c343b929a37ea63a8b178bcb898.html create mode 100644 doxygen/dir_14ee7c343b929a37ea63a8b178bcb898_dep.map create mode 100644 doxygen/dir_14ee7c343b929a37ea63a8b178bcb898_dep.md5 create mode 100644 doxygen/dir_14ee7c343b929a37ea63a8b178bcb898_dep.png create mode 100644 doxygen/dir_1cfe8e00bd9dfe72fc53a9846db2893f.html create mode 100644 doxygen/dir_1cfe8e00bd9dfe72fc53a9846db2893f_dep.map create mode 100644 doxygen/dir_1cfe8e00bd9dfe72fc53a9846db2893f_dep.md5 create mode 100644 doxygen/dir_1cfe8e00bd9dfe72fc53a9846db2893f_dep.png create mode 100644 doxygen/dir_323acea4eb551240b18003d2e88b28b7.html create mode 100644 doxygen/dir_323acea4eb551240b18003d2e88b28b7_dep.map create mode 100644 doxygen/dir_323acea4eb551240b18003d2e88b28b7_dep.md5 create mode 100644 doxygen/dir_323acea4eb551240b18003d2e88b28b7_dep.png create mode 100644 doxygen/dir_3e0780f9fd691ce6aa718969242efd7f.html create mode 100644 doxygen/dir_3e0780f9fd691ce6aa718969242efd7f_dep.map create mode 100644 doxygen/dir_3e0780f9fd691ce6aa718969242efd7f_dep.md5 create mode 100644 doxygen/dir_3e0780f9fd691ce6aa718969242efd7f_dep.png create mode 100644 doxygen/dir_4a11d3f5fb7a8fdc61e1e1f87277b621.html create mode 100644 doxygen/dir_4a11d3f5fb7a8fdc61e1e1f87277b621_dep.map create mode 100644 doxygen/dir_4a11d3f5fb7a8fdc61e1e1f87277b621_dep.md5 create mode 100644 doxygen/dir_4a11d3f5fb7a8fdc61e1e1f87277b621_dep.png create mode 100644 doxygen/dir_4c0da47f5488ee935cb4372f760579e2.html create mode 100644 doxygen/dir_4c0da47f5488ee935cb4372f760579e2_dep.map create mode 100644 doxygen/dir_4c0da47f5488ee935cb4372f760579e2_dep.md5 create mode 100644 doxygen/dir_4c0da47f5488ee935cb4372f760579e2_dep.png create mode 100644 doxygen/dir_5915a580df0ec2fa6a1c1b2debb4bdbd.html create mode 100644 doxygen/dir_5915a580df0ec2fa6a1c1b2debb4bdbd_dep.map create mode 100644 doxygen/dir_5915a580df0ec2fa6a1c1b2debb4bdbd_dep.md5 create mode 100644 doxygen/dir_5915a580df0ec2fa6a1c1b2debb4bdbd_dep.png create mode 100644 doxygen/dir_6619e339e135944080d183968eaad8ad.html create mode 100644 doxygen/dir_6619e339e135944080d183968eaad8ad_dep.map create mode 100644 doxygen/dir_6619e339e135944080d183968eaad8ad_dep.md5 create mode 100644 doxygen/dir_6619e339e135944080d183968eaad8ad_dep.png create mode 100644 doxygen/dir_73601acfd5a2822dd473820b789b56e4.html create mode 100644 doxygen/dir_73601acfd5a2822dd473820b789b56e4_dep.map create mode 100644 doxygen/dir_73601acfd5a2822dd473820b789b56e4_dep.md5 create mode 100644 doxygen/dir_73601acfd5a2822dd473820b789b56e4_dep.png create mode 100644 doxygen/dir_773570e071a7f6eb5f21c8991c43558c.html create mode 100644 doxygen/dir_773570e071a7f6eb5f21c8991c43558c_dep.map create mode 100644 doxygen/dir_773570e071a7f6eb5f21c8991c43558c_dep.md5 create mode 100644 doxygen/dir_773570e071a7f6eb5f21c8991c43558c_dep.png create mode 100644 doxygen/dir_a385eca21dc3d8045dcdc4e17916b108.html create mode 100644 doxygen/dir_a385eca21dc3d8045dcdc4e17916b108_dep.map create mode 100644 doxygen/dir_a385eca21dc3d8045dcdc4e17916b108_dep.md5 create mode 100644 doxygen/dir_a385eca21dc3d8045dcdc4e17916b108_dep.png create mode 100644 doxygen/dir_aa3ba46e7b5e341940d314e57af78bea.html create mode 100644 doxygen/dir_aa3ba46e7b5e341940d314e57af78bea_dep.map create mode 100644 doxygen/dir_aa3ba46e7b5e341940d314e57af78bea_dep.md5 create mode 100644 doxygen/dir_aa3ba46e7b5e341940d314e57af78bea_dep.png create mode 100644 doxygen/dir_ad1fcb57fe88fc977cd33acae3e499c7.html create mode 100644 doxygen/dir_ad1fcb57fe88fc977cd33acae3e499c7_dep.map create mode 100644 doxygen/dir_ad1fcb57fe88fc977cd33acae3e499c7_dep.md5 create mode 100644 doxygen/dir_ad1fcb57fe88fc977cd33acae3e499c7_dep.png create mode 100644 doxygen/dir_b55ceb0166778f6f645d8761656b8ad8.html create mode 100644 doxygen/dir_b55ceb0166778f6f645d8761656b8ad8_dep.map create mode 100644 doxygen/dir_b55ceb0166778f6f645d8761656b8ad8_dep.md5 create mode 100644 doxygen/dir_b55ceb0166778f6f645d8761656b8ad8_dep.png create mode 100644 doxygen/dir_c8b8cfb288a36c9e6df9dd28eaffc0ac.html create mode 100644 doxygen/dir_c8b8cfb288a36c9e6df9dd28eaffc0ac_dep.map create mode 100644 doxygen/dir_c8b8cfb288a36c9e6df9dd28eaffc0ac_dep.md5 create mode 100644 doxygen/dir_c8b8cfb288a36c9e6df9dd28eaffc0ac_dep.png create mode 100644 doxygen/dir_ce06eccc165702df51b9ab16680c58ae.html create mode 100644 doxygen/dir_ce06eccc165702df51b9ab16680c58ae_dep.map create mode 100644 doxygen/dir_ce06eccc165702df51b9ab16680c58ae_dep.md5 create mode 100644 doxygen/dir_ce06eccc165702df51b9ab16680c58ae_dep.png create mode 100644 doxygen/dir_d44c64559bbebec7f509842c48db8b23.html create mode 100644 doxygen/dir_d7c528dc6ed0943eef8ba09c0b02746e.html create mode 100644 doxygen/dir_d7c528dc6ed0943eef8ba09c0b02746e_dep.map create mode 100644 doxygen/dir_d7c528dc6ed0943eef8ba09c0b02746e_dep.md5 create mode 100644 doxygen/dir_d7c528dc6ed0943eef8ba09c0b02746e_dep.png create mode 100644 doxygen/distributed__dense__matrix_8hpp_source.html create mode 100644 doxygen/distributed__mdarray_8hpp_source.html create mode 100644 doxygen/distributed__span_8hpp_source.html create mode 100644 doxygen/distribution_8hpp_source.html create mode 100644 doxygen/doc.png create mode 100644 doxygen/docd.png create mode 100644 doxygen/doxygen.css create mode 100644 doxygen/doxygen.svg create mode 100644 doxygen/duplicated__vector_8hpp_source.html create mode 100644 doxygen/dynsections.js create mode 100644 doxygen/execution__policy_8hpp_source.html create mode 100644 doxygen/files.html create mode 100644 doxygen/folderclosed.png create mode 100644 doxygen/folderopen.png create mode 100644 doxygen/format__shim_8hpp_source.html create mode 100644 doxygen/functions.html create mode 100644 doxygen/functions_func.html create mode 100644 doxygen/future_8hpp_source.html create mode 100644 doxygen/gemm_8hpp_source.html create mode 100644 doxygen/gemv_8hpp_source.html create mode 100644 doxygen/generate__random_8hpp_source.html create mode 100644 doxygen/global_8hpp_source.html create mode 100644 doxygen/graph_legend.html create mode 100644 doxygen/graph_legend.md5 create mode 100644 doxygen/graph_legend.png create mode 100644 doxygen/halo_8hpp_source.html create mode 100644 doxygen/hierarchy.html create mode 100644 doxygen/inclusive__exclusive__scan__impl_8hpp_source.html create mode 100644 doxygen/index.html create mode 100644 doxygen/index_8hpp_source.html create mode 100644 doxygen/inherit_graph_0.map create mode 100644 doxygen/inherit_graph_0.md5 create mode 100644 doxygen/inherit_graph_0.png create mode 100644 doxygen/inherit_graph_1.map create mode 100644 doxygen/inherit_graph_1.md5 create mode 100644 doxygen/inherit_graph_1.png create mode 100644 doxygen/inherit_graph_10.map create mode 100644 doxygen/inherit_graph_10.md5 create mode 100644 doxygen/inherit_graph_10.png create mode 100644 doxygen/inherit_graph_11.map create mode 100644 doxygen/inherit_graph_11.md5 create mode 100644 doxygen/inherit_graph_11.png create mode 100644 doxygen/inherit_graph_12.map create mode 100644 doxygen/inherit_graph_12.md5 create mode 100644 doxygen/inherit_graph_12.png create mode 100644 doxygen/inherit_graph_13.map create mode 100644 doxygen/inherit_graph_13.md5 create mode 100644 doxygen/inherit_graph_13.png create mode 100644 doxygen/inherit_graph_14.map create mode 100644 doxygen/inherit_graph_14.md5 create mode 100644 doxygen/inherit_graph_14.png create mode 100644 doxygen/inherit_graph_15.map create mode 100644 doxygen/inherit_graph_15.md5 create mode 100644 doxygen/inherit_graph_15.png create mode 100644 doxygen/inherit_graph_16.map create mode 100644 doxygen/inherit_graph_16.md5 create mode 100644 doxygen/inherit_graph_16.png create mode 100644 doxygen/inherit_graph_17.map create mode 100644 doxygen/inherit_graph_17.md5 create mode 100644 doxygen/inherit_graph_17.png create mode 100644 doxygen/inherit_graph_18.map create mode 100644 doxygen/inherit_graph_18.md5 create mode 100644 doxygen/inherit_graph_18.png create mode 100644 doxygen/inherit_graph_19.map create mode 100644 doxygen/inherit_graph_19.md5 create mode 100644 doxygen/inherit_graph_19.png create mode 100644 doxygen/inherit_graph_2.map create mode 100644 doxygen/inherit_graph_2.md5 create mode 100644 doxygen/inherit_graph_2.png create mode 100644 doxygen/inherit_graph_20.map create mode 100644 doxygen/inherit_graph_20.md5 create mode 100644 doxygen/inherit_graph_20.png create mode 100644 doxygen/inherit_graph_21.map create mode 100644 doxygen/inherit_graph_21.md5 create mode 100644 doxygen/inherit_graph_21.png create mode 100644 doxygen/inherit_graph_22.map create mode 100644 doxygen/inherit_graph_22.md5 create mode 100644 doxygen/inherit_graph_22.png create mode 100644 doxygen/inherit_graph_23.map create mode 100644 doxygen/inherit_graph_23.md5 create mode 100644 doxygen/inherit_graph_23.png create mode 100644 doxygen/inherit_graph_24.map create mode 100644 doxygen/inherit_graph_24.md5 create mode 100644 doxygen/inherit_graph_24.png create mode 100644 doxygen/inherit_graph_25.map create mode 100644 doxygen/inherit_graph_25.md5 create mode 100644 doxygen/inherit_graph_25.png create mode 100644 doxygen/inherit_graph_26.map create mode 100644 doxygen/inherit_graph_26.md5 create mode 100644 doxygen/inherit_graph_26.png create mode 100644 doxygen/inherit_graph_27.map create mode 100644 doxygen/inherit_graph_27.md5 create mode 100644 doxygen/inherit_graph_27.png create mode 100644 doxygen/inherit_graph_28.map create mode 100644 doxygen/inherit_graph_28.md5 create mode 100644 doxygen/inherit_graph_28.png create mode 100644 doxygen/inherit_graph_29.map create mode 100644 doxygen/inherit_graph_29.md5 create mode 100644 doxygen/inherit_graph_29.png create mode 100644 doxygen/inherit_graph_3.map create mode 100644 doxygen/inherit_graph_3.md5 create mode 100644 doxygen/inherit_graph_3.png create mode 100644 doxygen/inherit_graph_30.map create mode 100644 doxygen/inherit_graph_30.md5 create mode 100644 doxygen/inherit_graph_30.png create mode 100644 doxygen/inherit_graph_31.map create mode 100644 doxygen/inherit_graph_31.md5 create mode 100644 doxygen/inherit_graph_31.png create mode 100644 doxygen/inherit_graph_32.map create mode 100644 doxygen/inherit_graph_32.md5 create mode 100644 doxygen/inherit_graph_32.png create mode 100644 doxygen/inherit_graph_33.map create mode 100644 doxygen/inherit_graph_33.md5 create mode 100644 doxygen/inherit_graph_33.png create mode 100644 doxygen/inherit_graph_34.map create mode 100644 doxygen/inherit_graph_34.md5 create mode 100644 doxygen/inherit_graph_34.png create mode 100644 doxygen/inherit_graph_35.map create mode 100644 doxygen/inherit_graph_35.md5 create mode 100644 doxygen/inherit_graph_35.png create mode 100644 doxygen/inherit_graph_36.map create mode 100644 doxygen/inherit_graph_36.md5 create mode 100644 doxygen/inherit_graph_36.png create mode 100644 doxygen/inherit_graph_37.map create mode 100644 doxygen/inherit_graph_37.md5 create mode 100644 doxygen/inherit_graph_37.png create mode 100644 doxygen/inherit_graph_38.map create mode 100644 doxygen/inherit_graph_38.md5 create mode 100644 doxygen/inherit_graph_38.png create mode 100644 doxygen/inherit_graph_39.map create mode 100644 doxygen/inherit_graph_39.md5 create mode 100644 doxygen/inherit_graph_39.png create mode 100644 doxygen/inherit_graph_4.map create mode 100644 doxygen/inherit_graph_4.md5 create mode 100644 doxygen/inherit_graph_4.png create mode 100644 doxygen/inherit_graph_40.map create mode 100644 doxygen/inherit_graph_40.md5 create mode 100644 doxygen/inherit_graph_40.png create mode 100644 doxygen/inherit_graph_41.map create mode 100644 doxygen/inherit_graph_41.md5 create mode 100644 doxygen/inherit_graph_41.png create mode 100644 doxygen/inherit_graph_42.map create mode 100644 doxygen/inherit_graph_42.md5 create mode 100644 doxygen/inherit_graph_42.png create mode 100644 doxygen/inherit_graph_43.map create mode 100644 doxygen/inherit_graph_43.md5 create mode 100644 doxygen/inherit_graph_43.png create mode 100644 doxygen/inherit_graph_44.map create mode 100644 doxygen/inherit_graph_44.md5 create mode 100644 doxygen/inherit_graph_44.png create mode 100644 doxygen/inherit_graph_45.map create mode 100644 doxygen/inherit_graph_45.md5 create mode 100644 doxygen/inherit_graph_45.png create mode 100644 doxygen/inherit_graph_46.map create mode 100644 doxygen/inherit_graph_46.md5 create mode 100644 doxygen/inherit_graph_46.png create mode 100644 doxygen/inherit_graph_47.map create mode 100644 doxygen/inherit_graph_47.md5 create mode 100644 doxygen/inherit_graph_47.png create mode 100644 doxygen/inherit_graph_48.map create mode 100644 doxygen/inherit_graph_48.md5 create mode 100644 doxygen/inherit_graph_48.png create mode 100644 doxygen/inherit_graph_49.map create mode 100644 doxygen/inherit_graph_49.md5 create mode 100644 doxygen/inherit_graph_49.png create mode 100644 doxygen/inherit_graph_5.map create mode 100644 doxygen/inherit_graph_5.md5 create mode 100644 doxygen/inherit_graph_5.png create mode 100644 doxygen/inherit_graph_50.map create mode 100644 doxygen/inherit_graph_50.md5 create mode 100644 doxygen/inherit_graph_50.png create mode 100644 doxygen/inherit_graph_51.map create mode 100644 doxygen/inherit_graph_51.md5 create mode 100644 doxygen/inherit_graph_51.png create mode 100644 doxygen/inherit_graph_52.map create mode 100644 doxygen/inherit_graph_52.md5 create mode 100644 doxygen/inherit_graph_52.png create mode 100644 doxygen/inherit_graph_53.map create mode 100644 doxygen/inherit_graph_53.md5 create mode 100644 doxygen/inherit_graph_53.png create mode 100644 doxygen/inherit_graph_54.map create mode 100644 doxygen/inherit_graph_54.md5 create mode 100644 doxygen/inherit_graph_54.png create mode 100644 doxygen/inherit_graph_55.map create mode 100644 doxygen/inherit_graph_55.md5 create mode 100644 doxygen/inherit_graph_55.png create mode 100644 doxygen/inherit_graph_56.map create mode 100644 doxygen/inherit_graph_56.md5 create mode 100644 doxygen/inherit_graph_56.png create mode 100644 doxygen/inherit_graph_57.map create mode 100644 doxygen/inherit_graph_57.md5 create mode 100644 doxygen/inherit_graph_57.png create mode 100644 doxygen/inherit_graph_58.map create mode 100644 doxygen/inherit_graph_58.md5 create mode 100644 doxygen/inherit_graph_58.png create mode 100644 doxygen/inherit_graph_59.map create mode 100644 doxygen/inherit_graph_59.md5 create mode 100644 doxygen/inherit_graph_59.png create mode 100644 doxygen/inherit_graph_6.map create mode 100644 doxygen/inherit_graph_6.md5 create mode 100644 doxygen/inherit_graph_6.png create mode 100644 doxygen/inherit_graph_60.map create mode 100644 doxygen/inherit_graph_60.md5 create mode 100644 doxygen/inherit_graph_60.png create mode 100644 doxygen/inherit_graph_61.map create mode 100644 doxygen/inherit_graph_61.md5 create mode 100644 doxygen/inherit_graph_61.png create mode 100644 doxygen/inherit_graph_62.map create mode 100644 doxygen/inherit_graph_62.md5 create mode 100644 doxygen/inherit_graph_62.png create mode 100644 doxygen/inherit_graph_63.map create mode 100644 doxygen/inherit_graph_63.md5 create mode 100644 doxygen/inherit_graph_63.png create mode 100644 doxygen/inherit_graph_64.map create mode 100644 doxygen/inherit_graph_64.md5 create mode 100644 doxygen/inherit_graph_64.png create mode 100644 doxygen/inherit_graph_65.map create mode 100644 doxygen/inherit_graph_65.md5 create mode 100644 doxygen/inherit_graph_65.png create mode 100644 doxygen/inherit_graph_66.map create mode 100644 doxygen/inherit_graph_66.md5 create mode 100644 doxygen/inherit_graph_66.png create mode 100644 doxygen/inherit_graph_67.map create mode 100644 doxygen/inherit_graph_67.md5 create mode 100644 doxygen/inherit_graph_67.png create mode 100644 doxygen/inherit_graph_68.map create mode 100644 doxygen/inherit_graph_68.md5 create mode 100644 doxygen/inherit_graph_68.png create mode 100644 doxygen/inherit_graph_69.map create mode 100644 doxygen/inherit_graph_69.md5 create mode 100644 doxygen/inherit_graph_69.png create mode 100644 doxygen/inherit_graph_7.map create mode 100644 doxygen/inherit_graph_7.md5 create mode 100644 doxygen/inherit_graph_7.png create mode 100644 doxygen/inherit_graph_70.map create mode 100644 doxygen/inherit_graph_70.md5 create mode 100644 doxygen/inherit_graph_70.png create mode 100644 doxygen/inherit_graph_71.map create mode 100644 doxygen/inherit_graph_71.md5 create mode 100644 doxygen/inherit_graph_71.png create mode 100644 doxygen/inherit_graph_72.map create mode 100644 doxygen/inherit_graph_72.md5 create mode 100644 doxygen/inherit_graph_72.png create mode 100644 doxygen/inherit_graph_73.map create mode 100644 doxygen/inherit_graph_73.md5 create mode 100644 doxygen/inherit_graph_73.png create mode 100644 doxygen/inherit_graph_74.map create mode 100644 doxygen/inherit_graph_74.md5 create mode 100644 doxygen/inherit_graph_74.png create mode 100644 doxygen/inherit_graph_75.map create mode 100644 doxygen/inherit_graph_75.md5 create mode 100644 doxygen/inherit_graph_75.png create mode 100644 doxygen/inherit_graph_76.map create mode 100644 doxygen/inherit_graph_76.md5 create mode 100644 doxygen/inherit_graph_76.png create mode 100644 doxygen/inherit_graph_77.map create mode 100644 doxygen/inherit_graph_77.md5 create mode 100644 doxygen/inherit_graph_77.png create mode 100644 doxygen/inherit_graph_78.map create mode 100644 doxygen/inherit_graph_78.md5 create mode 100644 doxygen/inherit_graph_78.png create mode 100644 doxygen/inherit_graph_79.map create mode 100644 doxygen/inherit_graph_79.md5 create mode 100644 doxygen/inherit_graph_79.png create mode 100644 doxygen/inherit_graph_8.map create mode 100644 doxygen/inherit_graph_8.md5 create mode 100644 doxygen/inherit_graph_8.png create mode 100644 doxygen/inherit_graph_80.map create mode 100644 doxygen/inherit_graph_80.md5 create mode 100644 doxygen/inherit_graph_80.png create mode 100644 doxygen/inherit_graph_81.map create mode 100644 doxygen/inherit_graph_81.md5 create mode 100644 doxygen/inherit_graph_81.png create mode 100644 doxygen/inherit_graph_82.map create mode 100644 doxygen/inherit_graph_82.md5 create mode 100644 doxygen/inherit_graph_82.png create mode 100644 doxygen/inherit_graph_83.map create mode 100644 doxygen/inherit_graph_83.md5 create mode 100644 doxygen/inherit_graph_83.png create mode 100644 doxygen/inherit_graph_84.map create mode 100644 doxygen/inherit_graph_84.md5 create mode 100644 doxygen/inherit_graph_84.png create mode 100644 doxygen/inherit_graph_85.map create mode 100644 doxygen/inherit_graph_85.md5 create mode 100644 doxygen/inherit_graph_85.png create mode 100644 doxygen/inherit_graph_86.map create mode 100644 doxygen/inherit_graph_86.md5 create mode 100644 doxygen/inherit_graph_86.png create mode 100644 doxygen/inherit_graph_87.map create mode 100644 doxygen/inherit_graph_87.md5 create mode 100644 doxygen/inherit_graph_87.png create mode 100644 doxygen/inherit_graph_88.map create mode 100644 doxygen/inherit_graph_88.md5 create mode 100644 doxygen/inherit_graph_88.png create mode 100644 doxygen/inherit_graph_89.map create mode 100644 doxygen/inherit_graph_89.md5 create mode 100644 doxygen/inherit_graph_89.png create mode 100644 doxygen/inherit_graph_9.map create mode 100644 doxygen/inherit_graph_9.md5 create mode 100644 doxygen/inherit_graph_9.png create mode 100644 doxygen/inherit_graph_90.map create mode 100644 doxygen/inherit_graph_90.md5 create mode 100644 doxygen/inherit_graph_90.png create mode 100644 doxygen/inherit_graph_91.map create mode 100644 doxygen/inherit_graph_91.md5 create mode 100644 doxygen/inherit_graph_91.png create mode 100644 doxygen/inherit_graph_92.map create mode 100644 doxygen/inherit_graph_92.md5 create mode 100644 doxygen/inherit_graph_92.png create mode 100644 doxygen/inherit_graph_93.map create mode 100644 doxygen/inherit_graph_93.md5 create mode 100644 doxygen/inherit_graph_93.png create mode 100644 doxygen/inherit_graph_94.map create mode 100644 doxygen/inherit_graph_94.md5 create mode 100644 doxygen/inherit_graph_94.png create mode 100644 doxygen/inherit_graph_95.map create mode 100644 doxygen/inherit_graph_95.md5 create mode 100644 doxygen/inherit_graph_95.png create mode 100644 doxygen/inherit_graph_96.map create mode 100644 doxygen/inherit_graph_96.md5 create mode 100644 doxygen/inherit_graph_96.png create mode 100644 doxygen/inherit_graph_97.map create mode 100644 doxygen/inherit_graph_97.md5 create mode 100644 doxygen/inherit_graph_97.png create mode 100644 doxygen/inherits.html create mode 100644 doxygen/init_8hpp_source.html create mode 100644 doxygen/iterator__adaptor_8hpp_source.html create mode 100644 doxygen/jquery.js create mode 100644 doxygen/local__gemm_8hpp_source.html create mode 100644 doxygen/local__gemv_8hpp_source.html create mode 100644 doxygen/logger_8hpp_source.html create mode 100644 doxygen/matrix__algorithms_8hpp_source.html create mode 100644 doxygen/matrix__entry_8hpp_source.html create mode 100644 doxygen/matrix__io_8hpp_source.html create mode 100644 doxygen/matrix__partition_8hpp_source.html create mode 100644 doxygen/md__for__each_8hpp_source.html create mode 100644 doxygen/mdspan__shim_8hpp_source.html create mode 100644 doxygen/mdspan__utils_8hpp_source.html create mode 100644 doxygen/mdspan__view_8hpp_source.html create mode 100644 doxygen/memory_8hpp_source.html create mode 100644 doxygen/menu.js create mode 100644 doxygen/menudata.js create mode 100644 doxygen/mhp_2algorithms_2copy_8hpp_source.html create mode 100644 doxygen/mhp_2algorithms_2exclusive__scan_8hpp_source.html create mode 100644 doxygen/mhp_2algorithms_2fill_8hpp_source.html create mode 100644 doxygen/mhp_2algorithms_2for__each_8hpp_source.html create mode 100644 doxygen/mhp_2algorithms_2inclusive__scan_8hpp_source.html create mode 100644 doxygen/mhp_2algorithms_2iota_8hpp_source.html create mode 100644 doxygen/mhp_2algorithms_2reduce_8hpp_source.html create mode 100644 doxygen/mhp_2algorithms_2sort_8hpp_source.html create mode 100644 doxygen/mhp_2algorithms_2transform_8hpp_source.html create mode 100644 doxygen/mhp_2containers_2distributed__vector_8hpp_source.html create mode 100644 doxygen/mhp_2views_2enumerate_8hpp_source.html create mode 100644 doxygen/mhp_2views_2views_8hpp_source.html create mode 100644 doxygen/mhp_8hpp_source.html create mode 100644 doxygen/nav_f.png create mode 100644 doxygen/nav_fd.png create mode 100644 doxygen/nav_g.png create mode 100644 doxygen/nav_h.png create mode 100644 doxygen/nav_hd.png create mode 100644 doxygen/normal__distributed__iterator_8hpp_source.html create mode 100644 doxygen/onedpl__direct__iterator_8hpp_source.html create mode 100644 doxygen/open.png create mode 100644 doxygen/owning__view_8hpp_source.html create mode 100644 doxygen/range_8hpp_source.html create mode 100644 doxygen/range__adaptors_8hpp_source.html create mode 100644 doxygen/ranges_8hpp_source.html create mode 100644 doxygen/ranges__shim_8hpp_source.html create mode 100644 doxygen/ranges__utils_8hpp_source.html create mode 100644 doxygen/remote__subrange_8hpp_source.html create mode 100644 doxygen/search/all_0.js create mode 100644 doxygen/search/all_1.js create mode 100644 doxygen/search/all_10.js create mode 100644 doxygen/search/all_11.js create mode 100644 doxygen/search/all_12.js create mode 100644 doxygen/search/all_13.js create mode 100644 doxygen/search/all_2.js create mode 100644 doxygen/search/all_3.js create mode 100644 doxygen/search/all_4.js create mode 100644 doxygen/search/all_5.js create mode 100644 doxygen/search/all_6.js create mode 100644 doxygen/search/all_7.js create mode 100644 doxygen/search/all_8.js create mode 100644 doxygen/search/all_9.js create mode 100644 doxygen/search/all_a.js create mode 100644 doxygen/search/all_b.js create mode 100644 doxygen/search/all_c.js create mode 100644 doxygen/search/all_d.js create mode 100644 doxygen/search/all_e.js create mode 100644 doxygen/search/all_f.js create mode 100644 doxygen/search/classes_0.js create mode 100644 doxygen/search/classes_1.js create mode 100644 doxygen/search/classes_10.js create mode 100644 doxygen/search/classes_11.js create mode 100644 doxygen/search/classes_12.js create mode 100644 doxygen/search/classes_13.js create mode 100644 doxygen/search/classes_2.js create mode 100644 doxygen/search/classes_3.js create mode 100644 doxygen/search/classes_4.js create mode 100644 doxygen/search/classes_5.js create mode 100644 doxygen/search/classes_6.js create mode 100644 doxygen/search/classes_7.js create mode 100644 doxygen/search/classes_8.js create mode 100644 doxygen/search/classes_9.js create mode 100644 doxygen/search/classes_a.js create mode 100644 doxygen/search/classes_b.js create mode 100644 doxygen/search/classes_c.js create mode 100644 doxygen/search/classes_d.js create mode 100644 doxygen/search/classes_e.js create mode 100644 doxygen/search/classes_f.js create mode 100644 doxygen/search/close.svg create mode 100644 doxygen/search/concepts_0.js create mode 100644 doxygen/search/functions_0.js create mode 100644 doxygen/search/functions_1.js create mode 100644 doxygen/search/functions_2.js create mode 100644 doxygen/search/functions_3.js create mode 100644 doxygen/search/functions_4.js create mode 100644 doxygen/search/functions_5.js create mode 100644 doxygen/search/functions_6.js create mode 100644 doxygen/search/functions_7.js create mode 100644 doxygen/search/functions_8.js create mode 100644 doxygen/search/mag.svg create mode 100644 doxygen/search/mag_d.svg create mode 100644 doxygen/search/mag_sel.svg create mode 100644 doxygen/search/mag_seld.svg create mode 100644 doxygen/search/search.css create mode 100644 doxygen/search/search.js create mode 100644 doxygen/search/searchdata.js create mode 100644 doxygen/segment_8hpp_source.html create mode 100644 doxygen/segmented_8hpp_source.html create mode 100644 doxygen/segments__tools_8hpp_source.html create mode 100644 doxygen/shp_2algorithms_2copy_8hpp_source.html create mode 100644 doxygen/shp_2algorithms_2exclusive__scan_8hpp_source.html create mode 100644 doxygen/shp_2algorithms_2fill_8hpp_source.html create mode 100644 doxygen/shp_2algorithms_2for__each_8hpp_source.html create mode 100644 doxygen/shp_2algorithms_2inclusive__scan_8hpp_source.html create mode 100644 doxygen/shp_2algorithms_2iota_8hpp_source.html create mode 100644 doxygen/shp_2algorithms_2reduce_8hpp_source.html create mode 100644 doxygen/shp_2algorithms_2sort_8hpp_source.html create mode 100644 doxygen/shp_2algorithms_2transform_8hpp_source.html create mode 100644 doxygen/shp_2distributed__vector_8hpp_source.html create mode 100644 doxygen/shp_2views_2enumerate_8hpp_source.html create mode 100644 doxygen/shp_2views_2views_8hpp_source.html create mode 100644 doxygen/shp_8hpp_source.html create mode 100644 doxygen/sliding_8hpp_source.html create mode 100644 doxygen/source__location_8hpp_source.html create mode 100644 doxygen/span_8hpp_source.html create mode 100644 doxygen/sparse__matrix_8hpp_source.html create mode 100644 doxygen/splitbar.png create mode 100644 doxygen/splitbard.png create mode 100644 doxygen/standard__views_8hpp_source.html create mode 100644 doxygen/structdr_1_1default__memory-members.html create mode 100644 doxygen/structdr_1_1default__memory.html create mode 100644 doxygen/structdr_1_1is__drop__view.html create mode 100644 doxygen/structdr_1_1is__drop__view_3_01rng_1_1drop__view_3_01T_01_4_01_4.html create mode 100644 doxygen/structdr_1_1is__drop__view_3_01rng_1_1drop__view_3_01T_01_4_01_4__coll__graph.map create mode 100644 doxygen/structdr_1_1is__drop__view_3_01rng_1_1drop__view_3_01T_01_4_01_4__coll__graph.md5 create mode 100644 doxygen/structdr_1_1is__drop__view_3_01rng_1_1drop__view_3_01T_01_4_01_4__coll__graph.png create mode 100644 doxygen/structdr_1_1is__drop__view_3_01rng_1_1drop__view_3_01T_01_4_01_4__inherit__graph.map create mode 100644 doxygen/structdr_1_1is__drop__view_3_01rng_1_1drop__view_3_01T_01_4_01_4__inherit__graph.md5 create mode 100644 doxygen/structdr_1_1is__drop__view_3_01rng_1_1drop__view_3_01T_01_4_01_4__inherit__graph.png create mode 100644 doxygen/structdr_1_1is__drop__view__coll__graph.map create mode 100644 doxygen/structdr_1_1is__drop__view__coll__graph.md5 create mode 100644 doxygen/structdr_1_1is__drop__view__coll__graph.png create mode 100644 doxygen/structdr_1_1is__drop__view__inherit__graph.map create mode 100644 doxygen/structdr_1_1is__drop__view__inherit__graph.md5 create mode 100644 doxygen/structdr_1_1is__drop__view__inherit__graph.png create mode 100644 doxygen/structdr_1_1is__iota__view.html create mode 100644 doxygen/structdr_1_1is__iota__view_3_01rng_1_1iota__view_3_01W_01_4_01_4.html create mode 100644 doxygen/structdr_1_1is__iota__view_3_01rng_1_1iota__view_3_01W_01_4_01_4__coll__graph.map create mode 100644 doxygen/structdr_1_1is__iota__view_3_01rng_1_1iota__view_3_01W_01_4_01_4__coll__graph.md5 create mode 100644 doxygen/structdr_1_1is__iota__view_3_01rng_1_1iota__view_3_01W_01_4_01_4__coll__graph.png create mode 100644 doxygen/structdr_1_1is__iota__view_3_01rng_1_1iota__view_3_01W_01_4_01_4__inherit__graph.map create mode 100644 doxygen/structdr_1_1is__iota__view_3_01rng_1_1iota__view_3_01W_01_4_01_4__inherit__graph.md5 create mode 100644 doxygen/structdr_1_1is__iota__view_3_01rng_1_1iota__view_3_01W_01_4_01_4__inherit__graph.png create mode 100644 doxygen/structdr_1_1is__iota__view__coll__graph.map create mode 100644 doxygen/structdr_1_1is__iota__view__coll__graph.md5 create mode 100644 doxygen/structdr_1_1is__iota__view__coll__graph.png create mode 100644 doxygen/structdr_1_1is__iota__view__inherit__graph.map create mode 100644 doxygen/structdr_1_1is__iota__view__inherit__graph.md5 create mode 100644 doxygen/structdr_1_1is__iota__view__inherit__graph.png create mode 100644 doxygen/structdr_1_1is__owning__view.html create mode 100644 doxygen/structdr_1_1is__owning__view__coll__graph.map create mode 100644 doxygen/structdr_1_1is__owning__view__coll__graph.md5 create mode 100644 doxygen/structdr_1_1is__owning__view__coll__graph.png create mode 100644 doxygen/structdr_1_1is__owning__view__inherit__graph.map create mode 100644 doxygen/structdr_1_1is__owning__view__inherit__graph.md5 create mode 100644 doxygen/structdr_1_1is__owning__view__inherit__graph.png create mode 100644 doxygen/structdr_1_1is__ref__view.html create mode 100644 doxygen/structdr_1_1is__ref__view_3_01rng_1_1ref__view_3_01R_01_4_01_4.html create mode 100644 doxygen/structdr_1_1is__ref__view_3_01rng_1_1ref__view_3_01R_01_4_01_4__coll__graph.map create mode 100644 doxygen/structdr_1_1is__ref__view_3_01rng_1_1ref__view_3_01R_01_4_01_4__coll__graph.md5 create mode 100644 doxygen/structdr_1_1is__ref__view_3_01rng_1_1ref__view_3_01R_01_4_01_4__coll__graph.png create mode 100644 doxygen/structdr_1_1is__ref__view_3_01rng_1_1ref__view_3_01R_01_4_01_4__inherit__graph.map create mode 100644 doxygen/structdr_1_1is__ref__view_3_01rng_1_1ref__view_3_01R_01_4_01_4__inherit__graph.md5 create mode 100644 doxygen/structdr_1_1is__ref__view_3_01rng_1_1ref__view_3_01R_01_4_01_4__inherit__graph.png create mode 100644 doxygen/structdr_1_1is__ref__view__coll__graph.map create mode 100644 doxygen/structdr_1_1is__ref__view__coll__graph.md5 create mode 100644 doxygen/structdr_1_1is__ref__view__coll__graph.png create mode 100644 doxygen/structdr_1_1is__ref__view__inherit__graph.map create mode 100644 doxygen/structdr_1_1is__ref__view__inherit__graph.md5 create mode 100644 doxygen/structdr_1_1is__ref__view__inherit__graph.png create mode 100644 doxygen/structdr_1_1is__sliding__view.html create mode 100644 doxygen/structdr_1_1is__sliding__view_3_01rng_1_1sliding__view_3_01T_01_4_01_4.html create mode 100644 doxygen/structdr_1_1is__sliding__view_3_01rng_1_1sliding__view_3_01T_01_4_01_4__coll__graph.map create mode 100644 doxygen/structdr_1_1is__sliding__view_3_01rng_1_1sliding__view_3_01T_01_4_01_4__coll__graph.md5 create mode 100644 doxygen/structdr_1_1is__sliding__view_3_01rng_1_1sliding__view_3_01T_01_4_01_4__coll__graph.png create mode 100644 doxygen/structdr_1_1is__sliding__view_3_01rng_1_1sliding__view_3_01T_01_4_01_4__inherit__graph.map create mode 100644 doxygen/structdr_1_1is__sliding__view_3_01rng_1_1sliding__view_3_01T_01_4_01_4__inherit__graph.md5 create mode 100644 doxygen/structdr_1_1is__sliding__view_3_01rng_1_1sliding__view_3_01T_01_4_01_4__inherit__graph.png create mode 100644 doxygen/structdr_1_1is__sliding__view__coll__graph.map create mode 100644 doxygen/structdr_1_1is__sliding__view__coll__graph.md5 create mode 100644 doxygen/structdr_1_1is__sliding__view__coll__graph.png create mode 100644 doxygen/structdr_1_1is__sliding__view__inherit__graph.map create mode 100644 doxygen/structdr_1_1is__sliding__view__inherit__graph.md5 create mode 100644 doxygen/structdr_1_1is__sliding__view__inherit__graph.png create mode 100644 doxygen/structdr_1_1is__subrange__view.html create mode 100644 doxygen/structdr_1_1is__subrange__view_3_01rng_1_1subrange_3_01T_01_4_01_4.html create mode 100644 doxygen/structdr_1_1is__subrange__view_3_01rng_1_1subrange_3_01T_01_4_01_4__coll__graph.map create mode 100644 doxygen/structdr_1_1is__subrange__view_3_01rng_1_1subrange_3_01T_01_4_01_4__coll__graph.md5 create mode 100644 doxygen/structdr_1_1is__subrange__view_3_01rng_1_1subrange_3_01T_01_4_01_4__coll__graph.png create mode 100644 doxygen/structdr_1_1is__subrange__view_3_01rng_1_1subrange_3_01T_01_4_01_4__inherit__graph.map create mode 100644 doxygen/structdr_1_1is__subrange__view_3_01rng_1_1subrange_3_01T_01_4_01_4__inherit__graph.md5 create mode 100644 doxygen/structdr_1_1is__subrange__view_3_01rng_1_1subrange_3_01T_01_4_01_4__inherit__graph.png create mode 100644 doxygen/structdr_1_1is__subrange__view__coll__graph.map create mode 100644 doxygen/structdr_1_1is__subrange__view__coll__graph.md5 create mode 100644 doxygen/structdr_1_1is__subrange__view__coll__graph.png create mode 100644 doxygen/structdr_1_1is__subrange__view__inherit__graph.map create mode 100644 doxygen/structdr_1_1is__subrange__view__inherit__graph.md5 create mode 100644 doxygen/structdr_1_1is__subrange__view__inherit__graph.png create mode 100644 doxygen/structdr_1_1is__take__view.html create mode 100644 doxygen/structdr_1_1is__take__view_3_01rng_1_1take__view_3_01T_01_4_01_4.html create mode 100644 doxygen/structdr_1_1is__take__view_3_01rng_1_1take__view_3_01T_01_4_01_4__coll__graph.map create mode 100644 doxygen/structdr_1_1is__take__view_3_01rng_1_1take__view_3_01T_01_4_01_4__coll__graph.md5 create mode 100644 doxygen/structdr_1_1is__take__view_3_01rng_1_1take__view_3_01T_01_4_01_4__coll__graph.png create mode 100644 doxygen/structdr_1_1is__take__view_3_01rng_1_1take__view_3_01T_01_4_01_4__inherit__graph.map create mode 100644 doxygen/structdr_1_1is__take__view_3_01rng_1_1take__view_3_01T_01_4_01_4__inherit__graph.md5 create mode 100644 doxygen/structdr_1_1is__take__view_3_01rng_1_1take__view_3_01T_01_4_01_4__inherit__graph.png create mode 100644 doxygen/structdr_1_1is__take__view__coll__graph.map create mode 100644 doxygen/structdr_1_1is__take__view__coll__graph.md5 create mode 100644 doxygen/structdr_1_1is__take__view__coll__graph.png create mode 100644 doxygen/structdr_1_1is__take__view__inherit__graph.map create mode 100644 doxygen/structdr_1_1is__take__view__inherit__graph.md5 create mode 100644 doxygen/structdr_1_1is__take__view__inherit__graph.png create mode 100644 doxygen/structdr_1_1is__zip__view.html create mode 100644 doxygen/structdr_1_1is__zip__view_3_01rng_1_1zip__view_3_01Views_8_8_8_01_4_01_4.html create mode 100644 doxygen/structdr_1_1is__zip__view_3_01rng_1_1zip__view_3_01Views_8_8_8_01_4_01_4__coll__graph.map create mode 100644 doxygen/structdr_1_1is__zip__view_3_01rng_1_1zip__view_3_01Views_8_8_8_01_4_01_4__coll__graph.md5 create mode 100644 doxygen/structdr_1_1is__zip__view_3_01rng_1_1zip__view_3_01Views_8_8_8_01_4_01_4__coll__graph.png create mode 100644 doxygen/structdr_1_1is__zip__view_3_01rng_1_1zip__view_3_01Views_8_8_8_01_4_01_4__inherit__graph.map create mode 100644 doxygen/structdr_1_1is__zip__view_3_01rng_1_1zip__view_3_01Views_8_8_8_01_4_01_4__inherit__graph.md5 create mode 100644 doxygen/structdr_1_1is__zip__view_3_01rng_1_1zip__view_3_01Views_8_8_8_01_4_01_4__inherit__graph.png create mode 100644 doxygen/structdr_1_1is__zip__view__coll__graph.map create mode 100644 doxygen/structdr_1_1is__zip__view__coll__graph.md5 create mode 100644 doxygen/structdr_1_1is__zip__view__coll__graph.png create mode 100644 doxygen/structdr_1_1is__zip__view__inherit__graph.map create mode 100644 doxygen/structdr_1_1is__zip__view__inherit__graph.md5 create mode 100644 doxygen/structdr_1_1is__zip__view__inherit__graph.png create mode 100644 doxygen/structdr_1_1mhp_1_1____detail_1_1any-members.html create mode 100644 doxygen/structdr_1_1mhp_1_1____detail_1_1any.html create mode 100644 doxygen/structdr_1_1mhp_1_1____detail_1_1global__context-members.html create mode 100644 doxygen/structdr_1_1mhp_1_1____detail_1_1global__context.html create mode 100644 doxygen/structdr_1_1mhp_1_1____detail_1_1global__context__coll__graph.map create mode 100644 doxygen/structdr_1_1mhp_1_1____detail_1_1global__context__coll__graph.md5 create mode 100644 doxygen/structdr_1_1mhp_1_1____detail_1_1global__context__coll__graph.png create mode 100644 doxygen/structdr_1_1mhp_1_1device__policy.html create mode 100644 doxygen/structdr_1_1mhp_1_1distribution-members.html create mode 100644 doxygen/structdr_1_1mhp_1_1distribution.html create mode 100644 doxygen/structdr_1_1mhp_1_1halo__bounds-members.html create mode 100644 doxygen/structdr_1_1mhp_1_1halo__bounds.html create mode 100644 doxygen/structdr_1_1mhp_1_1halo__impl_1_1max__op-members.html create mode 100644 doxygen/structdr_1_1mhp_1_1halo__impl_1_1max__op.html create mode 100644 doxygen/structdr_1_1mhp_1_1halo__impl_1_1min__op-members.html create mode 100644 doxygen/structdr_1_1mhp_1_1halo__impl_1_1min__op.html create mode 100644 doxygen/structdr_1_1mhp_1_1halo__impl_1_1multiplies__op-members.html create mode 100644 doxygen/structdr_1_1mhp_1_1halo__impl_1_1multiplies__op.html create mode 100644 doxygen/structdr_1_1mhp_1_1halo__impl_1_1plus__op-members.html create mode 100644 doxygen/structdr_1_1mhp_1_1halo__impl_1_1plus__op.html create mode 100644 doxygen/structdr_1_1mhp_1_1halo__impl_1_1second__op-members.html create mode 100644 doxygen/structdr_1_1mhp_1_1halo__impl_1_1second__op.html create mode 100644 doxygen/structdr_1_1mhp_1_1mdspan__view-members.html create mode 100644 doxygen/structdr_1_1mhp_1_1mdspan__view.html create mode 100644 doxygen/structdr_1_1mhp_1_1mdspan__view__coll__graph.map create mode 100644 doxygen/structdr_1_1mhp_1_1mdspan__view__coll__graph.md5 create mode 100644 doxygen/structdr_1_1mhp_1_1mdspan__view__coll__graph.png create mode 100644 doxygen/structdr_1_1mhp_1_1mdspan__view__inherit__graph.map create mode 100644 doxygen/structdr_1_1mhp_1_1mdspan__view__inherit__graph.md5 create mode 100644 doxygen/structdr_1_1mhp_1_1mdspan__view__inherit__graph.png create mode 100644 doxygen/structdr_1_1mhp_1_1submdspan__view-members.html create mode 100644 doxygen/structdr_1_1mhp_1_1submdspan__view.html create mode 100644 doxygen/structdr_1_1mhp_1_1submdspan__view__coll__graph.map create mode 100644 doxygen/structdr_1_1mhp_1_1submdspan__view__coll__graph.md5 create mode 100644 doxygen/structdr_1_1mhp_1_1submdspan__view__coll__graph.png create mode 100644 doxygen/structdr_1_1mhp_1_1submdspan__view__inherit__graph.map create mode 100644 doxygen/structdr_1_1mhp_1_1submdspan__view__inherit__graph.md5 create mode 100644 doxygen/structdr_1_1mhp_1_1submdspan__view__inherit__graph.png create mode 100644 doxygen/structdr_1_1mhp_1_1views_1_1____detail_1_1range__size-members.html create mode 100644 doxygen/structdr_1_1mhp_1_1views_1_1____detail_1_1range__size.html create mode 100644 doxygen/structdr_1_1mhp_1_1views_1_1____detail_1_1range__size_3_01R_01_4-members.html create mode 100644 doxygen/structdr_1_1mhp_1_1views_1_1____detail_1_1range__size_3_01R_01_4.html create mode 100644 doxygen/structdr_1_1mhp_1_1views_1_1____detail_1_1sliding__fn-members.html create mode 100644 doxygen/structdr_1_1mhp_1_1views_1_1____detail_1_1sliding__fn.html create mode 100644 doxygen/structdr_1_1ranges_1_1____detail_1_1local__fn__-members.html create mode 100644 doxygen/structdr_1_1ranges_1_1____detail_1_1local__fn__.html create mode 100644 doxygen/structdr_1_1shp_1_1____detail_1_1tuple__or__pair-members.html create mode 100644 doxygen/structdr_1_1shp_1_1____detail_1_1tuple__or__pair.html create mode 100644 doxygen/structdr_1_1shp_1_1____detail_1_1tuple__or__pair_3_01T_00_01U_01_4-members.html create mode 100644 doxygen/structdr_1_1shp_1_1____detail_1_1tuple__or__pair_3_01T_00_01U_01_4.html create mode 100644 doxygen/structdr_1_1shp_1_1device__allocator_1_1rebind-members.html create mode 100644 doxygen/structdr_1_1shp_1_1device__allocator_1_1rebind.html create mode 100644 doxygen/structdr_1_1shp_1_1device__policy-members.html create mode 100644 doxygen/structdr_1_1shp_1_1device__policy.html create mode 100644 doxygen/structdr_1_1shp_1_1distributed__vector-members.html create mode 100644 doxygen/structdr_1_1shp_1_1distributed__vector.html create mode 100644 doxygen/structdr_1_1views_1_1iota__fn__-members.html create mode 100644 doxygen/structdr_1_1views_1_1iota__fn__.html create mode 100644 doxygen/structfmt_1_1formatter_3_01Mdspan_00_01char_01_4-members.html create mode 100644 doxygen/structfmt_1_1formatter_3_01Mdspan_00_01char_01_4.html create mode 100644 doxygen/structfmt_1_1formatter_3_01Mdspan_00_01char_01_4__coll__graph.map create mode 100644 doxygen/structfmt_1_1formatter_3_01Mdspan_00_01char_01_4__coll__graph.md5 create mode 100644 doxygen/structfmt_1_1formatter_3_01Mdspan_00_01char_01_4__coll__graph.png create mode 100644 doxygen/structfmt_1_1formatter_3_01Mdspan_00_01char_01_4__inherit__graph.map create mode 100644 doxygen/structfmt_1_1formatter_3_01Mdspan_00_01char_01_4__inherit__graph.md5 create mode 100644 doxygen/structfmt_1_1formatter_3_01Mdspan_00_01char_01_4__inherit__graph.png create mode 100644 doxygen/structnostd_1_1source__location-members.html create mode 100644 doxygen/structnostd_1_1source__location.html create mode 100644 doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1index_3_01I_01_4_01_4.html create mode 100644 doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1index_3_01I_01_4_01_4__coll__graph.map create mode 100644 doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1index_3_01I_01_4_01_4__coll__graph.md5 create mode 100644 doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1index_3_01I_01_4_01_4__coll__graph.png create mode 100644 doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1index_3_01I_01_4_01_4__inherit__graph.map create mode 100644 doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1index_3_01I_01_4_01_4__inherit__graph.md5 create mode 100644 doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1index_3_01I_01_4_01_4__inherit__graph.png create mode 100644 doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4.html create mode 100644 doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4__coll__graph.map create mode 100644 doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4__coll__graph.md5 create mode 100644 doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4__coll__graph.png create mode 100644 doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4__inherit__graph.map create mode 100644 doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4__inherit__graph.md5 create mode 100644 doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4__inherit__graph.png create mode 100644 doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4.html create mode 100644 doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4__coll__graph.map create mode 100644 doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4__coll__graph.md5 create mode 100644 doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4__coll__graph.png create mode 100644 doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4__inherit__graph.map create mode 100644 doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4__inherit__graph.md5 create mode 100644 doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4__inherit__graph.png create mode 100644 doxygen/structstd_1_1tuple__size_3_01dr_1_1index_3_01I_01_4_01_4.html create mode 100644 doxygen/structstd_1_1tuple__size_3_01dr_1_1index_3_01I_01_4_01_4__coll__graph.map create mode 100644 doxygen/structstd_1_1tuple__size_3_01dr_1_1index_3_01I_01_4_01_4__coll__graph.md5 create mode 100644 doxygen/structstd_1_1tuple__size_3_01dr_1_1index_3_01I_01_4_01_4__coll__graph.png create mode 100644 doxygen/structstd_1_1tuple__size_3_01dr_1_1index_3_01I_01_4_01_4__inherit__graph.map create mode 100644 doxygen/structstd_1_1tuple__size_3_01dr_1_1index_3_01I_01_4_01_4__inherit__graph.md5 create mode 100644 doxygen/structstd_1_1tuple__size_3_01dr_1_1index_3_01I_01_4_01_4__inherit__graph.png create mode 100644 doxygen/structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4.html create mode 100644 doxygen/structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4__coll__graph.map create mode 100644 doxygen/structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4__coll__graph.md5 create mode 100644 doxygen/structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4__coll__graph.png create mode 100644 doxygen/structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4__inherit__graph.map create mode 100644 doxygen/structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4__inherit__graph.md5 create mode 100644 doxygen/structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4__inherit__graph.png create mode 100644 doxygen/structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4.html create mode 100644 doxygen/structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4__coll__graph.map create mode 100644 doxygen/structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4__coll__graph.md5 create mode 100644 doxygen/structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4__coll__graph.png create mode 100644 doxygen/structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4__inherit__graph.map create mode 100644 doxygen/structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4__inherit__graph.md5 create mode 100644 doxygen/structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4__inherit__graph.png create mode 100644 doxygen/submdspan__view_8hpp_source.html create mode 100644 doxygen/subrange_8hpp_source.html create mode 100644 doxygen/sycl__support_8hpp_source.html create mode 100644 doxygen/sycl__utils_8hpp_source.html create mode 100644 doxygen/sync_off.png create mode 100644 doxygen/sync_on.png create mode 100644 doxygen/tab_a.png create mode 100644 doxygen/tab_ad.png create mode 100644 doxygen/tab_b.png create mode 100644 doxygen/tab_bd.png create mode 100644 doxygen/tab_h.png create mode 100644 doxygen/tab_hd.png create mode 100644 doxygen/tab_s.png create mode 100644 doxygen/tab_sd.png create mode 100644 doxygen/tabs.css create mode 100644 doxygen/tuple__utils_8hpp_source.html create mode 100644 doxygen/util_8hpp_source.html create mode 100644 doxygen/utils_8hpp_source.html create mode 100644 doxygen/vector_8hpp_source.html create mode 100644 doxygen/view__detectors_8hpp_source.html create mode 100644 doxygen/views_2iota_8hpp_source.html create mode 100644 doxygen/views_2transform_8hpp_source.html create mode 100644 doxygen/views_2views_8hpp_source.html create mode 100644 doxygen/zip_8hpp_source.html create mode 100644 doxygen/zip__view_8hpp_source.html create mode 100644 spec/.buildinfo create mode 100644 spec/_sources/algorithms/algorithms.rst create mode 100644 spec/_sources/algorithms/copy.rst create mode 100644 spec/_sources/algorithms/exclusive_scan.rst create mode 100644 spec/_sources/algorithms/fill.rst create mode 100644 spec/_sources/algorithms/for_each.rst create mode 100644 spec/_sources/algorithms/inclusive_scan.rst create mode 100644 spec/_sources/algorithms/iota.rst create mode 100644 spec/_sources/algorithms/reduce.rst create mode 100644 spec/_sources/algorithms/shp_matrix_gemm.rst create mode 100644 spec/_sources/algorithms/shp_matrix_gemv.rst create mode 100644 spec/_sources/algorithms/sort.rst create mode 100644 spec/_sources/algorithms/transform.rst create mode 100644 spec/_sources/arch.rst create mode 100644 spec/_sources/concepts.rst create mode 100644 spec/_sources/containers/containers.rst create mode 100644 spec/_sources/containers/mhp_distributed_dense_matrix.rst create mode 100644 spec/_sources/containers/mhp_distributed_vector.rst create mode 100644 spec/_sources/containers/shp_dense_matrix.rst create mode 100644 spec/_sources/containers/shp_distributed_vector.rst create mode 100644 spec/_sources/containers/shp_sparse_matrix.rst create mode 100644 spec/_sources/include/distributed-ranges.rst create mode 100644 spec/_sources/index.rst create mode 100644 spec/_sources/intro.rst create mode 100644 spec/_sources/views/all_view.rst create mode 100644 spec/_sources/views/counted_view.rst create mode 100644 spec/_sources/views/drop_view.rst create mode 100644 spec/_sources/views/iota_view.rst create mode 100644 spec/_sources/views/sliding_view.rst create mode 100644 spec/_sources/views/take_view.rst create mode 100644 spec/_sources/views/transform_view.rst create mode 100644 spec/_sources/views/views.rst create mode 100644 spec/_sources/views/zip_view.rst create mode 100644 spec/_static/basic.css create mode 100644 spec/_static/doctools.js create mode 100644 spec/_static/documentation_options.js create mode 100644 spec/_static/file.png create mode 100644 spec/_static/images/logo_binder.svg create mode 100644 spec/_static/images/logo_colab.png create mode 100644 spec/_static/images/logo_deepnote.svg create mode 100644 spec/_static/images/logo_jupyterhub.svg create mode 100644 spec/_static/language_data.js create mode 100644 spec/_static/locales/ar/LC_MESSAGES/booktheme.mo create mode 100644 spec/_static/locales/ar/LC_MESSAGES/booktheme.po create mode 100644 spec/_static/locales/bg/LC_MESSAGES/booktheme.mo create mode 100644 spec/_static/locales/bg/LC_MESSAGES/booktheme.po create mode 100644 spec/_static/locales/bn/LC_MESSAGES/booktheme.mo create mode 100644 spec/_static/locales/bn/LC_MESSAGES/booktheme.po create mode 100644 spec/_static/locales/ca/LC_MESSAGES/booktheme.mo create mode 100644 spec/_static/locales/ca/LC_MESSAGES/booktheme.po create mode 100644 spec/_static/locales/cs/LC_MESSAGES/booktheme.mo create mode 100644 spec/_static/locales/cs/LC_MESSAGES/booktheme.po create mode 100644 spec/_static/locales/da/LC_MESSAGES/booktheme.mo create mode 100644 spec/_static/locales/da/LC_MESSAGES/booktheme.po create mode 100644 spec/_static/locales/de/LC_MESSAGES/booktheme.mo create mode 100644 spec/_static/locales/de/LC_MESSAGES/booktheme.po create mode 100644 spec/_static/locales/el/LC_MESSAGES/booktheme.mo create mode 100644 spec/_static/locales/el/LC_MESSAGES/booktheme.po create mode 100644 spec/_static/locales/eo/LC_MESSAGES/booktheme.mo create mode 100644 spec/_static/locales/eo/LC_MESSAGES/booktheme.po create mode 100644 spec/_static/locales/es/LC_MESSAGES/booktheme.mo create mode 100644 spec/_static/locales/es/LC_MESSAGES/booktheme.po create mode 100644 spec/_static/locales/et/LC_MESSAGES/booktheme.mo create mode 100644 spec/_static/locales/et/LC_MESSAGES/booktheme.po create mode 100644 spec/_static/locales/fi/LC_MESSAGES/booktheme.mo create mode 100644 spec/_static/locales/fi/LC_MESSAGES/booktheme.po create mode 100644 spec/_static/locales/fr/LC_MESSAGES/booktheme.mo create mode 100644 spec/_static/locales/fr/LC_MESSAGES/booktheme.po create mode 100644 spec/_static/locales/hr/LC_MESSAGES/booktheme.mo create mode 100644 spec/_static/locales/hr/LC_MESSAGES/booktheme.po create mode 100644 spec/_static/locales/id/LC_MESSAGES/booktheme.mo create mode 100644 spec/_static/locales/id/LC_MESSAGES/booktheme.po create mode 100644 spec/_static/locales/it/LC_MESSAGES/booktheme.mo create mode 100644 spec/_static/locales/it/LC_MESSAGES/booktheme.po create mode 100644 spec/_static/locales/iw/LC_MESSAGES/booktheme.mo create mode 100644 spec/_static/locales/iw/LC_MESSAGES/booktheme.po create mode 100644 spec/_static/locales/ja/LC_MESSAGES/booktheme.mo create mode 100644 spec/_static/locales/ja/LC_MESSAGES/booktheme.po create mode 100644 spec/_static/locales/ko/LC_MESSAGES/booktheme.mo create mode 100644 spec/_static/locales/ko/LC_MESSAGES/booktheme.po create mode 100644 spec/_static/locales/lt/LC_MESSAGES/booktheme.mo create mode 100644 spec/_static/locales/lt/LC_MESSAGES/booktheme.po create mode 100644 spec/_static/locales/lv/LC_MESSAGES/booktheme.mo create mode 100644 spec/_static/locales/lv/LC_MESSAGES/booktheme.po create mode 100644 spec/_static/locales/ml/LC_MESSAGES/booktheme.mo create mode 100644 spec/_static/locales/ml/LC_MESSAGES/booktheme.po create mode 100644 spec/_static/locales/mr/LC_MESSAGES/booktheme.mo create mode 100644 spec/_static/locales/mr/LC_MESSAGES/booktheme.po create mode 100644 spec/_static/locales/ms/LC_MESSAGES/booktheme.mo create mode 100644 spec/_static/locales/ms/LC_MESSAGES/booktheme.po create mode 100644 spec/_static/locales/nl/LC_MESSAGES/booktheme.mo create mode 100644 spec/_static/locales/nl/LC_MESSAGES/booktheme.po create mode 100644 spec/_static/locales/no/LC_MESSAGES/booktheme.mo create mode 100644 spec/_static/locales/no/LC_MESSAGES/booktheme.po create mode 100644 spec/_static/locales/pl/LC_MESSAGES/booktheme.mo create mode 100644 spec/_static/locales/pl/LC_MESSAGES/booktheme.po create mode 100644 spec/_static/locales/pt/LC_MESSAGES/booktheme.mo create mode 100644 spec/_static/locales/pt/LC_MESSAGES/booktheme.po create mode 100644 spec/_static/locales/ro/LC_MESSAGES/booktheme.mo create mode 100644 spec/_static/locales/ro/LC_MESSAGES/booktheme.po create mode 100644 spec/_static/locales/ru/LC_MESSAGES/booktheme.mo create mode 100644 spec/_static/locales/ru/LC_MESSAGES/booktheme.po create mode 100644 spec/_static/locales/sk/LC_MESSAGES/booktheme.mo create mode 100644 spec/_static/locales/sk/LC_MESSAGES/booktheme.po create mode 100644 spec/_static/locales/sl/LC_MESSAGES/booktheme.mo create mode 100644 spec/_static/locales/sl/LC_MESSAGES/booktheme.po create mode 100644 spec/_static/locales/sr/LC_MESSAGES/booktheme.mo create mode 100644 spec/_static/locales/sr/LC_MESSAGES/booktheme.po create mode 100644 spec/_static/locales/sv/LC_MESSAGES/booktheme.mo create mode 100644 spec/_static/locales/sv/LC_MESSAGES/booktheme.po create mode 100644 spec/_static/locales/ta/LC_MESSAGES/booktheme.mo create mode 100644 spec/_static/locales/ta/LC_MESSAGES/booktheme.po create mode 100644 spec/_static/locales/te/LC_MESSAGES/booktheme.mo create mode 100644 spec/_static/locales/te/LC_MESSAGES/booktheme.po create mode 100644 spec/_static/locales/tg/LC_MESSAGES/booktheme.mo create mode 100644 spec/_static/locales/tg/LC_MESSAGES/booktheme.po create mode 100644 spec/_static/locales/th/LC_MESSAGES/booktheme.mo create mode 100644 spec/_static/locales/th/LC_MESSAGES/booktheme.po create mode 100644 spec/_static/locales/tl/LC_MESSAGES/booktheme.mo create mode 100644 spec/_static/locales/tl/LC_MESSAGES/booktheme.po create mode 100644 spec/_static/locales/tr/LC_MESSAGES/booktheme.mo create mode 100644 spec/_static/locales/tr/LC_MESSAGES/booktheme.po create mode 100644 spec/_static/locales/uk/LC_MESSAGES/booktheme.mo create mode 100644 spec/_static/locales/uk/LC_MESSAGES/booktheme.po create mode 100644 spec/_static/locales/ur/LC_MESSAGES/booktheme.mo create mode 100644 spec/_static/locales/ur/LC_MESSAGES/booktheme.po create mode 100644 spec/_static/locales/vi/LC_MESSAGES/booktheme.mo create mode 100644 spec/_static/locales/vi/LC_MESSAGES/booktheme.po create mode 100644 spec/_static/locales/zh_CN/LC_MESSAGES/booktheme.mo create mode 100644 spec/_static/locales/zh_CN/LC_MESSAGES/booktheme.po create mode 100644 spec/_static/locales/zh_TW/LC_MESSAGES/booktheme.mo create mode 100644 spec/_static/locales/zh_TW/LC_MESSAGES/booktheme.po create mode 100644 spec/_static/minus.png create mode 100644 spec/_static/plus.png create mode 100644 spec/_static/pygments.css create mode 100644 spec/_static/sbt-webpack-macros.html create mode 100644 spec/_static/scripts/bootstrap.js create mode 100644 spec/_static/scripts/bootstrap.js.LICENSE.txt create mode 100644 spec/_static/scripts/bootstrap.js.map create mode 100644 spec/_static/scripts/pydata-sphinx-theme.js create mode 100644 spec/_static/scripts/pydata-sphinx-theme.js.map create mode 100644 spec/_static/scripts/sphinx-book-theme.js create mode 100644 spec/_static/scripts/sphinx-book-theme.js.map create mode 100644 spec/_static/searchtools.js create mode 100644 spec/_static/sphinx_highlight.js create mode 100644 spec/_static/styles/bootstrap.css create mode 100644 spec/_static/styles/bootstrap.css.map create mode 100644 spec/_static/styles/pydata-sphinx-theme.css create mode 100644 spec/_static/styles/pydata-sphinx-theme.css.map create mode 100644 spec/_static/styles/sphinx-book-theme.css create mode 100644 spec/_static/styles/theme.css create mode 100644 spec/_static/vendor/fontawesome/6.1.2/LICENSE.txt create mode 100644 spec/_static/vendor/fontawesome/6.1.2/css/all.min.css create mode 100644 spec/_static/vendor/fontawesome/6.1.2/js/all.min.js create mode 100644 spec/_static/vendor/fontawesome/6.1.2/js/all.min.js.LICENSE.txt create mode 100644 spec/_static/vendor/fontawesome/6.1.2/webfonts/fa-brands-400.ttf create mode 100644 spec/_static/vendor/fontawesome/6.1.2/webfonts/fa-brands-400.woff2 create mode 100644 spec/_static/vendor/fontawesome/6.1.2/webfonts/fa-regular-400.ttf create mode 100644 spec/_static/vendor/fontawesome/6.1.2/webfonts/fa-regular-400.woff2 create mode 100644 spec/_static/vendor/fontawesome/6.1.2/webfonts/fa-solid-900.ttf create mode 100644 spec/_static/vendor/fontawesome/6.1.2/webfonts/fa-solid-900.woff2 create mode 100644 spec/_static/vendor/fontawesome/6.1.2/webfonts/fa-v4compatibility.ttf create mode 100644 spec/_static/vendor/fontawesome/6.1.2/webfonts/fa-v4compatibility.woff2 create mode 100644 spec/_static/webpack-macros.html create mode 100644 spec/algorithms/algorithms.html create mode 100644 spec/algorithms/copy.html create mode 100644 spec/algorithms/exclusive_scan.html create mode 100644 spec/algorithms/fill.html create mode 100644 spec/algorithms/for_each.html create mode 100644 spec/algorithms/inclusive_scan.html create mode 100644 spec/algorithms/iota.html create mode 100644 spec/algorithms/reduce.html create mode 100644 spec/algorithms/shp_matrix_gemm.html create mode 100644 spec/algorithms/shp_matrix_gemv.html create mode 100644 spec/algorithms/sort.html create mode 100644 spec/algorithms/transform.html create mode 100644 spec/arch.html create mode 100644 spec/concepts.html create mode 100644 spec/containers/containers.html create mode 100644 spec/containers/mhp_distributed_dense_matrix.html create mode 100644 spec/containers/mhp_distributed_vector.html create mode 100644 spec/containers/shp_dense_matrix.html create mode 100644 spec/containers/shp_distributed_vector.html create mode 100644 spec/containers/shp_sparse_matrix.html create mode 100644 spec/genindex.html create mode 100644 spec/include/distributed-ranges.html create mode 100644 spec/index.html create mode 100644 spec/intro.html create mode 100644 spec/objects.inv create mode 100644 spec/search.html create mode 100644 spec/searchindex.js create mode 100644 spec/views/all_view.html create mode 100644 spec/views/counted_view.html create mode 100644 spec/views/drop_view.html create mode 100644 spec/views/iota_view.html create mode 100644 spec/views/sliding_view.html create mode 100644 spec/views/take_view.html create mode 100644 spec/views/transform_view.html create mode 100644 spec/views/views.html create mode 100644 spec/views/zip_view.html create mode 100644 src-python/drbench/drbench.egg-info/PKG-INFO create mode 100644 src-python/drbench/drbench.egg-info/SOURCES.txt create mode 100644 src-python/drbench/drbench.egg-info/dependency_links.txt create mode 100644 src-python/drbench/drbench.egg-info/entry_points.txt create mode 100644 src-python/drbench/drbench.egg-info/requires.txt create mode 100644 src-python/drbench/drbench.egg-info/top_level.txt diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000000..53e28a034d --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,19 @@ +# SPDX-FileCopyrightText: Intel Corporation +# +# SPDX-License-Identifier: BSD-3-Clause + +# To get started with Dependabot version updates, you'll need to specify which +# package ecosystems to update and where the package manifests are located. +# Please see the documentation for all configuration options: +# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates + +version: 2 +updates: + - package-ecosystem: "pip" + directory: "/" + schedule: + interval: "weekly" + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000000..5b13fae5a7 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,117 @@ +# SPDX-FileCopyrightText: Intel Corporation +# +# SPDX-License-Identifier: BSD-3-Clause + +on: + push: + branches: + - main + pull_request: + +env: + SPHINXOPTS: -q -W + +jobs: + checks: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-python@v4 + with: + python-version: '3.10' + - run: pip install -r requirements.txt + - name: Checks + run: | + pre-commit run --all + + clang: + runs-on: ubuntu-latest + env: + CXX: clang++ + steps: + - uses: actions/checkout@v3 + - name: Build & test + run: | + #source /opt/intel/oneapi/setvars.sh + cmake -B build + make -j -C build all test + - uses: actions/upload-artifact@v3 + with: + name: log-clang-${{ env.CXX }} + path: build/Testing + + gcc: + runs-on: ubuntuy-latest + strategy: + fail-fast: false + matrix: + include: + - cxx: g++-10 + - cxx: g++-11 + - cxx: g++-12 + name: ${{ matrix.cxx }} + env: + CXX: ${{ matrix.cxx }} + steps: + - uses: actions/checkout@v3 + - name: Build & test + run: | + #source /opt/intel/oneapi/setvars.sh + cmake -B build + make -j -C build all test + cmake -B build-nofmt + make -j -C build-nofmt/examples/cpu all test + - uses: actions/upload-artifact@v3 + with: + name: log-gcc-${{ env.CXX }} + path: build/Testing + + icpx: + runs-on: ubuntu-latest + env: + CXX: icpx + steps: + - uses: actions/checkout@v3 + - name: Build & test + run: | + #source /opt/intel/oneapi/setvars.sh + cmake -B build -DENABLE_SYCL_MPI=on + make -j -C build all test + - uses: actions/upload-artifact@v3 + with: + name: log-icpx-${{ env.CXX }} + path: build/Testing + + publish: + needs: [checks, clang, gcc, icpx] + runs-on: dds-base + if: ${{ github.ref == 'refs/heads/main' }} + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-python@v4 + with: + python-version: '3.10' + - run: pip install -r requirements.txt + - name: Build doc + run: | + make -C doc/spec html + - name: Checkout gh-pages + uses: actions/checkout@v3 + with: + ref: gh-pages + path: gh-pages + - name: Publish to github pages + run: | + rm -rf gh-pages/* + touch gh-pages/.nojekyll + + cp -r doc/spec/build/html gh-pages/spec + cp -r doc/spec/build/doxygen-html gh-pages/doxygen + + cd gh-pages + git config user.name github-actions + git config user.email github-actions@github.com + git add . + # Ignore errors because no updates returns an error status. + git commit --reset-author --amend -m "Update from github actions" + git push --force origin gh-pages diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000000..e69de29bb2 diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000000..16da31e05f --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,60 @@ +# SPDX-FileCopyrightText: Intel Corporation +# +# SPDX-License-Identifier: BSD-3-Clause + +# See https://pre-commit.com for more information +# See https://pre-commit.com/hooks.html for more hooks +repos: + +- repo: https://github.com/pre-commit/mirrors-clang-format + rev: v15.0.4 + hooks: + - id: clang-format + +- repo: https://github.com/ambv/black + rev: 22.10.0 + hooks: + - id: black + +- repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.3.0 + hooks: + - id: trailing-whitespace + - id: end-of-file-fixer + - id: mixed-line-ending + - id: check-xml + - id: check-yaml + - id: check-case-conflict + - id: check-toml + - id: check-json + - id: check-added-large-files + args: ['--maxkb=800'] + +- repo: https://github.com/pycqa/flake8 + rev: 5.0.4 + hooks: + - id: flake8 + +- repo: https://github.com/pycqa/doc8 + rev: v1.0.0 + hooks: + - id: doc8 + +- repo: https://github.com/pycqa/isort + rev: 5.10.1 + hooks: + - id: isort + +- repo: https://github.com/fsfe/reuse-tool + rev: v1.0.0 + hooks: + - id: reuse + +- repo: local + hooks: + - id: sphinx + name: sphinx + entry: make -C doc/spec spelling linkcheck html + language: system + pass_filenames: false + always_run: true diff --git a/bench/devcloud/dr-bench-001626b200c94e298fb17b25002c08ec.json b/bench/devcloud/dr-bench-001626b200c94e298fb17b25002c08ec.json new file mode 100644 index 0000000000..e384f95a0e --- /dev/null +++ b/bench/devcloud/dr-bench-001626b200c94e298fb17b25002c08ec.json @@ -0,0 +1,150 @@ +{ + "context": { + "date": "2023-11-01T01:11:45-07:00", + "host_name": "idc-beta-batch-pvc-node-20", + "executable": "mhp/mhp-bench", + "num_cpus": 224, + "mhz_per_cpu": 3800, + "cpu_scaling_enabled": false, + "caches": [ + { + "type": "Data", + "level": 1, + "size": 49152, + "num_sharing": 2 + }, + { + "type": "Instruction", + "level": 1, + "size": 32768, + "num_sharing": 2 + }, + { + "type": "Unified", + "level": 2, + "size": 2097152, + "num_sharing": 2 + }, + { + "type": "Unified", + "level": 3, + "size": 110100480, + "num_sharing": 112 + } + ], + "load_avg": [3.0166,1.90918,0.946777], + "library_build_type": "debug", + "default_repetitions": "50", + "default_vector_size": "2000000000", + "device": "GPU", + "device_info": "Intel(R) Data Center GPU Max 1100, max_compute_units: 448", + "hostname": "idc-beta-batch-pvc-node-20\n", + "lscpu": "Architecture: x86_64\nCPU op-mode(s): 32-bit, 64-bit\nAddress sizes: 52 bits physical, 57 bits virtual\nByte Order: Little Endian\nCPU(s): 224\nOn-line CPU(s) list: 0-223\nVendor ID: GenuineIntel\nModel name: Intel(R) Xeon(R) Platinum 8480+\nCPU family: 6\nModel: 143\nThread(s) per core: 2\nCore(s) per socket: 56\nSocket(s): 2\nStepping: 8\nCPU max MHz: 3800.0000\nCPU min MHz: 800.0000\nBogoMIPS: 4000.00\nFlags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb cat_l3 cat_l2 cdp_l3 invpcid_single intel_ppin cdp_l2 ssbd mba ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid cqm rdt_a avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb intel_pt avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local split_lock_detect avx_vnni avx512_bf16 wbnoinvd dtherm ida arat pln pts hwp hwp_act_window hwp_epp hwp_pkg_req avx512vbmi umip pku ospke waitpkg avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg tme avx512_vpopcntdq la57 rdpid bus_lock_detect cldemote movdiri movdir64b enqcmd fsrm md_clear serialize tsxldtrk pconfig arch_lbr amx_bf16 avx512_fp16 amx_tile amx_int8 flush_l1d arch_capabilities\nVirtualization: VT-x\nL1d cache: 5.3 MiB (112 instances)\nL1i cache: 3.5 MiB (112 instances)\nL2 cache: 224 MiB (112 instances)\nL3 cache: 210 MiB (2 instances)\nNUMA node(s): 2\nNUMA node0 CPU(s): 0-55,112-167\nNUMA node1 CPU(s): 56-111,168-223\nVulnerability Gather data sampling: Not affected\nVulnerability Itlb multihit: Not affected\nVulnerability L1tf: Not affected\nVulnerability Mds: Not affected\nVulnerability Meltdown: Not affected\nVulnerability Mmio stale data: Not affected\nVulnerability Retbleed: Not affected\nVulnerability Spec rstack overflow: Not affected\nVulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl and seccomp\nVulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization\nVulnerability Spectre v2: Mitigation; Enhanced IBRS, IBPB conditional, RSB filling, PBRSB-eIBRS SW sequence\nVulnerability Srbds: Not affected\nVulnerability Tsx async abort: Not affected\n", + "model": "MHP", + "numactl": "", + "rank": "0", + "ranks": "1", + "runtime": "SYCL", + "target": "MHP_SYCL_GPU", + "weak-scaling": "0" + }, + "benchmarks": [ + { + "name": "Reduce_DR/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 0, + "per_family_instance_index": 0, + "run_name": "Reduce_DR/min_time:0.100/min_warmup_time:0.100/real_time", + "run_type": "iteration", + "repetitions": 1, + "repetition_index": 0, + "threads": 1, + "iterations": 1, + "real_time": 5.4777149001838200e+02, + "cpu_time": 5.4777243300000043e+02, + "time_unit": "ms", + "bytes_per_second": 7.3023150581746582e+11, + "footprint": 8.0000000000000000e+09 + }, + { + "name": "DotProduct_DR/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 1, + "per_family_instance_index": 0, + "run_name": "DotProduct_DR/min_time:0.100/min_warmup_time:0.100/real_time", + "run_type": "iteration", + "repetitions": 1, + "repetition_index": 0, + "threads": 1, + "iterations": 1, + "real_time": 2.3125607209806976e+03, + "cpu_time": 2.3125115420000029e+03, + "time_unit": "ms", + "bytes_per_second": 6.9187372486439233e+11, + "footprint": 3.2000000000000000e+10 + }, + { + "name": "Inclusive_Scan_DR/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 2, + "per_family_instance_index": 0, + "run_name": "Inclusive_Scan_DR/min_time:0.100/min_warmup_time:0.100/real_time", + "run_type": "iteration", + "repetitions": 1, + "repetition_index": 0, + "threads": 1, + "iterations": 1, + "real_time": 4.1303278909977307e+03, + "cpu_time": 4.1296955270000026e+03, + "time_unit": "ms", + "bytes_per_second": 1.9368922301390222e+11, + "footprint": 1.6000000000000000e+10 + }, + { + "name": "Exclusive_Scan_DR/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 3, + "per_family_instance_index": 0, + "run_name": "Exclusive_Scan_DR/min_time:0.100/min_warmup_time:0.100/real_time", + "run_type": "iteration", + "repetitions": 1, + "repetition_index": 0, + "threads": 1, + "iterations": 1, + "real_time": 7.3465490690186498e+03, + "cpu_time": 7.3454981530000086e+03, + "time_unit": "ms", + "bytes_per_second": 1.0889466503037511e+11, + "footprint": 1.6000000000000000e+10 + }, + { + "name": "WaveEquation_DR/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 4, + "per_family_instance_index": 0, + "run_name": "WaveEquation_DR/min_time:0.100/min_warmup_time:0.100/real_time", + "run_type": "iteration", + "repetitions": 1, + "repetition_index": 0, + "threads": 1, + "iterations": 1, + "real_time": 8.5208804039939605e+03, + "cpu_time": 8.4907092139999913e+03, + "time_unit": "ms", + "bytes_per_second": 4.2669052478377881e+11, + "flops": 7.9212349897978735e+08, + "footprint": 3.5997811200000000e+10 + }, + { + "name": "Stencil2D_DR/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 5, + "per_family_instance_index": 0, + "run_name": "Stencil2D_DR/min_time:0.100/min_warmup_time:0.100/real_time", + "run_type": "iteration", + "repetitions": 1, + "repetition_index": 0, + "threads": 1, + "iterations": 1, + "real_time": 5.0731490198549091e+02, + "cpu_time": 5.0730882100000940e+02, + "time_unit": "ms", + "bytes_per_second": 6.3077193030917896e+11, + "footprint": 3.2000000000000000e+10 + } + ] +} diff --git a/bench/devcloud/dr-bench-142ea438a6a94fca8605521c1e1e8510.json b/bench/devcloud/dr-bench-142ea438a6a94fca8605521c1e1e8510.json new file mode 100644 index 0000000000..b300243f89 --- /dev/null +++ b/bench/devcloud/dr-bench-142ea438a6a94fca8605521c1e1e8510.json @@ -0,0 +1,133 @@ +{ + "context": { + "date": "2023-11-01T01:08:27-07:00", + "host_name": "idc-beta-batch-pvc-node-20", + "executable": "shp/shp-bench", + "num_cpus": 224, + "mhz_per_cpu": 3605, + "cpu_scaling_enabled": false, + "caches": [ + { + "type": "Data", + "level": 1, + "size": 49152, + "num_sharing": 2 + }, + { + "type": "Instruction", + "level": 1, + "size": 32768, + "num_sharing": 2 + }, + { + "type": "Unified", + "level": 2, + "size": 2097152, + "num_sharing": 2 + }, + { + "type": "Unified", + "level": 3, + "size": 110100480, + "num_sharing": 112 + } + ], + "load_avg": [5.04785,1.70459,0.685059], + "library_build_type": "debug", + "default_repetitions": "50", + "default_vector_size": "2000000000", + "device": "GPU", + "device_info0": "Intel(R) Data Center GPU Max 1100, max_compute_units: 448", + "hostname": "idc-beta-batch-pvc-node-20\n", + "lscpu": "Architecture: x86_64\nCPU op-mode(s): 32-bit, 64-bit\nAddress sizes: 52 bits physical, 57 bits virtual\nByte Order: Little Endian\nCPU(s): 224\nOn-line CPU(s) list: 0-223\nVendor ID: GenuineIntel\nModel name: Intel(R) Xeon(R) Platinum 8480+\nCPU family: 6\nModel: 143\nThread(s) per core: 2\nCore(s) per socket: 56\nSocket(s): 2\nStepping: 8\nCPU max MHz: 3800.0000\nCPU min MHz: 800.0000\nBogoMIPS: 4000.00\nFlags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb cat_l3 cat_l2 cdp_l3 invpcid_single intel_ppin cdp_l2 ssbd mba ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid cqm rdt_a avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb intel_pt avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local split_lock_detect avx_vnni avx512_bf16 wbnoinvd dtherm ida arat pln pts hwp hwp_act_window hwp_epp hwp_pkg_req avx512vbmi umip pku ospke waitpkg avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg tme avx512_vpopcntdq la57 rdpid bus_lock_detect cldemote movdiri movdir64b enqcmd fsrm md_clear serialize tsxldtrk pconfig arch_lbr amx_bf16 avx512_fp16 amx_tile amx_int8 flush_l1d arch_capabilities\nVirtualization: VT-x\nL1d cache: 5.3 MiB (112 instances)\nL1i cache: 3.5 MiB (112 instances)\nL2 cache: 224 MiB (112 instances)\nL3 cache: 210 MiB (2 instances)\nNUMA node(s): 2\nNUMA node0 CPU(s): 0-55,112-167\nNUMA node1 CPU(s): 56-111,168-223\nVulnerability Gather data sampling: Not affected\nVulnerability Itlb multihit: Not affected\nVulnerability L1tf: Not affected\nVulnerability Mds: Not affected\nVulnerability Meltdown: Not affected\nVulnerability Mmio stale data: Not affected\nVulnerability Retbleed: Not affected\nVulnerability Spec rstack overflow: Not affected\nVulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl and seccomp\nVulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization\nVulnerability Spectre v2: Mitigation; Enhanced IBRS, IBPB conditional, RSB filling, PBRSB-eIBRS SW sequence\nVulnerability Srbds: Not affected\nVulnerability Tsx async abort: Not affected\n", + "model": "SHP", + "numactl": "", + "rank": "0", + "ranks": "1", + "runtime": "SYCL", + "target": "SHP_SYCL_GPU", + "weak-scaling": "0" + }, + "benchmarks": [ + { + "name": "Stream_Copy/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 0, + "per_family_instance_index": 0, + "run_name": "Stream_Copy/min_time:0.100/min_warmup_time:0.100/real_time", + "run_type": "iteration", + "repetitions": 1, + "repetition_index": 0, + "threads": 1, + "iterations": 1, + "real_time": 9.2974557500575702e+02, + "cpu_time": 3.8167089999999737e+00, + "time_unit": "ms", + "bytes_per_second": 8.6045045172174805e+11, + "footprint": 1.6000000000000000e+10 + }, + { + "name": "Stream_Scale/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 1, + "per_family_instance_index": 0, + "run_name": "Stream_Scale/min_time:0.100/min_warmup_time:0.100/real_time", + "run_type": "iteration", + "repetitions": 1, + "repetition_index": 0, + "threads": 1, + "iterations": 1, + "real_time": 9.2769770897399451e+02, + "cpu_time": 3.8484369999998158e+00, + "time_unit": "ms", + "bytes_per_second": 8.6234987136572290e+11, + "footprint": 1.6000000000000000e+10 + }, + { + "name": "Stream_Add/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 2, + "per_family_instance_index": 0, + "run_name": "Stream_Add/min_time:0.100/min_warmup_time:0.100/real_time", + "run_type": "iteration", + "repetitions": 1, + "repetition_index": 0, + "threads": 1, + "iterations": 1, + "real_time": 1.5148645810083124e+03, + "cpu_time": 3.8419240000000521e+00, + "time_unit": "ms", + "bytes_per_second": 7.9215001462458472e+11, + "footprint": 2.4000000000000000e+10 + }, + { + "name": "Stream_Triad/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 3, + "per_family_instance_index": 0, + "run_name": "Stream_Triad/min_time:0.100/min_warmup_time:0.100/real_time", + "run_type": "iteration", + "repetitions": 1, + "repetition_index": 0, + "threads": 1, + "iterations": 1, + "real_time": 1.4422890060051025e+03, + "cpu_time": 3.7540629999999187e+00, + "time_unit": "ms", + "bytes_per_second": 8.3201077939559265e+11, + "footprint": 2.4000000000000000e+10 + }, + { + "name": "BlackScholes_DR/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 4, + "per_family_instance_index": 0, + "run_name": "BlackScholes_DR/min_time:0.100/min_warmup_time:0.100/real_time", + "run_type": "iteration", + "repetitions": 1, + "repetition_index": 0, + "threads": 1, + "iterations": 1, + "real_time": 2.3724645240131872e+03, + "cpu_time": 4.0069709999999148e+00, + "time_unit": "ms", + "bytes_per_second": 8.4300522926971399e+11, + "footprint": 4.0000000000000000e+10 + } + ] +} diff --git a/bench/devcloud/dr-bench-5aac2e5f06e24b8abdcf604005302cd9.json b/bench/devcloud/dr-bench-5aac2e5f06e24b8abdcf604005302cd9.json new file mode 100644 index 0000000000..5634d0f87c --- /dev/null +++ b/bench/devcloud/dr-bench-5aac2e5f06e24b8abdcf604005302cd9.json @@ -0,0 +1,133 @@ +{ + "context": { + "date": "2023-11-01T01:11:26-07:00", + "host_name": "idc-beta-batch-pvc-node-20", + "executable": "mhp/mhp-bench", + "num_cpus": 224, + "mhz_per_cpu": 3713, + "cpu_scaling_enabled": false, + "caches": [ + { + "type": "Data", + "level": 1, + "size": 49152, + "num_sharing": 2 + }, + { + "type": "Instruction", + "level": 1, + "size": 32768, + "num_sharing": 2 + }, + { + "type": "Unified", + "level": 2, + "size": 2097152, + "num_sharing": 2 + }, + { + "type": "Unified", + "level": 3, + "size": 110100480, + "num_sharing": 112 + } + ], + "load_avg": [2.28955,1.70996,0.862793], + "library_build_type": "debug", + "default_repetitions": "50", + "default_vector_size": "2000000000", + "device": "GPU", + "device_info": "Intel(R) Data Center GPU Max 1100, max_compute_units: 448", + "hostname": "idc-beta-batch-pvc-node-20\n", + "lscpu": "Architecture: x86_64\nCPU op-mode(s): 32-bit, 64-bit\nAddress sizes: 52 bits physical, 57 bits virtual\nByte Order: Little Endian\nCPU(s): 224\nOn-line CPU(s) list: 0-223\nVendor ID: GenuineIntel\nModel name: Intel(R) Xeon(R) Platinum 8480+\nCPU family: 6\nModel: 143\nThread(s) per core: 2\nCore(s) per socket: 56\nSocket(s): 2\nStepping: 8\nCPU max MHz: 3800.0000\nCPU min MHz: 800.0000\nBogoMIPS: 4000.00\nFlags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb cat_l3 cat_l2 cdp_l3 invpcid_single intel_ppin cdp_l2 ssbd mba ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid cqm rdt_a avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb intel_pt avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local split_lock_detect avx_vnni avx512_bf16 wbnoinvd dtherm ida arat pln pts hwp hwp_act_window hwp_epp hwp_pkg_req avx512vbmi umip pku ospke waitpkg avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg tme avx512_vpopcntdq la57 rdpid bus_lock_detect cldemote movdiri movdir64b enqcmd fsrm md_clear serialize tsxldtrk pconfig arch_lbr amx_bf16 avx512_fp16 amx_tile amx_int8 flush_l1d arch_capabilities\nVirtualization: VT-x\nL1d cache: 5.3 MiB (112 instances)\nL1i cache: 3.5 MiB (112 instances)\nL2 cache: 224 MiB (112 instances)\nL3 cache: 210 MiB (2 instances)\nNUMA node(s): 2\nNUMA node0 CPU(s): 0-55,112-167\nNUMA node1 CPU(s): 56-111,168-223\nVulnerability Gather data sampling: Not affected\nVulnerability Itlb multihit: Not affected\nVulnerability L1tf: Not affected\nVulnerability Mds: Not affected\nVulnerability Meltdown: Not affected\nVulnerability Mmio stale data: Not affected\nVulnerability Retbleed: Not affected\nVulnerability Spec rstack overflow: Not affected\nVulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl and seccomp\nVulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization\nVulnerability Spectre v2: Mitigation; Enhanced IBRS, IBPB conditional, RSB filling, PBRSB-eIBRS SW sequence\nVulnerability Srbds: Not affected\nVulnerability Tsx async abort: Not affected\n", + "model": "MHP", + "numactl": "", + "rank": "0", + "ranks": "4", + "runtime": "SYCL", + "target": "MHP_SYCL_GPU", + "weak-scaling": "0" + }, + "benchmarks": [ + { + "name": "Stream_Copy/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 0, + "per_family_instance_index": 0, + "run_name": "Stream_Copy/min_time:0.100/min_warmup_time:0.100/real_time", + "run_type": "iteration", + "repetitions": 1, + "repetition_index": 0, + "threads": 1, + "iterations": 1, + "real_time": 2.3281113298271308e+02, + "cpu_time": 3.8953630000002626e+00, + "time_unit": "ms", + "bytes_per_second": 3.4362617876156392e+12, + "footprint": 4.0000000000000000e+09 + }, + { + "name": "Stream_Scale/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 1, + "per_family_instance_index": 0, + "run_name": "Stream_Scale/min_time:0.100/min_warmup_time:0.100/real_time", + "run_type": "iteration", + "repetitions": 1, + "repetition_index": 0, + "threads": 1, + "iterations": 1, + "real_time": 2.3227109001362570e+02, + "cpu_time": 3.5886329999996747e+00, + "time_unit": "ms", + "bytes_per_second": 3.4442512839332251e+12, + "footprint": 4.0000000000000000e+09 + }, + { + "name": "Stream_Add/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 2, + "per_family_instance_index": 0, + "run_name": "Stream_Add/min_time:0.100/min_warmup_time:0.100/real_time", + "run_type": "iteration", + "repetitions": 1, + "repetition_index": 0, + "threads": 1, + "iterations": 1, + "real_time": 3.8579168099600315e+02, + "cpu_time": 2.9681779999997104e+00, + "time_unit": "ms", + "bytes_per_second": 3.1104869781067988e+12, + "footprint": 6.0000000000000000e+09 + }, + { + "name": "Stream_Triad/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 3, + "per_family_instance_index": 0, + "run_name": "Stream_Triad/min_time:0.100/min_warmup_time:0.100/real_time", + "run_type": "iteration", + "repetitions": 1, + "repetition_index": 0, + "threads": 1, + "iterations": 1, + "real_time": 3.7625796902137375e+02, + "cpu_time": 1.1227679999999296e+01, + "time_unit": "ms", + "bytes_per_second": 3.1893012209711699e+12, + "footprint": 6.0000000000000000e+09 + }, + { + "name": "BlackScholes_DR/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 4, + "per_family_instance_index": 0, + "run_name": "BlackScholes_DR/min_time:0.100/min_warmup_time:0.100/real_time", + "run_type": "iteration", + "repetitions": 1, + "repetition_index": 0, + "threads": 1, + "iterations": 1, + "real_time": 6.2543112398542371e+02, + "cpu_time": 6.7317800000008532e+00, + "time_unit": "ms", + "bytes_per_second": 3.1977941667748086e+12, + "footprint": 1.0000000000000000e+10 + } + ] +} diff --git a/bench/devcloud/dr-bench-6bd83067f15e49569b6339a89f3a60fb.json b/bench/devcloud/dr-bench-6bd83067f15e49569b6339a89f3a60fb.json new file mode 100644 index 0000000000..4aaf0d7c4c --- /dev/null +++ b/bench/devcloud/dr-bench-6bd83067f15e49569b6339a89f3a60fb.json @@ -0,0 +1,99 @@ +{ + "context": { + "date": "2023-11-01T01:13:30-07:00", + "host_name": "idc-beta-batch-pvc-node-20", + "executable": "mhp/mhp-bench", + "num_cpus": 224, + "mhz_per_cpu": 3782, + "cpu_scaling_enabled": false, + "caches": [ + { + "type": "Data", + "level": 1, + "size": 49152, + "num_sharing": 2 + }, + { + "type": "Instruction", + "level": 1, + "size": 32768, + "num_sharing": 2 + }, + { + "type": "Unified", + "level": 2, + "size": 2097152, + "num_sharing": 2 + }, + { + "type": "Unified", + "level": 3, + "size": 110100480, + "num_sharing": 112 + } + ], + "load_avg": [1.6084,1.7124,0.983887], + "library_build_type": "debug", + "default_repetitions": "50", + "default_vector_size": "2000000000", + "device": "GPU", + "device_info": "Intel(R) Data Center GPU Max 1100, max_compute_units: 448", + "hostname": "idc-beta-batch-pvc-node-20\n", + "lscpu": "Architecture: x86_64\nCPU op-mode(s): 32-bit, 64-bit\nAddress sizes: 52 bits physical, 57 bits virtual\nByte Order: Little Endian\nCPU(s): 224\nOn-line CPU(s) list: 0-223\nVendor ID: GenuineIntel\nModel name: Intel(R) Xeon(R) Platinum 8480+\nCPU family: 6\nModel: 143\nThread(s) per core: 2\nCore(s) per socket: 56\nSocket(s): 2\nStepping: 8\nCPU max MHz: 3800.0000\nCPU min MHz: 800.0000\nBogoMIPS: 4000.00\nFlags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb cat_l3 cat_l2 cdp_l3 invpcid_single intel_ppin cdp_l2 ssbd mba ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid cqm rdt_a avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb intel_pt avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local split_lock_detect avx_vnni avx512_bf16 wbnoinvd dtherm ida arat pln pts hwp hwp_act_window hwp_epp hwp_pkg_req avx512vbmi umip pku ospke waitpkg avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg tme avx512_vpopcntdq la57 rdpid bus_lock_detect cldemote movdiri movdir64b enqcmd fsrm md_clear serialize tsxldtrk pconfig arch_lbr amx_bf16 avx512_fp16 amx_tile amx_int8 flush_l1d arch_capabilities\nVirtualization: VT-x\nL1d cache: 5.3 MiB (112 instances)\nL1i cache: 3.5 MiB (112 instances)\nL2 cache: 224 MiB (112 instances)\nL3 cache: 210 MiB (2 instances)\nNUMA node(s): 2\nNUMA node0 CPU(s): 0-55,112-167\nNUMA node1 CPU(s): 56-111,168-223\nVulnerability Gather data sampling: Not affected\nVulnerability Itlb multihit: Not affected\nVulnerability L1tf: Not affected\nVulnerability Mds: Not affected\nVulnerability Meltdown: Not affected\nVulnerability Mmio stale data: Not affected\nVulnerability Retbleed: Not affected\nVulnerability Spec rstack overflow: Not affected\nVulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl and seccomp\nVulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization\nVulnerability Spectre v2: Mitigation; Enhanced IBRS, IBPB conditional, RSB filling, PBRSB-eIBRS SW sequence\nVulnerability Srbds: Not affected\nVulnerability Tsx async abort: Not affected\n", + "model": "MHP", + "numactl": "", + "rank": "0", + "ranks": "2", + "runtime": "SYCL", + "target": "MHP_SYCL_GPU", + "weak-scaling": "0" + }, + "benchmarks": [ + { + "name": "Reduce_DR/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 0, + "per_family_instance_index": 0, + "run_name": "Reduce_DR/min_time:0.100/min_warmup_time:0.100/real_time", + "run_type": "iteration", + "repetitions": 1, + "repetition_index": 0, + "threads": 1, + "iterations": 1, + "real_time": 2.7548196002030676e+02, + "cpu_time": 2.7543288100000041e+02, + "time_unit": "ms", + "bytes_per_second": 1.4520007044037095e+12, + "footprint": 4.0000000000000000e+09 + }, + { + "name": "DotProduct_DR/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 1, + "per_family_instance_index": 0, + "run_name": "DotProduct_DR/min_time:0.100/min_warmup_time:0.100/real_time", + "run_type": "iteration", + "repetitions": 1, + "repetition_index": 0, + "threads": 1, + "iterations": 1, + "real_time": 1.1675036299919193e+03, + "cpu_time": 1.1675015930000009e+03, + "time_unit": "ms", + "bytes_per_second": 1.3704454178108845e+12, + "footprint": 1.6000000000000000e+10 + }, + { + "name": "Inclusive_Scan_DR/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 2, + "per_family_instance_index": 0, + "run_name": "Inclusive_Scan_DR/min_time:0.100/min_warmup_time:0.100/real_time", + "run_type": "iteration", + "repetitions": 1, + "repetition_index": 0, + "threads": 1, + "iterations": 1, + "real_time": 2.5693293800133765e+03, + "cpu_time": 2.5642852820000003e+03, + "time_unit": "ms", + "bytes_per_second": 3.1136529485987311e+11, + "footprint": 8.0000000000000000e+09 + } \ No newline at end of file diff --git a/bench/devcloud/dr-bench-723eb1a265cc4de1aa3ccda22a4e5bd7.json b/bench/devcloud/dr-bench-723eb1a265cc4de1aa3ccda22a4e5bd7.json new file mode 100644 index 0000000000..82660113eb --- /dev/null +++ b/bench/devcloud/dr-bench-723eb1a265cc4de1aa3ccda22a4e5bd7.json @@ -0,0 +1,136 @@ +{ + "context": { + "date": "2023-11-01T01:09:03-07:00", + "host_name": "idc-beta-batch-pvc-node-20", + "executable": "shp/shp-bench", + "num_cpus": 224, + "mhz_per_cpu": 3787, + "cpu_scaling_enabled": false, + "caches": [ + { + "type": "Data", + "level": 1, + "size": 49152, + "num_sharing": 2 + }, + { + "type": "Instruction", + "level": 1, + "size": 32768, + "num_sharing": 2 + }, + { + "type": "Unified", + "level": 2, + "size": 2097152, + "num_sharing": 2 + }, + { + "type": "Unified", + "level": 3, + "size": 110100480, + "num_sharing": 112 + } + ], + "load_avg": [3.12744,1.63037,0.706055], + "library_build_type": "debug", + "default_repetitions": "50", + "default_vector_size": "2000000000", + "device": "GPU", + "device_info0": "Intel(R) Data Center GPU Max 1100, max_compute_units: 448", + "device_info1": "Intel(R) Data Center GPU Max 1100, max_compute_units: 448", + "device_info2": "Intel(R) Data Center GPU Max 1100, max_compute_units: 448", + "device_info3": "Intel(R) Data Center GPU Max 1100, max_compute_units: 448", + "hostname": "idc-beta-batch-pvc-node-20\n", + "lscpu": "Architecture: x86_64\nCPU op-mode(s): 32-bit, 64-bit\nAddress sizes: 52 bits physical, 57 bits virtual\nByte Order: Little Endian\nCPU(s): 224\nOn-line CPU(s) list: 0-223\nVendor ID: GenuineIntel\nModel name: Intel(R) Xeon(R) Platinum 8480+\nCPU family: 6\nModel: 143\nThread(s) per core: 2\nCore(s) per socket: 56\nSocket(s): 2\nStepping: 8\nCPU max MHz: 3800.0000\nCPU min MHz: 800.0000\nBogoMIPS: 4000.00\nFlags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb cat_l3 cat_l2 cdp_l3 invpcid_single intel_ppin cdp_l2 ssbd mba ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid cqm rdt_a avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb intel_pt avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local split_lock_detect avx_vnni avx512_bf16 wbnoinvd dtherm ida arat pln pts hwp hwp_act_window hwp_epp hwp_pkg_req avx512vbmi umip pku ospke waitpkg avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg tme avx512_vpopcntdq la57 rdpid bus_lock_detect cldemote movdiri movdir64b enqcmd fsrm md_clear serialize tsxldtrk pconfig arch_lbr amx_bf16 avx512_fp16 amx_tile amx_int8 flush_l1d arch_capabilities\nVirtualization: VT-x\nL1d cache: 5.3 MiB (112 instances)\nL1i cache: 3.5 MiB (112 instances)\nL2 cache: 224 MiB (112 instances)\nL3 cache: 210 MiB (2 instances)\nNUMA node(s): 2\nNUMA node0 CPU(s): 0-55,112-167\nNUMA node1 CPU(s): 56-111,168-223\nVulnerability Gather data sampling: Not affected\nVulnerability Itlb multihit: Not affected\nVulnerability L1tf: Not affected\nVulnerability Mds: Not affected\nVulnerability Meltdown: Not affected\nVulnerability Mmio stale data: Not affected\nVulnerability Retbleed: Not affected\nVulnerability Spec rstack overflow: Not affected\nVulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl and seccomp\nVulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization\nVulnerability Spectre v2: Mitigation; Enhanced IBRS, IBPB conditional, RSB filling, PBRSB-eIBRS SW sequence\nVulnerability Srbds: Not affected\nVulnerability Tsx async abort: Not affected\n", + "model": "SHP", + "numactl": "", + "rank": "0", + "ranks": "4", + "runtime": "SYCL", + "target": "SHP_SYCL_GPU", + "weak-scaling": "0" + }, + "benchmarks": [ + { + "name": "Stream_Copy/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 0, + "per_family_instance_index": 0, + "run_name": "Stream_Copy/min_time:0.100/min_warmup_time:0.100/real_time", + "run_type": "iteration", + "repetitions": 1, + "repetition_index": 0, + "threads": 1, + "iterations": 1, + "real_time": 2.3343688297249375e+02, + "cpu_time": 1.8447280000000177e+00, + "time_unit": "ms", + "bytes_per_second": 3.4270505577915269e+12, + "footprint": 4.0000000000000000e+09 + }, + { + "name": "Stream_Scale/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 1, + "per_family_instance_index": 0, + "run_name": "Stream_Scale/min_time:0.100/min_warmup_time:0.100/real_time", + "run_type": "iteration", + "repetitions": 1, + "repetition_index": 0, + "threads": 1, + "iterations": 1, + "real_time": 2.3372054202265514e+02, + "cpu_time": 1.8387839999998157e+00, + "time_unit": "ms", + "bytes_per_second": 3.4228912575534502e+12, + "footprint": 4.0000000000000000e+09 + }, + { + "name": "Stream_Add/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 2, + "per_family_instance_index": 0, + "run_name": "Stream_Add/min_time:0.100/min_warmup_time:0.100/real_time", + "run_type": "iteration", + "repetitions": 1, + "repetition_index": 0, + "threads": 1, + "iterations": 1, + "real_time": 3.7341781698409329e+02, + "cpu_time": 2.1443589999998736e+00, + "time_unit": "ms", + "bytes_per_second": 3.2135585004802197e+12, + "footprint": 6.0000000000000000e+09 + }, + { + "name": "Stream_Triad/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 3, + "per_family_instance_index": 0, + "run_name": "Stream_Triad/min_time:0.100/min_warmup_time:0.100/real_time", + "run_type": "iteration", + "repetitions": 1, + "repetition_index": 0, + "threads": 1, + "iterations": 1, + "real_time": 3.6309578201437751e+02, + "cpu_time": 2.1698279999999848e+00, + "time_unit": "ms", + "bytes_per_second": 3.3049130820045811e+12, + "footprint": 6.0000000000000000e+09 + }, + { + "name": "BlackScholes_DR/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 4, + "per_family_instance_index": 0, + "run_name": "BlackScholes_DR/min_time:0.100/min_warmup_time:0.100/real_time", + "run_type": "iteration", + "repetitions": 1, + "repetition_index": 0, + "threads": 1, + "iterations": 1, + "real_time": 6.2264907302202778e+02, + "cpu_time": 5.6804449999998674e+00, + "time_unit": "ms", + "bytes_per_second": 3.2120821930931309e+12, + "footprint": 1.0000000000000000e+10 + } + ] +} diff --git a/bench/devcloud/dr-bench-7c6ff308c4c94a338fec3a7d93cc0836.json b/bench/devcloud/dr-bench-7c6ff308c4c94a338fec3a7d93cc0836.json new file mode 100644 index 0000000000..538e2e1ba5 --- /dev/null +++ b/bench/devcloud/dr-bench-7c6ff308c4c94a338fec3a7d93cc0836.json @@ -0,0 +1,135 @@ +{ + "context": { + "date": "2023-11-01T01:08:55-07:00", + "host_name": "idc-beta-batch-pvc-node-20", + "executable": "shp/shp-bench", + "num_cpus": 224, + "mhz_per_cpu": 3782, + "cpu_scaling_enabled": false, + "caches": [ + { + "type": "Data", + "level": 1, + "size": 49152, + "num_sharing": 2 + }, + { + "type": "Instruction", + "level": 1, + "size": 32768, + "num_sharing": 2 + }, + { + "type": "Unified", + "level": 2, + "size": 2097152, + "num_sharing": 2 + }, + { + "type": "Unified", + "level": 3, + "size": 110100480, + "num_sharing": 112 + } + ], + "load_avg": [3.51465,1.65234,0.702148], + "library_build_type": "debug", + "default_repetitions": "50", + "default_vector_size": "2000000000", + "device": "GPU", + "device_info0": "Intel(R) Data Center GPU Max 1100, max_compute_units: 448", + "device_info1": "Intel(R) Data Center GPU Max 1100, max_compute_units: 448", + "device_info2": "Intel(R) Data Center GPU Max 1100, max_compute_units: 448", + "hostname": "idc-beta-batch-pvc-node-20\n", + "lscpu": "Architecture: x86_64\nCPU op-mode(s): 32-bit, 64-bit\nAddress sizes: 52 bits physical, 57 bits virtual\nByte Order: Little Endian\nCPU(s): 224\nOn-line CPU(s) list: 0-223\nVendor ID: GenuineIntel\nModel name: Intel(R) Xeon(R) Platinum 8480+\nCPU family: 6\nModel: 143\nThread(s) per core: 2\nCore(s) per socket: 56\nSocket(s): 2\nStepping: 8\nCPU max MHz: 3800.0000\nCPU min MHz: 800.0000\nBogoMIPS: 4000.00\nFlags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb cat_l3 cat_l2 cdp_l3 invpcid_single intel_ppin cdp_l2 ssbd mba ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid cqm rdt_a avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb intel_pt avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local split_lock_detect avx_vnni avx512_bf16 wbnoinvd dtherm ida arat pln pts hwp hwp_act_window hwp_epp hwp_pkg_req avx512vbmi umip pku ospke waitpkg avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg tme avx512_vpopcntdq la57 rdpid bus_lock_detect cldemote movdiri movdir64b enqcmd fsrm md_clear serialize tsxldtrk pconfig arch_lbr amx_bf16 avx512_fp16 amx_tile amx_int8 flush_l1d arch_capabilities\nVirtualization: VT-x\nL1d cache: 5.3 MiB (112 instances)\nL1i cache: 3.5 MiB (112 instances)\nL2 cache: 224 MiB (112 instances)\nL3 cache: 210 MiB (2 instances)\nNUMA node(s): 2\nNUMA node0 CPU(s): 0-55,112-167\nNUMA node1 CPU(s): 56-111,168-223\nVulnerability Gather data sampling: Not affected\nVulnerability Itlb multihit: Not affected\nVulnerability L1tf: Not affected\nVulnerability Mds: Not affected\nVulnerability Meltdown: Not affected\nVulnerability Mmio stale data: Not affected\nVulnerability Retbleed: Not affected\nVulnerability Spec rstack overflow: Not affected\nVulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl and seccomp\nVulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization\nVulnerability Spectre v2: Mitigation; Enhanced IBRS, IBPB conditional, RSB filling, PBRSB-eIBRS SW sequence\nVulnerability Srbds: Not affected\nVulnerability Tsx async abort: Not affected\n", + "model": "SHP", + "numactl": "", + "rank": "0", + "ranks": "3", + "runtime": "SYCL", + "target": "SHP_SYCL_GPU", + "weak-scaling": "0" + }, + "benchmarks": [ + { + "name": "Stream_Copy/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 0, + "per_family_instance_index": 0, + "run_name": "Stream_Copy/min_time:0.100/min_warmup_time:0.100/real_time", + "run_type": "iteration", + "repetitions": 1, + "repetition_index": 0, + "threads": 1, + "iterations": 1, + "real_time": 3.0928816199562209e+02, + "cpu_time": 1.8319099999999366e+00, + "time_unit": "ms", + "bytes_per_second": 2.5865846104104165e+12, + "footprint": 5.3333333330000000e+09 + }, + { + "name": "Stream_Scale/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 1, + "per_family_instance_index": 0, + "run_name": "Stream_Scale/min_time:0.100/min_warmup_time:0.100/real_time", + "run_type": "iteration", + "repetitions": 1, + "repetition_index": 0, + "threads": 1, + "iterations": 1, + "real_time": 3.0942713199990402e+02, + "cpu_time": 1.7004949999996910e+00, + "time_unit": "ms", + "bytes_per_second": 2.5854229227715176e+12, + "footprint": 5.3333333330000000e+09 + }, + { + "name": "Stream_Add/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 2, + "per_family_instance_index": 0, + "run_name": "Stream_Add/min_time:0.100/min_warmup_time:0.100/real_time", + "run_type": "iteration", + "repetitions": 1, + "repetition_index": 0, + "threads": 1, + "iterations": 1, + "real_time": 4.8603975998801394e+02, + "cpu_time": 4.0193639999999142e+00, + "time_unit": "ms", + "bytes_per_second": 2.4689338173271929e+12, + "footprint": 8.0000000000000000e+09 + }, + { + "name": "Stream_Triad/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 3, + "per_family_instance_index": 0, + "run_name": "Stream_Triad/min_time:0.100/min_warmup_time:0.100/real_time", + "run_type": "iteration", + "repetitions": 1, + "repetition_index": 0, + "threads": 1, + "iterations": 1, + "real_time": 4.9088790702116279e+02, + "cpu_time": 4.4787859999999569e+00, + "time_unit": "ms", + "bytes_per_second": 2.4445499325536787e+12, + "footprint": 8.0000000000000000e+09 + }, + { + "name": "BlackScholes_DR/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 4, + "per_family_instance_index": 0, + "run_name": "BlackScholes_DR/min_time:0.100/min_warmup_time:0.100/real_time", + "run_type": "iteration", + "repetitions": 1, + "repetition_index": 0, + "threads": 1, + "iterations": 1, + "real_time": 8.1892196497117754e+02, + "cpu_time": 5.4713429999999619e+00, + "time_unit": "ms", + "bytes_per_second": 2.4422351402802969e+12, + "footprint": 1.3333333333000000e+10 + } + ] +} diff --git a/bench/devcloud/dr-bench-826b52538e9b40beba259c5816055d19.json b/bench/devcloud/dr-bench-826b52538e9b40beba259c5816055d19.json new file mode 100644 index 0000000000..599765308a --- /dev/null +++ b/bench/devcloud/dr-bench-826b52538e9b40beba259c5816055d19.json @@ -0,0 +1,133 @@ +{ + "context": { + "date": "2023-11-01T01:11:00-07:00", + "host_name": "idc-beta-batch-pvc-node-20", + "executable": "mhp/mhp-bench", + "num_cpus": 224, + "mhz_per_cpu": 3800, + "cpu_scaling_enabled": false, + "caches": [ + { + "type": "Data", + "level": 1, + "size": 49152, + "num_sharing": 2 + }, + { + "type": "Instruction", + "level": 1, + "size": 32768, + "num_sharing": 2 + }, + { + "type": "Unified", + "level": 2, + "size": 2097152, + "num_sharing": 2 + }, + { + "type": "Unified", + "level": 3, + "size": 110100480, + "num_sharing": 112 + } + ], + "load_avg": [1.92041,1.59619,0.803223], + "library_build_type": "debug", + "default_repetitions": "50", + "default_vector_size": "2000000000", + "device": "GPU", + "device_info": "Intel(R) Data Center GPU Max 1100, max_compute_units: 448", + "hostname": "idc-beta-batch-pvc-node-20\n", + "lscpu": "Architecture: x86_64\nCPU op-mode(s): 32-bit, 64-bit\nAddress sizes: 52 bits physical, 57 bits virtual\nByte Order: Little Endian\nCPU(s): 224\nOn-line CPU(s) list: 0-223\nVendor ID: GenuineIntel\nModel name: Intel(R) Xeon(R) Platinum 8480+\nCPU family: 6\nModel: 143\nThread(s) per core: 2\nCore(s) per socket: 56\nSocket(s): 2\nStepping: 8\nCPU max MHz: 3800.0000\nCPU min MHz: 800.0000\nBogoMIPS: 4000.00\nFlags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb cat_l3 cat_l2 cdp_l3 invpcid_single intel_ppin cdp_l2 ssbd mba ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid cqm rdt_a avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb intel_pt avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local split_lock_detect avx_vnni avx512_bf16 wbnoinvd dtherm ida arat pln pts hwp hwp_act_window hwp_epp hwp_pkg_req avx512vbmi umip pku ospke waitpkg avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg tme avx512_vpopcntdq la57 rdpid bus_lock_detect cldemote movdiri movdir64b enqcmd fsrm md_clear serialize tsxldtrk pconfig arch_lbr amx_bf16 avx512_fp16 amx_tile amx_int8 flush_l1d arch_capabilities\nVirtualization: VT-x\nL1d cache: 5.3 MiB (112 instances)\nL1i cache: 3.5 MiB (112 instances)\nL2 cache: 224 MiB (112 instances)\nL3 cache: 210 MiB (2 instances)\nNUMA node(s): 2\nNUMA node0 CPU(s): 0-55,112-167\nNUMA node1 CPU(s): 56-111,168-223\nVulnerability Gather data sampling: Not affected\nVulnerability Itlb multihit: Not affected\nVulnerability L1tf: Not affected\nVulnerability Mds: Not affected\nVulnerability Meltdown: Not affected\nVulnerability Mmio stale data: Not affected\nVulnerability Retbleed: Not affected\nVulnerability Spec rstack overflow: Not affected\nVulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl and seccomp\nVulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization\nVulnerability Spectre v2: Mitigation; Enhanced IBRS, IBPB conditional, RSB filling, PBRSB-eIBRS SW sequence\nVulnerability Srbds: Not affected\nVulnerability Tsx async abort: Not affected\n", + "model": "MHP", + "numactl": "", + "rank": "0", + "ranks": "3", + "runtime": "SYCL", + "target": "MHP_SYCL_GPU", + "weak-scaling": "0" + }, + "benchmarks": [ + { + "name": "Stream_Copy/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 0, + "per_family_instance_index": 0, + "run_name": "Stream_Copy/min_time:0.100/min_warmup_time:0.100/real_time", + "run_type": "iteration", + "repetitions": 1, + "repetition_index": 0, + "threads": 1, + "iterations": 1, + "real_time": 3.1009087299913421e+02, + "cpu_time": 4.8321199999996622e+00, + "time_unit": "ms", + "bytes_per_second": 2.5798888959954448e+12, + "footprint": 5.3333333330000000e+09 + }, + { + "name": "Stream_Scale/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 1, + "per_family_instance_index": 0, + "run_name": "Stream_Scale/min_time:0.100/min_warmup_time:0.100/real_time", + "run_type": "iteration", + "repetitions": 1, + "repetition_index": 0, + "threads": 1, + "iterations": 1, + "real_time": 3.1276343500603616e+02, + "cpu_time": 4.2003109999999566e+00, + "time_unit": "ms", + "bytes_per_second": 2.5578437581252441e+12, + "footprint": 5.3333333330000000e+09 + }, + { + "name": "Stream_Add/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 2, + "per_family_instance_index": 0, + "run_name": "Stream_Add/min_time:0.100/min_warmup_time:0.100/real_time", + "run_type": "iteration", + "repetitions": 1, + "repetition_index": 0, + "threads": 1, + "iterations": 1, + "real_time": 5.0108645702790244e+02, + "cpu_time": 1.0221555999999410e+01, + "time_unit": "ms", + "bytes_per_second": 2.3947963134297588e+12, + "footprint": 8.0000000000000000e+09 + }, + { + "name": "Stream_Triad/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 3, + "per_family_instance_index": 0, + "run_name": "Stream_Triad/min_time:0.100/min_warmup_time:0.100/real_time", + "run_type": "iteration", + "repetitions": 1, + "repetition_index": 0, + "threads": 1, + "iterations": 1, + "real_time": 5.0080343397463389e+02, + "cpu_time": 1.3270839999998785e+01, + "time_unit": "ms", + "bytes_per_second": 2.3961497038392534e+12, + "footprint": 8.0000000000000000e+09 + }, + { + "name": "BlackScholes_DR/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 4, + "per_family_instance_index": 0, + "run_name": "BlackScholes_DR/min_time:0.100/min_warmup_time:0.100/real_time", + "run_type": "iteration", + "repetitions": 1, + "repetition_index": 0, + "threads": 1, + "iterations": 1, + "real_time": 8.1142333700543327e+02, + "cpu_time": 3.5116783999999512e+01, + "time_unit": "ms", + "bytes_per_second": 2.4648046325374644e+12, + "footprint": 1.3333333333000000e+10 + } + ] +} diff --git a/bench/devcloud/dr-bench-ca810e980aa6492fbbeddd66af6966aa.json b/bench/devcloud/dr-bench-ca810e980aa6492fbbeddd66af6966aa.json new file mode 100644 index 0000000000..c51fd394e1 --- /dev/null +++ b/bench/devcloud/dr-bench-ca810e980aa6492fbbeddd66af6966aa.json @@ -0,0 +1,133 @@ +{ + "context": { + "date": "2023-11-01T01:10:23-07:00", + "host_name": "idc-beta-batch-pvc-node-20", + "executable": "mhp/mhp-bench", + "num_cpus": 224, + "mhz_per_cpu": 3800, + "cpu_scaling_enabled": false, + "caches": [ + { + "type": "Data", + "level": 1, + "size": 49152, + "num_sharing": 2 + }, + { + "type": "Instruction", + "level": 1, + "size": 32768, + "num_sharing": 2 + }, + { + "type": "Unified", + "level": 2, + "size": 2097152, + "num_sharing": 2 + }, + { + "type": "Unified", + "level": 3, + "size": 110100480, + "num_sharing": 112 + } + ], + "load_avg": [1.74316,1.52637,0.75], + "library_build_type": "debug", + "default_repetitions": "50", + "default_vector_size": "2000000000", + "device": "GPU", + "device_info": "Intel(R) Data Center GPU Max 1100, max_compute_units: 448", + "hostname": "idc-beta-batch-pvc-node-20\n", + "lscpu": "Architecture: x86_64\nCPU op-mode(s): 32-bit, 64-bit\nAddress sizes: 52 bits physical, 57 bits virtual\nByte Order: Little Endian\nCPU(s): 224\nOn-line CPU(s) list: 0-223\nVendor ID: GenuineIntel\nModel name: Intel(R) Xeon(R) Platinum 8480+\nCPU family: 6\nModel: 143\nThread(s) per core: 2\nCore(s) per socket: 56\nSocket(s): 2\nStepping: 8\nCPU max MHz: 3800.0000\nCPU min MHz: 800.0000\nBogoMIPS: 4000.00\nFlags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb cat_l3 cat_l2 cdp_l3 invpcid_single intel_ppin cdp_l2 ssbd mba ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid cqm rdt_a avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb intel_pt avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local split_lock_detect avx_vnni avx512_bf16 wbnoinvd dtherm ida arat pln pts hwp hwp_act_window hwp_epp hwp_pkg_req avx512vbmi umip pku ospke waitpkg avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg tme avx512_vpopcntdq la57 rdpid bus_lock_detect cldemote movdiri movdir64b enqcmd fsrm md_clear serialize tsxldtrk pconfig arch_lbr amx_bf16 avx512_fp16 amx_tile amx_int8 flush_l1d arch_capabilities\nVirtualization: VT-x\nL1d cache: 5.3 MiB (112 instances)\nL1i cache: 3.5 MiB (112 instances)\nL2 cache: 224 MiB (112 instances)\nL3 cache: 210 MiB (2 instances)\nNUMA node(s): 2\nNUMA node0 CPU(s): 0-55,112-167\nNUMA node1 CPU(s): 56-111,168-223\nVulnerability Gather data sampling: Not affected\nVulnerability Itlb multihit: Not affected\nVulnerability L1tf: Not affected\nVulnerability Mds: Not affected\nVulnerability Meltdown: Not affected\nVulnerability Mmio stale data: Not affected\nVulnerability Retbleed: Not affected\nVulnerability Spec rstack overflow: Not affected\nVulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl and seccomp\nVulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization\nVulnerability Spectre v2: Mitigation; Enhanced IBRS, IBPB conditional, RSB filling, PBRSB-eIBRS SW sequence\nVulnerability Srbds: Not affected\nVulnerability Tsx async abort: Not affected\n", + "model": "MHP", + "numactl": "", + "rank": "0", + "ranks": "2", + "runtime": "SYCL", + "target": "MHP_SYCL_GPU", + "weak-scaling": "0" + }, + "benchmarks": [ + { + "name": "Stream_Copy/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 0, + "per_family_instance_index": 0, + "run_name": "Stream_Copy/min_time:0.100/min_warmup_time:0.100/real_time", + "run_type": "iteration", + "repetitions": 1, + "repetition_index": 0, + "threads": 1, + "iterations": 1, + "real_time": 4.7255737098502402e+02, + "cpu_time": 3.8514489999998958e+00, + "time_unit": "ms", + "bytes_per_second": 1.6929161391185940e+12, + "footprint": 8.0000000000000000e+09 + }, + { + "name": "Stream_Scale/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 1, + "per_family_instance_index": 0, + "run_name": "Stream_Scale/min_time:0.100/min_warmup_time:0.100/real_time", + "run_type": "iteration", + "repetitions": 1, + "repetition_index": 0, + "threads": 1, + "iterations": 1, + "real_time": 4.6949184402451465e+02, + "cpu_time": 5.8980109999993147e+00, + "time_unit": "ms", + "bytes_per_second": 1.7039699628056323e+12, + "footprint": 8.0000000000000000e+09 + }, + { + "name": "Stream_Add/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 2, + "per_family_instance_index": 0, + "run_name": "Stream_Add/min_time:0.100/min_warmup_time:0.100/real_time", + "run_type": "iteration", + "repetitions": 1, + "repetition_index": 0, + "threads": 1, + "iterations": 1, + "real_time": 7.3008013802002870e+02, + "cpu_time": 4.5863130000007857e+00, + "time_unit": "ms", + "bytes_per_second": 1.6436551790799160e+12, + "footprint": 1.2000000000000000e+10 + }, + { + "name": "Stream_Triad/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 3, + "per_family_instance_index": 0, + "run_name": "Stream_Triad/min_time:0.100/min_warmup_time:0.100/real_time", + "run_type": "iteration", + "repetitions": 1, + "repetition_index": 0, + "threads": 1, + "iterations": 1, + "real_time": 7.4579916802750290e+02, + "cpu_time": 1.0788722999997447e+01, + "time_unit": "ms", + "bytes_per_second": 1.6090122534914753e+12, + "footprint": 1.2000000000000000e+10 + }, + { + "name": "BlackScholes_DR/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 4, + "per_family_instance_index": 0, + "run_name": "BlackScholes_DR/min_time:0.100/min_warmup_time:0.100/real_time", + "run_type": "iteration", + "repetitions": 1, + "repetition_index": 0, + "threads": 1, + "iterations": 1, + "real_time": 1.2177537900241850e+03, + "cpu_time": 3.7957374000001209e+01, + "time_unit": "ms", + "bytes_per_second": 1.6423681177459355e+12, + "footprint": 2.0000000000000000e+10 + } + ] +} diff --git a/bench/devcloud/dr-bench-fde9faaceaf6481ca944b5c4b55211fb.json b/bench/devcloud/dr-bench-fde9faaceaf6481ca944b5c4b55211fb.json new file mode 100644 index 0000000000..99c05250ed --- /dev/null +++ b/bench/devcloud/dr-bench-fde9faaceaf6481ca944b5c4b55211fb.json @@ -0,0 +1,134 @@ +{ + "context": { + "date": "2023-11-01T01:08:45-07:00", + "host_name": "idc-beta-batch-pvc-node-20", + "executable": "shp/shp-bench", + "num_cpus": 224, + "mhz_per_cpu": 3786, + "cpu_scaling_enabled": false, + "caches": [ + { + "type": "Data", + "level": 1, + "size": 49152, + "num_sharing": 2 + }, + { + "type": "Instruction", + "level": 1, + "size": 32768, + "num_sharing": 2 + }, + { + "type": "Unified", + "level": 2, + "size": 2097152, + "num_sharing": 2 + }, + { + "type": "Unified", + "level": 3, + "size": 110100480, + "num_sharing": 112 + } + ], + "load_avg": [3.97217,1.6748,0.698242], + "library_build_type": "debug", + "default_repetitions": "50", + "default_vector_size": "2000000000", + "device": "GPU", + "device_info0": "Intel(R) Data Center GPU Max 1100, max_compute_units: 448", + "device_info1": "Intel(R) Data Center GPU Max 1100, max_compute_units: 448", + "hostname": "idc-beta-batch-pvc-node-20\n", + "lscpu": "Architecture: x86_64\nCPU op-mode(s): 32-bit, 64-bit\nAddress sizes: 52 bits physical, 57 bits virtual\nByte Order: Little Endian\nCPU(s): 224\nOn-line CPU(s) list: 0-223\nVendor ID: GenuineIntel\nModel name: Intel(R) Xeon(R) Platinum 8480+\nCPU family: 6\nModel: 143\nThread(s) per core: 2\nCore(s) per socket: 56\nSocket(s): 2\nStepping: 8\nCPU max MHz: 3800.0000\nCPU min MHz: 800.0000\nBogoMIPS: 4000.00\nFlags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb cat_l3 cat_l2 cdp_l3 invpcid_single intel_ppin cdp_l2 ssbd mba ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid cqm rdt_a avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb intel_pt avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local split_lock_detect avx_vnni avx512_bf16 wbnoinvd dtherm ida arat pln pts hwp hwp_act_window hwp_epp hwp_pkg_req avx512vbmi umip pku ospke waitpkg avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg tme avx512_vpopcntdq la57 rdpid bus_lock_detect cldemote movdiri movdir64b enqcmd fsrm md_clear serialize tsxldtrk pconfig arch_lbr amx_bf16 avx512_fp16 amx_tile amx_int8 flush_l1d arch_capabilities\nVirtualization: VT-x\nL1d cache: 5.3 MiB (112 instances)\nL1i cache: 3.5 MiB (112 instances)\nL2 cache: 224 MiB (112 instances)\nL3 cache: 210 MiB (2 instances)\nNUMA node(s): 2\nNUMA node0 CPU(s): 0-55,112-167\nNUMA node1 CPU(s): 56-111,168-223\nVulnerability Gather data sampling: Not affected\nVulnerability Itlb multihit: Not affected\nVulnerability L1tf: Not affected\nVulnerability Mds: Not affected\nVulnerability Meltdown: Not affected\nVulnerability Mmio stale data: Not affected\nVulnerability Retbleed: Not affected\nVulnerability Spec rstack overflow: Not affected\nVulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl and seccomp\nVulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization\nVulnerability Spectre v2: Mitigation; Enhanced IBRS, IBPB conditional, RSB filling, PBRSB-eIBRS SW sequence\nVulnerability Srbds: Not affected\nVulnerability Tsx async abort: Not affected\n", + "model": "SHP", + "numactl": "", + "rank": "0", + "ranks": "2", + "runtime": "SYCL", + "target": "SHP_SYCL_GPU", + "weak-scaling": "0" + }, + "benchmarks": [ + { + "name": "Stream_Copy/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 0, + "per_family_instance_index": 0, + "run_name": "Stream_Copy/min_time:0.100/min_warmup_time:0.100/real_time", + "run_type": "iteration", + "repetitions": 1, + "repetition_index": 0, + "threads": 1, + "iterations": 1, + "real_time": 4.7153418197170140e+02, + "cpu_time": 1.6404740000000029e+00, + "time_unit": "ms", + "bytes_per_second": 1.6965896229512607e+12, + "footprint": 8.0000000000000000e+09 + }, + { + "name": "Stream_Scale/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 1, + "per_family_instance_index": 0, + "run_name": "Stream_Scale/min_time:0.100/min_warmup_time:0.100/real_time", + "run_type": "iteration", + "repetitions": 1, + "repetition_index": 0, + "threads": 1, + "iterations": 1, + "real_time": 4.7437264502802020e+02, + "cpu_time": 2.1416030000001030e+00, + "time_unit": "ms", + "bytes_per_second": 1.6864378846144167e+12, + "footprint": 8.0000000000000000e+09 + }, + { + "name": "Stream_Add/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 2, + "per_family_instance_index": 0, + "run_name": "Stream_Add/min_time:0.100/min_warmup_time:0.100/real_time", + "run_type": "iteration", + "repetitions": 1, + "repetition_index": 0, + "threads": 1, + "iterations": 1, + "real_time": 7.3379610800532680e+02, + "cpu_time": 4.5289250000000170e+00, + "time_unit": "ms", + "bytes_per_second": 1.6353316499074275e+12, + "footprint": 1.2000000000000000e+10 + }, + { + "name": "Stream_Triad/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 3, + "per_family_instance_index": 0, + "run_name": "Stream_Triad/min_time:0.100/min_warmup_time:0.100/real_time", + "run_type": "iteration", + "repetitions": 1, + "repetition_index": 0, + "threads": 1, + "iterations": 1, + "real_time": 7.3773306597783653e+02, + "cpu_time": 4.6780490000000174e+00, + "time_unit": "ms", + "bytes_per_second": 1.6266046017734702e+12, + "footprint": 1.2000000000000000e+10 + }, + { + "name": "BlackScholes_DR/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 4, + "per_family_instance_index": 0, + "run_name": "BlackScholes_DR/min_time:0.100/min_warmup_time:0.100/real_time", + "run_type": "iteration", + "repetitions": 1, + "repetition_index": 0, + "threads": 1, + "iterations": 1, + "real_time": 1.2463785519967937e+03, + "cpu_time": 4.8698179999999702e+00, + "time_unit": "ms", + "bytes_per_second": 1.6046489221078518e+12, + "footprint": 2.0000000000000000e+10 + } + ] +} diff --git a/bench/devcloud/dr-bench-fe6010029e514e7d930ec46bc1e8d4bf.json b/bench/devcloud/dr-bench-fe6010029e514e7d930ec46bc1e8d4bf.json new file mode 100644 index 0000000000..5d95912518 --- /dev/null +++ b/bench/devcloud/dr-bench-fe6010029e514e7d930ec46bc1e8d4bf.json @@ -0,0 +1,133 @@ +{ + "context": { + "date": "2023-11-01T01:09:12-07:00", + "host_name": "idc-beta-batch-pvc-node-20", + "executable": "mhp/mhp-bench", + "num_cpus": 224, + "mhz_per_cpu": 3372, + "cpu_scaling_enabled": false, + "caches": [ + { + "type": "Data", + "level": 1, + "size": 49152, + "num_sharing": 2 + }, + { + "type": "Instruction", + "level": 1, + "size": 32768, + "num_sharing": 2 + }, + { + "type": "Unified", + "level": 2, + "size": 2097152, + "num_sharing": 2 + }, + { + "type": "Unified", + "level": 3, + "size": 110100480, + "num_sharing": 112 + } + ], + "load_avg": [2.95703,1.61963,0.708008], + "library_build_type": "debug", + "default_repetitions": "50", + "default_vector_size": "2000000000", + "device": "GPU", + "device_info": "Intel(R) Data Center GPU Max 1100, max_compute_units: 448", + "hostname": "idc-beta-batch-pvc-node-20\n", + "lscpu": "Architecture: x86_64\nCPU op-mode(s): 32-bit, 64-bit\nAddress sizes: 52 bits physical, 57 bits virtual\nByte Order: Little Endian\nCPU(s): 224\nOn-line CPU(s) list: 0-223\nVendor ID: GenuineIntel\nModel name: Intel(R) Xeon(R) Platinum 8480+\nCPU family: 6\nModel: 143\nThread(s) per core: 2\nCore(s) per socket: 56\nSocket(s): 2\nStepping: 8\nCPU max MHz: 3800.0000\nCPU min MHz: 800.0000\nBogoMIPS: 4000.00\nFlags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb cat_l3 cat_l2 cdp_l3 invpcid_single intel_ppin cdp_l2 ssbd mba ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid cqm rdt_a avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb intel_pt avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local split_lock_detect avx_vnni avx512_bf16 wbnoinvd dtherm ida arat pln pts hwp hwp_act_window hwp_epp hwp_pkg_req avx512vbmi umip pku ospke waitpkg avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg tme avx512_vpopcntdq la57 rdpid bus_lock_detect cldemote movdiri movdir64b enqcmd fsrm md_clear serialize tsxldtrk pconfig arch_lbr amx_bf16 avx512_fp16 amx_tile amx_int8 flush_l1d arch_capabilities\nVirtualization: VT-x\nL1d cache: 5.3 MiB (112 instances)\nL1i cache: 3.5 MiB (112 instances)\nL2 cache: 224 MiB (112 instances)\nL3 cache: 210 MiB (2 instances)\nNUMA node(s): 2\nNUMA node0 CPU(s): 0-55,112-167\nNUMA node1 CPU(s): 56-111,168-223\nVulnerability Gather data sampling: Not affected\nVulnerability Itlb multihit: Not affected\nVulnerability L1tf: Not affected\nVulnerability Mds: Not affected\nVulnerability Meltdown: Not affected\nVulnerability Mmio stale data: Not affected\nVulnerability Retbleed: Not affected\nVulnerability Spec rstack overflow: Not affected\nVulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl and seccomp\nVulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization\nVulnerability Spectre v2: Mitigation; Enhanced IBRS, IBPB conditional, RSB filling, PBRSB-eIBRS SW sequence\nVulnerability Srbds: Not affected\nVulnerability Tsx async abort: Not affected\n", + "model": "MHP", + "numactl": "", + "rank": "0", + "ranks": "1", + "runtime": "SYCL", + "target": "MHP_SYCL_GPU", + "weak-scaling": "0" + }, + "benchmarks": [ + { + "name": "Stream_Copy/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 0, + "per_family_instance_index": 0, + "run_name": "Stream_Copy/min_time:0.100/min_warmup_time:0.100/real_time", + "run_type": "iteration", + "repetitions": 1, + "repetition_index": 0, + "threads": 1, + "iterations": 1, + "real_time": 9.3581995697583795e+02, + "cpu_time": 4.2584070000000196e+00, + "time_unit": "ms", + "bytes_per_second": 8.5486529116695813e+11, + "footprint": 1.6000000000000000e+10 + }, + { + "name": "Stream_Scale/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 1, + "per_family_instance_index": 0, + "run_name": "Stream_Scale/min_time:0.100/min_warmup_time:0.100/real_time", + "run_type": "iteration", + "repetitions": 1, + "repetition_index": 0, + "threads": 1, + "iterations": 1, + "real_time": 9.2715965501299365e+02, + "cpu_time": 3.9441139999993879e+00, + "time_unit": "ms", + "bytes_per_second": 8.6285031458663757e+11, + "footprint": 1.6000000000000000e+10 + }, + { + "name": "Stream_Add/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 2, + "per_family_instance_index": 0, + "run_name": "Stream_Add/min_time:0.100/min_warmup_time:0.100/real_time", + "run_type": "iteration", + "repetitions": 1, + "repetition_index": 0, + "threads": 1, + "iterations": 1, + "real_time": 1.4894021409993625e+03, + "cpu_time": 3.8997380000012072e+00, + "time_unit": "ms", + "bytes_per_second": 8.0569240970395093e+11, + "footprint": 2.4000000000000000e+10 + }, + { + "name": "Stream_Triad/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 3, + "per_family_instance_index": 0, + "run_name": "Stream_Triad/min_time:0.100/min_warmup_time:0.100/real_time", + "run_type": "iteration", + "repetitions": 1, + "repetition_index": 0, + "threads": 1, + "iterations": 1, + "real_time": 1.4433780080197987e+03, + "cpu_time": 4.0514199999961420e+00, + "time_unit": "ms", + "bytes_per_second": 8.3138304264889404e+11, + "footprint": 2.4000000000000000e+10 + }, + { + "name": "BlackScholes_DR/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 4, + "per_family_instance_index": 0, + "run_name": "BlackScholes_DR/min_time:0.100/min_warmup_time:0.100/real_time", + "run_type": "iteration", + "repetitions": 1, + "repetition_index": 0, + "threads": 1, + "iterations": 1, + "real_time": 2.3524416849843237e+03, + "cpu_time": 4.1916000000057352e+00, + "time_unit": "ms", + "bytes_per_second": 8.5018047961232568e+11, + "footprint": 4.0000000000000000e+10 + } + ] +} diff --git a/doxygen/algorithms_8hpp_source.html b/doxygen/algorithms_8hpp_source.html new file mode 100644 index 0000000000..b3ae542960 --- /dev/null +++ b/doxygen/algorithms_8hpp_source.html @@ -0,0 +1,102 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/algorithms/algorithms.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
algorithms.hpp
+
+
+
1// SPDX-FileCopyrightText: Intel Corporation
+
2//
+
3// SPDX-License-Identifier: BSD-3-Clause
+
4
+
5#pragma once
+
6
+
7#include <dr/shp/algorithms/copy.hpp>
+
8#include <dr/shp/algorithms/exclusive_scan.hpp>
+
9#include <dr/shp/algorithms/execution_policy.hpp>
+
10#include <dr/shp/algorithms/fill.hpp>
+
11#include <dr/shp/algorithms/for_each.hpp>
+
12#include <dr/shp/algorithms/inclusive_scan.hpp>
+
13#include <dr/shp/algorithms/iota.hpp>
+
14#include <dr/shp/algorithms/matrix/matrix_algorithms.hpp>
+
15#include <dr/shp/algorithms/reduce.hpp>
+
16#include <dr/shp/algorithms/sort.hpp>
+
17#include <dr/shp/algorithms/transform.hpp>
+
+ + + + diff --git a/doxygen/alignment_8hpp_source.html b/doxygen/alignment_8hpp_source.html new file mode 100644 index 0000000000..9a722fbe87 --- /dev/null +++ b/doxygen/alignment_8hpp_source.html @@ -0,0 +1,157 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/alignment.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
alignment.hpp
+
+
+
1// SPDX-FileCopyrightText: Intel Corporation
+
2//
+
3// SPDX-License-Identifier: BSD-3-Clause
+
4
+
5#pragma once
+
6
+
7#include <dr/concepts/concepts.hpp>
+
8#include <dr/detail/ranges.hpp>
+
9#include <dr/detail/ranges_shim.hpp>
+
10
+
11namespace dr::mhp {
+
12
+
13template <typename T>
+
14concept has_segments = requires(T &t) { dr::ranges::segments(t); };
+
15
+
16template <typename T>
+ +
18
+
19auto sub_aligned(has_segments auto &&r) {
+
20 if (rng::empty(dr::ranges::segments(r))) {
+
21 dr::drlog.debug("unaligned: empty segments\n");
+
22 return false;
+
23 } else {
+
24 return true;
+
25 }
+
26}
+
27
+
28auto sub_aligned(auto &&r) { return true; }
+
29
+
30// iter1 is aligned with iter2, and iter2 is aligned with the rest
+
31bool sub_aligned(has_segments auto &&r1, has_segments auto &&r2,
+
32 auto &&...rest) {
+
33 auto z = rng::views::zip(dr::ranges::segments(r1), dr::ranges::segments(r2));
+
34 auto i = rng::distance(z) - 1;
+
35 for (auto seg : z) {
+
36 if (dr::ranges::rank(seg.first) != dr::ranges::rank(seg.second)) {
+
37 dr::drlog.debug("unaligned: ranks: {} {}\n", dr::ranges::rank(seg.first),
+
38 dr::ranges::rank(seg.second));
+
39 return false;
+
40 }
+
41 // Size mismatch would misalign following segments. Skip test if this is the
+
42 // last segment
+
43 if (i > 0 && rng::distance(seg.first) != rng::distance(seg.second)) {
+
44 dr::drlog.debug("unaligned: size: {} {}\n", rng::distance(seg.first),
+
45 rng::distance(seg.second));
+
46 return false;
+
47 }
+
48 i--;
+
49 }
+
50
+
51 return sub_aligned(r2, rest...);
+
52}
+
53
+
54// Skip local iterators
+
55bool sub_aligned(no_segments auto &&r1, has_segments auto &&r2, auto... rest) {
+
56 return sub_aligned(r2, rest...);
+
57}
+
58
+
59bool sub_aligned(has_segments auto &&r1, no_segments auto &&r2,
+
60 auto &&...rest) {
+
61 return sub_aligned(r1, rest...);
+
62}
+
63
+
64// This was added to allow passing state down the call tree, but it is
+
65// no longer needed. I did not delete it in case we need it again.
+
66template <typename... Args> bool aligned(Args &&...args) {
+
67 return sub_aligned(std::forward<Args>(args)...);
+
68}
+
69
+
70} // namespace dr::mhp
+
Definition: alignment.hpp:14
+
Definition: alignment.hpp:17
+
+ + + + diff --git a/doxygen/allocators_8hpp_source.html b/doxygen/allocators_8hpp_source.html new file mode 100644 index 0000000000..5808fd5d9d --- /dev/null +++ b/doxygen/allocators_8hpp_source.html @@ -0,0 +1,217 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/allocators.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
allocators.hpp
+
+
+
1// SPDX-FileCopyrightText: Intel Corporation
+
2//
+
3// SPDX-License-Identifier: BSD-3-Clause
+
4
+
5#pragma once
+
6
+
7#include <type_traits>
+
8
+
9#include <sycl/sycl.hpp>
+
10
+
11#include <dr/shp/device_ptr.hpp>
+
12
+
13namespace dr::shp {
+
14
+
15template <typename T>
+
16using shared_allocator = sycl::usm_allocator<T, sycl::usm::alloc::shared>;
+
17
+
18template <typename T, std::size_t Alignment = 0>
+
19 requires(std::is_trivially_copyable_v<T>)
+ +
21public:
+
22 using value_type = T;
+
23 using pointer = device_ptr<T>;
+ + + +
27 using size_type = std::size_t;
+
28 using difference_type = std::ptrdiff_t;
+
29
+
30 template <typename U>
+ +
32 : device_(other.get_device()), context_(other.get_context()) {}
+
33
+
34 device_allocator(const sycl::queue &q) noexcept
+
35 : device_(q.get_device()), context_(q.get_context()) {}
+
36 device_allocator(const sycl::context &ctxt, const sycl::device &dev) noexcept
+
37 : device_(dev), context_(ctxt) {}
+
38
+
39 device_allocator(const device_allocator &) = default;
+
40 device_allocator &operator=(const device_allocator &) = default;
+
41 ~device_allocator() = default;
+
42
+
43 using is_always_equal = std::false_type;
+
44
+
45 pointer allocate(std::size_t size) {
+
46 if constexpr (Alignment == 0) {
+
47 return pointer(sycl::malloc_device<T>(size, device_, context_));
+
48 } else {
+
49 return pointer(
+
50 sycl::aligned_alloc_device<T>(Alignment, size, device_, context_));
+
51 }
+
52 }
+
53
+
54 void deallocate(pointer ptr, std::size_t n) {
+
55 sycl::free(ptr.get_raw_pointer(), context_);
+
56 }
+
57
+
58 bool operator==(const device_allocator &) const = default;
+
59 bool operator!=(const device_allocator &) const = default;
+
60
+
61 template <typename U> struct rebind {
+ +
63 };
+
64
+
65 sycl::device get_device() const noexcept { return device_; }
+
66
+
67 sycl::context get_context() const noexcept { return context_; }
+
68
+
69private:
+
70 sycl::device device_;
+
71 sycl::context context_;
+
72};
+
73
+
74template <typename Allocator> class buffered_allocator {
+
75public:
+
76 using value_type = typename std::allocator_traits<Allocator>::value_type;
+
77 using pointer = typename std::allocator_traits<Allocator>::pointer;
+
78 using const_pointer =
+
79 typename std::allocator_traits<Allocator>::const_pointer;
+
80 using size_type = typename std::allocator_traits<Allocator>::size_type;
+
81 using difference_type =
+
82 typename std::allocator_traits<Allocator>::difference_type;
+
83
+
84 buffered_allocator(const Allocator &alloc, std::size_t buffer_size,
+
85 std::size_t n_buffers)
+
86 : alloc_(alloc), buffer_size_(buffer_size),
+
87 free_buffers_(new std::vector<pointer>()),
+
88 buffers_(new std::vector<pointer>()) {
+
89 for (std::size_t i = 0; i < n_buffers; i++) {
+
90 buffers_->push_back(alloc_.allocate(buffer_size_));
+
91 }
+
92 free_buffers_->assign(buffers_->begin(), buffers_->end());
+
93 }
+
94
+ +
96 if (buffers_.use_count() == 1) {
+
97 for (auto &&buffer : *buffers_) {
+
98 alloc_.deallocate(buffer, buffer_size_);
+
99 }
+
100 }
+
101 }
+
102
+
103 using is_always_equal = std::false_type;
+
104
+
105 pointer allocate(std::size_t size) {
+
106 if (size > buffer_size_ || free_buffers_->empty()) {
+
107 throw std::bad_alloc();
+
108 } else {
+
109 pointer buffer = free_buffers_->back();
+
110 free_buffers_->pop_back();
+
111 return buffer;
+
112 }
+
113 }
+
114
+
115 void deallocate(pointer ptr, std::size_t n) { free_buffers_->push_back(ptr); }
+
116
+
117 bool operator==(const buffered_allocator &) const = default;
+
118 bool operator!=(const buffered_allocator &) const = default;
+
119
+
120private:
+
121 Allocator alloc_;
+
122 std::size_t buffer_size_;
+
123 std::shared_ptr<std::vector<pointer>> free_buffers_;
+
124 std::shared_ptr<std::vector<pointer>> buffers_;
+
125};
+
126
+
127} // namespace dr::shp
+
Definition: allocators.hpp:74
+
Definition: allocators.hpp:20
+
Definition: device_ptr.hpp:17
+
Definition: device_ref.hpp:15
+
Definition: allocators.hpp:61
+
+ + + + diff --git a/doxygen/annotated.html b/doxygen/annotated.html new file mode 100644 index 0000000000..7d03eb3c8c --- /dev/null +++ b/doxygen/annotated.html @@ -0,0 +1,228 @@ + + + + + + + +Distributed Ranges: Class List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
[detail level 12345]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 Ndr
 N__detail
 Nmhp
 Nranges
 Nshp
 Nviews
 Ccommunicator
 Cdefault_memory
 Cindex
 Cis_drop_view
 Cis_drop_view< rng::drop_view< T > >
 Cis_iota_view
 Cis_iota_view< rng::iota_view< W > >
 Cis_owning_view
 Cis_ref_view
 Cis_ref_view< rng::ref_view< R > >
 Cis_sliding_view
 Cis_sliding_view< rng::sliding_view< T > >
 Cis_subrange_view
 Cis_subrange_view< rng::subrange< T > >
 Cis_take_view
 Cis_take_view< rng::take_view< T > >
 Cis_zip_view
 Cis_zip_view< rng::zip_view< Views... > >
 Citerator_adaptor
 Clogger
 Cnormal_distributed_iterator_accessor
 Cremote_subrange
 Crma_window
 Ctransform_iterator
 Ctransform_view
 Nfmt
 Cformatter< Mdspan, char >
 Nnostd
 Csource_location
 Nstd
 Ctuple_element< Index, dr::index< I > >
 Ctuple_element< Index, dr::shp::matrix_entry< T, I > >
 Ctuple_element< Index, dr::shp::matrix_ref< T, I, TRef > >
 Ctuple_size< dr::index< I > >
 Ctuple_size< dr::shp::matrix_entry< T, I > >
 Ctuple_size< dr::shp::matrix_ref< T, I, TRef > >
+
+
+ + + + diff --git a/doxygen/bc_s.png b/doxygen/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/doxygen/bc_sd.png b/doxygen/bc_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..31ca888dc71049713b35c351933a8d0f36180bf1 GIT binary patch literal 635 zcmV->0)+jEP)Jwi0r1~gdSq#w{Bu1q z`craw(p2!hu$4C_$Oc3X(sI6e=9QSTwPt{G) z=htT&^~&c~L2~e{r5_5SYe7#Is-$ln>~Kd%$F#tC65?{LvQ}8O`A~RBB0N~`2M+waajO;5>3B&-viHGJeEK2TQOiPRa zfDKyqwMc4wfaEh4jt>H`nW_Zidwk@Bowp`}(VUaj-pSI(-1L>FJVsX}Yl9~JsqgsZ zUD9(rMwf23Gez6KPa|wwInZodP-2}9@fK0Ga_9{8SOjU&4l`pH4@qlQp83>>HT$xW zER^U>)MyV%t(Lu=`d=Y?{k1@}&r7ZGkFQ%z%N+sE9BtYjovzxyxCPxN6&@wLK{soQ zSmkj$aLI}miuE^p@~4}mg9OjDfGEkgY4~^XzLRUBB*O{+&vq<3v(E%+k_i%=`~j%{ Vj14gnt9}3g002ovPDHLkV1n!oC4m3{ literal 0 HcmV?d00001 diff --git a/doxygen/bdwn.png b/doxygen/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::__detail::direct_iterator< Iter > Member List
+
+
+ +

This is the complete list of members for dr::__detail::direct_iterator< Iter >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
base() const noexcept (defined in dr::__detail::direct_iterator< Iter >)dr::__detail::direct_iterator< Iter >inline
difference_type typedef (defined in dr::__detail::direct_iterator< Iter >)dr::__detail::direct_iterator< Iter >
direct_iterator(Iter iter) noexcept (defined in dr::__detail::direct_iterator< Iter >)dr::__detail::direct_iterator< Iter >inline
direct_iterator() noexcept=default (defined in dr::__detail::direct_iterator< Iter >)dr::__detail::direct_iterator< Iter >
direct_iterator(const direct_iterator &) noexcept=default (defined in dr::__detail::direct_iterator< Iter >)dr::__detail::direct_iterator< Iter >
is_passed_directly typedef (defined in dr::__detail::direct_iterator< Iter >)dr::__detail::direct_iterator< Iter >
iterator typedef (defined in dr::__detail::direct_iterator< Iter >)dr::__detail::direct_iterator< Iter >
iterator_category typedef (defined in dr::__detail::direct_iterator< Iter >)dr::__detail::direct_iterator< Iter >
operator!=(const direct_iterator &) const noexcept=default (defined in dr::__detail::direct_iterator< Iter >)dr::__detail::direct_iterator< Iter >
operator*() const noexcept (defined in dr::__detail::direct_iterator< Iter >)dr::__detail::direct_iterator< Iter >inline
operator+(difference_type offset) const noexcept (defined in dr::__detail::direct_iterator< Iter >)dr::__detail::direct_iterator< Iter >inline
operator+ (defined in dr::__detail::direct_iterator< Iter >)dr::__detail::direct_iterator< Iter >friend
operator++() noexcept (defined in dr::__detail::direct_iterator< Iter >)dr::__detail::direct_iterator< Iter >inline
operator++(int) noexcept (defined in dr::__detail::direct_iterator< Iter >)dr::__detail::direct_iterator< Iter >inline
operator+=(difference_type offset) noexcept (defined in dr::__detail::direct_iterator< Iter >)dr::__detail::direct_iterator< Iter >inline
operator-(difference_type offset) const noexcept (defined in dr::__detail::direct_iterator< Iter >)dr::__detail::direct_iterator< Iter >inline
operator-(iterator other) const noexcept (defined in dr::__detail::direct_iterator< Iter >)dr::__detail::direct_iterator< Iter >inline
operator--() noexcept (defined in dr::__detail::direct_iterator< Iter >)dr::__detail::direct_iterator< Iter >inline
operator--(int) noexcept (defined in dr::__detail::direct_iterator< Iter >)dr::__detail::direct_iterator< Iter >inline
operator-=(difference_type offset) noexcept (defined in dr::__detail::direct_iterator< Iter >)dr::__detail::direct_iterator< Iter >inline
operator<(iterator other) const noexcept (defined in dr::__detail::direct_iterator< Iter >)dr::__detail::direct_iterator< Iter >inline
operator<=(iterator other) const noexcept (defined in dr::__detail::direct_iterator< Iter >)dr::__detail::direct_iterator< Iter >inline
operator=(const direct_iterator &) noexcept=default (defined in dr::__detail::direct_iterator< Iter >)dr::__detail::direct_iterator< Iter >
operator==(const direct_iterator &) const noexcept=default (defined in dr::__detail::direct_iterator< Iter >)dr::__detail::direct_iterator< Iter >
operator>(iterator other) const noexcept (defined in dr::__detail::direct_iterator< Iter >)dr::__detail::direct_iterator< Iter >inline
operator>=(iterator other) const noexcept (defined in dr::__detail::direct_iterator< Iter >)dr::__detail::direct_iterator< Iter >inline
operator[](difference_type offset) const noexcept (defined in dr::__detail::direct_iterator< Iter >)dr::__detail::direct_iterator< Iter >inline
pointer typedef (defined in dr::__detail::direct_iterator< Iter >)dr::__detail::direct_iterator< Iter >
reference typedef (defined in dr::__detail::direct_iterator< Iter >)dr::__detail::direct_iterator< Iter >
value_type typedef (defined in dr::__detail::direct_iterator< Iter >)dr::__detail::direct_iterator< Iter >
~direct_iterator() noexcept=default (defined in dr::__detail::direct_iterator< Iter >)dr::__detail::direct_iterator< Iter >
+ + + + diff --git a/doxygen/classdr_1_1____detail_1_1direct__iterator.html b/doxygen/classdr_1_1____detail_1_1direct__iterator.html new file mode 100644 index 0000000000..1b9a4d1599 --- /dev/null +++ b/doxygen/classdr_1_1____detail_1_1direct__iterator.html @@ -0,0 +1,190 @@ + + + + + + + +Distributed Ranges: dr::__detail::direct_iterator< Iter > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::__detail::direct_iterator< Iter > Class Template Reference
+
+
+ + + + + + + + + + + + + + + + +

+Public Types

+using value_type = std::iter_value_t< Iter >
 
+using difference_type = std::iter_difference_t< Iter >
 
+using reference = std::iter_reference_t< Iter >
 
+using iterator = direct_iterator< Iter >
 
+using pointer = iterator
 
+using iterator_category = std::random_access_iterator_tag
 
+using is_passed_directly = ::std::true_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

direct_iterator (Iter iter) noexcept
 
direct_iterator (const direct_iterator &) noexcept=default
 
+direct_iteratoroperator= (const direct_iterator &) noexcept=default
 
+bool operator== (const direct_iterator &) const noexcept=default
 
+bool operator!= (const direct_iterator &) const noexcept=default
 
+iterator operator+ (difference_type offset) const noexcept
 
+iterator operator- (difference_type offset) const noexcept
 
+difference_type operator- (iterator other) const noexcept
 
+bool operator< (iterator other) const noexcept
 
+bool operator> (iterator other) const noexcept
 
+bool operator<= (iterator other) const noexcept
 
+bool operator>= (iterator other) const noexcept
 
+iteratoroperator++ () noexcept
 
+iterator operator++ (int) noexcept
 
+iteratoroperator-- () noexcept
 
+iterator operator-- (int) noexcept
 
+iteratoroperator+= (difference_type offset) noexcept
 
+iteratoroperator-= (difference_type offset) noexcept
 
+reference operator* () const noexcept
 
+reference operator[] (difference_type offset) const noexcept
 
+Iter base () const noexcept
 
+ + + +

+Friends

+iterator operator+ (difference_type n, iterator iter)
 
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/doxygen/classdr_1_1____detail_1_1enumerate__adapter__closure-members.html b/doxygen/classdr_1_1____detail_1_1enumerate__adapter__closure-members.html new file mode 100644 index 0000000000..541c120fa0 --- /dev/null +++ b/doxygen/classdr_1_1____detail_1_1enumerate__adapter__closure-members.html @@ -0,0 +1,90 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::__detail::enumerate_adapter_closure Member List
+
+
+ +

This is the complete list of members for dr::__detail::enumerate_adapter_closure, including all inherited members.

+ + + +
operator()(R &&r) const (defined in dr::__detail::enumerate_adapter_closure)dr::__detail::enumerate_adapter_closureinline
operator| (defined in dr::__detail::enumerate_adapter_closure)dr::__detail::enumerate_adapter_closurefriend
+ + + + diff --git a/doxygen/classdr_1_1____detail_1_1enumerate__adapter__closure.html b/doxygen/classdr_1_1____detail_1_1enumerate__adapter__closure.html new file mode 100644 index 0000000000..cecc766948 --- /dev/null +++ b/doxygen/classdr_1_1____detail_1_1enumerate__adapter__closure.html @@ -0,0 +1,107 @@ + + + + + + + +Distributed Ranges: dr::__detail::enumerate_adapter_closure Class Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::__detail::enumerate_adapter_closure Class Reference
+
+
+ + + + + +

+Public Member Functions

+template<rng::viewable_range R>
auto operator() (R &&r) const
 
+ + + + +

+Friends

+template<rng::viewable_range R>
auto operator| (R &&r, const enumerate_adapter_closure &closure)
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail/enumerate.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1____detail_1_1enumerate__fn__-members.html b/doxygen/classdr_1_1____detail_1_1enumerate__fn__-members.html new file mode 100644 index 0000000000..2c3b32672b --- /dev/null +++ b/doxygen/classdr_1_1____detail_1_1enumerate__fn__-members.html @@ -0,0 +1,90 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::__detail::enumerate_fn_ Member List
+
+
+ +

This is the complete list of members for dr::__detail::enumerate_fn_, including all inherited members.

+ + + +
enumerate() const (defined in dr::__detail::enumerate_fn_)dr::__detail::enumerate_fn_inline
operator()(R &&r) const (defined in dr::__detail::enumerate_fn_)dr::__detail::enumerate_fn_inline
+ + + + diff --git a/doxygen/classdr_1_1____detail_1_1enumerate__fn__.html b/doxygen/classdr_1_1____detail_1_1enumerate__fn__.html new file mode 100644 index 0000000000..b5f555cca5 --- /dev/null +++ b/doxygen/classdr_1_1____detail_1_1enumerate__fn__.html @@ -0,0 +1,102 @@ + + + + + + + +Distributed Ranges: dr::__detail::enumerate_fn_ Class Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::__detail::enumerate_fn_ Class Reference
+
+
+ + + + + + + +

+Public Member Functions

+template<rng::viewable_range R>
constexpr auto operator() (R &&r) const
 
+auto enumerate () const
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail/enumerate.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1____detail_1_1mdspan__iter__accessor-members.html b/doxygen/classdr_1_1____detail_1_1mdspan__iter__accessor-members.html new file mode 100644 index 0000000000..dc5908d4f3 --- /dev/null +++ b/doxygen/classdr_1_1____detail_1_1mdspan__iter__accessor-members.html @@ -0,0 +1,94 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::__detail::mdspan_iter_accessor< Iter > Member List
+
+
+ +

This is the complete list of members for dr::__detail::mdspan_iter_accessor< Iter >, including all inherited members.

+ + + + + + + +
access(Iter iter, std::size_t index) const (defined in dr::__detail::mdspan_iter_accessor< Iter >)dr::__detail::mdspan_iter_accessor< Iter >inline
data_handle_type typedef (defined in dr::__detail::mdspan_iter_accessor< Iter >)dr::__detail::mdspan_iter_accessor< Iter >
mdspan_iter_accessor() noexcept=default (defined in dr::__detail::mdspan_iter_accessor< Iter >)dr::__detail::mdspan_iter_accessor< Iter >
offset(Iter iter, std::size_t index) const noexcept (defined in dr::__detail::mdspan_iter_accessor< Iter >)dr::__detail::mdspan_iter_accessor< Iter >inline
offset_policy typedef (defined in dr::__detail::mdspan_iter_accessor< Iter >)dr::__detail::mdspan_iter_accessor< Iter >
reference typedef (defined in dr::__detail::mdspan_iter_accessor< Iter >)dr::__detail::mdspan_iter_accessor< Iter >
+ + + + diff --git a/doxygen/classdr_1_1____detail_1_1mdspan__iter__accessor.html b/doxygen/classdr_1_1____detail_1_1mdspan__iter__accessor.html new file mode 100644 index 0000000000..8d60db69e7 --- /dev/null +++ b/doxygen/classdr_1_1____detail_1_1mdspan__iter__accessor.html @@ -0,0 +1,114 @@ + + + + + + + +Distributed Ranges: dr::__detail::mdspan_iter_accessor< Iter > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::__detail::mdspan_iter_accessor< Iter > Class Template Reference
+
+
+ + + + + + + + +

+Public Types

+using data_handle_type = Iter
 
+using reference = std::iter_reference_t< Iter >
 
+using offset_policy = mdspan_iter_accessor
 
+ + + + + +

+Public Member Functions

+constexpr auto access (Iter iter, std::size_t index) const
 
+constexpr auto offset (Iter iter, std::size_t index) const noexcept
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail/mdspan_utils.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1____detail_1_1mdtranspose-members.html b/doxygen/classdr_1_1____detail_1_1mdtranspose-members.html new file mode 100644 index 0000000000..1f3c10c27e --- /dev/null +++ b/doxygen/classdr_1_1____detail_1_1mdtranspose-members.html @@ -0,0 +1,93 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::__detail::mdtranspose< Mdspan, Is > Member List
+
+
+ +

This is the complete list of members for dr::__detail::mdtranspose< Mdspan, Is >, including all inherited members.

+ + + + + + +
extent(std::size_t d) const (defined in dr::__detail::mdtranspose< Mdspan, Is >)dr::__detail::mdtranspose< Mdspan, Is >inline
extents() const (defined in dr::__detail::mdtranspose< Mdspan, Is >)dr::__detail::mdtranspose< Mdspan, Is >inline
mdtranspose(Mdspan &mdspan) (defined in dr::__detail::mdtranspose< Mdspan, Is >)dr::__detail::mdtranspose< Mdspan, Is >inline
operator()(Indexes... indexes) const (defined in dr::__detail::mdtranspose< Mdspan, Is >)dr::__detail::mdtranspose< Mdspan, Is >inline
operator()(std::array< std::size_t, Mdspan::rank()> index) const (defined in dr::__detail::mdtranspose< Mdspan, Is >)dr::__detail::mdtranspose< Mdspan, Is >inline
+ + + + diff --git a/doxygen/classdr_1_1____detail_1_1mdtranspose.html b/doxygen/classdr_1_1____detail_1_1mdtranspose.html new file mode 100644 index 0000000000..af12a61374 --- /dev/null +++ b/doxygen/classdr_1_1____detail_1_1mdtranspose.html @@ -0,0 +1,129 @@ + + + + + + + +Distributed Ranges: dr::__detail::mdtranspose< Mdspan, Is > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::__detail::mdtranspose< Mdspan, Is > Class Template Reference
+
+
+
+Inheritance diagram for dr::__detail::mdtranspose< Mdspan, Is >:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for dr::__detail::mdtranspose< Mdspan, Is >:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + +

+Public Member Functions

mdtranspose (Mdspan &mdspan)
 
+template<std::integral... Indexes>
auto & operator() (Indexes... indexes) const
 
+auto & operator() (std::array< std::size_t, Mdspan::rank()> index) const
 
+auto extents () const
 
+auto extent (std::size_t d) const
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail/mdspan_utils.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1____detail_1_1mdtranspose__coll__graph.map b/doxygen/classdr_1_1____detail_1_1mdtranspose__coll__graph.map new file mode 100644 index 0000000000..9675cf5cd6 --- /dev/null +++ b/doxygen/classdr_1_1____detail_1_1mdtranspose__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/classdr_1_1____detail_1_1mdtranspose__coll__graph.md5 b/doxygen/classdr_1_1____detail_1_1mdtranspose__coll__graph.md5 new file mode 100644 index 0000000000..3b5ea06957 --- /dev/null +++ b/doxygen/classdr_1_1____detail_1_1mdtranspose__coll__graph.md5 @@ -0,0 +1 @@ +a7cbe1affc508275deb0cb300a18c197 \ No newline at end of file diff --git a/doxygen/classdr_1_1____detail_1_1mdtranspose__coll__graph.png b/doxygen/classdr_1_1____detail_1_1mdtranspose__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..81caf46e15a2b8b6bb3b4fb011626c1b02a27502 GIT binary patch literal 4325 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 literal 0 HcmV?d00001 diff --git a/doxygen/classdr_1_1____detail_1_1mdtranspose__inherit__graph.map b/doxygen/classdr_1_1____detail_1_1mdtranspose__inherit__graph.map new file mode 100644 index 0000000000..9675cf5cd6 --- /dev/null +++ b/doxygen/classdr_1_1____detail_1_1mdtranspose__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/classdr_1_1____detail_1_1mdtranspose__inherit__graph.md5 b/doxygen/classdr_1_1____detail_1_1mdtranspose__inherit__graph.md5 new file mode 100644 index 0000000000..3b5ea06957 --- /dev/null +++ b/doxygen/classdr_1_1____detail_1_1mdtranspose__inherit__graph.md5 @@ -0,0 +1 @@ +a7cbe1affc508275deb0cb300a18c197 \ No newline at end of file diff --git a/doxygen/classdr_1_1____detail_1_1mdtranspose__inherit__graph.png b/doxygen/classdr_1_1____detail_1_1mdtranspose__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..81caf46e15a2b8b6bb3b4fb011626c1b02a27502 GIT binary patch literal 4325 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 literal 0 HcmV?d00001 diff --git a/doxygen/classdr_1_1____detail_1_1owning__view-members.html b/doxygen/classdr_1_1____detail_1_1owning__view-members.html new file mode 100644 index 0000000000..b720480bbb --- /dev/null +++ b/doxygen/classdr_1_1____detail_1_1owning__view-members.html @@ -0,0 +1,102 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::__detail::owning_view< R > Member List
+
+
+ +

This is the complete list of members for dr::__detail::owning_view< R >, including all inherited members.

+ + + + + + + + + + + + + + + +
base() (defined in dr::__detail::owning_view< R >)dr::__detail::owning_view< R >inline
base() const (defined in dr::__detail::owning_view< R >)dr::__detail::owning_view< R >inline
begin() (defined in dr::__detail::owning_view< R >)dr::__detail::owning_view< R >inline
begin() const (defined in dr::__detail::owning_view< R >)dr::__detail::owning_view< R >inline
empty() const (defined in dr::__detail::owning_view< R >)dr::__detail::owning_view< R >inline
end() (defined in dr::__detail::owning_view< R >)dr::__detail::owning_view< R >inline
end() const (defined in dr::__detail::owning_view< R >)dr::__detail::owning_view< R >inline
operator=(owning_view &&other)=default (defined in dr::__detail::owning_view< R >)dr::__detail::owning_view< R >
operator=(const owning_view &other)=default (defined in dr::__detail::owning_view< R >)dr::__detail::owning_view< R >
owning_view(R &&range) (defined in dr::__detail::owning_view< R >)dr::__detail::owning_view< R >inline
owning_view()=default (defined in dr::__detail::owning_view< R >)dr::__detail::owning_view< R >
owning_view(owning_view &&other)=default (defined in dr::__detail::owning_view< R >)dr::__detail::owning_view< R >
owning_view(const owning_view &other)=default (defined in dr::__detail::owning_view< R >)dr::__detail::owning_view< R >
size() const (defined in dr::__detail::owning_view< R >)dr::__detail::owning_view< R >inline
+ + + + diff --git a/doxygen/classdr_1_1____detail_1_1owning__view.html b/doxygen/classdr_1_1____detail_1_1owning__view.html new file mode 100644 index 0000000000..2260d91402 --- /dev/null +++ b/doxygen/classdr_1_1____detail_1_1owning__view.html @@ -0,0 +1,152 @@ + + + + + + + +Distributed Ranges: dr::__detail::owning_view< R > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::__detail::owning_view< R > Class Template Reference
+
+
+
+Inheritance diagram for dr::__detail::owning_view< R >:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for dr::__detail::owning_view< R >:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

owning_view (R &&range)
 
owning_view (owning_view &&other)=default
 
owning_view (const owning_view &other)=default
 
+owning_viewoperator= (owning_view &&other)=default
 
+owning_viewoperator= (const owning_view &other)=default
 
+auto size () const
 
+auto empty () const
 
+auto begin ()
 
+auto begin () const
 
+auto end ()
 
+auto end () const
 
+decltype(auto) base ()
 
+decltype(auto) base () const
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail/owning_view.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1____detail_1_1owning__view__coll__graph.map b/doxygen/classdr_1_1____detail_1_1owning__view__coll__graph.map new file mode 100644 index 0000000000..ed2505a804 --- /dev/null +++ b/doxygen/classdr_1_1____detail_1_1owning__view__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/classdr_1_1____detail_1_1owning__view__coll__graph.md5 b/doxygen/classdr_1_1____detail_1_1owning__view__coll__graph.md5 new file mode 100644 index 0000000000..5a2d800828 --- /dev/null +++ b/doxygen/classdr_1_1____detail_1_1owning__view__coll__graph.md5 @@ -0,0 +1 @@ +3f46f3a33fc911a141cee3201c506d49 \ No newline at end of file diff --git a/doxygen/classdr_1_1____detail_1_1owning__view__coll__graph.png b/doxygen/classdr_1_1____detail_1_1owning__view__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..5d894708acb21375ff1b078788833ccc692dd3be GIT binary patch literal 6298 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 literal 0 HcmV?d00001 diff --git a/doxygen/classdr_1_1____detail_1_1owning__view__inherit__graph.map b/doxygen/classdr_1_1____detail_1_1owning__view__inherit__graph.map new file mode 100644 index 0000000000..ed2505a804 --- /dev/null +++ b/doxygen/classdr_1_1____detail_1_1owning__view__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/classdr_1_1____detail_1_1owning__view__inherit__graph.md5 b/doxygen/classdr_1_1____detail_1_1owning__view__inherit__graph.md5 new file mode 100644 index 0000000000..5a2d800828 --- /dev/null +++ b/doxygen/classdr_1_1____detail_1_1owning__view__inherit__graph.md5 @@ -0,0 +1 @@ +3f46f3a33fc911a141cee3201c506d49 \ No newline at end of file diff --git a/doxygen/classdr_1_1____detail_1_1owning__view__inherit__graph.png b/doxygen/classdr_1_1____detail_1_1owning__view__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..5d894708acb21375ff1b078788833ccc692dd3be GIT binary patch literal 6298 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 literal 0 HcmV?d00001 diff --git a/doxygen/classdr_1_1communicator-members.html b/doxygen/classdr_1_1communicator-members.html new file mode 100644 index 0000000000..1b1f7bacef --- /dev/null +++ b/doxygen/classdr_1_1communicator-members.html @@ -0,0 +1,117 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::communicator Member List
+
+
+ +

This is the complete list of members for dr::communicator, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
all_gather(const T *src, T *dst, std::size_t count) const (defined in dr::communicator)dr::communicatorinline
all_gather(const T &src, std::vector< T > &dst) const (defined in dr::communicator)dr::communicatorinline
all_gather(const R &src, R &dst) const (defined in dr::communicator)dr::communicatorinline
alltoall(const R &sendr, R &recvr, std::size_t count) (defined in dr::communicator)dr::communicatorinline
alltoallv(const SendR &sendbuf, const std::vector< std::size_t > &sendcnt, const std::vector< std::size_t > &senddsp, RecvR &recvbuf, const std::vector< std::size_t > &recvcnt, const std::vector< std::size_t > &recvdsp) (defined in dr::communicator)dr::communicatorinline
barrier() const (defined in dr::communicator)dr::communicatorinline
bcast(void *src, std::size_t count, std::size_t root) const (defined in dr::communicator)dr::communicatorinline
communicator(MPI_Comm comm=MPI_COMM_WORLD) (defined in dr::communicator)dr::communicatorinline
first() const (defined in dr::communicator)dr::communicatorinline
gather(const void *src, void *dst, std::size_t count, std::size_t root) const (defined in dr::communicator)dr::communicatorinline
gather(const T &src, std::span< T > dst, std::size_t root) const (defined in dr::communicator)dr::communicatorinline
gatherv(const void *src, int *counts, int *offsets, void *dst, std::size_t root) const (defined in dr::communicator)dr::communicatorinline
i_all_gather(const T *src, T *dst, std::size_t count, MPI_Request *req) const (defined in dr::communicator)dr::communicatorinline
i_all_gather(const T &src, std::vector< T > &dst, MPI_Request *req) const (defined in dr::communicator)dr::communicatorinline
irecv(T *data, std::size_t size, std::size_t src_rank, tag t, MPI_Request *request) const (defined in dr::communicator)dr::communicatorinline
irecv(R &data, std::size_t src_rank, tag t, MPI_Request *request) const (defined in dr::communicator)dr::communicatorinline
isend(const T *data, std::size_t count, std::size_t dst_rank, tag t, MPI_Request *request) const (defined in dr::communicator)dr::communicatorinline
isend(const R &data, std::size_t dst_rank, tag t, MPI_Request *request) const (defined in dr::communicator)dr::communicatorinline
last() const (defined in dr::communicator)dr::communicatorinline
mpi_comm() const (defined in dr::communicator)dr::communicatorinline
next() const (defined in dr::communicator)dr::communicatorinline
operator==(const communicator &other) const (defined in dr::communicator)dr::communicatorinline
prev() const (defined in dr::communicator)dr::communicatorinline
rank() const (defined in dr::communicator)dr::communicatorinline
scatter(const void *src, void *dst, std::size_t count, std::size_t root) const (defined in dr::communicator)dr::communicatorinline
scatter(const std::span< T > src, T &dst, std::size_t root) const (defined in dr::communicator)dr::communicatorinline
scatterv(const void *src, int *counts, int *offsets, void *dst, int dst_count, std::size_t root) const (defined in dr::communicator)dr::communicatorinline
size() const (defined in dr::communicator)dr::communicatorinline
tag enum name (defined in dr::communicator)dr::communicator
+ + + + diff --git a/doxygen/classdr_1_1communicator.html b/doxygen/classdr_1_1communicator.html new file mode 100644 index 0000000000..2948f55a7b --- /dev/null +++ b/doxygen/classdr_1_1communicator.html @@ -0,0 +1,202 @@ + + + + + + + +Distributed Ranges: dr::communicator Class Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::communicator Class Reference
+
+
+ + + + +

+Public Types

enum class  tag { invalid +, halo_forward +, halo_reverse +, halo_index + }
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

communicator (MPI_Comm comm=MPI_COMM_WORLD)
 
+auto size () const
 
+auto rank () const
 
+auto prev () const
 
+auto next () const
 
+auto first () const
 
+auto last () const
 
+MPI_Comm mpi_comm () const
 
+void barrier () const
 
+void bcast (void *src, std::size_t count, std::size_t root) const
 
+void scatter (const void *src, void *dst, std::size_t count, std::size_t root) const
 
+template<typename T >
void scatter (const std::span< T > src, T &dst, std::size_t root) const
 
+void scatterv (const void *src, int *counts, int *offsets, void *dst, int dst_count, std::size_t root) const
 
+void gather (const void *src, void *dst, std::size_t count, std::size_t root) const
 
+template<typename T >
void gather (const T &src, std::span< T > dst, std::size_t root) const
 
+template<typename T >
void all_gather (const T *src, T *dst, std::size_t count) const
 
+template<typename T >
void all_gather (const T &src, std::vector< T > &dst) const
 
+template<rng::contiguous_range R>
void all_gather (const R &src, R &dst) const
 
+template<typename T >
void i_all_gather (const T *src, T *dst, std::size_t count, MPI_Request *req) const
 
+template<typename T >
void i_all_gather (const T &src, std::vector< T > &dst, MPI_Request *req) const
 
+void gatherv (const void *src, int *counts, int *offsets, void *dst, std::size_t root) const
 
+template<typename T >
void isend (const T *data, std::size_t count, std::size_t dst_rank, tag t, MPI_Request *request) const
 
+template<rng::contiguous_range R>
void isend (const R &data, std::size_t dst_rank, tag t, MPI_Request *request) const
 
+template<typename T >
void irecv (T *data, std::size_t size, std::size_t src_rank, tag t, MPI_Request *request) const
 
+template<rng::contiguous_range R>
void irecv (R &data, std::size_t src_rank, tag t, MPI_Request *request) const
 
+template<rng::contiguous_range R>
void alltoall (const R &sendr, R &recvr, std::size_t count)
 
+template<rng::contiguous_range SendR, rng::contiguous_range RecvR>
void alltoallv (const SendR &sendbuf, const std::vector< std::size_t > &sendcnt, const std::vector< std::size_t > &senddsp, RecvR &recvbuf, const std::vector< std::size_t > &recvcnt, const std::vector< std::size_t > &recvdsp)
 
+bool operator== (const communicator &other) const
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail/communicator.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1index-members.html b/doxygen/classdr_1_1index-members.html new file mode 100644 index 0000000000..a58706911b --- /dev/null +++ b/doxygen/classdr_1_1index-members.html @@ -0,0 +1,107 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::index< T > Member List
+
+
+ +

This is the complete list of members for dr::index< T >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + +
first (defined in dr::index< T >)dr::index< T >
first_type typedef (defined in dr::index< T >)dr::index< T >
get() const noexcept (defined in dr::index< T >)dr::index< T >inline
index(index_type first, index_type second) (defined in dr::index< T >)dr::index< T >inline
index(Tuple tuple) (defined in dr::index< T >)dr::index< T >inline
index(std::initializer_list< U > tuple) (defined in dr::index< T >)dr::index< T >inline
index()=default (defined in dr::index< T >)dr::index< T >
index(const index &)=default (defined in dr::index< T >)dr::index< T >
index(index &&)=default (defined in dr::index< T >)dr::index< T >
index_type typedef (defined in dr::index< T >)dr::index< T >
operator index< U >() const noexcept (defined in dr::index< T >)dr::index< T >inline
operator index< U >() const noexcept (defined in dr::index< T >)dr::index< T >inlineexplicit
operator=(const index &)=default (defined in dr::index< T >)dr::index< T >
operator=(index &&)=default (defined in dr::index< T >)dr::index< T >
operator==(const index &) const noexcept=default (defined in dr::index< T >)dr::index< T >
operator[](index_type dim) const noexcept (defined in dr::index< T >)dr::index< T >inline
second (defined in dr::index< T >)dr::index< T >
second_type typedef (defined in dr::index< T >)dr::index< T >
~index()=default (defined in dr::index< T >)dr::index< T >
+ + + + diff --git a/doxygen/classdr_1_1index.html b/doxygen/classdr_1_1index.html new file mode 100644 index 0000000000..6ae1444353 --- /dev/null +++ b/doxygen/classdr_1_1index.html @@ -0,0 +1,162 @@ + + + + + + + +Distributed Ranges: dr::index< T > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::index< T > Class Template Reference
+
+
+ + + + + + + + +

+Public Types

+using index_type = T
 
+using first_type = T
 
+using second_type = T
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+constexpr index_type operator[] (index_type dim) const noexcept
 
+template<std::integral U>
+requires (std::numeric_limits<U>::max() >= std::numeric_limits<T>::max())
constexpr operator index< U > () const noexcept
 
+template<std::integral U>
+requires (std::numeric_limits<U>::max() < std::numeric_limits<T>::max())
constexpr operator index< U > () const noexcept
 
+constexpr index (index_type first, index_type second)
 
+template<TupleLike< T, T > Tuple>
constexpr index (Tuple tuple)
 
+template<std::integral U>
constexpr index (std::initializer_list< U > tuple)
 
+constexpr bool operator== (const index &) const noexcept=default
 
+template<std::size_t Index>
+requires (Index <= 1)
constexpr T get () const noexcept
 
index (const index &)=default
 
+indexoperator= (const index &)=default
 
index (index &&)=default
 
+indexoperator= (index &&)=default
 
+ + + + + +

+Public Attributes

+index_type first
 
+index_type second
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail/index.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1iterator__adaptor-members.html b/doxygen/classdr_1_1iterator__adaptor-members.html new file mode 100644 index 0000000000..aec60c69fe --- /dev/null +++ b/doxygen/classdr_1_1iterator__adaptor-members.html @@ -0,0 +1,126 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::iterator_adaptor< Accessor > Member List
+
+
+ +

This is the complete list of members for dr::iterator_adaptor< Accessor >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
accessor_type typedef (defined in dr::iterator_adaptor< Accessor >)dr::iterator_adaptor< Accessor >
const_accessor_type typedef (defined in dr::iterator_adaptor< Accessor >)dr::iterator_adaptor< Accessor >
const_iterator typedef (defined in dr::iterator_adaptor< Accessor >)dr::iterator_adaptor< Accessor >
difference_type typedef (defined in dr::iterator_adaptor< Accessor >)dr::iterator_adaptor< Accessor >
iterator typedef (defined in dr::iterator_adaptor< Accessor >)dr::iterator_adaptor< Accessor >
iterator_adaptor()=default (defined in dr::iterator_adaptor< Accessor >)dr::iterator_adaptor< Accessor >
iterator_adaptor(const iterator_adaptor &)=default (defined in dr::iterator_adaptor< Accessor >)dr::iterator_adaptor< Accessor >
iterator_adaptor(Args &&...args) (defined in dr::iterator_adaptor< Accessor >)dr::iterator_adaptor< Accessor >inline
iterator_adaptor(const accessor_type &accessor) (defined in dr::iterator_adaptor< Accessor >)dr::iterator_adaptor< Accessor >inline
iterator_adaptor(const const_accessor_type &accessor) (defined in dr::iterator_adaptor< Accessor >)dr::iterator_adaptor< Accessor >inline
iterator_category typedef (defined in dr::iterator_adaptor< Accessor >)dr::iterator_adaptor< Accessor >
nonconst_accessor_type typedef (defined in dr::iterator_adaptor< Accessor >)dr::iterator_adaptor< Accessor >
nonconst_iterator typedef (defined in dr::iterator_adaptor< Accessor >)dr::iterator_adaptor< Accessor >
operator const_iterator() const (defined in dr::iterator_adaptor< Accessor >)dr::iterator_adaptor< Accessor >inline
operator!=(const_iterator other) const (defined in dr::iterator_adaptor< Accessor >)dr::iterator_adaptor< Accessor >inline
operator*() const (defined in dr::iterator_adaptor< Accessor >)dr::iterator_adaptor< Accessor >inline
operator+(difference_type offset) const (defined in dr::iterator_adaptor< Accessor >)dr::iterator_adaptor< Accessor >inline
operator+ (defined in dr::iterator_adaptor< Accessor >)dr::iterator_adaptor< Accessor >friend
operator++() noexcept (defined in dr::iterator_adaptor< Accessor >)dr::iterator_adaptor< Accessor >inline
operator++() noexcept (defined in dr::iterator_adaptor< Accessor >)dr::iterator_adaptor< Accessor >inline
operator++(int) noexcept (defined in dr::iterator_adaptor< Accessor >)dr::iterator_adaptor< Accessor >inline
operator+=(difference_type offset) noexcept (defined in dr::iterator_adaptor< Accessor >)dr::iterator_adaptor< Accessor >inline
operator-(difference_type offset) const (defined in dr::iterator_adaptor< Accessor >)dr::iterator_adaptor< Accessor >inline
operator-(const_iterator other) const (defined in dr::iterator_adaptor< Accessor >)dr::iterator_adaptor< Accessor >inline
operator--() noexcept (defined in dr::iterator_adaptor< Accessor >)dr::iterator_adaptor< Accessor >inline
operator--(int) noexcept (defined in dr::iterator_adaptor< Accessor >)dr::iterator_adaptor< Accessor >inline
operator-=(difference_type offset) noexcept (defined in dr::iterator_adaptor< Accessor >)dr::iterator_adaptor< Accessor >inline
operator<(const_iterator other) const (defined in dr::iterator_adaptor< Accessor >)dr::iterator_adaptor< Accessor >inline
operator<=(const_iterator other) const (defined in dr::iterator_adaptor< Accessor >)dr::iterator_adaptor< Accessor >inline
operator=(const iterator_adaptor &)=default (defined in dr::iterator_adaptor< Accessor >)dr::iterator_adaptor< Accessor >
operator==(const_iterator other) const (defined in dr::iterator_adaptor< Accessor >)dr::iterator_adaptor< Accessor >inline
operator>(const_iterator other) const (defined in dr::iterator_adaptor< Accessor >)dr::iterator_adaptor< Accessor >inline
operator>=(const_iterator other) const (defined in dr::iterator_adaptor< Accessor >)dr::iterator_adaptor< Accessor >inline
operator[](difference_type offset) const (defined in dr::iterator_adaptor< Accessor >)dr::iterator_adaptor< Accessor >inline
reference typedef (defined in dr::iterator_adaptor< Accessor >)dr::iterator_adaptor< Accessor >
segments() const noexcept (defined in dr::iterator_adaptor< Accessor >)dr::iterator_adaptor< Accessor >inline
value_type typedef (defined in dr::iterator_adaptor< Accessor >)dr::iterator_adaptor< Accessor >
~iterator_adaptor()=default (defined in dr::iterator_adaptor< Accessor >)dr::iterator_adaptor< Accessor >
+ + + + diff --git a/doxygen/classdr_1_1iterator__adaptor.html b/doxygen/classdr_1_1iterator__adaptor.html new file mode 100644 index 0000000000..2580ae3b31 --- /dev/null +++ b/doxygen/classdr_1_1iterator__adaptor.html @@ -0,0 +1,213 @@ + + + + + + + +Distributed Ranges: dr::iterator_adaptor< Accessor > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::iterator_adaptor< Accessor > Class Template Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + +

+Public Types

+using accessor_type = Accessor
 
+using const_accessor_type = typename Accessor::const_iterator_accessor
 
+using nonconst_accessor_type = typename Accessor::nonconst_iterator_accessor
 
+using difference_type = typename Accessor::difference_type
 
+using value_type = typename Accessor::value_type
 
+using iterator = iterator_adaptor< accessor_type >
 
+using const_iterator = iterator_adaptor< const_accessor_type >
 
+using reference = typename Accessor::reference
 
+using iterator_category = typename Accessor::iterator_category
 
+using nonconst_iterator = iterator_adaptor< nonconst_accessor_type >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

iterator_adaptor (const iterator_adaptor &)=default
 
+iterator_adaptoroperator= (const iterator_adaptor &)=default
 
+template<typename... Args>
+requires ( sizeof...(Args) >= 1 && !((sizeof...(Args) == 1 && (std::is_same_v<nonconst_iterator, std::decay_t<Args>> || ...)) || (std::is_same_v<const_iterator, std::decay_t<Args>> || ...) || (std::is_same_v<nonconst_accessor_type, std::decay_t<Args>> || ...) || (std::is_same_v<const_accessor_type, std::decay_t<Args>> || ...)) && std::is_constructible_v<accessor_type, Args...>)
 iterator_adaptor (Args &&...args)
 
iterator_adaptor (const accessor_type &accessor)
 
iterator_adaptor (const const_accessor_type &accessor)
 
operator const_iterator () const
 
+bool operator== (const_iterator other) const
 
+bool operator!= (const_iterator other) const
 
+bool operator< (const_iterator other) const
 
+bool operator<= (const_iterator other) const
 
+bool operator> (const_iterator other) const
 
+bool operator>= (const_iterator other) const
 
+reference operator* () const
 
+reference operator[] (difference_type offset) const
 
+iteratoroperator+= (difference_type offset) noexcept
 
+iteratoroperator-= (difference_type offset) noexcept
 
+iterator operator+ (difference_type offset) const
 
+iterator operator- (difference_type offset) const
 
+difference_type operator- (const_iterator other) const
 
+iteratoroperator++ () noexcept
 
+iteratoroperator++ () noexcept
 
+iterator operator++ (int) noexcept
 
+iteratoroperator-- () noexcept
 
+iterator operator-- (int) noexcept
 
+auto segments () const noexcept
 
+ + + +

+Friends

+iterator operator+ (difference_type n, iterator iter)
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail/iterator_adaptor.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1logger-members.html b/doxygen/classdr_1_1logger-members.html new file mode 100644 index 0000000000..7805725abc --- /dev/null +++ b/doxygen/classdr_1_1logger-members.html @@ -0,0 +1,91 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::logger Member List
+
+
+ +

This is the complete list of members for dr::logger, including all inherited members.

+ + + + +
debug(const nostd::source_location &location, std::string format, Args &&...args) (defined in dr::logger)dr::loggerinline
debug(std::string format, Args &&...args) (defined in dr::logger)dr::loggerinline
set_file(std::ofstream &fout) (defined in dr::logger)dr::loggerinline
+ + + + diff --git a/doxygen/classdr_1_1logger.html b/doxygen/classdr_1_1logger.html new file mode 100644 index 0000000000..4605b8d575 --- /dev/null +++ b/doxygen/classdr_1_1logger.html @@ -0,0 +1,106 @@ + + + + + + + +Distributed Ranges: dr::logger Class Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::logger Class Reference
+
+
+ + + + + + + + + + +

+Public Member Functions

+void set_file (std::ofstream &fout)
 
+template<typename... Args>
void debug (const nostd::source_location &location, std::string format, Args &&...args)
 
+template<typename... Args>
void debug (std::string format, Args &&...args)
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail/logger.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1mhp_1_1____detail_1_1allocator-members.html b/doxygen/classdr_1_1mhp_1_1____detail_1_1allocator-members.html new file mode 100644 index 0000000000..4d247f91aa --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1____detail_1_1allocator-members.html @@ -0,0 +1,90 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::mhp::__detail::allocator< T > Member List
+
+
+ +

This is the complete list of members for dr::mhp::__detail::allocator< T >, including all inherited members.

+ + + +
allocate(std::size_t sz) (defined in dr::mhp::__detail::allocator< T >)dr::mhp::__detail::allocator< T >inline
deallocate(T *ptr, std::size_t sz) (defined in dr::mhp::__detail::allocator< T >)dr::mhp::__detail::allocator< T >inline
+ + + + diff --git a/doxygen/classdr_1_1mhp_1_1____detail_1_1allocator.html b/doxygen/classdr_1_1mhp_1_1____detail_1_1allocator.html new file mode 100644 index 0000000000..9051613b6e --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1____detail_1_1allocator.html @@ -0,0 +1,101 @@ + + + + + + + +Distributed Ranges: dr::mhp::__detail::allocator< T > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::mhp::__detail::allocator< T > Class Template Reference
+
+
+ + + + + + +

+Public Member Functions

+T * allocate (std::size_t sz)
 
+void deallocate (T *ptr, std::size_t sz)
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/global.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1mhp_1_1____detail_1_1md__segment-members.html b/doxygen/classdr_1_1mhp_1_1____detail_1_1md__segment-members.html new file mode 100644 index 0000000000..cdc8590750 --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1____detail_1_1md__segment-members.html @@ -0,0 +1,97 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::mhp::__detail::md_segment< BaseSegment, Rank > Member List
+
+ + + + + diff --git a/doxygen/classdr_1_1mhp_1_1____detail_1_1md__segment.html b/doxygen/classdr_1_1mhp_1_1____detail_1_1md__segment.html new file mode 100644 index 0000000000..7b19114bd8 --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1____detail_1_1md__segment.html @@ -0,0 +1,141 @@ + + + + + + + +Distributed Ranges: dr::mhp::__detail::md_segment< BaseSegment, Rank > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::mhp::__detail::md_segment< BaseSegment, Rank > Class Template Reference
+
+
+
+Inheritance diagram for dr::mhp::__detail::md_segment< BaseSegment, Rank >:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for dr::mhp::__detail::md_segment< BaseSegment, Rank >:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + +

+Public Types

+using index_type = dr::__detail::dr_extents< Rank >
 
+ + + + + + + + + + + + + + + +

+Public Member Functions

md_segment (index_type origin, BaseSegment segment, index_type tile_shape)
 
+auto begin () const
 
+auto end () const
 
+auto halo () const
 
+auto mdspan () const
 
+auto origin () const
 
+auto root_mdspan () const
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/views/mdspan_view.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1mhp_1_1____detail_1_1md__segment__coll__graph.map b/doxygen/classdr_1_1mhp_1_1____detail_1_1md__segment__coll__graph.map new file mode 100644 index 0000000000..501cb9d589 --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1____detail_1_1md__segment__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/classdr_1_1mhp_1_1____detail_1_1md__segment__coll__graph.md5 b/doxygen/classdr_1_1mhp_1_1____detail_1_1md__segment__coll__graph.md5 new file mode 100644 index 0000000000..b5f57e4480 --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1____detail_1_1md__segment__coll__graph.md5 @@ -0,0 +1 @@ +32c602b5110c6a6f80ee3068771980cf \ No newline at end of file diff --git a/doxygen/classdr_1_1mhp_1_1____detail_1_1md__segment__coll__graph.png b/doxygen/classdr_1_1mhp_1_1____detail_1_1md__segment__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..0b3b14512c9c298b50d34cfb0e56c6449ace3b01 GIT binary patch literal 7804 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 D?CSn> literal 0 HcmV?d00001 diff --git a/doxygen/classdr_1_1mhp_1_1____detail_1_1md__segment__inherit__graph.map b/doxygen/classdr_1_1mhp_1_1____detail_1_1md__segment__inherit__graph.map new file mode 100644 index 0000000000..501cb9d589 --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1____detail_1_1md__segment__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/classdr_1_1mhp_1_1____detail_1_1md__segment__inherit__graph.md5 b/doxygen/classdr_1_1mhp_1_1____detail_1_1md__segment__inherit__graph.md5 new file mode 100644 index 0000000000..b5f57e4480 --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1____detail_1_1md__segment__inherit__graph.md5 @@ -0,0 +1 @@ +32c602b5110c6a6f80ee3068771980cf \ No newline at end of file diff --git a/doxygen/classdr_1_1mhp_1_1____detail_1_1md__segment__inherit__graph.png b/doxygen/classdr_1_1mhp_1_1____detail_1_1md__segment__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..0b3b14512c9c298b50d34cfb0e56c6449ace3b01 GIT binary patch literal 7804 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 D?CSn> literal 0 HcmV?d00001 diff --git a/doxygen/classdr_1_1mhp_1_1____detail_1_1mdsub__segment-members.html b/doxygen/classdr_1_1mhp_1_1____detail_1_1mdsub__segment-members.html new file mode 100644 index 0000000000..4877f15c19 --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1____detail_1_1mdsub__segment-members.html @@ -0,0 +1,93 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::mhp::__detail::mdsub_segment< BaseSegment, Rank, Layout > Member List
+
+ + + + + diff --git a/doxygen/classdr_1_1mhp_1_1____detail_1_1mdsub__segment.html b/doxygen/classdr_1_1mhp_1_1____detail_1_1mdsub__segment.html new file mode 100644 index 0000000000..2ea2fc3f27 --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1____detail_1_1mdsub__segment.html @@ -0,0 +1,129 @@ + + + + + + + +Distributed Ranges: dr::mhp::__detail::mdsub_segment< BaseSegment, Rank, Layout > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::mhp::__detail::mdsub_segment< BaseSegment, Rank, Layout > Class Template Reference
+
+
+
+Inheritance diagram for dr::mhp::__detail::mdsub_segment< BaseSegment, Rank, Layout >:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for dr::mhp::__detail::mdsub_segment< BaseSegment, Rank, Layout >:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + +

+Public Types

+using index_type = dr::__detail::dr_extents< Rank >
 
+ + + + + + + +

+Public Member Functions

mdsub_segment (BaseSegment segment, const index_type &slice_starts, const index_type &slice_ends)
 
+auto mdspan () const
 
+auto root_mdspan () const
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/views/submdspan_view.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1mhp_1_1____detail_1_1mdsub__segment__coll__graph.map b/doxygen/classdr_1_1mhp_1_1____detail_1_1mdsub__segment__coll__graph.map new file mode 100644 index 0000000000..8a95289564 --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1____detail_1_1mdsub__segment__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/classdr_1_1mhp_1_1____detail_1_1mdsub__segment__coll__graph.md5 b/doxygen/classdr_1_1mhp_1_1____detail_1_1mdsub__segment__coll__graph.md5 new file mode 100644 index 0000000000..dd84d148a5 --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1____detail_1_1mdsub__segment__coll__graph.md5 @@ -0,0 +1 @@ +17d8ee7f9037f06217258245fe2c82e2 \ No newline at end of file diff --git a/doxygen/classdr_1_1mhp_1_1____detail_1_1mdsub__segment__coll__graph.png b/doxygen/classdr_1_1mhp_1_1____detail_1_1mdsub__segment__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..f0279c0a902ee4f281b32fff444b88aa127bfc02 GIT binary patch literal 6157 zcmc&&XH%0=w+*5oU5XgG^rlD$rAd=s1q>oJQbdp&61sr& z&_#+MU3$AG?}vBh-al|BL!KEX$vJ1Awbx#2Md|CRQIIl{LLd+d4RsYm@H_^8(btK< zdtSc6Q}7_N(Na@^T;g9JzZE7zAh+5zR1}T8Gd5;?^o{Jt6t=gVJx$Z|jUQH+BIn5+ z^niWGNCZi;h+*>Es&GhvWioEqW_jdwXg<+ zRs7$rskA2ktel6k9d^!Acno{r&lV{C>E)}dkdoN=@Ac-j>+E4Sl<;r4lo<_#ADqgc z)zcJhLc5M!nNz;`9q+oo=@c<_D3J;34qvQ$ycQdbq=Gxq1`V&p!mB=Vv4wp3BF04% z)quGTciq5AyonJ06FI^HVOROe*G)n#t?90GH8vsRMsOY%ugW}Mcjt@!wb6NLO6E?* z$B$`iYHB9F`AR((oeZnC)YlIR3WBI}(L{FG9G#vnT3()vhgE+TAiE{>y%OFz!V+$! zpCG9C{5cmC?(p&@CW@9fK0ZDO-F)JxgbP?odSYc|6*N`rve=!-J5dQIKG>X*VRuek zA>^*7dEw}2)1AN#Yw{M^oNF1-v;1O5Asrj4&J|)Lpz7pw2MRws3k$odo^QCizK)ri zVybnSTV9cnlHwEcgC`89~^`S2NPsuX1eVy>wNF* z#Ncp@SS)s;+26NC?3R!7k8B0DMz5`KH2NMAiQH}{yElKj)j|xpdhOam1Y5vE7z_$F z9uW~yPzWpPmi8^bg1c~8bCxxn<^_4Mk5e5Wb}8e zW@cuzc@jm`)YJ~vO3_sr8O&oi+=HTi)R;Z8l3Ode;^W8LCdS4c2n1r{S4T7h#KhdZ z9}4dq9Zl-bl1raycoPjOP+3tSZ0F$6RpUH`b$t2KR8f&2T?9@f<9|}!?%dGOAj-tV z?lZ*P-^2A_-OR&w1B3b<5KQi9pr zuT-p`?V|&2(er)V zV@;&(o;-O%&&D<|fG#bCLts8W_u?-HnZn21Z6=5G+}vC{U6SJD~O2wBi%C4@$0BBSn zR~qh1OGC5$c1g12e2G%E!_Q9-^GZvjEnPNnU)8m=lr1b+{rvqaJ^mP0S68==jnQ+U zu7lgOLhhf|dT!tpH<%b07G}KWI{r?6K_w+|d-)3r3W`ff?Tybt^q)PGEtiKn_hI%q z4OrK7xNVR*)zx(T{QRzO-dr1e?UB&^Tv$>vyrxFd{q^h0z{`Mu%-)oHi+OSK?Tejp zLz9zHo13o!SO7B0%xWpqrCc5X)I5FqG(I~!4q&yqwl*&}_sYxha@9wVh}PEEhXx0O zFcDOFV3EzuP4{sxSJ$AzLS7CI4t;a;m|wqa{EikP7S{-UoCR!_`%;f~I@wOoV19Ml3tt73W|%n4-<1&(=xgwa9p?2v{HmbDq&@t!dPU2 zpKu9p_AlMc2iJ6Tbehg~d-;TfusPZgzHd>KYmbUQm^HtLnOutp*9S9Io$whh1mpKBnV@@20S~D{07g zd`i;K)syh>^1n{SD%%=LOa=J*r-GoQK%v+$e)r7_ zTO8ZmntR=@!qel3QI@z8FmXO_LV0N4-onvUEtwri@G3!ru-HeiPekr4Yq3#9tmcV& z)ahtZbJTSvf*?0xanbPX1~><8Xo4SN&iQd?qQE(>xi-KCD2}+_5g-Y2 z)(}zJ%$mFWK_X#QS%u^O^4mnpPRt*OJ=W5H-mafO_H3fIFNDw!;y|9(O@N!35MEG3 zk*I12xpGj4vrS`KMdrO|p_B%Mn(o1H@)nG1XqI#&bo*!eoalN~3__br)16={Aa&A} zncgPsypO;f`o}>p%lG~7D`PV;R$WXDeIHc||F%EU5OQK=R#u%0v~u_bEjiI4M6SNi zyb(N+hMhA|It@M8{=05usHI4s$SN|{n>ZHi1aGt7p7`v!j%n8kXD|)ywPdeN- zdb3o9F82zuQYx~l!S!w zi-%!1mP*iQHuneSiT_0)I8|W+my45=inq6PT6(&1<*{|g_wVz|{pqy0Wmr*OAW#9( zeSLi-FXOaXJ-BZ1X*&LlPB^>2eY}#*DI?=+w63D2hUx9qQl&<%kZ^6Px#V>&wv=gvNSfSw)Hwy1*9-_z4`gOL$|!##a&XU8EaNe_unP9EEOt*uSI z{3A0O5Vx%V30*-!f%jsJ)b`O1{8M3J-sjI0(e!tfz$lU4yrh~w-3q(}L+0p;t*tE} z!AJV~H-IQO?ZC7B?yfrw2D=TI`QYF{87sW~rR1dW+c%b5LeE-f8oh>aI8tI_;;Y2O zn7%%8P(nUILCnr#r`y?)8&ELdK#TKjp+|=;mlUy!R*sIO_wL;Tf@;sd(re4Y+sB8( zSNzGS7k6TuVS=oP2sPlJ$e0*aGczU{T3X_}iAhQCYG>b)85Yw4u7C03g?p{<$`6*X zhzK|q$pEOJEyXe*N;R5(AyH4h4c&5q08}Y`|9)G4e~cxsl+>+-g@uahYL&NdA2eT_ zy!_tLu@iVUj<)Qaa%rIeRQ{|bfQ5vF1T6V3Cnra=!A5=egqNS6Br`KJ5`hQ-;z-D% zDN;Fta$zw}0Sn{;;BE>wHnygJKef&tY<)Xqg*@a*%mKu&7Rwx5Uw@zeo<&*JmSUFP zqP#h}y!;X1MvK7nH&8}KFw(EAkE7YDr+1fntzBHGP(_8^qoq#{WgN-R$RW+m%@tq2 zzKe~el$Dbknw^aWF zm4#1lQYoATZ8e`#8XFrsxVR8QE~-M~o3WX{Z7QJ~8yny(zb@lTOG}CGjvqFdX1+}< z*|G=vCh03LIuLYBs~a;I13754!f#2U19Lc>GnQ2jvAylumnn1W!Gi~N?n|V*dwa$Q za$S2brwiBV>FFzKYde9q85$W01A-+(A<$y;EdbEO*O%iJ*~UxQ7$!bGzK5Wc&6gLx zBje-ni?d^aXbp?Y4{2%bqoX&0K32B122M5@9 zWViG!EGVN?LJntr_41`=Ajjvl^z`9iP_nbL6M)GG02|iQq988e>lv4w&318d*s|D@ zBnaT4>fs?ihPI5$Q;W+5)t8i%gjHA(Afk&OWspn$RpvaIt)xc)Zoto0S1+$8UVLGE z=71xB93hqy4RySq@>{)D}Vk(^`}df3X3ZJP8Zjh z1)7ga{s^+OvjZd}bi5{9=I$Io$%h(yJG*e8YvKfXlt$j^j+0Q=X}sp*E!hDaM#V@Y z!wTBzXdv){@S}ZoW>gdj&?^FLo;O|p?H9Cs|5 zpoj}U0h%Z)(D21ZIG2oXO{Dde2W|ktC8ed*tgMukFmi~iyZf(8%CLqwtkw&)-60cX zj8UpFD3_T1kJ|zQq~M;tPyX=(fFCPdRYm6Gv@IGrjicR|BRJJ!TSrFdDl02NQ?XSs zx>TQYp>?c|{<9fICMFaRr$D%kjE(|Eq%f;}^)56NQ>0sOE6Sj$rDXtsov)R$JFHd` z&!or3#K@?`ftm*raeHqMQ)c?*=p@WSX;Q7{Q#F%IUNJQBNosyh4j!SaYimkcT4bJ{ zo)Z<;n4(_{#W*Kv&aZ;#r)4E2q^hc_*GWl3a&p)K>rmggAzU6{SgoXEu{85=c#1 zEE(J;F6qhL0?@%MESUicmlVb^QfdF)6`(cKL2 zqR*c@fa!MyBQ5ORI|69E(koeiCtKTVw6wHf@DW0AI9xoqbkG)fTkZE(X##95naKrV zR9;_K*V@r>4Jq<_X$c^U(#_2cPop(8o-H)PITjRRV~$@I@S7VuC7zj{?z^PM?~M^* zRMahI^plZ+!Fs7D30CjU9jKG_;lp(x$?F;$fkudK$$DSAF+04C$H<*K+BtYw?K}kL zb$e&0ZK*e92aI}eZ}01NZ2XB&19(%Or0#DoC_k%nB>)t>y15yy&9f+ohO`39KRG$+ z@ZyCc;A&7-siGKENq@MQVdHK|2Nw;=-@ktW;6+Oun^1g)IXnZcq&2~J?%u5oIDh+h zrtuaSn?0%d&W{O#L zffW-K6$R6SoSaI z4-O5rgLSSz7#?D#=~QN zbtn%&W>d=bdD$bx2AG|7Z}$Zb{!U`5kG}nhlDo-9hfv)z|kuM>*mnXhttDFR(s&iN@_+gM_%pTPS7-u$0Gt z5KZy=v%L(#Syh9;yy3lITU*;%<8Lhd)5P@5jN8FqQ@WcscT~BhUQGujCekWoop+%) zL0@6Z%^O>x%7%tCc)6#dqSEDTHuMuvoz_(%qF-OfEij-*Q7I`AU`WEu%rF=X;j34# z&b|;Yk5p9V`%=ZcS2DeBqtuD+O8q1wSxRD)_dOs#J=h3MPiF#2&-;Y= zU7KN0)rbh0{BqSun_42|$>Afxj=&f`q zDr;-&qrYDUgq?BXXNzo?t)N$vW|Q@YP<}{|+W?*A`s+K%vnFrqz2*KzS_9NAnjS%g zzMdYSM%z9XE+bQ#Cj9*TwkPegt%nPA>H;t2K}G`@^9lqsB1jR}p5%|2m77{xQo-Ty ze5^oXH~u=Nn|x@!wr1ZYCEWxEsBm3S%CF&k{{Hvka|egW!9o4MxUXcUrluegG{KRP z5MH^mJ>N#?cf6Dm85ybH^QV}jvOnWKEzseBEb3mb;8iMUeS(jLYnng+mzT$~J()2p zpFCCP@yTyRyf?uYEHyQ?tG9O%-3=Dj8UGD`Sh%incxGu+?bzW{h5kykGlEWE$JkC*>00eegr zd_rhCn8mRm1UR7FygWjeZ~OE%HZ~P@{fwI1BDtLP2}dU<9CC6jVDGR7kK&&e>RoQk zKs=*B4*FVE~< znTbKt7tqq#D|pT1)7cvkgoPHMDsv2nS4Lo()M_BJA`3hj&c4CSEX!Y7-DPFuC?MQ( zN0m8JBpl>Jihv4%*UIg|v4gB2gPew%ngC=sO*>eoGYYBQvs^CTP-a0Qo*d NLseI$T*)fre*gmm0IUE2 literal 0 HcmV?d00001 diff --git a/doxygen/classdr_1_1mhp_1_1____detail_1_1mdsub__segment__inherit__graph.map b/doxygen/classdr_1_1mhp_1_1____detail_1_1mdsub__segment__inherit__graph.map new file mode 100644 index 0000000000..8a95289564 --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1____detail_1_1mdsub__segment__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/classdr_1_1mhp_1_1____detail_1_1mdsub__segment__inherit__graph.md5 b/doxygen/classdr_1_1mhp_1_1____detail_1_1mdsub__segment__inherit__graph.md5 new file mode 100644 index 0000000000..dd84d148a5 --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1____detail_1_1mdsub__segment__inherit__graph.md5 @@ -0,0 +1 @@ +17d8ee7f9037f06217258245fe2c82e2 \ No newline at end of file diff --git a/doxygen/classdr_1_1mhp_1_1____detail_1_1mdsub__segment__inherit__graph.png b/doxygen/classdr_1_1mhp_1_1____detail_1_1mdsub__segment__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..f0279c0a902ee4f281b32fff444b88aa127bfc02 GIT binary patch literal 6157 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 NLseI$T*)fre*gmm0IUE2 literal 0 HcmV?d00001 diff --git a/doxygen/classdr_1_1mhp_1_1distributed__mdarray-members.html b/doxygen/classdr_1_1mhp_1_1distributed__mdarray-members.html new file mode 100644 index 0000000000..a09e8ba824 --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1distributed__mdarray-members.html @@ -0,0 +1,101 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::mhp::distributed_mdarray< T, Rank > Member List
+
+
+ +

This is the complete list of members for dr::mhp::distributed_mdarray< T, Rank >, including all inherited members.

+ + + + + + + + + + + + + + +
begin() const (defined in dr::mhp::distributed_mdarray< T, Rank >)dr::mhp::distributed_mdarray< T, Rank >inline
distributed_mdarray(dr::__detail::dr_extents< Rank > shape, distribution dist=distribution()) (defined in dr::mhp::distributed_mdarray< T, Rank >)dr::mhp::distributed_mdarray< T, Rank >inline
end() const (defined in dr::mhp::distributed_mdarray< T, Rank >)dr::mhp::distributed_mdarray< T, Rank >inline
extent(std::size_t r) const (defined in dr::mhp::distributed_mdarray< T, Rank >)dr::mhp::distributed_mdarray< T, Rank >inline
grid() (defined in dr::mhp::distributed_mdarray< T, Rank >)dr::mhp::distributed_mdarray< T, Rank >inline
halo() const (defined in dr::mhp::distributed_mdarray< T, Rank >)dr::mhp::distributed_mdarray< T, Rank >inline
mdspan() const (defined in dr::mhp::distributed_mdarray< T, Rank >)dr::mhp::distributed_mdarray< T, Rank >inline
operator==(const distributed_mdarray &other) const (defined in dr::mhp::distributed_mdarray< T, Rank >)dr::mhp::distributed_mdarray< T, Rank >inline
operator[](auto n) (defined in dr::mhp::distributed_mdarray< T, Rank >)dr::mhp::distributed_mdarray< T, Rank >inline
segments() (defined in dr::mhp::distributed_mdarray< T, Rank >)dr::mhp::distributed_mdarray< T, Rank >inline
shape_type typedef (defined in dr::mhp::distributed_mdarray< T, Rank >)dr::mhp::distributed_mdarray< T, Rank >
size() const (defined in dr::mhp::distributed_mdarray< T, Rank >)dr::mhp::distributed_mdarray< T, Rank >inline
view() const (defined in dr::mhp::distributed_mdarray< T, Rank >)dr::mhp::distributed_mdarray< T, Rank >inline
+ + + + diff --git a/doxygen/classdr_1_1mhp_1_1distributed__mdarray.html b/doxygen/classdr_1_1mhp_1_1distributed__mdarray.html new file mode 100644 index 0000000000..3ad04d602e --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1distributed__mdarray.html @@ -0,0 +1,138 @@ + + + + + + + +Distributed Ranges: dr::mhp::distributed_mdarray< T, Rank > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::mhp::distributed_mdarray< T, Rank > Class Template Reference
+
+
+ + + + +

+Public Types

+using shape_type = dr::__detail::dr_extents< Rank >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

distributed_mdarray (dr::__detail::dr_extents< Rank > shape, distribution dist=distribution())
 
+auto begin () const
 
+auto end () const
 
+auto size () const
 
+auto operator[] (auto n)
 
+auto segments ()
 
+auto & halo () const
 
+auto mdspan () const
 
+auto extent (std::size_t r) const
 
+auto grid ()
 
+auto view () const
 
+auto operator== (const distributed_mdarray &other) const
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/containers/distributed_mdarray.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1mhp_1_1distributed__vector-members.html b/doxygen/classdr_1_1mhp_1_1distributed__vector-members.html new file mode 100644 index 0000000000..34a43edb51 --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1distributed__vector-members.html @@ -0,0 +1,103 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::mhp::distributed_vector< T > Member List
+
+
+ +

This is the complete list of members for dr::mhp::distributed_vector< T >, including all inherited members.

+ + + + + + + + + + + + + + + + +
begin() constdr::mhp::distributed_vector< T >inline
difference_type typedef (defined in dr::mhp::distributed_vector< T >)dr::mhp::distributed_vector< T >
distributed_vector(const distributed_vector &)=delete (defined in dr::mhp::distributed_vector< T >)dr::mhp::distributed_vector< T >
distributed_vector(distributed_vector &&) (defined in dr::mhp::distributed_vector< T >)dr::mhp::distributed_vector< T >inline
distributed_vector(std::size_t size=0, distribution dist=distribution())dr::mhp::distributed_vector< T >inline
distributed_vector(std::size_t size, value_type fill_value, distribution dist=distribution())dr::mhp::distributed_vector< T >inline
end() constdr::mhp::distributed_vector< T >inline
halo() const (defined in dr::mhp::distributed_vector< T >)dr::mhp::distributed_vector< T >inline
operator=(const distributed_vector &)=delete (defined in dr::mhp::distributed_vector< T >)dr::mhp::distributed_vector< T >
operator[](difference_type n) constdr::mhp::distributed_vector< T >inline
segments() const (defined in dr::mhp::distributed_vector< T >)dr::mhp::distributed_vector< T >inline
size() constdr::mhp::distributed_vector< T >inline
size_type typedef (defined in dr::mhp::distributed_vector< T >)dr::mhp::distributed_vector< T >
value_type typedef (defined in dr::mhp::distributed_vector< T >)dr::mhp::distributed_vector< T >
~distributed_vector() (defined in dr::mhp::distributed_vector< T >)dr::mhp::distributed_vector< T >inline
+ + + + diff --git a/doxygen/classdr_1_1mhp_1_1distributed__vector.html b/doxygen/classdr_1_1mhp_1_1distributed__vector.html new file mode 100644 index 0000000000..6ada2a588a --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1distributed__vector.html @@ -0,0 +1,161 @@ + + + + + + + +Distributed Ranges: dr::mhp::distributed_vector< T > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::mhp::distributed_vector< T > Class Template Reference
+
+
+ +

distributed vector + More...

+ +

#include <distributed_vector.hpp>

+ + + + +

+Classes

class  iterator
 
+ + + + + + + +

+Public Types

+using value_type = T
 
+using size_type = std::size_t
 
+using difference_type = std::ptrdiff_t
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

distributed_vector (const distributed_vector &)=delete
 
+distributed_vectoroperator= (const distributed_vector &)=delete
 
distributed_vector (distributed_vector &&)
 
distributed_vector (std::size_t size=0, distribution dist=distribution())
 Constructor.
 
distributed_vector (std::size_t size, value_type fill_value, distribution dist=distribution())
 Constructor.
 
+auto begin () const
 Returns iterator to beginning.
 
+auto end () const
 Returns iterator to end.
 
+auto size () const
 Returns size.
 
+auto operator[] (difference_type n) const
 Returns reference using index.
 
+auto & halo () const
 
+auto segments () const
 
+

Detailed Description

+
template<typename T>
+class dr::mhp::distributed_vector< T >

distributed vector

+

The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/containers/distributed_vector.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1mhp_1_1distributed__vector_1_1iterator-members.html b/doxygen/classdr_1_1mhp_1_1distributed__vector_1_1iterator-members.html new file mode 100644 index 0000000000..68ae1e3f4f --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1distributed__vector_1_1iterator-members.html @@ -0,0 +1,109 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::mhp::distributed_vector< T >::iterator Member List
+
+
+ +

This is the complete list of members for dr::mhp::distributed_vector< T >::iterator, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + +
difference_type typedef (defined in dr::mhp::distributed_vector< T >::iterator)dr::mhp::distributed_vector< T >::iterator
iterator() (defined in dr::mhp::distributed_vector< T >::iterator)dr::mhp::distributed_vector< T >::iteratorinline
iterator(const distributed_vector *parent, difference_type offset) (defined in dr::mhp::distributed_vector< T >::iterator)dr::mhp::distributed_vector< T >::iteratorinline
iterator_category typedef (defined in dr::mhp::distributed_vector< T >::iterator)dr::mhp::distributed_vector< T >::iterator
local() (defined in dr::mhp::distributed_vector< T >::iterator)dr::mhp::distributed_vector< T >::iteratorinline
operator*() const (defined in dr::mhp::distributed_vector< T >::iterator)dr::mhp::distributed_vector< T >::iteratorinline
operator+(difference_type n) const (defined in dr::mhp::distributed_vector< T >::iterator)dr::mhp::distributed_vector< T >::iteratorinline
operator+ (defined in dr::mhp::distributed_vector< T >::iterator)dr::mhp::distributed_vector< T >::iteratorfriend
operator++() (defined in dr::mhp::distributed_vector< T >::iterator)dr::mhp::distributed_vector< T >::iteratorinline
operator++(int) (defined in dr::mhp::distributed_vector< T >::iterator)dr::mhp::distributed_vector< T >::iteratorinline
operator+=(difference_type n) (defined in dr::mhp::distributed_vector< T >::iterator)dr::mhp::distributed_vector< T >::iteratorinline
operator-(difference_type n) const (defined in dr::mhp::distributed_vector< T >::iterator)dr::mhp::distributed_vector< T >::iteratorinline
operator-(iterator other) const (defined in dr::mhp::distributed_vector< T >::iterator)dr::mhp::distributed_vector< T >::iteratorinline
operator--() (defined in dr::mhp::distributed_vector< T >::iterator)dr::mhp::distributed_vector< T >::iteratorinline
operator--(int) (defined in dr::mhp::distributed_vector< T >::iterator)dr::mhp::distributed_vector< T >::iteratorinline
operator-=(difference_type n) (defined in dr::mhp::distributed_vector< T >::iterator)dr::mhp::distributed_vector< T >::iteratorinline
operator<=>(iterator other) const (defined in dr::mhp::distributed_vector< T >::iterator)dr::mhp::distributed_vector< T >::iteratorinline
operator==(iterator other) const (defined in dr::mhp::distributed_vector< T >::iterator)dr::mhp::distributed_vector< T >::iteratorinline
operator[](difference_type n) const (defined in dr::mhp::distributed_vector< T >::iterator)dr::mhp::distributed_vector< T >::iteratorinline
segments() (defined in dr::mhp::distributed_vector< T >::iterator)dr::mhp::distributed_vector< T >::iteratorinline
value_type typedef (defined in dr::mhp::distributed_vector< T >::iterator)dr::mhp::distributed_vector< T >::iterator
+ + + + diff --git a/doxygen/classdr_1_1mhp_1_1distributed__vector_1_1iterator.html b/doxygen/classdr_1_1mhp_1_1distributed__vector_1_1iterator.html new file mode 100644 index 0000000000..00a1de0115 --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1distributed__vector_1_1iterator.html @@ -0,0 +1,163 @@ + + + + + + + +Distributed Ranges: dr::mhp::distributed_vector< T >::iterator Class Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::mhp::distributed_vector< T >::iterator Class Reference
+
+
+ + + + + + + + +

+Public Types

+using iterator_category = std::random_access_iterator_tag
 
+using value_type = typename distributed_vector::value_type
 
+using difference_type = typename distributed_vector::difference_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

iterator (const distributed_vector *parent, difference_type offset)
 
+auto operator+ (difference_type n) const
 
+auto operator- (difference_type n) const
 
+auto operator- (iterator other) const
 
+auto & operator+= (difference_type n)
 
+auto & operator-= (difference_type n)
 
+auto & operator++ ()
 
+auto operator++ (int)
 
+auto & operator-- ()
 
+auto operator-- (int)
 
+bool operator== (iterator other) const
 
+auto operator<=> (iterator other) const
 
+auto operator* () const
 
+auto operator[] (difference_type n) const
 
+auto local ()
 
+auto segments ()
 
+ + + +

+Friends

+auto operator+ (difference_type n, const iterator &other)
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/containers/distributed_vector.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1mhp_1_1dv__segment-members.html b/doxygen/classdr_1_1mhp_1_1dv__segment-members.html new file mode 100644 index 0000000000..5ae7d7dc3a --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1dv__segment-members.html @@ -0,0 +1,96 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::mhp::dv_segment< DV > Member List
+
+
+ +

This is the complete list of members for dr::mhp::dv_segment< DV >, including all inherited members.

+ + + + + + + + + +
begin() const (defined in dr::mhp::dv_segment< DV >)dr::mhp::dv_segment< DV >inline
difference_type typedef (defined in dr::mhp::dv_segment< DV >)dr::mhp::dv_segment< DV >
dv_segment()=default (defined in dr::mhp::dv_segment< DV >)dr::mhp::dv_segment< DV >
dv_segment(DV *dv, std::size_t segment_index, std::size_t size) (defined in dr::mhp::dv_segment< DV >)dr::mhp::dv_segment< DV >inline
end() const (defined in dr::mhp::dv_segment< DV >)dr::mhp::dv_segment< DV >inline
is_local() const (defined in dr::mhp::dv_segment< DV >)dr::mhp::dv_segment< DV >inline
operator[](difference_type n) const (defined in dr::mhp::dv_segment< DV >)dr::mhp::dv_segment< DV >inline
size() const (defined in dr::mhp::dv_segment< DV >)dr::mhp::dv_segment< DV >inline
+ + + + diff --git a/doxygen/classdr_1_1mhp_1_1dv__segment.html b/doxygen/classdr_1_1mhp_1_1dv__segment.html new file mode 100644 index 0000000000..aa7029a37b --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1dv__segment.html @@ -0,0 +1,120 @@ + + + + + + + +Distributed Ranges: dr::mhp::dv_segment< DV > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::mhp::dv_segment< DV > Class Template Reference
+
+
+ + + + +

+Public Types

+using difference_type = std::ptrdiff_t
 
+ + + + + + + + + + + + + +

+Public Member Functions

dv_segment (DV *dv, std::size_t segment_index, std::size_t size)
 
+auto size () const
 
+auto begin () const
 
+auto end () const
 
+auto operator[] (difference_type n) const
 
+bool is_local () const
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/containers/segment.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1mhp_1_1dv__segment__iterator-members.html b/doxygen/classdr_1_1mhp_1_1dv__segment__iterator-members.html new file mode 100644 index 0000000000..e28341a44a --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1dv__segment__iterator-members.html @@ -0,0 +1,116 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::mhp::dv_segment_iterator< DV > Member List
+
+
+ +

This is the complete list of members for dr::mhp::dv_segment_iterator< DV >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
difference_type typedef (defined in dr::mhp::dv_segment_iterator< DV >)dr::mhp::dv_segment_iterator< DV >
dv_segment_iterator()=default (defined in dr::mhp::dv_segment_iterator< DV >)dr::mhp::dv_segment_iterator< DV >
dv_segment_iterator(DV *dv, std::size_t segment_index, std::size_t index) (defined in dr::mhp::dv_segment_iterator< DV >)dr::mhp::dv_segment_iterator< DV >inline
get(value_type *dst, std::size_t size) const (defined in dr::mhp::dv_segment_iterator< DV >)dr::mhp::dv_segment_iterator< DV >inline
get() const (defined in dr::mhp::dv_segment_iterator< DV >)dr::mhp::dv_segment_iterator< DV >inline
halo() const (defined in dr::mhp::dv_segment_iterator< DV >)dr::mhp::dv_segment_iterator< DV >inline
halo_bounds() const (defined in dr::mhp::dv_segment_iterator< DV >)dr::mhp::dv_segment_iterator< DV >inline
local() const (defined in dr::mhp::dv_segment_iterator< DV >)dr::mhp::dv_segment_iterator< DV >inline
operator*() const (defined in dr::mhp::dv_segment_iterator< DV >)dr::mhp::dv_segment_iterator< DV >inline
operator+(difference_type n) const (defined in dr::mhp::dv_segment_iterator< DV >)dr::mhp::dv_segment_iterator< DV >inline
operator+ (defined in dr::mhp::dv_segment_iterator< DV >)dr::mhp::dv_segment_iterator< DV >friend
operator++() (defined in dr::mhp::dv_segment_iterator< DV >)dr::mhp::dv_segment_iterator< DV >inline
operator++(int) (defined in dr::mhp::dv_segment_iterator< DV >)dr::mhp::dv_segment_iterator< DV >inline
operator+=(difference_type n) (defined in dr::mhp::dv_segment_iterator< DV >)dr::mhp::dv_segment_iterator< DV >inline
operator-(const dv_segment_iterator &other) const noexcept (defined in dr::mhp::dv_segment_iterator< DV >)dr::mhp::dv_segment_iterator< DV >inline
operator-(difference_type n) const (defined in dr::mhp::dv_segment_iterator< DV >)dr::mhp::dv_segment_iterator< DV >inline
operator--() (defined in dr::mhp::dv_segment_iterator< DV >)dr::mhp::dv_segment_iterator< DV >inline
operator--(int) (defined in dr::mhp::dv_segment_iterator< DV >)dr::mhp::dv_segment_iterator< DV >inline
operator-=(difference_type n) (defined in dr::mhp::dv_segment_iterator< DV >)dr::mhp::dv_segment_iterator< DV >inline
operator<=>(const dv_segment_iterator &other) const noexcept (defined in dr::mhp::dv_segment_iterator< DV >)dr::mhp::dv_segment_iterator< DV >inline
operator==(const dv_segment_iterator &other) const noexcept (defined in dr::mhp::dv_segment_iterator< DV >)dr::mhp::dv_segment_iterator< DV >inline
operator[](difference_type n) const (defined in dr::mhp::dv_segment_iterator< DV >)dr::mhp::dv_segment_iterator< DV >inline
put(const value_type *dst, std::size_t size) const (defined in dr::mhp::dv_segment_iterator< DV >)dr::mhp::dv_segment_iterator< DV >inline
put(const value_type &value) const (defined in dr::mhp::dv_segment_iterator< DV >)dr::mhp::dv_segment_iterator< DV >inline
rank() const (defined in dr::mhp::dv_segment_iterator< DV >)dr::mhp::dv_segment_iterator< DV >inline
segments() const (defined in dr::mhp::dv_segment_iterator< DV >)dr::mhp::dv_segment_iterator< DV >inline
size_type typedef (defined in dr::mhp::dv_segment_iterator< DV >)dr::mhp::dv_segment_iterator< DV >
value_type typedef (defined in dr::mhp::dv_segment_iterator< DV >)dr::mhp::dv_segment_iterator< DV >
+ + + + diff --git a/doxygen/classdr_1_1mhp_1_1dv__segment__iterator.html b/doxygen/classdr_1_1mhp_1_1dv__segment__iterator.html new file mode 100644 index 0000000000..9d25b7c800 --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1dv__segment__iterator.html @@ -0,0 +1,184 @@ + + + + + + + +Distributed Ranges: dr::mhp::dv_segment_iterator< DV > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::mhp::dv_segment_iterator< DV > Class Template Reference
+
+
+ + + + + + + + +

+Public Types

+using value_type = typename DV::value_type
 
+using size_type = typename DV::size_type
 
+using difference_type = typename DV::difference_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

dv_segment_iterator (DV *dv, std::size_t segment_index, std::size_t index)
 
+auto operator<=> (const dv_segment_iterator &other) const noexcept
 
+bool operator== (const dv_segment_iterator &other) const noexcept
 
+auto & operator+= (difference_type n)
 
+auto & operator-= (difference_type n)
 
+difference_type operator- (const dv_segment_iterator &other) const noexcept
 
+auto & operator++ ()
 
+auto & operator-- ()
 
+auto operator++ (int)
 
+auto operator-- (int)
 
+auto operator+ (difference_type n) const
 
+auto operator- (difference_type n) const
 
+auto operator* () const
 
+auto operator[] (difference_type n) const
 
+void get (value_type *dst, std::size_t size) const
 
+value_type get () const
 
+void put (const value_type *dst, std::size_t size) const
 
+void put (const value_type &value) const
 
+auto rank () const
 
+auto local () const
 
+auto segments () const
 
+auto & halo () const
 
+auto halo_bounds () const
 
+ + + +

+Friends

+auto operator+ (difference_type n, const dv_segment_iterator &other)
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/containers/segment.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1mhp_1_1dv__segment__reference-members.html b/doxygen/classdr_1_1mhp_1_1dv__segment__reference-members.html new file mode 100644 index 0000000000..2fcc6562c9 --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1dv__segment__reference-members.html @@ -0,0 +1,94 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::mhp::dv_segment_reference< DV > Member List
+
+
+ +

This is the complete list of members for dr::mhp::dv_segment_reference< DV >, including all inherited members.

+ + + + + + + +
dv_segment_reference(const iterator it) (defined in dr::mhp::dv_segment_reference< DV >)dr::mhp::dv_segment_reference< DV >inline
operator value_type() const (defined in dr::mhp::dv_segment_reference< DV >)dr::mhp::dv_segment_reference< DV >inline
operator&() const (defined in dr::mhp::dv_segment_reference< DV >)dr::mhp::dv_segment_reference< DV >inline
operator=(const value_type &value) const (defined in dr::mhp::dv_segment_reference< DV >)dr::mhp::dv_segment_reference< DV >inline
operator=(const dv_segment_reference &other) const (defined in dr::mhp::dv_segment_reference< DV >)dr::mhp::dv_segment_reference< DV >inline
value_type typedef (defined in dr::mhp::dv_segment_reference< DV >)dr::mhp::dv_segment_reference< DV >
+ + + + diff --git a/doxygen/classdr_1_1mhp_1_1dv__segment__reference.html b/doxygen/classdr_1_1mhp_1_1dv__segment__reference.html new file mode 100644 index 0000000000..dd9fab6379 --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1dv__segment__reference.html @@ -0,0 +1,117 @@ + + + + + + + +Distributed Ranges: dr::mhp::dv_segment_reference< DV > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::mhp::dv_segment_reference< DV > Class Template Reference
+
+
+ + + + +

+Public Types

+using value_type = typename DV::value_type
 
+ + + + + + + + + + + +

+Public Member Functions

dv_segment_reference (const iterator it)
 
operator value_type () const
 
+auto operator= (const value_type &value) const
 
+auto operator= (const dv_segment_reference &other) const
 
+auto operator& () const
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/containers/segment.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1mhp_1_1halo__impl-members.html b/doxygen/classdr_1_1mhp_1_1halo__impl-members.html new file mode 100644 index 0000000000..0d934e61ad --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1halo__impl-members.html @@ -0,0 +1,104 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::mhp::halo_impl< Group > Member List
+
+
+ +

This is the complete list of members for dr::mhp::halo_impl< Group >, including all inherited members.

+ + + + + + + + + + + + + + + + + +
exchange() (defined in dr::mhp::halo_impl< Group >)dr::mhp::halo_impl< Group >inline
exchange_begin()dr::mhp::halo_impl< Group >inline
exchange_finalize()dr::mhp::halo_impl< Group >inline
group_type typedef (defined in dr::mhp::halo_impl< Group >)dr::mhp::halo_impl< Group >
halo_impl(const halo_impl &)=delete (defined in dr::mhp::halo_impl< Group >)dr::mhp::halo_impl< Group >
halo_impl(communicator comm, const std::vector< Group > &owned_groups, const std::vector< Group > &halo_groups, const Memory &memory=Memory())dr::mhp::halo_impl< Group >inline
max (defined in dr::mhp::halo_impl< Group >)dr::mhp::halo_impl< Group >
min (defined in dr::mhp::halo_impl< Group >)dr::mhp::halo_impl< Group >
multiplies (defined in dr::mhp::halo_impl< Group >)dr::mhp::halo_impl< Group >
operator=(const halo_impl &)=delete (defined in dr::mhp::halo_impl< Group >)dr::mhp::halo_impl< Group >
plus (defined in dr::mhp::halo_impl< Group >)dr::mhp::halo_impl< Group >
reduce_begin()dr::mhp::halo_impl< Group >inline
reduce_finalize(const auto &op)dr::mhp::halo_impl< Group >inline
reduce_finalize()dr::mhp::halo_impl< Group >inline
second (defined in dr::mhp::halo_impl< Group >)dr::mhp::halo_impl< Group >
~halo_impl() (defined in dr::mhp::halo_impl< Group >)dr::mhp::halo_impl< Group >inline
+ + + + diff --git a/doxygen/classdr_1_1mhp_1_1halo__impl.html b/doxygen/classdr_1_1mhp_1_1halo__impl.html new file mode 100644 index 0000000000..92556d5455 --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1halo__impl.html @@ -0,0 +1,191 @@ + + + + + + + +Distributed Ranges: dr::mhp::halo_impl< Group > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::mhp::halo_impl< Group > Class Template Reference
+
+
+
+Inheritance diagram for dr::mhp::halo_impl< Group >:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for dr::mhp::halo_impl< Group >:
+
+
Collaboration graph
+ + + + + + + + +
[legend]
+ + + + + + + + + + + + +

+Classes

struct  max_op
 
struct  min_op
 
struct  multiplies_op
 
struct  plus_op
 
struct  second_op
 
+ + + +

+Public Types

+using group_type = Group
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

halo_impl (const halo_impl &)=delete
 
+halo_impl operator= (const halo_impl &)=delete
 
halo_impl (communicator comm, const std::vector< Group > &owned_groups, const std::vector< Group > &halo_groups, const Memory &memory=Memory())
 halo constructor
 
+void exchange_begin ()
 Begin a halo exchange.
 
+void exchange_finalize ()
 Complete a halo exchange.
 
+void exchange ()
 
+void reduce_begin ()
 Begin a halo reduction.
 
+void reduce_finalize (const auto &op)
 Complete a halo reduction.
 
+void reduce_finalize ()
 Complete a halo reduction.
 
+ + + + + + + + + + + +

+Public Attributes

+struct dr::mhp::halo_impl::second_op second
 
+struct dr::mhp::halo_impl::plus_op plus
 
+struct dr::mhp::halo_impl::max_op max
 
+struct dr::mhp::halo_impl::min_op min
 
+struct dr::mhp::halo_impl::multiplies_op multiplies
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/halo.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1mhp_1_1halo__impl__coll__graph.map b/doxygen/classdr_1_1mhp_1_1halo__impl__coll__graph.map new file mode 100644 index 0000000000..0e9e6d2aaa --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1halo__impl__coll__graph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/doxygen/classdr_1_1mhp_1_1halo__impl__coll__graph.md5 b/doxygen/classdr_1_1mhp_1_1halo__impl__coll__graph.md5 new file mode 100644 index 0000000000..8756720551 --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1halo__impl__coll__graph.md5 @@ -0,0 +1 @@ +9ed93f635f37525846c7ee6cec6e66a8 \ No newline at end of file diff --git a/doxygen/classdr_1_1mhp_1_1halo__impl__coll__graph.png b/doxygen/classdr_1_1mhp_1_1halo__impl__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..da78dfb2516bc76942f6ed5fec80615e7193770f GIT binary patch literal 24085 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 + + + + diff --git a/doxygen/classdr_1_1mhp_1_1halo__impl__inherit__graph.md5 b/doxygen/classdr_1_1mhp_1_1halo__impl__inherit__graph.md5 new file mode 100644 index 0000000000..e839dfd758 --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1halo__impl__inherit__graph.md5 @@ -0,0 +1 @@ +cb6c8e851fb63d39311a62e90b0771ea \ No newline at end of file diff --git a/doxygen/classdr_1_1mhp_1_1halo__impl__inherit__graph.png b/doxygen/classdr_1_1mhp_1_1halo__impl__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..569dc8848beaf4ad506d41958b3e63469e09ccde GIT binary patch literal 8021 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 H8X5FoYywZp literal 0 HcmV?d00001 diff --git a/doxygen/classdr_1_1mhp_1_1index__group-members.html b/doxygen/classdr_1_1mhp_1_1index__group-members.html new file mode 100644 index 0000000000..aa8d8f830b --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1index__group-members.html @@ -0,0 +1,104 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::mhp::index_group< T, Memory > Member List
+
+
+ +

This is the complete list of members for dr::mhp::index_group< T, Memory >, including all inherited members.

+ + + + + + + + + + + + + + + + + +
buffer (defined in dr::mhp::index_group< T, Memory >)dr::mhp::index_group< T, Memory >
buffer_size() (defined in dr::mhp::index_group< T, Memory >)dr::mhp::index_group< T, Memory >inline
buffered (defined in dr::mhp::index_group< T, Memory >)dr::mhp::index_group< T, Memory >
data_pointer() (defined in dr::mhp::index_group< T, Memory >)dr::mhp::index_group< T, Memory >inline
data_size() (defined in dr::mhp::index_group< T, Memory >)dr::mhp::index_group< T, Memory >inline
element_type typedef (defined in dr::mhp::index_group< T, Memory >)dr::mhp::index_group< T, Memory >
index_group(T *data, std::size_t rank, const std::vector< std::size_t > &indices, const Memory &memory)dr::mhp::index_group< T, Memory >inline
index_group(const index_group &o) (defined in dr::mhp::index_group< T, Memory >)dr::mhp::index_group< T, Memory >inline
memory_type typedef (defined in dr::mhp::index_group< T, Memory >)dr::mhp::index_group< T, Memory >
pack() (defined in dr::mhp::index_group< T, Memory >)dr::mhp::index_group< T, Memory >inline
rank() (defined in dr::mhp::index_group< T, Memory >)dr::mhp::index_group< T, Memory >inline
receive (defined in dr::mhp::index_group< T, Memory >)dr::mhp::index_group< T, Memory >
request_index (defined in dr::mhp::index_group< T, Memory >)dr::mhp::index_group< T, Memory >
tag() (defined in dr::mhp::index_group< T, Memory >)dr::mhp::index_group< T, Memory >inline
unpack(const auto &op) (defined in dr::mhp::index_group< T, Memory >)dr::mhp::index_group< T, Memory >inline
~index_group() (defined in dr::mhp::index_group< T, Memory >)dr::mhp::index_group< T, Memory >inline
+ + + + diff --git a/doxygen/classdr_1_1mhp_1_1index__group.html b/doxygen/classdr_1_1mhp_1_1index__group.html new file mode 100644 index 0000000000..f14ff84a7b --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1index__group.html @@ -0,0 +1,149 @@ + + + + + + + +Distributed Ranges: dr::mhp::index_group< T, Memory > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::mhp::index_group< T, Memory > Class Template Reference
+
+
+ + + + + + +

+Public Types

+using element_type = T
 
+using memory_type = Memory
 
+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

index_group (T *data, std::size_t rank, const std::vector< std::size_t > &indices, const Memory &memory)
 Constructor.
 
index_group (const index_group &o)
 
+void unpack (const auto &op)
 
+void pack ()
 
+std::size_t buffer_size ()
 
+T * data_pointer ()
 
+std::size_t data_size ()
 
+std::size_t rank ()
 
+auto tag ()
 
+ + + + + + + + + +

+Public Attributes

+T * buffer = nullptr
 
+std::size_t request_index
 
+bool receive
 
+bool buffered
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/halo.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1mhp_1_1segmented__view-members.html b/doxygen/classdr_1_1mhp_1_1segmented__view-members.html new file mode 100644 index 0000000000..73dbe9ae8b --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1segmented__view-members.html @@ -0,0 +1,92 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::mhp::segmented_view< R, SegTpl > Member List
+
+
+ +

This is the complete list of members for dr::mhp::segmented_view< R, SegTpl >, including all inherited members.

+ + + + + +
begin() const (defined in dr::mhp::segmented_view< R, SegTpl >)dr::mhp::segmented_view< R, SegTpl >inline
end() const (defined in dr::mhp::segmented_view< R, SegTpl >)dr::mhp::segmented_view< R, SegTpl >inline
segmented_view(V1 &&r, V2 &&tpl) (defined in dr::mhp::segmented_view< R, SegTpl >)dr::mhp::segmented_view< R, SegTpl >inline
size() const (defined in dr::mhp::segmented_view< R, SegTpl >)dr::mhp::segmented_view< R, SegTpl >inline
+ + + + diff --git a/doxygen/classdr_1_1mhp_1_1segmented__view.html b/doxygen/classdr_1_1mhp_1_1segmented__view.html new file mode 100644 index 0000000000..44df5f3a22 --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1segmented__view.html @@ -0,0 +1,126 @@ + + + + + + + +Distributed Ranges: dr::mhp::segmented_view< R, SegTpl > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::mhp::segmented_view< R, SegTpl > Class Template Reference
+
+
+
+Inheritance diagram for dr::mhp::segmented_view< R, SegTpl >:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for dr::mhp::segmented_view< R, SegTpl >:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + +

+Public Member Functions

+template<typename V1 , typename V2 >
 segmented_view (V1 &&r, V2 &&tpl)
 
+auto begin () const
 
+auto end () const
 
+auto size () const
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/views/segmented.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1mhp_1_1segmented__view__coll__graph.map b/doxygen/classdr_1_1mhp_1_1segmented__view__coll__graph.map new file mode 100644 index 0000000000..0965c1fd3d --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1segmented__view__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/classdr_1_1mhp_1_1segmented__view__coll__graph.md5 b/doxygen/classdr_1_1mhp_1_1segmented__view__coll__graph.md5 new file mode 100644 index 0000000000..84763a31dd --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1segmented__view__coll__graph.md5 @@ -0,0 +1 @@ +ed0bde1a185a8e9e803cbfe536ba7cee \ No newline at end of file diff --git a/doxygen/classdr_1_1mhp_1_1segmented__view__coll__graph.png b/doxygen/classdr_1_1mhp_1_1segmented__view__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..8a291597971522cff8e041bdd1ca24993fb1d672 GIT binary patch literal 7454 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 literal 0 HcmV?d00001 diff --git a/doxygen/classdr_1_1mhp_1_1segmented__view__inherit__graph.map b/doxygen/classdr_1_1mhp_1_1segmented__view__inherit__graph.map new file mode 100644 index 0000000000..0965c1fd3d --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1segmented__view__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/classdr_1_1mhp_1_1segmented__view__inherit__graph.md5 b/doxygen/classdr_1_1mhp_1_1segmented__view__inherit__graph.md5 new file mode 100644 index 0000000000..84763a31dd --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1segmented__view__inherit__graph.md5 @@ -0,0 +1 @@ +ed0bde1a185a8e9e803cbfe536ba7cee \ No newline at end of file diff --git a/doxygen/classdr_1_1mhp_1_1segmented__view__inherit__graph.png b/doxygen/classdr_1_1mhp_1_1segmented__view__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..8a291597971522cff8e041bdd1ca24993fb1d672 GIT binary patch literal 7454 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 literal 0 HcmV?d00001 diff --git a/doxygen/classdr_1_1mhp_1_1segmented__view__iterator-members.html b/doxygen/classdr_1_1mhp_1_1segmented__view__iterator-members.html new file mode 100644 index 0000000000..f26b425f21 --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1segmented__view__iterator-members.html @@ -0,0 +1,97 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::mhp::segmented_view_iterator< BaseIter, SegTplIter, SegTplSentinel > Member List
+
+
+ +

This is the complete list of members for dr::mhp::segmented_view_iterator< BaseIter, SegTplIter, SegTplSentinel >, including all inherited members.

+ + + + + + + + + + +
difference_type typedef (defined in dr::mhp::segmented_view_iterator< BaseIter, SegTplIter, SegTplSentinel >)dr::mhp::segmented_view_iterator< BaseIter, SegTplIter, SegTplSentinel >
iterator_category typedef (defined in dr::mhp::segmented_view_iterator< BaseIter, SegTplIter, SegTplSentinel >)dr::mhp::segmented_view_iterator< BaseIter, SegTplIter, SegTplSentinel >
operator*() const (defined in dr::mhp::segmented_view_iterator< BaseIter, SegTplIter, SegTplSentinel >)dr::mhp::segmented_view_iterator< BaseIter, SegTplIter, SegTplSentinel >inline
operator++() (defined in dr::mhp::segmented_view_iterator< BaseIter, SegTplIter, SegTplSentinel >)dr::mhp::segmented_view_iterator< BaseIter, SegTplIter, SegTplSentinel >inline
operator++(int) (defined in dr::mhp::segmented_view_iterator< BaseIter, SegTplIter, SegTplSentinel >)dr::mhp::segmented_view_iterator< BaseIter, SegTplIter, SegTplSentinel >inline
operator==(segmented_view_iterator other) const (defined in dr::mhp::segmented_view_iterator< BaseIter, SegTplIter, SegTplSentinel >)dr::mhp::segmented_view_iterator< BaseIter, SegTplIter, SegTplSentinel >inline
segmented_view_iterator() (defined in dr::mhp::segmented_view_iterator< BaseIter, SegTplIter, SegTplSentinel >)dr::mhp::segmented_view_iterator< BaseIter, SegTplIter, SegTplSentinel >inline
segmented_view_iterator(BaseIter base_begin, SegTplIter tpl_begin, SegTplSentinel tpl_end) (defined in dr::mhp::segmented_view_iterator< BaseIter, SegTplIter, SegTplSentinel >)dr::mhp::segmented_view_iterator< BaseIter, SegTplIter, SegTplSentinel >inline
value_type typedef (defined in dr::mhp::segmented_view_iterator< BaseIter, SegTplIter, SegTplSentinel >)dr::mhp::segmented_view_iterator< BaseIter, SegTplIter, SegTplSentinel >
+ + + + diff --git a/doxygen/classdr_1_1mhp_1_1segmented__view__iterator.html b/doxygen/classdr_1_1mhp_1_1segmented__view__iterator.html new file mode 100644 index 0000000000..caced5e9c2 --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1segmented__view__iterator.html @@ -0,0 +1,123 @@ + + + + + + + +Distributed Ranges: dr::mhp::segmented_view_iterator< BaseIter, SegTplIter, SegTplSentinel > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::mhp::segmented_view_iterator< BaseIter, SegTplIter, SegTplSentinel > Class Template Reference
+
+
+ + + + + + + + +

+Public Types

+using iterator_category = std::forward_iterator_tag
 
+using difference_type = rng::iter_difference_t< SegTplIter >
 
+using value_type = dr::remote_subrange< BaseIter >
 
+ + + + + + + + + + + +

+Public Member Functions

segmented_view_iterator (BaseIter base_begin, SegTplIter tpl_begin, SegTplSentinel tpl_end)
 
+auto operator== (segmented_view_iterator other) const
 
+auto & operator++ ()
 
+auto operator++ (int)
 
+auto operator* () const
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/views/segmented.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1mhp_1_1span__group-members.html b/doxygen/classdr_1_1mhp_1_1span__group-members.html new file mode 100644 index 0000000000..a7747e2b3f --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1span__group-members.html @@ -0,0 +1,102 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::mhp::span_group< T, Memory > Member List
+
+ + + + + diff --git a/doxygen/classdr_1_1mhp_1_1span__group.html b/doxygen/classdr_1_1mhp_1_1span__group.html new file mode 100644 index 0000000000..28ba5a4b2e --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1span__group.html @@ -0,0 +1,145 @@ + + + + + + + +Distributed Ranges: dr::mhp::span_group< T, Memory > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::mhp::span_group< T, Memory > Class Template Reference
+
+
+ + + + + + +

+Public Types

+using element_type = T
 
+using memory_type = Memory
 
+ + + + + + + + + + + + + + + + + +

+Public Member Functions

span_group (std::span< T > data, std::size_t rank, communicator::tag tag)
 
+void unpack ()
 
+void pack ()
 
+std::size_t buffer_size ()
 
+std::size_t data_size ()
 
+T * data_pointer ()
 
+std::size_t rank ()
 
+auto tag ()
 
+ + + + + + + + + +

+Public Attributes

+T * buffer = nullptr
 
+std::size_t request_index = 0
 
+bool receive = false
 
+bool buffered = false
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/halo.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1mhp_1_1span__halo-members.html b/doxygen/classdr_1_1mhp_1_1span__halo-members.html new file mode 100644 index 0000000000..1bc925e850 --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1span__halo-members.html @@ -0,0 +1,107 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::mhp::span_halo< T, Memory > Member List
+
+
+ +

This is the complete list of members for dr::mhp::span_halo< T, Memory >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + +
exchange() (defined in dr::mhp::halo_impl< Group >)dr::mhp::halo_impl< Group >inline
exchange_begin()dr::mhp::halo_impl< Group >inline
exchange_finalize()dr::mhp::halo_impl< Group >inline
group_type typedef (defined in dr::mhp::span_halo< T, Memory >)dr::mhp::span_halo< T, Memory >
halo_impl(const halo_impl &)=delete (defined in dr::mhp::halo_impl< Group >)dr::mhp::halo_impl< Group >
halo_impl(communicator comm, const std::vector< Group > &owned_groups, const std::vector< Group > &halo_groups, const Memory &memory=Memory())dr::mhp::halo_impl< Group >inline
max (defined in dr::mhp::halo_impl< Group >)dr::mhp::halo_impl< Group >
min (defined in dr::mhp::halo_impl< Group >)dr::mhp::halo_impl< Group >
multiplies (defined in dr::mhp::halo_impl< Group >)dr::mhp::halo_impl< Group >
operator=(const halo_impl &)=delete (defined in dr::mhp::halo_impl< Group >)dr::mhp::halo_impl< Group >
plus (defined in dr::mhp::halo_impl< Group >)dr::mhp::halo_impl< Group >
reduce_begin()dr::mhp::halo_impl< Group >inline
reduce_finalize(const auto &op)dr::mhp::halo_impl< Group >inline
reduce_finalize()dr::mhp::halo_impl< Group >inline
second (defined in dr::mhp::halo_impl< Group >)dr::mhp::halo_impl< Group >
span_halo() (defined in dr::mhp::span_halo< T, Memory >)dr::mhp::span_halo< T, Memory >inline
span_halo(communicator comm, T *data, std::size_t size, halo_bounds hb) (defined in dr::mhp::span_halo< T, Memory >)dr::mhp::span_halo< T, Memory >inline
span_halo(communicator comm, std::span< T > span, halo_bounds hb) (defined in dr::mhp::span_halo< T, Memory >)dr::mhp::span_halo< T, Memory >inline
~halo_impl() (defined in dr::mhp::halo_impl< Group >)dr::mhp::halo_impl< Group >inline
+ + + + diff --git a/doxygen/classdr_1_1mhp_1_1span__halo.html b/doxygen/classdr_1_1mhp_1_1span__halo.html new file mode 100644 index 0000000000..f11dffdcb9 --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1span__halo.html @@ -0,0 +1,188 @@ + + + + + + + +Distributed Ranges: dr::mhp::span_halo< T, Memory > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::mhp::span_halo< T, Memory > Class Template Reference
+
+
+
+Inheritance diagram for dr::mhp::span_halo< T, Memory >:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for dr::mhp::span_halo< T, Memory >:
+
+
Collaboration graph
+ + + + + + + + + +
[legend]
+ + + + + + + +

+Public Types

+using group_type = span_group< T, Memory >
 
- Public Types inherited from dr::mhp::halo_impl< Group >
+using group_type = Group
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

span_halo (communicator comm, T *data, std::size_t size, halo_bounds hb)
 
span_halo (communicator comm, std::span< T > span, halo_bounds hb)
 
- Public Member Functions inherited from dr::mhp::halo_impl< Group >
halo_impl (const halo_impl &)=delete
 
+halo_impl operator= (const halo_impl &)=delete
 
halo_impl (communicator comm, const std::vector< Group > &owned_groups, const std::vector< Group > &halo_groups, const Memory &memory=Memory())
 halo constructor
 
+void exchange_begin ()
 Begin a halo exchange.
 
+void exchange_finalize ()
 Complete a halo exchange.
 
+void exchange ()
 
+void reduce_begin ()
 Begin a halo reduction.
 
+void reduce_finalize (const auto &op)
 Complete a halo reduction.
 
+void reduce_finalize ()
 Complete a halo reduction.
 
+ + + + + + + + + + + + +

+Additional Inherited Members

- Public Attributes inherited from dr::mhp::halo_impl< Group >
+struct dr::mhp::halo_impl::second_op second
 
+struct dr::mhp::halo_impl::plus_op plus
 
+struct dr::mhp::halo_impl::max_op max
 
+struct dr::mhp::halo_impl::min_op min
 
+struct dr::mhp::halo_impl::multiplies_op multiplies
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/halo.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1mhp_1_1span__halo__coll__graph.map b/doxygen/classdr_1_1mhp_1_1span__halo__coll__graph.map new file mode 100644 index 0000000000..bfbfdd225e --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1span__halo__coll__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/doxygen/classdr_1_1mhp_1_1span__halo__coll__graph.md5 b/doxygen/classdr_1_1mhp_1_1span__halo__coll__graph.md5 new file mode 100644 index 0000000000..a74512e77c --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1span__halo__coll__graph.md5 @@ -0,0 +1 @@ +339ecb454338c41f4a3de2ddb84e0614 \ No newline at end of file diff --git a/doxygen/classdr_1_1mhp_1_1span__halo__coll__graph.png b/doxygen/classdr_1_1mhp_1_1span__halo__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..5e688449e94fa1805dcd00601577e0d96bf3dd3c GIT binary patch literal 28935 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 literal 0 HcmV?d00001 diff --git a/doxygen/classdr_1_1mhp_1_1span__halo__inherit__graph.map b/doxygen/classdr_1_1mhp_1_1span__halo__inherit__graph.map new file mode 100644 index 0000000000..22c5e7ddee --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1span__halo__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/classdr_1_1mhp_1_1span__halo__inherit__graph.md5 b/doxygen/classdr_1_1mhp_1_1span__halo__inherit__graph.md5 new file mode 100644 index 0000000000..2f498c4695 --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1span__halo__inherit__graph.md5 @@ -0,0 +1 @@ +2a023e9ee5a34bf8f15a767bc7629cba \ No newline at end of file diff --git a/doxygen/classdr_1_1mhp_1_1span__halo__inherit__graph.png b/doxygen/classdr_1_1mhp_1_1span__halo__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..944c9c9b083d09e19c0a46213efdbee45704ae13 GIT binary patch literal 6042 zcmc&&gHCrd*wkOEgm$pgD|IP%rotZNv#y5!}7abKhs96Nw7$F0LeI zAaq>aJ5N~f7rl=fWSH42S?At-G`sh1`h35!aO(vM5~i4|i=-h5Q(O@0YY9F(^S#Du z)x?pQt7||W|E+|SjO^bXQD_l6%FD1x}(;lEaqs48e^@vO+)3wtaZmwX^h1ZDwv@fHH!T*$|^zY+brs z!WZj6ZF^%Mzqpa?bc0Hzo`#mzPLi;Gb#pU3Az`TEKvGh2_3z(@ma4@Oi0k6v#=Knt z7kkVdU0s;1*~XA{a&mG7DB2v2MjO{UGd0M}5Vqsytw2WwoFql15N!Yiq0DzmLzVoOjuuC55#eV%t9U z)yxnjhoj7rq-q;HwkW2J#wPIX?CsmqMI0-ulgG_SBwjf9j`!^j9;?|&}owbl4>a=V_)&vR+r?hOH({C0RF}wR~`iUtis*aA1 zk;c3!X&GPrA{eH}$KP5#eOfhr?b@~9)#GNjK_%bU)T9s)5+;nB`Dm4&-xWxC`xgG( z&Fzld*)~2kN!T5J{ z(p7kQdDS00fYrM$N1L3MXIE4RR675Xte$=$K)jB&bNfufVXYVEr;~p{Bew~Vt>JK1y?J?g-JswsLuyk^ zjN+=Anq=4HF_xB5y2zxoCEaHV1o^T|uCA_aQ8zfZ-!`8SzWCFp;Oi^xJo}YvsB3c4 zYtY@#PX;o-zc!L8<0Go6so5exHtV&*R8!8(z`$_0b)oXa$mp%fvBn0^z{L6J&z}ll z)8gXd9Meilc%F#CO3TV7n?Z#I(QO2D3=H>^$TJH+`$@cR^!bOmyf{aqP!S;^__N*{ zd^9(2-ji8gV!QX~MyW9tufDz>$;H*0rxH`~Y(Y`l=PCx5Ig~(>dM@B-$rKE1NvlIUO`P07J_>{gH%5VB5^zU?Seq|+$EdlE1=eN4Po@hMi zx6=tnB9Vc*$d1Bn|LBtw?^2WcM5m`VHbmeYFu4mYLHPMv8vHa&)030*q;UR@u2&2@ zt3$UzMHc?n&Z$0oCh$QsEiWZAXyIQ0uT5WS5U4<2P0h{8$;qOU5+&{a?jLPFhd6Y6 zsAZO(IVThfm4EbzJ~$*~XmBv_t(o`rLhY>JsHp4H9D;(>Qtr5x9~oi`>+8`j&F44A z#>OgYYPvYHeS^EZ)j!wPS{~viq2%P9pkWJQix?T1m}n7FoSei@Y8-(ea!>8Zwwk_>cSbc}_KB}}b@ERQ*wOD8i%a6{jMt%`U2?K*5;f_lkUVKjPH1&3K zbMyU&52_<}$c|^EmfoGILTvsQ$4|8ibMAKGXqVR4?FGn$fAffnrc~AI(x@$~1@G>< zCU?Aaa~n<1J{e7pDL!N$*XvD~2Y?9RhmViXwHh9!92pfA^zkDXs7h`UV^Pc-A;!n` z97p5L7h%K04@Sqw+xz-7N7i(^B*5XTj`{TI(>+3gr~QnKGTsK(JKq?7{rc5j?n4(I zR9<;UMb>khrLwXT^!|ef4<=mgYMutk z2Y&r3?cUJTgdl65ubuN}NHSMeCh$MoQS0dJ3_{Z#9Up(s98oVF82%$MoLY&SnVp@T zz*-XH;p3z2?W0>-P(-4(knA`0T;DJ5Kg zN6x&s6?O1vOj-@5pOQ7*+Z&_#PCCt`(K~tn@DP@(s}2Z+i%VuY12dj4h%m2F5#SluR z_@$vCs-S>f!sn3pi5#rAn(gMspFcL0m`)PBK->gYsa&==vOtLEKz@B=1MTR@i$=RY ze~!M~^iY_ZoW#a(Gchqqd+jP0m*`PXR~74aobYZ*(?)T9%9@^?HDlW%XAqt5OB1$r za_U?gDa^pxwG*4+ndV0ErogJ4^pa1k;n()&K&mBx^YU+H|fNcBsH=L8As;a86 z+0zdnI6ew`N&mdy5J>duSyYkoxFq&NN{O|r%RZfKZ^v(HY7+O}M*?z=n3ynLU0cH* zoTqH?J*k;L{5vh~j-z8^W6LQlj3_EX0!mef>fDmMJQJp1mW>5H+|toO;PQ2csHeA= z_!n{Rrtz@u31@3(C*h~26K+wbsZdZq&@|}j8Yjob#zq;lfb*9?Vl2)!`gk7V=UuBxpSi(`}sp7TE?7ZDNhygdI`@JGVBhvsa5M2EY<1AS*NsnZrW z!yxL|as@^XXidGRrqFpD9NQ z1!7nF51l)jx7S@>k7C7Mi<)gU6yb8l-&Y;BP(Dh@6TGvpPVQ6ymqc!)QMPmbcs4(T zV$u>^jTTh#>j+TGqYGYQIm$+bq>YPYQ5xks;E}gQVu{G0p2mm_9S(a*=5j@q9M-XA z7-@J!0ZVhQ{EEbTsS6}`NVL2@RVmx==E8geG9{|Ag;;S?+MsX?&q&o~DBX4k8Qvla z_Jq8!Q=V`Z@;3ZIvbcjLSAN>nLc0(ig5JK$P1J zHmF&&vyOGac@zt1zCg6g7KTpz+X@UN@}a{E992J45h5ng7D|swor}LoBch;^qumh+ zfrJOy*1;i60+B?lqvHh}t1?~dp+T=BpWC+l?F+C7WFYYDNTFickply# ziUJy)3ln}o`IrxnM1@J0T34Ks_FC9p(V1iro12^4JfORxqN2e1dI>;!?Cbja`hqY1 zXwEbTFaz+2jEhrsaNq$lKOrTB2-5xINAiTWmR2X2c|B9pS6{wJ8XFt40GpAVoZQ{p ztK{J!_NPB92B4e(S$o{U(T*i`0Q&6}jBqa12)C|<~ zV?AKiMZj6=+S=f$WY*W$bssAvC>5iGD}lM+0j;RZEUz%-%RG@nr5`_jfNHi}Sw4Gv5(fu|(C}~y zdpHdZ0UQqB_G~U}@;!DvWN=?fruTYC1Y-t}fVriW*rK76__wA4Wz_j&+f(+6G!Xe0pvf!D|zQOfOy zLn9;j5b1!6Ounkh%0yciYisuL0zV!e9>A>gxXG$j94-_nsGBG=vLJaDBOG(U88w{W zL|$M2hPSsjBv9sIqS${5eEzw*8f<^-@NgpEMt~e}q-Yx(4kOuhc?V?+XXm(g?-0;1 z#lu&&&d!KY?RQFFByH{N=s*8mUS>Bk*U{1O^!5&>3QkOff#$d^Bf|vN`M^@nYnK2- z2&%wfe$dILz{kfoY4W8nC@APjOQHeZqpb}OgQWw;90xbLJhgLnF5mT~RdCRb026V= zu0RpUBWbSqa-~1(%_K@p49>;H)$Uvp&0|zP4@e)R4_%!x@S)jR3KtibG>P-wUX*yi zg*1>dgX81GSYxsTbppl6zKQd{v9Yl^Kq3)SB3Mu;o#hvVIolJ4hKA2xyl4koFgP?6 z1k`1wv=>a+rf;w~ACjY@h6hpC)a<}oetVsm*mfalU}{>n_Bp&`ZjO0nAX^O#E@+qv zyAh7G7z_mbj*^oT-^Inh=KRJ+rZ*f~iWp2@$6DIwiQL>=ao;0>cQQUiK0ZEu=^~^L zA3o&Hcq*5Yl0p)nm6{p}EZ~)T1{MQ>KtL%ejl9aE^D1A&06!EVO!h_?Q8xPV<45B! zZd|^8e%}mm*q(s0(WhW~AG*o~jb&2kA=4F0v?Gwk`PJ35AU$EO1culv^3|({E{cx{ zXj`EZ^)FUZW1Q^lqDo77lRFR_gCndYEC0>e{aF-I%4}o!!ZaXVNlQx;TC%dTng{X? zbbJ@k#uK~Y;Y7IEMh0L{y1Tn|@AcFC6xvjlhqnG|@X#|b2<6iMU@=)~4LblW1zYKQ z^ym@LGHp}U4z!5-EL1r;Ir54?vJirFMak?hA|_MT?-uZ?{{H^Y+}+3AB)QQuk@E}f z5lC)sMGcMXK!=)nEz>5;ZCd~7OGEPWtG;|G0t_K&^$_5$&UWGhI>hFDZx7XgxxLy3 zFE5ENU%t!(YYDvM*b`w`Z!K@huKY$l5Vb(0VI9W#MLz-2ikqq?y%OlM+5TpJ2M>XL zXA>5_5gs1CeQ*$#oju1AFk)<@88Z*0E|QP$%8Cw+jS(?3GnYQ8r6?~ix8I=?B*PB~ z2=E0m5|ma2V4sPpX~f-QCV)oZiN1gTE+8n_+I)HLVr654`4-3ISRVbjX&KAiY%2p? zn&d$!}mzF}V z-{3&{j29;hHVRz)$#8iFA{@;uN!oz(4RdN*T0$`~vFdajNV4?I%;E}lvKM=jc|x2C z@cccrQj(KdB_(fx78kgCSJ~K@E~1sjBI{oB?6!|L>?p% z<)#fp;Q7+_e(!jC0{Ke~heyQAUC`a&&};z)`1#s!f!?OV58)5-1fZqCeu6D)14$5A zC%(D4d0kyykrot?ORAtHQ5>_}6=ZmNdd`Eu2j+BQn!D9}d69EbR#sL~Rb^>;aJzSx z@6$uCc|9%x0V)7Yf`*^WUV+|K0%_U1ckhH&xNgSm020fqtD{?9UIrH_85q!jp1580 zsYdvNO3TU~_J3l4P}3Vgo?cxCyoYgxMQcTbmoM1cD4A4j~iW)ujrc znGu9F-F3jm7*ZZg?v=-#~`o ie{<~rj + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::mhp::subrange< DM > Member List
+
+
+ +

This is the complete list of members for dr::mhp::subrange< DM >, including all inherited members.

+ + + + + + + + + +
begin() const (defined in dr::mhp::subrange< DM >)dr::mhp::subrange< DM >inline
end() const (defined in dr::mhp::subrange< DM >)dr::mhp::subrange< DM >inline
halo() const (defined in dr::mhp::subrange< DM >)dr::mhp::subrange< DM >inline
iterator typedef (defined in dr::mhp::subrange< DM >)dr::mhp::subrange< DM >
segments() const (defined in dr::mhp::subrange< DM >)dr::mhp::subrange< DM >inline
size() (defined in dr::mhp::subrange< DM >)dr::mhp::subrange< DM >inline
subrange(DM &dm, std::pair< std::size_t, std::size_t > row_rng, std::pair< std::size_t, std::size_t > col_rng) (defined in dr::mhp::subrange< DM >)dr::mhp::subrange< DM >inline
value_type typedef (defined in dr::mhp::subrange< DM >)dr::mhp::subrange< DM >
+ + + + diff --git a/doxygen/classdr_1_1mhp_1_1subrange.html b/doxygen/classdr_1_1mhp_1_1subrange.html new file mode 100644 index 0000000000..a65a6137c4 --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1subrange.html @@ -0,0 +1,141 @@ + + + + + + + +Distributed Ranges: dr::mhp::subrange< DM > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::mhp::subrange< DM > Class Template Reference
+
+
+
+Inheritance diagram for dr::mhp::subrange< DM >:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for dr::mhp::subrange< DM >:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + +

+Public Types

+using iterator = subrange_iterator< DM >
 
+using value_type = typename DM::value_type
 
+ + + + + + + + + + + + + +

+Public Member Functions

subrange (DM &dm, std::pair< std::size_t, std::size_t > row_rng, std::pair< std::size_t, std::size_t > col_rng)
 
+iterator begin () const
 
+iterator end () const
 
+auto size ()
 
+auto & halo () const
 
+auto segments () const
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/containers/subrange.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1mhp_1_1subrange__coll__graph.map b/doxygen/classdr_1_1mhp_1_1subrange__coll__graph.map new file mode 100644 index 0000000000..9164e2c7b9 --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1subrange__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/classdr_1_1mhp_1_1subrange__coll__graph.md5 b/doxygen/classdr_1_1mhp_1_1subrange__coll__graph.md5 new file mode 100644 index 0000000000..5c43e2a162 --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1subrange__coll__graph.md5 @@ -0,0 +1 @@ +7366427c13ead459fa26760df3880a86 \ No newline at end of file diff --git a/doxygen/classdr_1_1mhp_1_1subrange__coll__graph.png b/doxygen/classdr_1_1mhp_1_1subrange__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..edc90f5c695360f7d14e808fe0c370830f3f8a8c GIT binary patch literal 6200 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 + + + diff --git a/doxygen/classdr_1_1mhp_1_1subrange__inherit__graph.md5 b/doxygen/classdr_1_1mhp_1_1subrange__inherit__graph.md5 new file mode 100644 index 0000000000..5c43e2a162 --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1subrange__inherit__graph.md5 @@ -0,0 +1 @@ +7366427c13ead459fa26760df3880a86 \ No newline at end of file diff --git a/doxygen/classdr_1_1mhp_1_1subrange__inherit__graph.png b/doxygen/classdr_1_1mhp_1_1subrange__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..edc90f5c695360f7d14e808fe0c370830f3f8a8c GIT binary patch literal 6200 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 + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::mhp::subrange_iterator< DM > Member List
+
+
+ +

This is the complete list of members for dr::mhp::subrange_iterator< DM >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
difference_type typedef (defined in dr::mhp::subrange_iterator< DM >)dr::mhp::subrange_iterator< DM >
find_dm_offset() const (defined in dr::mhp::subrange_iterator< DM >)dr::mhp::subrange_iterator< DM >inline
halo() (defined in dr::mhp::subrange_iterator< DM >)dr::mhp::subrange_iterator< DM >inline
is_local() (defined in dr::mhp::subrange_iterator< DM >)dr::mhp::subrange_iterator< DM >inline
operator!= (defined in dr::mhp::subrange_iterator< DM >)dr::mhp::subrange_iterator< DM >friend
operator!= (defined in dr::mhp::subrange_iterator< DM >)dr::mhp::subrange_iterator< DM >friend
operator*() const (defined in dr::mhp::subrange_iterator< DM >)dr::mhp::subrange_iterator< DM >inline
operator+(difference_type n) const (defined in dr::mhp::subrange_iterator< DM >)dr::mhp::subrange_iterator< DM >inline
operator+ (defined in dr::mhp::subrange_iterator< DM >)dr::mhp::subrange_iterator< DM >friend
operator++() (defined in dr::mhp::subrange_iterator< DM >)dr::mhp::subrange_iterator< DM >inline
operator++(int) (defined in dr::mhp::subrange_iterator< DM >)dr::mhp::subrange_iterator< DM >inline
operator+=(difference_type n) (defined in dr::mhp::subrange_iterator< DM >)dr::mhp::subrange_iterator< DM >inline
operator-(const subrange_iterator &other) const noexcept (defined in dr::mhp::subrange_iterator< DM >)dr::mhp::subrange_iterator< DM >inline
operator-(difference_type n) const (defined in dr::mhp::subrange_iterator< DM >)dr::mhp::subrange_iterator< DM >inline
operator--() (defined in dr::mhp::subrange_iterator< DM >)dr::mhp::subrange_iterator< DM >inline
operator--(int) (defined in dr::mhp::subrange_iterator< DM >)dr::mhp::subrange_iterator< DM >inline
operator-=(difference_type n) (defined in dr::mhp::subrange_iterator< DM >)dr::mhp::subrange_iterator< DM >inline
operator<=>(const subrange_iterator &other) const noexcept (defined in dr::mhp::subrange_iterator< DM >)dr::mhp::subrange_iterator< DM >inline
operator== (defined in dr::mhp::subrange_iterator< DM >)dr::mhp::subrange_iterator< DM >friend
operator== (defined in dr::mhp::subrange_iterator< DM >)dr::mhp::subrange_iterator< DM >friend
operator[](int n) (defined in dr::mhp::subrange_iterator< DM >)dr::mhp::subrange_iterator< DM >inline
operator[](std::pair< int, int > p) (defined in dr::mhp::subrange_iterator< DM >)dr::mhp::subrange_iterator< DM >inline
segments() (defined in dr::mhp::subrange_iterator< DM >)dr::mhp::subrange_iterator< DM >inline
subrange_iterator() (defined in dr::mhp::subrange_iterator< DM >)dr::mhp::subrange_iterator< DM >inline
subrange_iterator(DM *dm, std::pair< std::size_t, std::size_t > row_rng, std::pair< std::size_t, std::size_t > col_rng, difference_type index=0) noexcept (defined in dr::mhp::subrange_iterator< DM >)dr::mhp::subrange_iterator< DM >inline
value_type typedef (defined in dr::mhp::subrange_iterator< DM >)dr::mhp::subrange_iterator< DM >
+ + + + diff --git a/doxygen/classdr_1_1mhp_1_1subrange__iterator.html b/doxygen/classdr_1_1mhp_1_1subrange__iterator.html new file mode 100644 index 0000000000..7df5b0e250 --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1subrange__iterator.html @@ -0,0 +1,178 @@ + + + + + + + +Distributed Ranges: dr::mhp::subrange_iterator< DM > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::mhp::subrange_iterator< DM > Class Template Reference
+
+
+ + + + + + +

+Public Types

+using value_type = typename DM::value_type
 
+using difference_type = typename DM::difference_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

subrange_iterator (DM *dm, std::pair< std::size_t, std::size_t > row_rng, std::pair< std::size_t, std::size_t > col_rng, difference_type index=0) noexcept
 
+value_type & operator* () const
 
+dm_row< value_type > operator[] (int n)
 
+value_type & operator[] (std::pair< int, int > p)
 
+auto operator<=> (const subrange_iterator &other) const noexcept
 
+auto & operator-= (difference_type n)
 
+auto & operator+= (difference_type n)
 
+difference_type operator- (const subrange_iterator &other) const noexcept
 
+auto & operator++ ()
 
+auto & operator-- ()
 
+auto operator++ (int)
 
+auto operator-- (int)
 
+auto operator+ (difference_type n) const
 
+auto operator- (difference_type n) const
 
+auto & halo ()
 
+auto segments ()
 
+bool is_local ()
 
+std::size_t find_dm_offset () const
 
+ + + + + + + + + + + +

+Friends

+bool operator== (subrange_iterator &first, subrange_iterator &second)
 
+bool operator!= (subrange_iterator &first, subrange_iterator &second)
 
+bool operator== (subrange_iterator first, subrange_iterator second)
 
+bool operator!= (subrange_iterator first, subrange_iterator second)
 
+auto operator+ (difference_type n, const subrange_iterator &other)
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/containers/subrange.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1mhp_1_1unstructured__halo-members.html b/doxygen/classdr_1_1mhp_1_1unstructured__halo-members.html new file mode 100644 index 0000000000..da8413b922 --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1unstructured__halo-members.html @@ -0,0 +1,106 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::mhp::unstructured_halo< T, Memory > Member List
+
+
+ +

This is the complete list of members for dr::mhp::unstructured_halo< T, Memory >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
exchange() (defined in dr::mhp::halo_impl< Group >)dr::mhp::halo_impl< Group >inline
exchange_begin()dr::mhp::halo_impl< Group >inline
exchange_finalize()dr::mhp::halo_impl< Group >inline
group_type typedef (defined in dr::mhp::unstructured_halo< T, Memory >)dr::mhp::unstructured_halo< T, Memory >
halo_impl(const halo_impl &)=delete (defined in dr::mhp::halo_impl< Group >)dr::mhp::halo_impl< Group >
halo_impl(communicator comm, const std::vector< Group > &owned_groups, const std::vector< Group > &halo_groups, const Memory &memory=Memory())dr::mhp::halo_impl< Group >inline
index_map typedef (defined in dr::mhp::unstructured_halo< T, Memory >)dr::mhp::unstructured_halo< T, Memory >
max (defined in dr::mhp::halo_impl< Group >)dr::mhp::halo_impl< Group >
min (defined in dr::mhp::halo_impl< Group >)dr::mhp::halo_impl< Group >
multiplies (defined in dr::mhp::halo_impl< Group >)dr::mhp::halo_impl< Group >
operator=(const halo_impl &)=delete (defined in dr::mhp::halo_impl< Group >)dr::mhp::halo_impl< Group >
plus (defined in dr::mhp::halo_impl< Group >)dr::mhp::halo_impl< Group >
reduce_begin()dr::mhp::halo_impl< Group >inline
reduce_finalize(const auto &op)dr::mhp::halo_impl< Group >inline
reduce_finalize()dr::mhp::halo_impl< Group >inline
second (defined in dr::mhp::halo_impl< Group >)dr::mhp::halo_impl< Group >
unstructured_halo(communicator comm, T *data, const std::vector< index_map > &owned, const std::vector< index_map > &halo, const Memory &memory=Memory())dr::mhp::unstructured_halo< T, Memory >inline
~halo_impl() (defined in dr::mhp::halo_impl< Group >)dr::mhp::halo_impl< Group >inline
+ + + + diff --git a/doxygen/classdr_1_1mhp_1_1unstructured__halo.html b/doxygen/classdr_1_1mhp_1_1unstructured__halo.html new file mode 100644 index 0000000000..dbcb572b3e --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1unstructured__halo.html @@ -0,0 +1,245 @@ + + + + + + + +Distributed Ranges: dr::mhp::unstructured_halo< T, Memory > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::mhp::unstructured_halo< T, Memory > Class Template Reference
+
+
+
+Inheritance diagram for dr::mhp::unstructured_halo< T, Memory >:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for dr::mhp::unstructured_halo< T, Memory >:
+
+
Collaboration graph
+ + + + + + + + + +
[legend]
+ + + + + + + + + +

+Public Types

+using group_type = index_group< T, Memory >
 
+using index_map = std::pair< std::size_t, std::vector< std::size_t > >
 
- Public Types inherited from dr::mhp::halo_impl< Group >
+using group_type = Group
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 unstructured_halo (communicator comm, T *data, const std::vector< index_map > &owned, const std::vector< index_map > &halo, const Memory &memory=Memory())
 
- Public Member Functions inherited from dr::mhp::halo_impl< Group >
halo_impl (const halo_impl &)=delete
 
+halo_impl operator= (const halo_impl &)=delete
 
halo_impl (communicator comm, const std::vector< Group > &owned_groups, const std::vector< Group > &halo_groups, const Memory &memory=Memory())
 halo constructor
 
+void exchange_begin ()
 Begin a halo exchange.
 
+void exchange_finalize ()
 Complete a halo exchange.
 
+void exchange ()
 
+void reduce_begin ()
 Begin a halo reduction.
 
+void reduce_finalize (const auto &op)
 Complete a halo reduction.
 
+void reduce_finalize ()
 Complete a halo reduction.
 
+ + + + + + + + + + + + +

+Additional Inherited Members

- Public Attributes inherited from dr::mhp::halo_impl< Group >
+struct dr::mhp::halo_impl::second_op second
 
+struct dr::mhp::halo_impl::plus_op plus
 
+struct dr::mhp::halo_impl::max_op max
 
+struct dr::mhp::halo_impl::min_op min
 
+struct dr::mhp::halo_impl::multiplies_op multiplies
 
+

Constructor & Destructor Documentation

+ +

◆ unstructured_halo()

+ +
+
+
+template<typename T , typename Memory = default_memory<T>>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
dr::mhp::unstructured_halo< T, Memory >::unstructured_halo (communicator comm,
T * data,
const std::vector< index_map > & owned,
const std::vector< index_map > & halo,
const Memory & memory = Memory() 
)
+
+inline
+
+

Constructor

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/halo.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1mhp_1_1unstructured__halo__coll__graph.map b/doxygen/classdr_1_1mhp_1_1unstructured__halo__coll__graph.map new file mode 100644 index 0000000000..8282ea08dd --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1unstructured__halo__coll__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/doxygen/classdr_1_1mhp_1_1unstructured__halo__coll__graph.md5 b/doxygen/classdr_1_1mhp_1_1unstructured__halo__coll__graph.md5 new file mode 100644 index 0000000000..8dcadcc65f --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1unstructured__halo__coll__graph.md5 @@ -0,0 +1 @@ +d2edc76dfcd2df73dbda583a06edd017 \ No newline at end of file diff --git a/doxygen/classdr_1_1mhp_1_1unstructured__halo__coll__graph.png b/doxygen/classdr_1_1mhp_1_1unstructured__halo__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..dcb6d51eb3b13b6b66d6565877359cc927f9a814 GIT binary patch literal 30236 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 Q+r1)JuV^UXFt?umH#Dws + + + diff --git a/doxygen/classdr_1_1mhp_1_1unstructured__halo__inherit__graph.md5 b/doxygen/classdr_1_1mhp_1_1unstructured__halo__inherit__graph.md5 new file mode 100644 index 0000000000..29bc9e5e39 --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1unstructured__halo__inherit__graph.md5 @@ -0,0 +1 @@ +a51814f1afe5a95125895473004d7180 \ No newline at end of file diff --git a/doxygen/classdr_1_1mhp_1_1unstructured__halo__inherit__graph.png b/doxygen/classdr_1_1mhp_1_1unstructured__halo__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..873ae8dfea950d00545610fc0b6e144be15c9082 GIT binary patch literal 6631 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 g`|$|ft82oI#=Rpv6jdGgV!Z literal 0 HcmV?d00001 diff --git a/doxygen/classdr_1_1mhp_1_1views_1_1enumerate__adapter__closure-members.html b/doxygen/classdr_1_1mhp_1_1views_1_1enumerate__adapter__closure-members.html new file mode 100644 index 0000000000..9f3916ca2a --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1views_1_1enumerate__adapter__closure-members.html @@ -0,0 +1,90 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::mhp::views::enumerate_adapter_closure Member List
+
+
+ +

This is the complete list of members for dr::mhp::views::enumerate_adapter_closure, including all inherited members.

+ + + +
operator()(R &&r) const (defined in dr::mhp::views::enumerate_adapter_closure)dr::mhp::views::enumerate_adapter_closureinline
operator| (defined in dr::mhp::views::enumerate_adapter_closure)dr::mhp::views::enumerate_adapter_closurefriend
+ + + + diff --git a/doxygen/classdr_1_1mhp_1_1views_1_1enumerate__adapter__closure.html b/doxygen/classdr_1_1mhp_1_1views_1_1enumerate__adapter__closure.html new file mode 100644 index 0000000000..ab712afd8b --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1views_1_1enumerate__adapter__closure.html @@ -0,0 +1,108 @@ + + + + + + + +Distributed Ranges: dr::mhp::views::enumerate_adapter_closure Class Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::mhp::views::enumerate_adapter_closure Class Reference
+
+
+ + + + + +

+Public Member Functions

+template<rng::viewable_range R>
+requires (rng::sized_range<R>)
auto operator() (R &&r) const
 
+ + + + +

+Friends

+template<rng::viewable_range R>
auto operator| (R &&r, const enumerate_adapter_closure &closure)
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/views/enumerate.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1mhp_1_1views_1_1enumerate__fn__-members.html b/doxygen/classdr_1_1mhp_1_1views_1_1enumerate__fn__-members.html new file mode 100644 index 0000000000..83b0d01db1 --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1views_1_1enumerate__fn__-members.html @@ -0,0 +1,90 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::mhp::views::enumerate_fn_ Member List
+
+
+ +

This is the complete list of members for dr::mhp::views::enumerate_fn_, including all inherited members.

+ + + +
enumerate() const (defined in dr::mhp::views::enumerate_fn_)dr::mhp::views::enumerate_fn_inline
operator()(R &&r) const (defined in dr::mhp::views::enumerate_fn_)dr::mhp::views::enumerate_fn_inline
+ + + + diff --git a/doxygen/classdr_1_1mhp_1_1views_1_1enumerate__fn__.html b/doxygen/classdr_1_1mhp_1_1views_1_1enumerate__fn__.html new file mode 100644 index 0000000000..ee870e9a33 --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1views_1_1enumerate__fn__.html @@ -0,0 +1,102 @@ + + + + + + + +Distributed Ranges: dr::mhp::views::enumerate_fn_ Class Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::mhp::views::enumerate_fn_ Class Reference
+
+
+ + + + + + + +

+Public Member Functions

+template<rng::viewable_range R>
constexpr auto operator() (R &&r) const
 
+auto enumerate () const
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/views/enumerate.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1mhp_1_1views_1_1mdspan__adapter__closure-members.html b/doxygen/classdr_1_1mhp_1_1views_1_1mdspan__adapter__closure-members.html new file mode 100644 index 0000000000..398f00c8bb --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1views_1_1mdspan__adapter__closure-members.html @@ -0,0 +1,92 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::mhp::views::mdspan_adapter_closure< Rank > Member List
+
+
+ +

This is the complete list of members for dr::mhp::views::mdspan_adapter_closure< Rank >, including all inherited members.

+ + + + + +
mdspan_adapter_closure(dr::__detail::dr_extents< Rank > full_shape, dr::__detail::dr_extents< Rank > tile_shape) (defined in dr::mhp::views::mdspan_adapter_closure< Rank >)dr::mhp::views::mdspan_adapter_closure< Rank >inline
mdspan_adapter_closure(dr::__detail::dr_extents< Rank > full_shape) (defined in dr::mhp::views::mdspan_adapter_closure< Rank >)dr::mhp::views::mdspan_adapter_closure< Rank >inline
operator()(R &&r) const (defined in dr::mhp::views::mdspan_adapter_closure< Rank >)dr::mhp::views::mdspan_adapter_closure< Rank >inline
operator| (defined in dr::mhp::views::mdspan_adapter_closure< Rank >)dr::mhp::views::mdspan_adapter_closure< Rank >friend
+ + + + diff --git a/doxygen/classdr_1_1mhp_1_1views_1_1mdspan__adapter__closure.html b/doxygen/classdr_1_1mhp_1_1views_1_1mdspan__adapter__closure.html new file mode 100644 index 0000000000..337559d58d --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1views_1_1mdspan__adapter__closure.html @@ -0,0 +1,113 @@ + + + + + + + +Distributed Ranges: dr::mhp::views::mdspan_adapter_closure< Rank > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::mhp::views::mdspan_adapter_closure< Rank > Class Template Reference
+
+
+ + + + + + + + + +

+Public Member Functions

mdspan_adapter_closure (dr::__detail::dr_extents< Rank > full_shape, dr::__detail::dr_extents< Rank > tile_shape)
 
mdspan_adapter_closure (dr::__detail::dr_extents< Rank > full_shape)
 
+template<rng::viewable_range R>
auto operator() (R &&r) const
 
+ + + + +

+Friends

+template<rng::viewable_range R>
auto operator| (R &&r, const mdspan_adapter_closure &closure)
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/views/mdspan_view.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1mhp_1_1views_1_1mdspan__fn__-members.html b/doxygen/classdr_1_1mhp_1_1views_1_1mdspan__fn__-members.html new file mode 100644 index 0000000000..e0cd130779 --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1views_1_1mdspan__fn__-members.html @@ -0,0 +1,92 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::mhp::views::mdspan_fn_ Member List
+
+
+ +

This is the complete list of members for dr::mhp::views::mdspan_fn_, including all inherited members.

+ + + + + +
operator()(R &&r, Shape &&full_shape, Shape &&tile_shape) const (defined in dr::mhp::views::mdspan_fn_)dr::mhp::views::mdspan_fn_inline
operator()(R &&r, Shape &&full_shape) const (defined in dr::mhp::views::mdspan_fn_)dr::mhp::views::mdspan_fn_inline
operator()(Shape &&full_shape, Shape &&tile_shape) const (defined in dr::mhp::views::mdspan_fn_)dr::mhp::views::mdspan_fn_inline
operator()(Shape &&full_shape) const (defined in dr::mhp::views::mdspan_fn_)dr::mhp::views::mdspan_fn_inline
+ + + + diff --git a/doxygen/classdr_1_1mhp_1_1views_1_1mdspan__fn__.html b/doxygen/classdr_1_1mhp_1_1views_1_1mdspan__fn__.html new file mode 100644 index 0000000000..ad9b9e7b6e --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1views_1_1mdspan__fn__.html @@ -0,0 +1,111 @@ + + + + + + + +Distributed Ranges: dr::mhp::views::mdspan_fn_ Class Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::mhp::views::mdspan_fn_ Class Reference
+
+
+ + + + + + + + + + + + + + +

+Public Member Functions

+template<rng::viewable_range R, typename Shape >
auto operator() (R &&r, Shape &&full_shape, Shape &&tile_shape) const
 
+template<rng::viewable_range R, typename Shape >
auto operator() (R &&r, Shape &&full_shape) const
 
+template<typename Shape >
auto operator() (Shape &&full_shape, Shape &&tile_shape) const
 
+template<typename Shape >
auto operator() (Shape &&full_shape) const
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/views/mdspan_view.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1mhp_1_1views_1_1submdspan__adapter__closure-members.html b/doxygen/classdr_1_1mhp_1_1views_1_1submdspan__adapter__closure-members.html new file mode 100644 index 0000000000..38db243464 --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1views_1_1submdspan__adapter__closure-members.html @@ -0,0 +1,91 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::mhp::views::submdspan_adapter_closure< Extents > Member List
+
+
+ +

This is the complete list of members for dr::mhp::views::submdspan_adapter_closure< Extents >, including all inherited members.

+ + + + +
operator()(R &&r) const (defined in dr::mhp::views::submdspan_adapter_closure< Extents >)dr::mhp::views::submdspan_adapter_closure< Extents >inline
operator| (defined in dr::mhp::views::submdspan_adapter_closure< Extents >)dr::mhp::views::submdspan_adapter_closure< Extents >friend
submdspan_adapter_closure(Extents slice_starts, Extents slice_ends) (defined in dr::mhp::views::submdspan_adapter_closure< Extents >)dr::mhp::views::submdspan_adapter_closure< Extents >inline
+ + + + diff --git a/doxygen/classdr_1_1mhp_1_1views_1_1submdspan__adapter__closure.html b/doxygen/classdr_1_1mhp_1_1views_1_1submdspan__adapter__closure.html new file mode 100644 index 0000000000..8126d5fb07 --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1views_1_1submdspan__adapter__closure.html @@ -0,0 +1,110 @@ + + + + + + + +Distributed Ranges: dr::mhp::views::submdspan_adapter_closure< Extents > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::mhp::views::submdspan_adapter_closure< Extents > Class Template Reference
+
+
+ + + + + + + +

+Public Member Functions

submdspan_adapter_closure (Extents slice_starts, Extents slice_ends)
 
+template<rng::viewable_range R>
auto operator() (R &&r) const
 
+ + + + +

+Friends

+template<rng::viewable_range R>
auto operator| (R &&r, const submdspan_adapter_closure &closure)
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/views/submdspan_view.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1mhp_1_1views_1_1submdspan__fn__-members.html b/doxygen/classdr_1_1mhp_1_1views_1_1submdspan__fn__-members.html new file mode 100644 index 0000000000..f7807835ff --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1views_1_1submdspan__fn__-members.html @@ -0,0 +1,90 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::mhp::views::submdspan_fn_ Member List
+
+
+ +

This is the complete list of members for dr::mhp::views::submdspan_fn_, including all inherited members.

+ + + +
operator()(R r, Extents &&slice_starts, Extents &&slice_ends) const (defined in dr::mhp::views::submdspan_fn_)dr::mhp::views::submdspan_fn_inline
operator()(Extents &&slice_starts, Extents &&slice_ends) const (defined in dr::mhp::views::submdspan_fn_)dr::mhp::views::submdspan_fn_inline
+ + + + diff --git a/doxygen/classdr_1_1mhp_1_1views_1_1submdspan__fn__.html b/doxygen/classdr_1_1mhp_1_1views_1_1submdspan__fn__.html new file mode 100644 index 0000000000..e18291728c --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1views_1_1submdspan__fn__.html @@ -0,0 +1,103 @@ + + + + + + + +Distributed Ranges: dr::mhp::views::submdspan_fn_ Class Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::mhp::views::submdspan_fn_ Class Reference
+
+
+ + + + + + + + +

+Public Member Functions

+template<is_mdspan_view R, typename Extents >
auto operator() (R r, Extents &&slice_starts, Extents &&slice_ends) const
 
+template<typename Extents >
auto operator() (Extents &&slice_starts, Extents &&slice_ends) const
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/views/submdspan_view.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1mhp_1_1zip__iterator-members.html b/doxygen/classdr_1_1mhp_1_1zip__iterator-members.html new file mode 100644 index 0000000000..91e4fcc8bf --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1zip__iterator-members.html @@ -0,0 +1,110 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::mhp::zip_iterator< RngIter, BaseIters > Member List
+
+
+ +

This is the complete list of members for dr::mhp::zip_iterator< RngIter, BaseIters >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + +
difference_type typedef (defined in dr::mhp::zip_iterator< RngIter, BaseIters >)dr::mhp::zip_iterator< RngIter, BaseIters >
iterator_category typedef (defined in dr::mhp::zip_iterator< RngIter, BaseIters >)dr::mhp::zip_iterator< RngIter, BaseIters >
local() const (defined in dr::mhp::zip_iterator< RngIter, BaseIters >)dr::mhp::zip_iterator< RngIter, BaseIters >inline
operator*() const (defined in dr::mhp::zip_iterator< RngIter, BaseIters >)dr::mhp::zip_iterator< RngIter, BaseIters >inline
operator+(difference_type n) const (defined in dr::mhp::zip_iterator< RngIter, BaseIters >)dr::mhp::zip_iterator< RngIter, BaseIters >inline
operator+ (defined in dr::mhp::zip_iterator< RngIter, BaseIters >)dr::mhp::zip_iterator< RngIter, BaseIters >friend
operator++() (defined in dr::mhp::zip_iterator< RngIter, BaseIters >)dr::mhp::zip_iterator< RngIter, BaseIters >inline
operator++(int) (defined in dr::mhp::zip_iterator< RngIter, BaseIters >)dr::mhp::zip_iterator< RngIter, BaseIters >inline
operator+=(difference_type n) (defined in dr::mhp::zip_iterator< RngIter, BaseIters >)dr::mhp::zip_iterator< RngIter, BaseIters >inline
operator-(difference_type n) const (defined in dr::mhp::zip_iterator< RngIter, BaseIters >)dr::mhp::zip_iterator< RngIter, BaseIters >inline
operator-(zip_iterator other) const (defined in dr::mhp::zip_iterator< RngIter, BaseIters >)dr::mhp::zip_iterator< RngIter, BaseIters >inline
operator--() (defined in dr::mhp::zip_iterator< RngIter, BaseIters >)dr::mhp::zip_iterator< RngIter, BaseIters >inline
operator--(int) (defined in dr::mhp::zip_iterator< RngIter, BaseIters >)dr::mhp::zip_iterator< RngIter, BaseIters >inline
operator-=(difference_type n) (defined in dr::mhp::zip_iterator< RngIter, BaseIters >)dr::mhp::zip_iterator< RngIter, BaseIters >inline
operator<=>(zip_iterator other) const (defined in dr::mhp::zip_iterator< RngIter, BaseIters >)dr::mhp::zip_iterator< RngIter, BaseIters >inline
operator==(zip_iterator other) const (defined in dr::mhp::zip_iterator< RngIter, BaseIters >)dr::mhp::zip_iterator< RngIter, BaseIters >inline
operator[](difference_type n) const (defined in dr::mhp::zip_iterator< RngIter, BaseIters >)dr::mhp::zip_iterator< RngIter, BaseIters >inline
rank() const (defined in dr::mhp::zip_iterator< RngIter, BaseIters >)dr::mhp::zip_iterator< RngIter, BaseIters >inline
segments() const (defined in dr::mhp::zip_iterator< RngIter, BaseIters >)dr::mhp::zip_iterator< RngIter, BaseIters >inline
value_type typedef (defined in dr::mhp::zip_iterator< RngIter, BaseIters >)dr::mhp::zip_iterator< RngIter, BaseIters >
zip_iterator() (defined in dr::mhp::zip_iterator< RngIter, BaseIters >)dr::mhp::zip_iterator< RngIter, BaseIters >inline
zip_iterator(RngIter rng_iter, BaseIters... base_iters) (defined in dr::mhp::zip_iterator< RngIter, BaseIters >)dr::mhp::zip_iterator< RngIter, BaseIters >inline
+ + + + diff --git a/doxygen/classdr_1_1mhp_1_1zip__iterator.html b/doxygen/classdr_1_1mhp_1_1zip__iterator.html new file mode 100644 index 0000000000..49c95d20c5 --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1zip__iterator.html @@ -0,0 +1,166 @@ + + + + + + + +Distributed Ranges: dr::mhp::zip_iterator< RngIter, BaseIters > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::mhp::zip_iterator< RngIter, BaseIters > Class Template Reference
+
+
+ + + + + + + + +

+Public Types

+using value_type = rng::iter_value_t< RngIter >
 
+using difference_type = rng::iter_difference_t< RngIter >
 
+using iterator_category = std::random_access_iterator_tag
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

zip_iterator (RngIter rng_iter, BaseIters... base_iters)
 
+auto operator+ (difference_type n) const
 
+auto operator- (difference_type n) const
 
+auto operator- (zip_iterator other) const
 
+auto & operator+= (difference_type n)
 
+auto & operator-= (difference_type n)
 
+auto & operator++ ()
 
+auto operator++ (int)
 
+auto & operator-- ()
 
+auto operator-- (int)
 
+bool operator== (zip_iterator other) const
 
+auto operator<=> (zip_iterator other) const
 
+auto operator* () const
 
+auto operator[] (difference_type n) const
 
+auto segments () const
 
+auto rank () const
 
+auto local () const
 
+ + + +

+Friends

+auto operator+ (difference_type n, const zip_iterator &other)
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/views/zip.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1mhp_1_1zip__view-members.html b/doxygen/classdr_1_1mhp_1_1zip__view-members.html new file mode 100644 index 0000000000..8b68d23e60 --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1zip__view-members.html @@ -0,0 +1,97 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::mhp::zip_view< Rs > Member List
+
+
+ +

This is the complete list of members for dr::mhp::zip_view< Rs >, including all inherited members.

+ + + + + + + + + + +
base() const (defined in dr::mhp::zip_view< Rs >)dr::mhp::zip_view< Rs >inline
begin() const (defined in dr::mhp::zip_view< Rs >)dr::mhp::zip_view< Rs >inline
end() const (defined in dr::mhp::zip_view< Rs >)dr::mhp::zip_view< Rs >inline
local() const (defined in dr::mhp::zip_view< Rs >)dr::mhp::zip_view< Rs >inline
operator[](difference_type n) const (defined in dr::mhp::zip_view< Rs >)dr::mhp::zip_view< Rs >inline
rank() const (defined in dr::mhp::zip_view< Rs >)dr::mhp::zip_view< Rs >inline
segments() const (defined in dr::mhp::zip_view< Rs >)dr::mhp::zip_view< Rs >inline
size() const (defined in dr::mhp::zip_view< Rs >)dr::mhp::zip_view< Rs >inline
zip_view(Rs... rs) (defined in dr::mhp::zip_view< Rs >)dr::mhp::zip_view< Rs >inline
+ + + + diff --git a/doxygen/classdr_1_1mhp_1_1zip__view.html b/doxygen/classdr_1_1mhp_1_1zip__view.html new file mode 100644 index 0000000000..41ec0aed06 --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1zip__view.html @@ -0,0 +1,140 @@ + + + + + + + +Distributed Ranges: dr::mhp::zip_view< Rs > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::mhp::zip_view< Rs > Class Template Reference
+
+
+
+Inheritance diagram for dr::mhp::zip_view< Rs >:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for dr::mhp::zip_view< Rs >:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

zip_view (Rs... rs)
 
+auto begin () const
 
+auto end () const
 
+auto size () const
 
+auto operator[] (difference_type n) const
 
+auto base () const
 
+auto segments () const
 
+auto rank () const
 
+auto local () const
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/views/zip.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1mhp_1_1zip__view__coll__graph.map b/doxygen/classdr_1_1mhp_1_1zip__view__coll__graph.map new file mode 100644 index 0000000000..29f00ad353 --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1zip__view__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/classdr_1_1mhp_1_1zip__view__coll__graph.md5 b/doxygen/classdr_1_1mhp_1_1zip__view__coll__graph.md5 new file mode 100644 index 0000000000..1e68ba4cfc --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1zip__view__coll__graph.md5 @@ -0,0 +1 @@ +15711b5e6cc72b2a8cc80ea5085406d2 \ No newline at end of file diff --git a/doxygen/classdr_1_1mhp_1_1zip__view__coll__graph.png b/doxygen/classdr_1_1mhp_1_1zip__view__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..c8d70dc6a180155368549eb4780b33b805aaec50 GIT binary patch literal 6042 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 literal 0 HcmV?d00001 diff --git a/doxygen/classdr_1_1mhp_1_1zip__view__inherit__graph.map b/doxygen/classdr_1_1mhp_1_1zip__view__inherit__graph.map new file mode 100644 index 0000000000..29f00ad353 --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1zip__view__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/classdr_1_1mhp_1_1zip__view__inherit__graph.md5 b/doxygen/classdr_1_1mhp_1_1zip__view__inherit__graph.md5 new file mode 100644 index 0000000000..1e68ba4cfc --- /dev/null +++ b/doxygen/classdr_1_1mhp_1_1zip__view__inherit__graph.md5 @@ -0,0 +1 @@ +15711b5e6cc72b2a8cc80ea5085406d2 \ No newline at end of file diff --git a/doxygen/classdr_1_1mhp_1_1zip__view__inherit__graph.png b/doxygen/classdr_1_1mhp_1_1zip__view__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..c8d70dc6a180155368549eb4780b33b805aaec50 GIT binary patch literal 6042 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 literal 0 HcmV?d00001 diff --git a/doxygen/classdr_1_1normal__distributed__iterator__accessor-members.html b/doxygen/classdr_1_1normal__distributed__iterator__accessor-members.html new file mode 100644 index 0000000000..b74bef2e13 --- /dev/null +++ b/doxygen/classdr_1_1normal__distributed__iterator__accessor-members.html @@ -0,0 +1,108 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::normal_distributed_iterator_accessor< V > Member List
+
+
+ +

This is the complete list of members for dr::normal_distributed_iterator_accessor< V >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + +
const_iterator_accessor typedef (defined in dr::normal_distributed_iterator_accessor< V >)dr::normal_distributed_iterator_accessor< V >
difference_type typedef (defined in dr::normal_distributed_iterator_accessor< V >)dr::normal_distributed_iterator_accessor< V >
iterator_accessor typedef (defined in dr::normal_distributed_iterator_accessor< V >)dr::normal_distributed_iterator_accessor< V >
iterator_category typedef (defined in dr::normal_distributed_iterator_accessor< V >)dr::normal_distributed_iterator_accessor< V >
nonconst_iterator_accessor typedef (defined in dr::normal_distributed_iterator_accessor< V >)dr::normal_distributed_iterator_accessor< V >
normal_distributed_iterator_accessor() noexcept=default (defined in dr::normal_distributed_iterator_accessor< V >)dr::normal_distributed_iterator_accessor< V >
normal_distributed_iterator_accessor(const normal_distributed_iterator_accessor &) noexcept=default (defined in dr::normal_distributed_iterator_accessor< V >)dr::normal_distributed_iterator_accessor< V >
normal_distributed_iterator_accessor(V segments, size_type segment_id, size_type idx) noexcept (defined in dr::normal_distributed_iterator_accessor< V >)dr::normal_distributed_iterator_accessor< V >inline
operator*() const noexcept (defined in dr::normal_distributed_iterator_accessor< V >)dr::normal_distributed_iterator_accessor< V >inline
operator+=(difference_type offset) noexcept (defined in dr::normal_distributed_iterator_accessor< V >)dr::normal_distributed_iterator_accessor< V >inline
operator-(const iterator_accessor &other) const noexcept (defined in dr::normal_distributed_iterator_accessor< V >)dr::normal_distributed_iterator_accessor< V >inline
operator<(const iterator_accessor &other) const noexcept (defined in dr::normal_distributed_iterator_accessor< V >)dr::normal_distributed_iterator_accessor< V >inline
operator=(const normal_distributed_iterator_accessor &) noexcept=default (defined in dr::normal_distributed_iterator_accessor< V >)dr::normal_distributed_iterator_accessor< V >
operator==(const iterator_accessor &other) const noexcept (defined in dr::normal_distributed_iterator_accessor< V >)dr::normal_distributed_iterator_accessor< V >inline
reference typedef (defined in dr::normal_distributed_iterator_accessor< V >)dr::normal_distributed_iterator_accessor< V >
segment_type typedef (defined in dr::normal_distributed_iterator_accessor< V >)dr::normal_distributed_iterator_accessor< V >
segments() const noexcept (defined in dr::normal_distributed_iterator_accessor< V >)dr::normal_distributed_iterator_accessor< V >inline
size_type typedef (defined in dr::normal_distributed_iterator_accessor< V >)dr::normal_distributed_iterator_accessor< V >
value_type typedef (defined in dr::normal_distributed_iterator_accessor< V >)dr::normal_distributed_iterator_accessor< V >
~normal_distributed_iterator_accessor() noexcept=default (defined in dr::normal_distributed_iterator_accessor< V >)dr::normal_distributed_iterator_accessor< V >
+ + + + diff --git a/doxygen/classdr_1_1normal__distributed__iterator__accessor.html b/doxygen/classdr_1_1normal__distributed__iterator__accessor.html new file mode 100644 index 0000000000..16bddd3bf3 --- /dev/null +++ b/doxygen/classdr_1_1normal__distributed__iterator__accessor.html @@ -0,0 +1,153 @@ + + + + + + + +Distributed Ranges: dr::normal_distributed_iterator_accessor< V > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::normal_distributed_iterator_accessor< V > Class Template Reference
+
+
+ + + + + + + + + + + + + + + + + + + + +

+Public Types

+using value_type = rng::range_value_t< rng::range_reference_t< V > >
 
+using segment_type = rng::range_value_t< V >
 
+using size_type = rng::range_size_t< segment_type >
 
+using difference_type = rng::range_difference_t< segment_type >
 
+using reference = rng::range_reference_t< segment_type >
 
+using iterator_category = std::random_access_iterator_tag
 
+using iterator_accessor = normal_distributed_iterator_accessor
 
+using const_iterator_accessor = iterator_accessor
 
+using nonconst_iterator_accessor = iterator_accessor
 
+ + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+constexpr normal_distributed_iterator_accessor (const normal_distributed_iterator_accessor &) noexcept=default
 
+constexpr normal_distributed_iterator_accessoroperator= (const normal_distributed_iterator_accessor &) noexcept=default
 
+constexpr normal_distributed_iterator_accessor (V segments, size_type segment_id, size_type idx) noexcept
 
+constexpr normal_distributed_iterator_accessoroperator+= (difference_type offset) noexcept
 
+constexpr bool operator== (const iterator_accessor &other) const noexcept
 
+constexpr difference_type operator- (const iterator_accessor &other) const noexcept
 
+constexpr bool operator< (const iterator_accessor &other) const noexcept
 
+constexpr reference operator* () const noexcept
 
+auto segments () const noexcept
 
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/doxygen/classdr_1_1remote__subrange-members.html b/doxygen/classdr_1_1remote__subrange-members.html new file mode 100644 index 0000000000..b79d444c3d --- /dev/null +++ b/doxygen/classdr_1_1remote__subrange-members.html @@ -0,0 +1,93 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::remote_subrange< I > Member List
+
+
+ +

This is the complete list of members for dr::remote_subrange< I >, including all inherited members.

+ + + + + + +
rank() const noexcept (defined in dr::remote_subrange< I >)dr::remote_subrange< I >inline
remote_subrange()=default (defined in dr::remote_subrange< I >)dr::remote_subrange< I >
remote_subrange(I first, I last, std::size_t rank) (defined in dr::remote_subrange< I >)dr::remote_subrange< I >inline
remote_subrange(R &&r, std::size_t rank) (defined in dr::remote_subrange< I >)dr::remote_subrange< I >inline
remote_subrange(R &&r) (defined in dr::remote_subrange< I >)dr::remote_subrange< I >inline
+ + + + diff --git a/doxygen/classdr_1_1remote__subrange.html b/doxygen/classdr_1_1remote__subrange.html new file mode 100644 index 0000000000..c577207efb --- /dev/null +++ b/doxygen/classdr_1_1remote__subrange.html @@ -0,0 +1,127 @@ + + + + + + + +Distributed Ranges: dr::remote_subrange< I > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::remote_subrange< I > Class Template Reference
+
+
+
+Inheritance diagram for dr::remote_subrange< I >:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for dr::remote_subrange< I >:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + +

+Public Member Functions

+constexpr remote_subrange (I first, I last, std::size_t rank)
 
+template<rng::forward_range R>
constexpr remote_subrange (R &&r, std::size_t rank)
 
+template<dr::remote_range R>
constexpr remote_subrange (R &&r)
 
+constexpr std::size_t rank () const noexcept
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail/remote_subrange.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1remote__subrange__coll__graph.map b/doxygen/classdr_1_1remote__subrange__coll__graph.map new file mode 100644 index 0000000000..fe7563bbed --- /dev/null +++ b/doxygen/classdr_1_1remote__subrange__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/classdr_1_1remote__subrange__coll__graph.md5 b/doxygen/classdr_1_1remote__subrange__coll__graph.md5 new file mode 100644 index 0000000000..f15229df57 --- /dev/null +++ b/doxygen/classdr_1_1remote__subrange__coll__graph.md5 @@ -0,0 +1 @@ +bdfea634e84bf4d69592d9279dbc636a \ No newline at end of file diff --git a/doxygen/classdr_1_1remote__subrange__coll__graph.png b/doxygen/classdr_1_1remote__subrange__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..e93378bb20305925d8cb100dd56318f9a404f277 GIT binary patch literal 4731 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�vkHjil#_R#CSzq~jp4Z6wQvHf#y5q8aB*?%9T3VpfB$yb-2)#+F0O}W zX6aa4T>rOq5=lT&F`b@MmXVWF*UwKOJ80(_Kvn>l?~rnCo2!+*3GwlFL29O4q^MnL z4;rg@xjIpk2%-$lhOx4+z%>W4O2^xSt5Z$cK!kvYZh%WlNikiF>_OOqqXD#Tt)R+t z9XakrUU~_-+>v={yWi6QL1+6u-2-h(g&j6se^ksUI|b2!}uzFH}xW4m89XYHF{m$}`z%^#-YEX)9IQ2w#AttdtL37(W^q z#w(>WPgxZiWG@h_rvwEA+9nI&HTCsMA|fK=rv;*XWGaWN(!dbFWD34~iD?MfHRBbX zg7EWOER9z=*YC}|lTFdfkpFy_2;>&%$%wu#>4pl z)S_W{r!}eCkCm0uK>n)`>^=ezd788LApeUT4qNTY5J + + + diff --git a/doxygen/classdr_1_1remote__subrange__inherit__graph.md5 b/doxygen/classdr_1_1remote__subrange__inherit__graph.md5 new file mode 100644 index 0000000000..f15229df57 --- /dev/null +++ b/doxygen/classdr_1_1remote__subrange__inherit__graph.md5 @@ -0,0 +1 @@ +bdfea634e84bf4d69592d9279dbc636a \ No newline at end of file diff --git a/doxygen/classdr_1_1remote__subrange__inherit__graph.png b/doxygen/classdr_1_1remote__subrange__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..e93378bb20305925d8cb100dd56318f9a404f277 GIT binary patch literal 4731 zcmc(ji8s_?xW_5U8d=INWyv~OvSo=-2$d`uTa?|{hOw(`5fNF(mOT@SjIk?QXzWXj zL3YMu9s6=$_ug~wxqrc(IrICS^UiO3pZ9sb-_P@ldZd4!o`!>ljEsz4`+>$2uEgHA{H4RbuV1~=lJ)dpW_*2|r5aObE-P`@+BQ%{x(5SW^PfZzc?nX^=c)L@7}de% z*a6?aB$OQ})o=5SZsk2X9FzF=?c41#*x)A=C&eS3(jggQ=RXH175A>z1G4&t26kB& zQ^akEhIBzeL56}?A#_|8u8UF+jC=4PtdEcHvU+4#exg<^N890AliQk<219&2)u(&v z*T-Kj{7zFkJ=(&fgWUxAYI>iET~RsNvz?il`GfJWjUyt4ON@>-Q<~=XHfEL4y*(?p z`Pgqeu@FW|Zzw5onV6Ui3=FV=0Z79()8)&T*i6!I5~?#MzdJIksj11|xg-6ui=}aIhL#`|5)vXMEnPa; z*4E~buJ!U|f%jyZw0)}7OB$`b50SjVsd@L~CcmjZe*D-WJ>rM;wVOBJwzg_~e1b*S zAWw`wi&J| zkzLxZm{rtxscf{L#L2<&R7)!&IyTm*tgOswbFR|~toDcptQ=)hUeXfDAetFxx7I%v z&o3y5PEX0maLJT_KulhVNJto8l`wbMA%Cp%IZpKiGhC0JTU->ix3?$thMWv8Z0>}; zAdXjI(bTlGhR|x5Yo)6A@qTZJv4Jw_Y0CDlPY_6$k@?uz*e(YdvqOwSKL`Q_BmYts zxn>I0#j_?9J`_w$zwMlSZm8Cqp!nSt5s^P?4kM?ap!lA?I6G^59CCVcOkP}CT9BVl zarNre`uh4W-JzkOxQ6naoNGSB@iw=RLnx2m+~q3}%ik$h!DFBNq5mNA@~Ja3HUxP0 z$?8~TB*-u}aITD=ZCf-eb|kWAcb8D!MA_Wi%b+*dCljj@bl`q`;7vnALk3FZhFkpx zWlc>D1tsO?gjer}q@>~1gz}=>va+6_2Cj&kX}G)JnxCI{8LJ4tYU%p}cDrf_rJn0Z z3=tmd?TuSmaUzi9`~EtQKdZF+@Zp1+zWyapMoK$>Y=?%1$f{Lxs;a6+ymfVTp{^l^ zp=0pVlarH?<-+3{f0D@7V(;R7iq%3_lBlWJl_yW0IDn5yssAxO9bK#Stw+Yj5l>3S zn!uIGZ@Ew34cAQHQrFn{%Erb9rly8uD(>%Z^g!{tjLb)n_!WWso(~0?_xJa|Sk$4%6cM!^s=n*j zAdP$1uR<*I8ymCQ+qImWoxhoiHJ2inh`4IQXV0{sKj#A(1T$($7Kh4v&QaM_rm3E6 z#IanxDjl%nf+S7C0-9fu%PT4-WM=B==;)-7Ijm49#PBtLBx^&dl)%V7FgWD%+yvW_*@FBd<%Ft&p*URkeQFV29goTCki;8Av zX3kC2$_R^!wt&?tF20$Ymj|u-<}xNVQVNYMFNc8ABR||->%ie~3nx7OOMEBmk*c>s zP6A`JZh(M(A6vk0?>6jC+Wv~?)6mkInVoIfobQf$_pYV0^D|bKp7Q))k%4{3dv4hf z#_t7Rzs7g)1bn$il1s|S_`QHd`fc~$zk_dAE|r%1XYm|lcNZSt(6Q?b*;#cnHBA)} z6Z_uX=(^m)xeGf~(KY}9kh^s0($RL2s(`9$_AttXnVH#kt)f=XZN&`{gvgVtErL`R z8e{{Z2%w^);|Buy_AOOHVj|JPxVmQQ00*5Iv}ZCfFaWZ?YM~YPKSO-}Z^AUFxS5#v z;QwVQ%P-$spb-~x3t$1YFQwA<<`NBRQTuD9rws~OZatYl?n&e7ST-_Y)IjvzOvRFw z@%=lyV`-F4eT0%zX9ZH|schcb;wDtkKMJ;Q(VXj*{GyoULT{djcb`X~m7iwipE^Ol zUH*o4(ej(2Z^CchmHg_?Ww>gQh|yFZ&^1rLOEG+FP?5IS2B*a3K*Z<34)g%d{r#?W-c5yvSYI*>kRoI^+ zd}SOZxWUVmV0pLl>!VORD<6~T92vWglWb44iN(wn>ZnZd6W;j}8M{wQIHylP`}=>2 z-T5ex9v}ZFZJ{+}jP92>O{~?ngIX>tbyS0J@aqWTnw|5un&eiKbdo)T$$uW%U(qBC zvF3fM-`Lh?Y$IHQaJ|`#VU-^UYJ4E62C0ZV-6J_iRspqmtDArAypNEGB zZx+wkpr@%Bj@|b(xE^+iI*L(|pI?1xDLLM}DL4~2RS61Jm$!dttge1eNI&B%f_;}; zA@K}ha%Xp&PL)9cRf4esJ*4c1tSs1?)Oaw3mo?Vg^J3`{T~d$%`xoKio<7_ zUtC^p|1*pls2sv0>9k*f?{i6s&0>yna}U&X}4*bSo5?2O&_dk?`wFa(58T#5|wq4ThcdActml;yVk?Gm9XD*ZVX~D+_lEFv5f)7() zrKFe?;l3B>swbqUN25@pQBhG77>`ikbjAcOW&e-%*+I#`sOc!rv$M0;644WO-O1uZ zqob8h!y@M9=6i=zr#(OvpH;&$Njcey-q9d2cmVqVvDzEVK56~)&DL*!K4l+>zqXFf zbuqEu{_bd3Ttr^p4Z>*oec`qpBF=9y6JgpIsGyr7(e^^>G7nErUYv?ksWVu|TJJxe zq!lBTqxE}$oHXy=B?If1q2xEfk+5@SSiQ=-T;$~BTne6HXL**I`WA&kVI?{5_=u5R zc^96Lz;t%Al$5K$lq%6_ATEJ{N{x+;FYN3#d+w~ofBYC$=;(q&(=#wI0Brn>LOFZ8 zklJSsNCa?~gxQWbLrcq^R7qRkg*1CAdisW0)2cI%*;>HPb_!+B0XmtRn~RT+f7R5a z$}ITM`gf}22(JWUwrous*fD@F>mP3}U}|e;h(tX&9F8LKgdBMQpS#5dBYFbRAE}He zT~5Y5efso_18i(};LyPASD{XlMXRew&!c%q*mzUsm?M#%pnA zbu}g~j^X+9=fG>JUsY5{^<=B|zPUi_?&Z}2vLZE=O+Q;j&&VhVdxEaM1U=YZ2Gn)_ z_<)q>Hq{8qOxnIDV~2hlQK+BU#SpT056rj&RHHirAtWbPjrC~6THm_m(0A?Zc^i*5 zyY0FQ^^ooN7?i`n(*6DWHx+9K2>7PBxBvta2kvHWVF4c9W@mK_@ zy4Rr!=2B2rcB$Fl&j&gvNx)S@$mHB6^D8QtgoK1Zu7Bx9^5Ax2G~sX=aETZ8_LV+F zv-TMF7SM-LQ&TTjVGN~_<-#n}VI0j-n= zP$>N@rLi(I{KN!Mt-RXWagL9L9cX3S=Q12=DnW{Xc&aB8^9u_HiVS$$<9K`LIumi; z5c}>VQIj);6%y+3H`pA|g?R5PcUoA%`~m`iZ2c^=sJn&4f(CM9wCThMQ5O?K2k3Qb z0j>)iB!){N0WlSn0tnM{Ye5gt`JZ|}X?lA4%o2Qe_dBrYmCmCQAc=~Li?4}`$Aaz- z+I#&xC0!0^72dUZj(TS(2P6j_?mRX#)3LR^0qXhS!2jbDvc1DYuhl=2fITrjL=N7d z?Z+rtmE�vkHjil#_R#CSzq~jp4Z6wQvHf#y5q8aB*?%9T3VpfB$yb-2)#+F0O}W zX6aa4T>rOq5=lT&F`b@MmXVWF*UwKOJ80(_Kvn>l?~rnCo2!+*3GwlFL29O4q^MnL z4;rg@xjIpk2%-$lhOx4+z%>W4O2^xSt5Z$cK!kvYZh%WlNikiF>_OOqqXD#Tt)R+t z9XakrUU~_-+>v={yWi6QL1+6u-2-h(g&j6se^ksUI|b2!}uzFH}xW4m89XYHF{m$}`z%^#-YEX)9IQ2w#AttdtL37(W^q z#w(>WPgxZiWG@h_rvwEA+9nI&HTCsMA|fK=rv;*XWGaWN(!dbFWD34~iD?MfHRBbX zg7EWOER9z=*YC}|lTFdfkpFy_2;>&%$%wu#>4pl z)S_W{r!}eCkCm0uK>n)`>^=ezd788LApeUT4qNTY5J + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::rma_window Member List
+
+
+ +

This is the complete list of members for dr::rma_window, including all inherited members.

+ + + + + + + + + + + + + + + +
communicator() const (defined in dr::rma_window)dr::rma_windowinline
create(communicator comm, void *data, std::size_t size) (defined in dr::rma_window)dr::rma_windowinline
fence() const (defined in dr::rma_window)dr::rma_windowinline
flush(std::size_t rank) const (defined in dr::rma_window)dr::rma_windowinline
free() (defined in dr::rma_window)dr::rma_windowinline
get(std::size_t rank, std::size_t disp) const (defined in dr::rma_window)dr::rma_windowinline
get(void *dst, std::size_t size, std::size_t rank, std::size_t disp) const (defined in dr::rma_window)dr::rma_windowinline
local_data() (defined in dr::rma_window)dr::rma_windowinline
mpi_win() (defined in dr::rma_window)dr::rma_windowinline
null() const noexcept (defined in dr::rma_window)dr::rma_windowinline
operator==(const rma_window other) const noexcept (defined in dr::rma_window)dr::rma_windowinline
put(const auto &src, std::size_t rank, std::size_t disp) const (defined in dr::rma_window)dr::rma_windowinline
put(const void *src, std::size_t size, std::size_t rank, std::size_t disp) const (defined in dr::rma_window)dr::rma_windowinline
set_null() (defined in dr::rma_window)dr::rma_windowinline
+ + + + diff --git a/doxygen/classdr_1_1rma__window.html b/doxygen/classdr_1_1rma__window.html new file mode 100644 index 0000000000..2cff3f39d4 --- /dev/null +++ b/doxygen/classdr_1_1rma__window.html @@ -0,0 +1,139 @@ + + + + + + + +Distributed Ranges: dr::rma_window Class Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::rma_window Class Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+void create (communicator comm, void *data, std::size_t size)
 
+template<typename T >
auto local_data ()
 
+void free ()
 
+bool operator== (const rma_window other) const noexcept
 
+void set_null ()
 
+bool null () const noexcept
 
+template<typename T >
get (std::size_t rank, std::size_t disp) const
 
+void get (void *dst, std::size_t size, std::size_t rank, std::size_t disp) const
 
+void put (const auto &src, std::size_t rank, std::size_t disp) const
 
+void put (const void *src, std::size_t size, std::size_t rank, std::size_t disp) const
 
+void fence () const
 
+void flush (std::size_t rank) const
 
+const auto & communicator () const
 
+auto mpi_win ()
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail/communicator.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1____detail_1_1coo__matrix-members.html b/doxygen/classdr_1_1shp_1_1____detail_1_1coo__matrix-members.html new file mode 100644 index 0000000000..821d57f104 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1____detail_1_1coo__matrix-members.html @@ -0,0 +1,128 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::shp::__detail::coo_matrix< T, I, Allocator > Member List
+
+
+ +

This is the complete list of members for dr::shp::__detail::coo_matrix< T, I, Allocator >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
allocator_type typedef (defined in dr::shp::__detail::coo_matrix< T, I, Allocator >)dr::shp::__detail::coo_matrix< T, I, Allocator >
assign_tuples(InputIt first, InputIt last) (defined in dr::shp::__detail::coo_matrix< T, I, Allocator >)dr::shp::__detail::coo_matrix< T, I, Allocator >inline
backend_allocator_type typedef (defined in dr::shp::__detail::coo_matrix< T, I, Allocator >)dr::shp::__detail::coo_matrix< T, I, Allocator >
backend_type typedef (defined in dr::shp::__detail::coo_matrix< T, I, Allocator >)dr::shp::__detail::coo_matrix< T, I, Allocator >
begin() noexcept (defined in dr::shp::__detail::coo_matrix< T, I, Allocator >)dr::shp::__detail::coo_matrix< T, I, Allocator >inline
begin() const noexcept (defined in dr::shp::__detail::coo_matrix< T, I, Allocator >)dr::shp::__detail::coo_matrix< T, I, Allocator >inline
const_iterator typedef (defined in dr::shp::__detail::coo_matrix< T, I, Allocator >)dr::shp::__detail::coo_matrix< T, I, Allocator >
const_reference typedef (defined in dr::shp::__detail::coo_matrix< T, I, Allocator >)dr::shp::__detail::coo_matrix< T, I, Allocator >
coo_matrix(dr::index< I > shape) (defined in dr::shp::__detail::coo_matrix< T, I, Allocator >)dr::shp::__detail::coo_matrix< T, I, Allocator >inline
coo_matrix()=default (defined in dr::shp::__detail::coo_matrix< T, I, Allocator >)dr::shp::__detail::coo_matrix< T, I, Allocator >
coo_matrix(const coo_matrix &)=default (defined in dr::shp::__detail::coo_matrix< T, I, Allocator >)dr::shp::__detail::coo_matrix< T, I, Allocator >
coo_matrix(coo_matrix &&)=default (defined in dr::shp::__detail::coo_matrix< T, I, Allocator >)dr::shp::__detail::coo_matrix< T, I, Allocator >
difference_type typedef (defined in dr::shp::__detail::coo_matrix< T, I, Allocator >)dr::shp::__detail::coo_matrix< T, I, Allocator >
end() noexcept (defined in dr::shp::__detail::coo_matrix< T, I, Allocator >)dr::shp::__detail::coo_matrix< T, I, Allocator >inline
end() const noexcept (defined in dr::shp::__detail::coo_matrix< T, I, Allocator >)dr::shp::__detail::coo_matrix< T, I, Allocator >inline
find(key_type key) noexcept (defined in dr::shp::__detail::coo_matrix< T, I, Allocator >)dr::shp::__detail::coo_matrix< T, I, Allocator >inline
find(key_type key) const noexcept (defined in dr::shp::__detail::coo_matrix< T, I, Allocator >)dr::shp::__detail::coo_matrix< T, I, Allocator >inline
index_type typedef (defined in dr::shp::__detail::coo_matrix< T, I, Allocator >)dr::shp::__detail::coo_matrix< T, I, Allocator >
insert(InputIt first, InputIt last) (defined in dr::shp::__detail::coo_matrix< T, I, Allocator >)dr::shp::__detail::coo_matrix< T, I, Allocator >inline
insert(value_type &&value) (defined in dr::shp::__detail::coo_matrix< T, I, Allocator >)dr::shp::__detail::coo_matrix< T, I, Allocator >inline
insert(const value_type &value) (defined in dr::shp::__detail::coo_matrix< T, I, Allocator >)dr::shp::__detail::coo_matrix< T, I, Allocator >inline
insert_or_assign(key_type k, M &&obj) (defined in dr::shp::__detail::coo_matrix< T, I, Allocator >)dr::shp::__detail::coo_matrix< T, I, Allocator >inline
iterator typedef (defined in dr::shp::__detail::coo_matrix< T, I, Allocator >)dr::shp::__detail::coo_matrix< T, I, Allocator >
key_type typedef (defined in dr::shp::__detail::coo_matrix< T, I, Allocator >)dr::shp::__detail::coo_matrix< T, I, Allocator >
map_type typedef (defined in dr::shp::__detail::coo_matrix< T, I, Allocator >)dr::shp::__detail::coo_matrix< T, I, Allocator >
nbytes() const noexcept (defined in dr::shp::__detail::coo_matrix< T, I, Allocator >)dr::shp::__detail::coo_matrix< T, I, Allocator >inline
operator=(const coo_matrix &)=default (defined in dr::shp::__detail::coo_matrix< T, I, Allocator >)dr::shp::__detail::coo_matrix< T, I, Allocator >
operator=(coo_matrix &&)=default (defined in dr::shp::__detail::coo_matrix< T, I, Allocator >)dr::shp::__detail::coo_matrix< T, I, Allocator >
push_back(InputIt first, InputIt last) (defined in dr::shp::__detail::coo_matrix< T, I, Allocator >)dr::shp::__detail::coo_matrix< T, I, Allocator >inline
push_back(const value_type &value) (defined in dr::shp::__detail::coo_matrix< T, I, Allocator >)dr::shp::__detail::coo_matrix< T, I, Allocator >inline
reference typedef (defined in dr::shp::__detail::coo_matrix< T, I, Allocator >)dr::shp::__detail::coo_matrix< T, I, Allocator >
reserve(size_type new_cap) (defined in dr::shp::__detail::coo_matrix< T, I, Allocator >)dr::shp::__detail::coo_matrix< T, I, Allocator >inline
reshape(dr::index< I > shape) (defined in dr::shp::__detail::coo_matrix< T, I, Allocator >)dr::shp::__detail::coo_matrix< T, I, Allocator >inline
scalar_reference typedef (defined in dr::shp::__detail::coo_matrix< T, I, Allocator >)dr::shp::__detail::coo_matrix< T, I, Allocator >
scalar_type typedef (defined in dr::shp::__detail::coo_matrix< T, I, Allocator >)dr::shp::__detail::coo_matrix< T, I, Allocator >
shape() const noexcept (defined in dr::shp::__detail::coo_matrix< T, I, Allocator >)dr::shp::__detail::coo_matrix< T, I, Allocator >inline
size() const noexcept (defined in dr::shp::__detail::coo_matrix< T, I, Allocator >)dr::shp::__detail::coo_matrix< T, I, Allocator >inline
size_type typedef (defined in dr::shp::__detail::coo_matrix< T, I, Allocator >)dr::shp::__detail::coo_matrix< T, I, Allocator >
value_type typedef (defined in dr::shp::__detail::coo_matrix< T, I, Allocator >)dr::shp::__detail::coo_matrix< T, I, Allocator >
~coo_matrix()=default (defined in dr::shp::__detail::coo_matrix< T, I, Allocator >)dr::shp::__detail::coo_matrix< T, I, Allocator >
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1____detail_1_1coo__matrix.html b/doxygen/classdr_1_1shp_1_1____detail_1_1coo__matrix.html new file mode 100644 index 0000000000..e1de9c498c --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1____detail_1_1coo__matrix.html @@ -0,0 +1,217 @@ + + + + + + + +Distributed Ranges: dr::shp::__detail::coo_matrix< T, I, Allocator > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::shp::__detail::coo_matrix< T, I, Allocator > Class Template Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

+using value_type = dr::shp::matrix_entry< T, I >
 
+using scalar_type = T
 
+using index_type = I
 
+using size_type = std::size_t
 
+using difference_type = std::ptrdiff_t
 
+using allocator_type = Allocator
 
+using key_type = dr::index< I >
 
+using map_type = T
 
+using backend_allocator_type = typename std::allocator_traits< allocator_type >::template rebind_alloc< value_type >
 
+using backend_type = std::vector< value_type, backend_allocator_type >
 
+using iterator = typename backend_type::iterator
 
+using const_iterator = typename backend_type::const_iterator
 
+using reference = dr::shp::matrix_ref< T, I >
 
+using const_reference = dr::shp::matrix_ref< std::add_const_t< T >, I >
 
+using scalar_reference = T &
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

coo_matrix (dr::index< I > shape)
 
+dr::index< I > shape () const noexcept
 
+size_type size () const noexcept
 
+void reserve (size_type new_cap)
 
+iterator begin () noexcept
 
+const_iterator begin () const noexcept
 
+iterator end () noexcept
 
+const_iterator end () const noexcept
 
+template<typename InputIt >
void insert (InputIt first, InputIt last)
 
+template<typename InputIt >
void push_back (InputIt first, InputIt last)
 
+void push_back (const value_type &value)
 
+template<typename InputIt >
void assign_tuples (InputIt first, InputIt last)
 
+std::pair< iterator, bool > insert (value_type &&value)
 
+std::pair< iterator, bool > insert (const value_type &value)
 
+template<class M >
std::pair< iterator, bool > insert_or_assign (key_type k, M &&obj)
 
+iterator find (key_type key) noexcept
 
+const_iterator find (key_type key) const noexcept
 
+void reshape (dr::index< I > shape)
 
coo_matrix (const coo_matrix &)=default
 
coo_matrix (coo_matrix &&)=default
 
+coo_matrixoperator= (const coo_matrix &)=default
 
+coo_matrixoperator= (coo_matrix &&)=default
 
+std::size_t nbytes () const noexcept
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/util/coo_matrix.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1block__cyclic-members.html b/doxygen/classdr_1_1shp_1_1block__cyclic-members.html new file mode 100644 index 0000000000..1a6cd7efaf --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1block__cyclic-members.html @@ -0,0 +1,96 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::shp::block_cyclic Member List
+
+
+ +

This is the complete list of members for dr::shp::block_cyclic, including all inherited members.

+ + + + + + + + + +
block_cyclic(dr::index<> tile_shape={dr::shp::tile::div, dr::shp::tile::div}, dr::index<> grid_shape=detail::factor(dr::shp::nprocs())) (defined in dr::shp::block_cyclic)dr::shp::block_cyclicinline
block_cyclic(const block_cyclic &) noexcept=default (defined in dr::shp::block_cyclic)dr::shp::block_cyclic
clone() const noexcept (defined in dr::shp::block_cyclic)dr::shp::block_cyclicinlinevirtual
grid_shape(dr::index<> matrix_shape) const (defined in dr::shp::block_cyclic)dr::shp::block_cyclicinlinevirtual
tile_rank(dr::index<> matrix_shape, dr::index<> tile_id) const (defined in dr::shp::block_cyclic)dr::shp::block_cyclicinlinevirtual
tile_shape() const (defined in dr::shp::block_cyclic)dr::shp::block_cyclicinline
tile_shape(dr::index<> matrix_shape) const (defined in dr::shp::block_cyclic)dr::shp::block_cyclicinlinevirtual
~matrix_partition() (defined in dr::shp::matrix_partition)dr::shp::matrix_partitioninlinevirtual
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1block__cyclic.html b/doxygen/classdr_1_1shp_1_1block__cyclic.html new file mode 100644 index 0000000000..b835911d82 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1block__cyclic.html @@ -0,0 +1,264 @@ + + + + + + + +Distributed Ranges: dr::shp::block_cyclic Class Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::shp::block_cyclic Class Referencefinal
+
+
+
+Inheritance diagram for dr::shp::block_cyclic:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for dr::shp::block_cyclic:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

block_cyclic (dr::index<> tile_shape={dr::shp::tile::div, dr::shp::tile::div}, dr::index<> grid_shape=detail::factor(dr::shp::nprocs()))
 
block_cyclic (const block_cyclic &) noexcept=default
 
+dr::index tile_shape () const
 
std::size_t tile_rank (dr::index<> matrix_shape, dr::index<> tile_id) const
 
dr::index grid_shape (dr::index<> matrix_shape) const
 
dr::index tile_shape (dr::index<> matrix_shape) const
 
std::unique_ptr< matrix_partitionclone () const noexcept
 
+virtual std::size_t tile_rank (dr::index<> matrix_shape, dr::index<> tile_id) const =0
 
+virtual dr::index grid_shape (dr::index<> matrix_shape) const =0
 
+virtual dr::index tile_shape (dr::index<> matrix_shape) const =0
 
+virtual std::unique_ptr< matrix_partitionclone () const =0
 
+

Member Function Documentation

+ +

◆ clone()

+ +
+
+ + + + + +
+ + + + + + + +
std::unique_ptr< matrix_partition > dr::shp::block_cyclic::clone () const
+
+inlinevirtualnoexcept
+
+ +

Implements dr::shp::matrix_partition.

+ +
+
+ +

◆ grid_shape()

+ +
+
+ + + + + +
+ + + + + + + + +
dr::index dr::shp::block_cyclic::grid_shape (dr::index<> matrix_shape) const
+
+inlinevirtual
+
+ +

Implements dr::shp::matrix_partition.

+ +
+
+ +

◆ tile_rank()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::size_t dr::shp::block_cyclic::tile_rank (dr::index<> matrix_shape,
dr::index<> tile_id 
) const
+
+inlinevirtual
+
+ +

Implements dr::shp::matrix_partition.

+ +
+
+ +

◆ tile_shape()

+ +
+
+ + + + + +
+ + + + + + + + +
dr::index dr::shp::block_cyclic::tile_shape (dr::index<> matrix_shape) const
+
+inlinevirtual
+
+ +

Implements dr::shp::matrix_partition.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/containers/matrix_partition.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1block__cyclic__coll__graph.map b/doxygen/classdr_1_1shp_1_1block__cyclic__coll__graph.map new file mode 100644 index 0000000000..714e5df746 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1block__cyclic__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/classdr_1_1shp_1_1block__cyclic__coll__graph.md5 b/doxygen/classdr_1_1shp_1_1block__cyclic__coll__graph.md5 new file mode 100644 index 0000000000..86452a4ce0 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1block__cyclic__coll__graph.md5 @@ -0,0 +1 @@ +a37c0a4433a9d6ab0d7b3d94aa0b1399 \ No newline at end of file diff --git a/doxygen/classdr_1_1shp_1_1block__cyclic__coll__graph.png b/doxygen/classdr_1_1shp_1_1block__cyclic__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..6888ad7aeb654922997cdf81d70aac60673fa95d GIT binary patch literal 4023 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 LY4j(`J^udyOS1B> literal 0 HcmV?d00001 diff --git a/doxygen/classdr_1_1shp_1_1block__cyclic__inherit__graph.map b/doxygen/classdr_1_1shp_1_1block__cyclic__inherit__graph.map new file mode 100644 index 0000000000..714e5df746 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1block__cyclic__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/classdr_1_1shp_1_1block__cyclic__inherit__graph.md5 b/doxygen/classdr_1_1shp_1_1block__cyclic__inherit__graph.md5 new file mode 100644 index 0000000000..86452a4ce0 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1block__cyclic__inherit__graph.md5 @@ -0,0 +1 @@ +a37c0a4433a9d6ab0d7b3d94aa0b1399 \ No newline at end of file diff --git a/doxygen/classdr_1_1shp_1_1block__cyclic__inherit__graph.png b/doxygen/classdr_1_1shp_1_1block__cyclic__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..6888ad7aeb654922997cdf81d70aac60673fa95d GIT binary patch literal 4023 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 LY4j(`J^udyOS1B> literal 0 HcmV?d00001 diff --git a/doxygen/classdr_1_1shp_1_1buffered__allocator-members.html b/doxygen/classdr_1_1shp_1_1buffered__allocator-members.html new file mode 100644 index 0000000000..1f03559409 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1buffered__allocator-members.html @@ -0,0 +1,100 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::shp::buffered_allocator< Allocator > Member List
+
+
+ +

This is the complete list of members for dr::shp::buffered_allocator< Allocator >, including all inherited members.

+ + + + + + + + + + + + + +
allocate(std::size_t size) (defined in dr::shp::buffered_allocator< Allocator >)dr::shp::buffered_allocator< Allocator >inline
buffered_allocator(const Allocator &alloc, std::size_t buffer_size, std::size_t n_buffers) (defined in dr::shp::buffered_allocator< Allocator >)dr::shp::buffered_allocator< Allocator >inline
const_pointer typedef (defined in dr::shp::buffered_allocator< Allocator >)dr::shp::buffered_allocator< Allocator >
deallocate(pointer ptr, std::size_t n) (defined in dr::shp::buffered_allocator< Allocator >)dr::shp::buffered_allocator< Allocator >inline
difference_type typedef (defined in dr::shp::buffered_allocator< Allocator >)dr::shp::buffered_allocator< Allocator >
is_always_equal typedef (defined in dr::shp::buffered_allocator< Allocator >)dr::shp::buffered_allocator< Allocator >
operator!=(const buffered_allocator &) const =default (defined in dr::shp::buffered_allocator< Allocator >)dr::shp::buffered_allocator< Allocator >
operator==(const buffered_allocator &) const =default (defined in dr::shp::buffered_allocator< Allocator >)dr::shp::buffered_allocator< Allocator >
pointer typedef (defined in dr::shp::buffered_allocator< Allocator >)dr::shp::buffered_allocator< Allocator >
size_type typedef (defined in dr::shp::buffered_allocator< Allocator >)dr::shp::buffered_allocator< Allocator >
value_type typedef (defined in dr::shp::buffered_allocator< Allocator >)dr::shp::buffered_allocator< Allocator >
~buffered_allocator() (defined in dr::shp::buffered_allocator< Allocator >)dr::shp::buffered_allocator< Allocator >inline
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1buffered__allocator.html b/doxygen/classdr_1_1shp_1_1buffered__allocator.html new file mode 100644 index 0000000000..053fb872ce --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1buffered__allocator.html @@ -0,0 +1,132 @@ + + + + + + + +Distributed Ranges: dr::shp::buffered_allocator< Allocator > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::shp::buffered_allocator< Allocator > Class Template Reference
+
+
+ + + + + + + + + + + + + + +

+Public Types

+using value_type = typename std::allocator_traits< Allocator >::value_type
 
+using pointer = typename std::allocator_traits< Allocator >::pointer
 
+using const_pointer = typename std::allocator_traits< Allocator >::const_pointer
 
+using size_type = typename std::allocator_traits< Allocator >::size_type
 
+using difference_type = typename std::allocator_traits< Allocator >::difference_type
 
+using is_always_equal = std::false_type
 
+ + + + + + + + + + + +

+Public Member Functions

buffered_allocator (const Allocator &alloc, std::size_t buffer_size, std::size_t n_buffers)
 
+pointer allocate (std::size_t size)
 
+void deallocate (pointer ptr, std::size_t n)
 
+bool operator== (const buffered_allocator &) const =default
 
+bool operator!= (const buffered_allocator &) const =default
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/allocators.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1csr__matrix__view-members.html b/doxygen/classdr_1_1shp_1_1csr__matrix__view-members.html new file mode 100644 index 0000000000..132cff501b --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1csr__matrix__view-members.html @@ -0,0 +1,109 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::shp::csr_matrix_view< T, I, TIter, IIter > Member List
+
+
+ +

This is the complete list of members for dr::shp::csr_matrix_view< T, I, TIter, IIter >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + +
begin() const (defined in dr::shp::csr_matrix_view< T, I, TIter, IIter >)dr::shp::csr_matrix_view< T, I, TIter, IIter >inline
colind_data() const (defined in dr::shp::csr_matrix_view< T, I, TIter, IIter >)dr::shp::csr_matrix_view< T, I, TIter, IIter >inline
csr_matrix_view(TIter values, IIter rowptr, IIter colind, key_type shape, size_type nnz, size_type rank) (defined in dr::shp::csr_matrix_view< T, I, TIter, IIter >)dr::shp::csr_matrix_view< T, I, TIter, IIter >inline
csr_matrix_view(TIter values, IIter rowptr, IIter colind, key_type shape, size_type nnz, size_type rank, key_type idx_offset) (defined in dr::shp::csr_matrix_view< T, I, TIter, IIter >)dr::shp::csr_matrix_view< T, I, TIter, IIter >inline
difference_type typedef (defined in dr::shp::csr_matrix_view< T, I, TIter, IIter >)dr::shp::csr_matrix_view< T, I, TIter, IIter >
end() const (defined in dr::shp::csr_matrix_view< T, I, TIter, IIter >)dr::shp::csr_matrix_view< T, I, TIter, IIter >inline
index_type typedef (defined in dr::shp::csr_matrix_view< T, I, TIter, IIter >)dr::shp::csr_matrix_view< T, I, TIter, IIter >
iterator typedef (defined in dr::shp::csr_matrix_view< T, I, TIter, IIter >)dr::shp::csr_matrix_view< T, I, TIter, IIter >
key_type typedef (defined in dr::shp::csr_matrix_view< T, I, TIter, IIter >)dr::shp::csr_matrix_view< T, I, TIter, IIter >
map_type typedef (defined in dr::shp::csr_matrix_view< T, I, TIter, IIter >)dr::shp::csr_matrix_view< T, I, TIter, IIter >
rank() const (defined in dr::shp::csr_matrix_view< T, I, TIter, IIter >)dr::shp::csr_matrix_view< T, I, TIter, IIter >inline
reference typedef (defined in dr::shp::csr_matrix_view< T, I, TIter, IIter >)dr::shp::csr_matrix_view< T, I, TIter, IIter >
row(I row_index) const (defined in dr::shp::csr_matrix_view< T, I, TIter, IIter >)dr::shp::csr_matrix_view< T, I, TIter, IIter >inline
rowptr_data() const (defined in dr::shp::csr_matrix_view< T, I, TIter, IIter >)dr::shp::csr_matrix_view< T, I, TIter, IIter >inline
scalar_reference typedef (defined in dr::shp::csr_matrix_view< T, I, TIter, IIter >)dr::shp::csr_matrix_view< T, I, TIter, IIter >
scalar_type typedef (defined in dr::shp::csr_matrix_view< T, I, TIter, IIter >)dr::shp::csr_matrix_view< T, I, TIter, IIter >
shape() const noexcept (defined in dr::shp::csr_matrix_view< T, I, TIter, IIter >)dr::shp::csr_matrix_view< T, I, TIter, IIter >inline
size() const noexcept (defined in dr::shp::csr_matrix_view< T, I, TIter, IIter >)dr::shp::csr_matrix_view< T, I, TIter, IIter >inline
size_type typedef (defined in dr::shp::csr_matrix_view< T, I, TIter, IIter >)dr::shp::csr_matrix_view< T, I, TIter, IIter >
submatrix(key_type rows, key_type columns) const (defined in dr::shp::csr_matrix_view< T, I, TIter, IIter >)dr::shp::csr_matrix_view< T, I, TIter, IIter >inline
values_data() const (defined in dr::shp::csr_matrix_view< T, I, TIter, IIter >)dr::shp::csr_matrix_view< T, I, TIter, IIter >inline
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1csr__matrix__view.html b/doxygen/classdr_1_1shp_1_1csr__matrix__view.html new file mode 100644 index 0000000000..6165acd5c7 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1csr__matrix__view.html @@ -0,0 +1,180 @@ + + + + + + + +Distributed Ranges: dr::shp::csr_matrix_view< T, I, TIter, IIter > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::shp::csr_matrix_view< T, I, TIter, IIter > Class Template Reference
+
+
+
+Inheritance diagram for dr::shp::csr_matrix_view< T, I, TIter, IIter >:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for dr::shp::csr_matrix_view< T, I, TIter, IIter >:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + +

+Public Types

+using size_type = std::size_t
 
+using difference_type = std::ptrdiff_t
 
+using scalar_reference = std::iter_reference_t< TIter >
 
+using reference = dr::shp::matrix_ref< T, I, scalar_reference >
 
+using scalar_type = T
 
+using index_type = I
 
+using key_type = dr::index< I >
 
+using map_type = T
 
+using iterator = csr_matrix_view_iterator< T, I, TIter, IIter >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

csr_matrix_view (TIter values, IIter rowptr, IIter colind, key_type shape, size_type nnz, size_type rank)
 
csr_matrix_view (TIter values, IIter rowptr, IIter colind, key_type shape, size_type nnz, size_type rank, key_type idx_offset)
 
+key_type shape () const noexcept
 
+size_type size () const noexcept
 
+std::size_t rank () const
 
+iterator begin () const
 
+iterator end () const
 
+auto row (I row_index) const
 
+auto submatrix (key_type rows, key_type columns) const
 
+auto values_data () const
 
+auto rowptr_data () const
 
+auto colind_data () const
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/views/csr_matrix_view.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1csr__matrix__view__accessor-members.html b/doxygen/classdr_1_1shp_1_1csr__matrix__view__accessor-members.html new file mode 100644 index 0000000000..e41f978450 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1csr__matrix__view__accessor-members.html @@ -0,0 +1,113 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter > Member List
+
+
+ +

This is the complete list of members for dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
const_iterator_accessor typedef (defined in dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >)dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >
csr_matrix_view_accessor() noexcept=default (defined in dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >)dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >
csr_matrix_view_accessor(const csr_matrix_view_accessor &) noexcept=default (defined in dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >)dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >
csr_matrix_view_accessor(TIter values, IIter rowptr, IIter colind, size_type idx, index_type row, size_type row_dim) noexcept (defined in dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >)dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >inline
csr_matrix_view_accessor(TIter values, IIter rowptr, IIter colind, size_type idx, index_type row, size_type row_dim, key_type idx_offset) noexcept (defined in dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >)dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >inline
difference_type typedef (defined in dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >)dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >
fast_backward_row() noexcept (defined in dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >)dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >inline
fast_forward_row() noexcept (defined in dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >)dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >inline
index_type typedef (defined in dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >)dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >
iterator_accessor typedef (defined in dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >)dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >
iterator_category typedef (defined in dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >)dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >
key_type typedef (defined in dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >)dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >
nonconst_iterator_accessor typedef (defined in dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >)dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >
operator*() const noexcept (defined in dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >)dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >inline
operator+=(difference_type offset) noexcept (defined in dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >)dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >inline
operator-(const iterator_accessor &other) const noexcept (defined in dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >)dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >inline
operator<(const iterator_accessor &other) const noexcept (defined in dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >)dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >inline
operator=(const csr_matrix_view_accessor &) noexcept=default (defined in dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >)dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >
operator==(const iterator_accessor &other) const noexcept (defined in dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >)dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >inline
reference typedef (defined in dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >)dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >
scalar_reference typedef (defined in dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >)dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >
scalar_type typedef (defined in dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >)dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >
size_type typedef (defined in dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >)dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >
value_type typedef (defined in dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >)dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >
~csr_matrix_view_accessor() noexcept=default (defined in dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >)dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1csr__matrix__view__accessor.html b/doxygen/classdr_1_1shp_1_1csr__matrix__view__accessor.html new file mode 100644 index 0000000000..3d1f48e84a --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1csr__matrix__view__accessor.html @@ -0,0 +1,168 @@ + + + + + + + +Distributed Ranges: dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::shp::csr_matrix_view_accessor< T, I, TIter, IIter > Class Template Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

+using size_type = std::size_t
 
+using difference_type = std::ptrdiff_t
 
+using scalar_type = std::iter_value_t< TIter >
 
+using scalar_reference = std::iter_reference_t< TIter >
 
+using index_type = I
 
+using value_type = dr::shp::matrix_entry< scalar_type, I >
 
+using reference = dr::shp::matrix_ref< T, I, scalar_reference >
 
+using iterator_category = std::random_access_iterator_tag
 
+using iterator_accessor = csr_matrix_view_accessor
 
+using const_iterator_accessor = iterator_accessor
 
+using nonconst_iterator_accessor = iterator_accessor
 
+using key_type = dr::index< I >
 
+ + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+constexpr csr_matrix_view_accessor (const csr_matrix_view_accessor &) noexcept=default
 
+constexpr csr_matrix_view_accessoroperator= (const csr_matrix_view_accessor &) noexcept=default
 
+constexpr csr_matrix_view_accessor (TIter values, IIter rowptr, IIter colind, size_type idx, index_type row, size_type row_dim) noexcept
 
+constexpr csr_matrix_view_accessor (TIter values, IIter rowptr, IIter colind, size_type idx, index_type row, size_type row_dim, key_type idx_offset) noexcept
 
+void fast_forward_row () noexcept
 
+void fast_backward_row () noexcept
 
+constexpr csr_matrix_view_accessoroperator+= (difference_type offset) noexcept
 
+constexpr bool operator== (const iterator_accessor &other) const noexcept
 
+constexpr difference_type operator- (const iterator_accessor &other) const noexcept
 
+constexpr bool operator< (const iterator_accessor &other) const noexcept
 
+constexpr reference operator* () const noexcept
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/views/csr_matrix_view.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1csr__matrix__view__coll__graph.map b/doxygen/classdr_1_1shp_1_1csr__matrix__view__coll__graph.map new file mode 100644 index 0000000000..7aa42f08fc --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1csr__matrix__view__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/classdr_1_1shp_1_1csr__matrix__view__coll__graph.md5 b/doxygen/classdr_1_1shp_1_1csr__matrix__view__coll__graph.md5 new file mode 100644 index 0000000000..a9cdfb0757 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1csr__matrix__view__coll__graph.md5 @@ -0,0 +1 @@ +40226492c709cafb69462030b3a909b4 \ No newline at end of file diff --git a/doxygen/classdr_1_1shp_1_1csr__matrix__view__coll__graph.png b/doxygen/classdr_1_1shp_1_1csr__matrix__view__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..d0bcb0badc500a4a790fbc23b92a6d4a2573aa04 GIT binary patch literal 6983 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 V50^`N@SicnBRN&s3Tcyo{{tPnXwCot literal 0 HcmV?d00001 diff --git a/doxygen/classdr_1_1shp_1_1csr__matrix__view__inherit__graph.map b/doxygen/classdr_1_1shp_1_1csr__matrix__view__inherit__graph.map new file mode 100644 index 0000000000..7aa42f08fc --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1csr__matrix__view__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/classdr_1_1shp_1_1csr__matrix__view__inherit__graph.md5 b/doxygen/classdr_1_1shp_1_1csr__matrix__view__inherit__graph.md5 new file mode 100644 index 0000000000..a9cdfb0757 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1csr__matrix__view__inherit__graph.md5 @@ -0,0 +1 @@ +40226492c709cafb69462030b3a909b4 \ No newline at end of file diff --git a/doxygen/classdr_1_1shp_1_1csr__matrix__view__inherit__graph.png b/doxygen/classdr_1_1shp_1_1csr__matrix__view__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..d0bcb0badc500a4a790fbc23b92a6d4a2573aa04 GIT binary patch literal 6983 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 V50^`N@SicnBRN&s3Tcyo{{tPnXwCot literal 0 HcmV?d00001 diff --git a/doxygen/classdr_1_1shp_1_1dense__matrix-members.html b/doxygen/classdr_1_1shp_1_1dense__matrix-members.html new file mode 100644 index 0000000000..bf55664265 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1dense__matrix-members.html @@ -0,0 +1,114 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::shp::dense_matrix< T, Allocator > Member List
+
+
+ +

This is the complete list of members for dr::shp::dense_matrix< T, Allocator >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
allocator_type typedef (defined in dr::shp::dense_matrix< T, Allocator >)dr::shp::dense_matrix< T, Allocator >
begin() const (defined in dr::shp::dense_matrix< T, Allocator >)dr::shp::dense_matrix< T, Allocator >inline
column(size_type column_index) const (defined in dr::shp::dense_matrix< T, Allocator >)dr::shp::dense_matrix< T, Allocator >inline
data() const (defined in dr::shp::dense_matrix< T, Allocator >)dr::shp::dense_matrix< T, Allocator >inline
dense_matrix(key_type shape) (defined in dr::shp::dense_matrix< T, Allocator >)dr::shp::dense_matrix< T, Allocator >inline
dense_matrix(key_type shape, std::size_t ld) (defined in dr::shp::dense_matrix< T, Allocator >)dr::shp::dense_matrix< T, Allocator >inline
dense_matrix(key_type shape, std::size_t ld, const Allocator &alloc) (defined in dr::shp::dense_matrix< T, Allocator >)dr::shp::dense_matrix< T, Allocator >inline
dense_matrix(dense_matrix &&other) (defined in dr::shp::dense_matrix< T, Allocator >)dr::shp::dense_matrix< T, Allocator >inline
dense_matrix(const dense_matrix &other)=delete (defined in dr::shp::dense_matrix< T, Allocator >)dr::shp::dense_matrix< T, Allocator >
difference_type typedef (defined in dr::shp::dense_matrix< T, Allocator >)dr::shp::dense_matrix< T, Allocator >
end() const (defined in dr::shp::dense_matrix< T, Allocator >)dr::shp::dense_matrix< T, Allocator >inline
iterator typedef (defined in dr::shp::dense_matrix< T, Allocator >)dr::shp::dense_matrix< T, Allocator >
key_type typedef (defined in dr::shp::dense_matrix< T, Allocator >)dr::shp::dense_matrix< T, Allocator >
ld() const (defined in dr::shp::dense_matrix< T, Allocator >)dr::shp::dense_matrix< T, Allocator >inline
map_type typedef (defined in dr::shp::dense_matrix< T, Allocator >)dr::shp::dense_matrix< T, Allocator >
operator=(dense_matrix &&other) (defined in dr::shp::dense_matrix< T, Allocator >)dr::shp::dense_matrix< T, Allocator >inline
operator=(const dense_matrix &other)=delete (defined in dr::shp::dense_matrix< T, Allocator >)dr::shp::dense_matrix< T, Allocator >
operator[](key_type idx) const (defined in dr::shp::dense_matrix< T, Allocator >)dr::shp::dense_matrix< T, Allocator >inline
reference typedef (defined in dr::shp::dense_matrix< T, Allocator >)dr::shp::dense_matrix< T, Allocator >
row(size_type row_index) const (defined in dr::shp::dense_matrix< T, Allocator >)dr::shp::dense_matrix< T, Allocator >inline
scalar_pointer typedef (defined in dr::shp::dense_matrix< T, Allocator >)dr::shp::dense_matrix< T, Allocator >
scalar_reference typedef (defined in dr::shp::dense_matrix< T, Allocator >)dr::shp::dense_matrix< T, Allocator >
shape() const noexcept (defined in dr::shp::dense_matrix< T, Allocator >)dr::shp::dense_matrix< T, Allocator >inline
size() const noexcept (defined in dr::shp::dense_matrix< T, Allocator >)dr::shp::dense_matrix< T, Allocator >inline
size_type typedef (defined in dr::shp::dense_matrix< T, Allocator >)dr::shp::dense_matrix< T, Allocator >
~dense_matrix() (defined in dr::shp::dense_matrix< T, Allocator >)dr::shp::dense_matrix< T, Allocator >inline
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1dense__matrix.html b/doxygen/classdr_1_1shp_1_1dense__matrix.html new file mode 100644 index 0000000000..5924555c5c --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1dense__matrix.html @@ -0,0 +1,174 @@ + + + + + + + +Distributed Ranges: dr::shp::dense_matrix< T, Allocator > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::shp::dense_matrix< T, Allocator > Class Template Reference
+
+
+ + + + + + + + + + + + + + + + + + + + +

+Public Types

+using size_type = std::size_t
 
+using difference_type = std::ptrdiff_t
 
+using allocator_type = Allocator
 
+using scalar_pointer = typename std::allocator_traits< Allocator >::pointer
 
+using scalar_reference = std::iter_reference_t< scalar_pointer >
 
+using reference = dr::shp::matrix_ref< T, std::size_t, scalar_reference >
 
+using key_type = dr::index<>
 
+using map_type = T
 
+using iterator = dense_matrix_iterator< T, scalar_pointer >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

dense_matrix (key_type shape)
 
dense_matrix (key_type shape, std::size_t ld)
 
dense_matrix (key_type shape, std::size_t ld, const Allocator &alloc)
 
dense_matrix (dense_matrix &&other)
 
+dense_matrixoperator= (dense_matrix &&other)
 
dense_matrix (const dense_matrix &other)=delete
 
+dense_matrixoperator= (const dense_matrix &other)=delete
 
+key_type shape () const noexcept
 
+size_type size () const noexcept
 
+scalar_reference operator[] (key_type idx) const
 
+iterator begin () const
 
+iterator end () const
 
+auto row (size_type row_index) const
 
+auto column (size_type column_index) const
 
+scalar_pointer data () const
 
+size_type ld () const
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/containers/sequential/dense_matrix.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1dense__matrix__accessor-members.html b/doxygen/classdr_1_1shp_1_1dense__matrix__accessor-members.html new file mode 100644 index 0000000000..579814344f --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1dense__matrix__accessor-members.html @@ -0,0 +1,111 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::shp::dense_matrix_accessor< T, Iter > Member List
+
+
+ +

This is the complete list of members for dr::shp::dense_matrix_accessor< T, Iter >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + +
const_iterator_accessor typedef (defined in dr::shp::dense_matrix_accessor< T, Iter >)dr::shp::dense_matrix_accessor< T, Iter >
data() const noexcept (defined in dr::shp::dense_matrix_accessor< T, Iter >)dr::shp::dense_matrix_accessor< T, Iter >inline
dense_matrix_accessor() noexcept=default (defined in dr::shp::dense_matrix_accessor< T, Iter >)dr::shp::dense_matrix_accessor< T, Iter >
dense_matrix_accessor(const dense_matrix_accessor &) noexcept=default (defined in dr::shp::dense_matrix_accessor< T, Iter >)dr::shp::dense_matrix_accessor< T, Iter >
dense_matrix_accessor(Iter data, key_type idx, key_type matrix_shape, size_type ld) noexcept (defined in dr::shp::dense_matrix_accessor< T, Iter >)dr::shp::dense_matrix_accessor< T, Iter >inline
dense_matrix_accessor(Iter data, key_type idx, key_type idx_offset, key_type matrix_shape, size_type ld) noexcept (defined in dr::shp::dense_matrix_accessor< T, Iter >)dr::shp::dense_matrix_accessor< T, Iter >inline
difference_type typedef (defined in dr::shp::dense_matrix_accessor< T, Iter >)dr::shp::dense_matrix_accessor< T, Iter >
iterator_accessor typedef (defined in dr::shp::dense_matrix_accessor< T, Iter >)dr::shp::dense_matrix_accessor< T, Iter >
iterator_category typedef (defined in dr::shp::dense_matrix_accessor< T, Iter >)dr::shp::dense_matrix_accessor< T, Iter >
key_type typedef (defined in dr::shp::dense_matrix_accessor< T, Iter >)dr::shp::dense_matrix_accessor< T, Iter >
nonconst_iterator_accessor typedef (defined in dr::shp::dense_matrix_accessor< T, Iter >)dr::shp::dense_matrix_accessor< T, Iter >
operator*() const noexcept (defined in dr::shp::dense_matrix_accessor< T, Iter >)dr::shp::dense_matrix_accessor< T, Iter >inline
operator+=(difference_type offset) noexcept (defined in dr::shp::dense_matrix_accessor< T, Iter >)dr::shp::dense_matrix_accessor< T, Iter >inline
operator-(const iterator_accessor &other) const noexcept (defined in dr::shp::dense_matrix_accessor< T, Iter >)dr::shp::dense_matrix_accessor< T, Iter >inline
operator<(const iterator_accessor &other) const noexcept (defined in dr::shp::dense_matrix_accessor< T, Iter >)dr::shp::dense_matrix_accessor< T, Iter >inline
operator=(const dense_matrix_accessor &) noexcept=default (defined in dr::shp::dense_matrix_accessor< T, Iter >)dr::shp::dense_matrix_accessor< T, Iter >
operator==(const iterator_accessor &other) const noexcept (defined in dr::shp::dense_matrix_accessor< T, Iter >)dr::shp::dense_matrix_accessor< T, Iter >inline
reference typedef (defined in dr::shp::dense_matrix_accessor< T, Iter >)dr::shp::dense_matrix_accessor< T, Iter >
scalar_reference typedef (defined in dr::shp::dense_matrix_accessor< T, Iter >)dr::shp::dense_matrix_accessor< T, Iter >
scalar_type typedef (defined in dr::shp::dense_matrix_accessor< T, Iter >)dr::shp::dense_matrix_accessor< T, Iter >
size_type typedef (defined in dr::shp::dense_matrix_accessor< T, Iter >)dr::shp::dense_matrix_accessor< T, Iter >
value_type typedef (defined in dr::shp::dense_matrix_accessor< T, Iter >)dr::shp::dense_matrix_accessor< T, Iter >
~dense_matrix_accessor() noexcept=default (defined in dr::shp::dense_matrix_accessor< T, Iter >)dr::shp::dense_matrix_accessor< T, Iter >
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1dense__matrix__accessor.html b/doxygen/classdr_1_1shp_1_1dense__matrix__accessor.html new file mode 100644 index 0000000000..84dba92428 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1dense__matrix__accessor.html @@ -0,0 +1,162 @@ + + + + + + + +Distributed Ranges: dr::shp::dense_matrix_accessor< T, Iter > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::shp::dense_matrix_accessor< T, Iter > Class Template Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

+using size_type = std::size_t
 
+using difference_type = std::ptrdiff_t
 
+using scalar_type = std::iter_value_t< Iter >
 
+using scalar_reference = std::iter_reference_t< Iter >
 
+using value_type = dr::shp::matrix_entry< scalar_type, std::size_t >
 
+using reference = dr::shp::matrix_ref< T, std::size_t, scalar_reference >
 
+using iterator_category = std::random_access_iterator_tag
 
+using iterator_accessor = dense_matrix_accessor
 
+using const_iterator_accessor = iterator_accessor
 
+using nonconst_iterator_accessor = iterator_accessor
 
+using key_type = dr::index<>
 
+ + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+constexpr dense_matrix_accessor (const dense_matrix_accessor &) noexcept=default
 
+constexpr dense_matrix_accessoroperator= (const dense_matrix_accessor &) noexcept=default
 
+constexpr dense_matrix_accessor (Iter data, key_type idx, key_type matrix_shape, size_type ld) noexcept
 
+constexpr dense_matrix_accessor (Iter data, key_type idx, key_type idx_offset, key_type matrix_shape, size_type ld) noexcept
 
+constexpr dense_matrix_accessoroperator+= (difference_type offset) noexcept
 
+constexpr bool operator== (const iterator_accessor &other) const noexcept
 
+constexpr difference_type operator- (const iterator_accessor &other) const noexcept
 
+constexpr bool operator< (const iterator_accessor &other) const noexcept
 
+constexpr reference operator* () const noexcept
 
+Iter data () const noexcept
 
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1dense__matrix__column__accessor-members.html b/doxygen/classdr_1_1shp_1_1dense__matrix__column__accessor-members.html new file mode 100644 index 0000000000..1b0d33fc71 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1dense__matrix__column__accessor-members.html @@ -0,0 +1,109 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::shp::dense_matrix_column_accessor< T, Iter > Member List
+
+
+ +

This is the complete list of members for dr::shp::dense_matrix_column_accessor< T, Iter >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + +
const_iterator_accessor typedef (defined in dr::shp::dense_matrix_column_accessor< T, Iter >)dr::shp::dense_matrix_column_accessor< T, Iter >
dense_matrix_column_accessor() noexcept=default (defined in dr::shp::dense_matrix_column_accessor< T, Iter >)dr::shp::dense_matrix_column_accessor< T, Iter >
dense_matrix_column_accessor(const dense_matrix_column_accessor &) noexcept=default (defined in dr::shp::dense_matrix_column_accessor< T, Iter >)dr::shp::dense_matrix_column_accessor< T, Iter >
dense_matrix_column_accessor(Iter data, std::size_t i, std::size_t j, std::size_t ld) noexcept (defined in dr::shp::dense_matrix_column_accessor< T, Iter >)dr::shp::dense_matrix_column_accessor< T, Iter >inline
difference_type typedef (defined in dr::shp::dense_matrix_column_accessor< T, Iter >)dr::shp::dense_matrix_column_accessor< T, Iter >
iterator_accessor typedef (defined in dr::shp::dense_matrix_column_accessor< T, Iter >)dr::shp::dense_matrix_column_accessor< T, Iter >
iterator_category typedef (defined in dr::shp::dense_matrix_column_accessor< T, Iter >)dr::shp::dense_matrix_column_accessor< T, Iter >
key_type typedef (defined in dr::shp::dense_matrix_column_accessor< T, Iter >)dr::shp::dense_matrix_column_accessor< T, Iter >
nonconst_iterator_accessor typedef (defined in dr::shp::dense_matrix_column_accessor< T, Iter >)dr::shp::dense_matrix_column_accessor< T, Iter >
operator*() const noexcept (defined in dr::shp::dense_matrix_column_accessor< T, Iter >)dr::shp::dense_matrix_column_accessor< T, Iter >inline
operator+=(difference_type offset) noexcept (defined in dr::shp::dense_matrix_column_accessor< T, Iter >)dr::shp::dense_matrix_column_accessor< T, Iter >inline
operator-(const iterator_accessor &other) const noexcept (defined in dr::shp::dense_matrix_column_accessor< T, Iter >)dr::shp::dense_matrix_column_accessor< T, Iter >inline
operator<(const iterator_accessor &other) const noexcept (defined in dr::shp::dense_matrix_column_accessor< T, Iter >)dr::shp::dense_matrix_column_accessor< T, Iter >inline
operator=(const dense_matrix_column_accessor &) noexcept=default (defined in dr::shp::dense_matrix_column_accessor< T, Iter >)dr::shp::dense_matrix_column_accessor< T, Iter >
operator==(const iterator_accessor &other) const noexcept (defined in dr::shp::dense_matrix_column_accessor< T, Iter >)dr::shp::dense_matrix_column_accessor< T, Iter >inline
reference typedef (defined in dr::shp::dense_matrix_column_accessor< T, Iter >)dr::shp::dense_matrix_column_accessor< T, Iter >
scalar_reference typedef (defined in dr::shp::dense_matrix_column_accessor< T, Iter >)dr::shp::dense_matrix_column_accessor< T, Iter >
scalar_value_type typedef (defined in dr::shp::dense_matrix_column_accessor< T, Iter >)dr::shp::dense_matrix_column_accessor< T, Iter >
size_type typedef (defined in dr::shp::dense_matrix_column_accessor< T, Iter >)dr::shp::dense_matrix_column_accessor< T, Iter >
value_type typedef (defined in dr::shp::dense_matrix_column_accessor< T, Iter >)dr::shp::dense_matrix_column_accessor< T, Iter >
~dense_matrix_column_accessor() noexcept=default (defined in dr::shp::dense_matrix_column_accessor< T, Iter >)dr::shp::dense_matrix_column_accessor< T, Iter >
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1dense__matrix__column__accessor.html b/doxygen/classdr_1_1shp_1_1dense__matrix__column__accessor.html new file mode 100644 index 0000000000..1ac1f2221e --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1dense__matrix__column__accessor.html @@ -0,0 +1,156 @@ + + + + + + + +Distributed Ranges: dr::shp::dense_matrix_column_accessor< T, Iter > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::shp::dense_matrix_column_accessor< T, Iter > Class Template Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

+using size_type = std::size_t
 
+using difference_type = std::ptrdiff_t
 
+using scalar_value_type = std::iter_value_t< Iter >
 
+using scalar_reference = std::iter_reference_t< Iter >
 
+using value_type = dr::shp::matrix_entry< scalar_value_type, std::size_t >
 
+using reference = dr::shp::matrix_ref< T, std::size_t, scalar_reference >
 
+using iterator_category = std::random_access_iterator_tag
 
+using iterator_accessor = dense_matrix_column_accessor
 
+using const_iterator_accessor = iterator_accessor
 
+using nonconst_iterator_accessor = iterator_accessor
 
+using key_type = dr::index<>
 
+ + + + + + + + + + + + + + + + + +

+Public Member Functions

+constexpr dense_matrix_column_accessor (const dense_matrix_column_accessor &) noexcept=default
 
+constexpr dense_matrix_column_accessoroperator= (const dense_matrix_column_accessor &) noexcept=default
 
+constexpr dense_matrix_column_accessor (Iter data, std::size_t i, std::size_t j, std::size_t ld) noexcept
 
+constexpr dense_matrix_column_accessoroperator+= (difference_type offset) noexcept
 
+constexpr bool operator== (const iterator_accessor &other) const noexcept
 
+constexpr difference_type operator- (const iterator_accessor &other) const noexcept
 
+constexpr bool operator< (const iterator_accessor &other) const noexcept
 
+constexpr reference operator* () const noexcept
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/views/dense_column_view.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1dense__matrix__column__view-members.html b/doxygen/classdr_1_1shp_1_1dense__matrix__column__view-members.html new file mode 100644 index 0000000000..de8fbfae28 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1dense__matrix__column__view-members.html @@ -0,0 +1,103 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::shp::dense_matrix_column_view< T, Iter > Member List
+
+
+ +

This is the complete list of members for dr::shp::dense_matrix_column_view< T, Iter >, including all inherited members.

+ + + + + + + + + + + + + + + + +
begin() const (defined in dr::shp::dense_matrix_column_view< T, Iter >)dr::shp::dense_matrix_column_view< T, Iter >inline
column_idx_ (defined in dr::shp::dense_matrix_column_view< T, Iter >)dr::shp::dense_matrix_column_view< T, Iter >
data_ (defined in dr::shp::dense_matrix_column_view< T, Iter >)dr::shp::dense_matrix_column_view< T, Iter >
dense_matrix_column_view(Iter data, size_type column_idx, size_type size, size_type ld) (defined in dr::shp::dense_matrix_column_view< T, Iter >)dr::shp::dense_matrix_column_view< T, Iter >inline
difference_type typedef (defined in dr::shp::dense_matrix_column_view< T, Iter >)dr::shp::dense_matrix_column_view< T, Iter >
end() const (defined in dr::shp::dense_matrix_column_view< T, Iter >)dr::shp::dense_matrix_column_view< T, Iter >inline
iterator typedef (defined in dr::shp::dense_matrix_column_view< T, Iter >)dr::shp::dense_matrix_column_view< T, Iter >
key_type typedef (defined in dr::shp::dense_matrix_column_view< T, Iter >)dr::shp::dense_matrix_column_view< T, Iter >
ld_ (defined in dr::shp::dense_matrix_column_view< T, Iter >)dr::shp::dense_matrix_column_view< T, Iter >
map_type typedef (defined in dr::shp::dense_matrix_column_view< T, Iter >)dr::shp::dense_matrix_column_view< T, Iter >
operator[](size_type idx) (defined in dr::shp::dense_matrix_column_view< T, Iter >)dr::shp::dense_matrix_column_view< T, Iter >inline
scalar_reference typedef (defined in dr::shp::dense_matrix_column_view< T, Iter >)dr::shp::dense_matrix_column_view< T, Iter >
size() const noexcept (defined in dr::shp::dense_matrix_column_view< T, Iter >)dr::shp::dense_matrix_column_view< T, Iter >inline
size_ (defined in dr::shp::dense_matrix_column_view< T, Iter >)dr::shp::dense_matrix_column_view< T, Iter >
size_type typedef (defined in dr::shp::dense_matrix_column_view< T, Iter >)dr::shp::dense_matrix_column_view< T, Iter >
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1dense__matrix__column__view.html b/doxygen/classdr_1_1shp_1_1dense__matrix__column__view.html new file mode 100644 index 0000000000..91119f542f --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1dense__matrix__column__view.html @@ -0,0 +1,157 @@ + + + + + + + +Distributed Ranges: dr::shp::dense_matrix_column_view< T, Iter > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::shp::dense_matrix_column_view< T, Iter > Class Template Reference
+
+
+
+Collaboration diagram for dr::shp::dense_matrix_column_view< T, Iter >:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + +

+Public Types

+using size_type = std::size_t
 
+using difference_type = std::ptrdiff_t
 
+using scalar_reference = std::iter_reference_t< Iter >
 
+using key_type = dr::index<>
 
+using map_type = T
 
+using iterator = dense_matrix_column_iterator< T, Iter >
 
+ + + + + + + + + + + +

+Public Member Functions

dense_matrix_column_view (Iter data, size_type column_idx, size_type size, size_type ld)
 
+scalar_reference operator[] (size_type idx)
 
+iterator begin () const
 
+iterator end () const
 
+size_type size () const noexcept
 
+ + + + + + + + + +

+Public Attributes

+Iter data_
 
+size_type column_idx_
 
+size_type size_
 
+size_type ld_
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/views/dense_column_view.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1dense__matrix__column__view__coll__graph.map b/doxygen/classdr_1_1shp_1_1dense__matrix__column__view__coll__graph.map new file mode 100644 index 0000000000..24de4bcec4 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1dense__matrix__column__view__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/classdr_1_1shp_1_1dense__matrix__column__view__coll__graph.md5 b/doxygen/classdr_1_1shp_1_1dense__matrix__column__view__coll__graph.md5 new file mode 100644 index 0000000000..4023cb5eab --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1dense__matrix__column__view__coll__graph.md5 @@ -0,0 +1 @@ +6fbe1a3aad682d8fb401e6ec38d3b3e1 \ No newline at end of file diff --git a/doxygen/classdr_1_1shp_1_1dense__matrix__column__view__coll__graph.png b/doxygen/classdr_1_1shp_1_1dense__matrix__column__view__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..11239804cd8b6ddcdd50c04e2b94dc89a0f2b12c GIT binary patch literal 4764 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 H2od-{v*~d! literal 0 HcmV?d00001 diff --git a/doxygen/classdr_1_1shp_1_1dense__matrix__row__accessor-members.html b/doxygen/classdr_1_1shp_1_1dense__matrix__row__accessor-members.html new file mode 100644 index 0000000000..f03e688b22 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1dense__matrix__row__accessor-members.html @@ -0,0 +1,109 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::shp::dense_matrix_row_accessor< T, Iter > Member List
+
+
+ +

This is the complete list of members for dr::shp::dense_matrix_row_accessor< T, Iter >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + +
const_iterator_accessor typedef (defined in dr::shp::dense_matrix_row_accessor< T, Iter >)dr::shp::dense_matrix_row_accessor< T, Iter >
dense_matrix_row_accessor() noexcept=default (defined in dr::shp::dense_matrix_row_accessor< T, Iter >)dr::shp::dense_matrix_row_accessor< T, Iter >
dense_matrix_row_accessor(const dense_matrix_row_accessor &) noexcept=default (defined in dr::shp::dense_matrix_row_accessor< T, Iter >)dr::shp::dense_matrix_row_accessor< T, Iter >
dense_matrix_row_accessor(Iter data, std::size_t i, std::size_t j) noexcept (defined in dr::shp::dense_matrix_row_accessor< T, Iter >)dr::shp::dense_matrix_row_accessor< T, Iter >inline
difference_type typedef (defined in dr::shp::dense_matrix_row_accessor< T, Iter >)dr::shp::dense_matrix_row_accessor< T, Iter >
iterator_accessor typedef (defined in dr::shp::dense_matrix_row_accessor< T, Iter >)dr::shp::dense_matrix_row_accessor< T, Iter >
iterator_category typedef (defined in dr::shp::dense_matrix_row_accessor< T, Iter >)dr::shp::dense_matrix_row_accessor< T, Iter >
key_type typedef (defined in dr::shp::dense_matrix_row_accessor< T, Iter >)dr::shp::dense_matrix_row_accessor< T, Iter >
nonconst_iterator_accessor typedef (defined in dr::shp::dense_matrix_row_accessor< T, Iter >)dr::shp::dense_matrix_row_accessor< T, Iter >
operator*() const noexcept (defined in dr::shp::dense_matrix_row_accessor< T, Iter >)dr::shp::dense_matrix_row_accessor< T, Iter >inline
operator+=(difference_type offset) noexcept (defined in dr::shp::dense_matrix_row_accessor< T, Iter >)dr::shp::dense_matrix_row_accessor< T, Iter >inline
operator-(const iterator_accessor &other) const noexcept (defined in dr::shp::dense_matrix_row_accessor< T, Iter >)dr::shp::dense_matrix_row_accessor< T, Iter >inline
operator<(const iterator_accessor &other) const noexcept (defined in dr::shp::dense_matrix_row_accessor< T, Iter >)dr::shp::dense_matrix_row_accessor< T, Iter >inline
operator=(const dense_matrix_row_accessor &) noexcept=default (defined in dr::shp::dense_matrix_row_accessor< T, Iter >)dr::shp::dense_matrix_row_accessor< T, Iter >
operator==(const iterator_accessor &other) const noexcept (defined in dr::shp::dense_matrix_row_accessor< T, Iter >)dr::shp::dense_matrix_row_accessor< T, Iter >inline
reference typedef (defined in dr::shp::dense_matrix_row_accessor< T, Iter >)dr::shp::dense_matrix_row_accessor< T, Iter >
scalar_reference typedef (defined in dr::shp::dense_matrix_row_accessor< T, Iter >)dr::shp::dense_matrix_row_accessor< T, Iter >
scalar_value_type typedef (defined in dr::shp::dense_matrix_row_accessor< T, Iter >)dr::shp::dense_matrix_row_accessor< T, Iter >
size_type typedef (defined in dr::shp::dense_matrix_row_accessor< T, Iter >)dr::shp::dense_matrix_row_accessor< T, Iter >
value_type typedef (defined in dr::shp::dense_matrix_row_accessor< T, Iter >)dr::shp::dense_matrix_row_accessor< T, Iter >
~dense_matrix_row_accessor() noexcept=default (defined in dr::shp::dense_matrix_row_accessor< T, Iter >)dr::shp::dense_matrix_row_accessor< T, Iter >
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1dense__matrix__row__accessor.html b/doxygen/classdr_1_1shp_1_1dense__matrix__row__accessor.html new file mode 100644 index 0000000000..d4ff5132e0 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1dense__matrix__row__accessor.html @@ -0,0 +1,156 @@ + + + + + + + +Distributed Ranges: dr::shp::dense_matrix_row_accessor< T, Iter > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::shp::dense_matrix_row_accessor< T, Iter > Class Template Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

+using size_type = std::size_t
 
+using difference_type = std::ptrdiff_t
 
+using scalar_value_type = std::iter_value_t< Iter >
 
+using scalar_reference = std::iter_reference_t< Iter >
 
+using value_type = dr::shp::matrix_entry< scalar_value_type, std::size_t >
 
+using reference = dr::shp::matrix_ref< T, std::size_t, scalar_reference >
 
+using iterator_category = std::random_access_iterator_tag
 
+using iterator_accessor = dense_matrix_row_accessor
 
+using const_iterator_accessor = iterator_accessor
 
+using nonconst_iterator_accessor = iterator_accessor
 
+using key_type = dr::index<>
 
+ + + + + + + + + + + + + + + + + +

+Public Member Functions

+constexpr dense_matrix_row_accessor (const dense_matrix_row_accessor &) noexcept=default
 
+constexpr dense_matrix_row_accessoroperator= (const dense_matrix_row_accessor &) noexcept=default
 
+constexpr dense_matrix_row_accessor (Iter data, std::size_t i, std::size_t j) noexcept
 
+constexpr dense_matrix_row_accessoroperator+= (difference_type offset) noexcept
 
+constexpr bool operator== (const iterator_accessor &other) const noexcept
 
+constexpr difference_type operator- (const iterator_accessor &other) const noexcept
 
+constexpr bool operator< (const iterator_accessor &other) const noexcept
 
+constexpr reference operator* () const noexcept
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/views/dense_row_view.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1dense__matrix__row__view-members.html b/doxygen/classdr_1_1shp_1_1dense__matrix__row__view-members.html new file mode 100644 index 0000000000..52e1477847 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1dense__matrix__row__view-members.html @@ -0,0 +1,102 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::shp::dense_matrix_row_view< T, Iter > Member List
+
+
+ +

This is the complete list of members for dr::shp::dense_matrix_row_view< T, Iter >, including all inherited members.

+ + + + + + + + + + + + + + + +
begin() const (defined in dr::shp::dense_matrix_row_view< T, Iter >)dr::shp::dense_matrix_row_view< T, Iter >inline
data_ (defined in dr::shp::dense_matrix_row_view< T, Iter >)dr::shp::dense_matrix_row_view< T, Iter >
dense_matrix_row_view(Iter data, size_type row_idx, size_type size) (defined in dr::shp::dense_matrix_row_view< T, Iter >)dr::shp::dense_matrix_row_view< T, Iter >inline
difference_type typedef (defined in dr::shp::dense_matrix_row_view< T, Iter >)dr::shp::dense_matrix_row_view< T, Iter >
end() const (defined in dr::shp::dense_matrix_row_view< T, Iter >)dr::shp::dense_matrix_row_view< T, Iter >inline
iterator typedef (defined in dr::shp::dense_matrix_row_view< T, Iter >)dr::shp::dense_matrix_row_view< T, Iter >
key_type typedef (defined in dr::shp::dense_matrix_row_view< T, Iter >)dr::shp::dense_matrix_row_view< T, Iter >
map_type typedef (defined in dr::shp::dense_matrix_row_view< T, Iter >)dr::shp::dense_matrix_row_view< T, Iter >
operator[](size_type idx) (defined in dr::shp::dense_matrix_row_view< T, Iter >)dr::shp::dense_matrix_row_view< T, Iter >inline
row_idx_ (defined in dr::shp::dense_matrix_row_view< T, Iter >)dr::shp::dense_matrix_row_view< T, Iter >
scalar_reference typedef (defined in dr::shp::dense_matrix_row_view< T, Iter >)dr::shp::dense_matrix_row_view< T, Iter >
size() const noexcept (defined in dr::shp::dense_matrix_row_view< T, Iter >)dr::shp::dense_matrix_row_view< T, Iter >inline
size_ (defined in dr::shp::dense_matrix_row_view< T, Iter >)dr::shp::dense_matrix_row_view< T, Iter >
size_type typedef (defined in dr::shp::dense_matrix_row_view< T, Iter >)dr::shp::dense_matrix_row_view< T, Iter >
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1dense__matrix__row__view.html b/doxygen/classdr_1_1shp_1_1dense__matrix__row__view.html new file mode 100644 index 0000000000..727d40d358 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1dense__matrix__row__view.html @@ -0,0 +1,154 @@ + + + + + + + +Distributed Ranges: dr::shp::dense_matrix_row_view< T, Iter > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::shp::dense_matrix_row_view< T, Iter > Class Template Reference
+
+
+
+Collaboration diagram for dr::shp::dense_matrix_row_view< T, Iter >:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + +

+Public Types

+using size_type = std::size_t
 
+using difference_type = std::ptrdiff_t
 
+using scalar_reference = std::iter_reference_t< Iter >
 
+using key_type = dr::index<>
 
+using map_type = T
 
+using iterator = dense_matrix_row_iterator< T, Iter >
 
+ + + + + + + + + + + +

+Public Member Functions

dense_matrix_row_view (Iter data, size_type row_idx, size_type size)
 
+scalar_reference operator[] (size_type idx)
 
+iterator begin () const
 
+iterator end () const
 
+size_type size () const noexcept
 
+ + + + + + + +

+Public Attributes

+Iter data_
 
+size_type row_idx_
 
+size_type size_
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/views/dense_row_view.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1dense__matrix__row__view__coll__graph.map b/doxygen/classdr_1_1shp_1_1dense__matrix__row__view__coll__graph.map new file mode 100644 index 0000000000..ff227060ae --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1dense__matrix__row__view__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/classdr_1_1shp_1_1dense__matrix__row__view__coll__graph.md5 b/doxygen/classdr_1_1shp_1_1dense__matrix__row__view__coll__graph.md5 new file mode 100644 index 0000000000..f81e7e4288 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1dense__matrix__row__view__coll__graph.md5 @@ -0,0 +1 @@ +fabc8386b4baff43a577823d3a41147c \ No newline at end of file diff --git a/doxygen/classdr_1_1shp_1_1dense__matrix__row__view__coll__graph.png b/doxygen/classdr_1_1shp_1_1dense__matrix__row__view__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..dbc8c4e7ec278a67c726fb0a4f0ade24faed3a93 GIT binary patch literal 4611 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 + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::shp::dense_matrix_view< T, Iter > Member List
+
+
+ +

This is the complete list of members for dr::shp::dense_matrix_view< T, Iter >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + +
begin() const (defined in dr::shp::dense_matrix_view< T, Iter >)dr::shp::dense_matrix_view< T, Iter >inline
column(size_type column_index) const (defined in dr::shp::dense_matrix_view< T, Iter >)dr::shp::dense_matrix_view< T, Iter >inline
data() const (defined in dr::shp::dense_matrix_view< T, Iter >)dr::shp::dense_matrix_view< T, Iter >inline
dense_matrix_view(Iter data, key_type shape, size_type ld, size_type rank) (defined in dr::shp::dense_matrix_view< T, Iter >)dr::shp::dense_matrix_view< T, Iter >inline
dense_matrix_view(Iter data, key_type shape, key_type idx_offset, size_type ld, size_type rank) (defined in dr::shp::dense_matrix_view< T, Iter >)dr::shp::dense_matrix_view< T, Iter >inline
dense_matrix_view(dense_matrix< T, Allocator > &m) (defined in dr::shp::dense_matrix_view< T, Iter >)dr::shp::dense_matrix_view< T, Iter >inline
difference_type typedef (defined in dr::shp::dense_matrix_view< T, Iter >)dr::shp::dense_matrix_view< T, Iter >
end() const (defined in dr::shp::dense_matrix_view< T, Iter >)dr::shp::dense_matrix_view< T, Iter >inline
iterator typedef (defined in dr::shp::dense_matrix_view< T, Iter >)dr::shp::dense_matrix_view< T, Iter >
key_type typedef (defined in dr::shp::dense_matrix_view< T, Iter >)dr::shp::dense_matrix_view< T, Iter >
ld() const (defined in dr::shp::dense_matrix_view< T, Iter >)dr::shp::dense_matrix_view< T, Iter >inline
local() const (defined in dr::shp::dense_matrix_view< T, Iter >)dr::shp::dense_matrix_view< T, Iter >inline
map_type typedef (defined in dr::shp::dense_matrix_view< T, Iter >)dr::shp::dense_matrix_view< T, Iter >
operator[](key_type idx) const (defined in dr::shp::dense_matrix_view< T, Iter >)dr::shp::dense_matrix_view< T, Iter >inline
rank() const (defined in dr::shp::dense_matrix_view< T, Iter >)dr::shp::dense_matrix_view< T, Iter >inline
reference typedef (defined in dr::shp::dense_matrix_view< T, Iter >)dr::shp::dense_matrix_view< T, Iter >
row(size_type row_index) const (defined in dr::shp::dense_matrix_view< T, Iter >)dr::shp::dense_matrix_view< T, Iter >inline
scalar_reference typedef (defined in dr::shp::dense_matrix_view< T, Iter >)dr::shp::dense_matrix_view< T, Iter >
shape() const noexcept (defined in dr::shp::dense_matrix_view< T, Iter >)dr::shp::dense_matrix_view< T, Iter >inline
size() const noexcept (defined in dr::shp::dense_matrix_view< T, Iter >)dr::shp::dense_matrix_view< T, Iter >inline
size_type typedef (defined in dr::shp::dense_matrix_view< T, Iter >)dr::shp::dense_matrix_view< T, Iter >
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1dense__matrix__view.html b/doxygen/classdr_1_1shp_1_1dense__matrix__view.html new file mode 100644 index 0000000000..9f0f3a0079 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1dense__matrix__view.html @@ -0,0 +1,182 @@ + + + + + + + +Distributed Ranges: dr::shp::dense_matrix_view< T, Iter > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::shp::dense_matrix_view< T, Iter > Class Template Reference
+
+
+
+Inheritance diagram for dr::shp::dense_matrix_view< T, Iter >:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for dr::shp::dense_matrix_view< T, Iter >:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + +

+Public Types

+using size_type = std::size_t
 
+using difference_type = std::ptrdiff_t
 
+using scalar_reference = std::iter_reference_t< Iter >
 
+using reference = dr::shp::matrix_ref< T, std::size_t, scalar_reference >
 
+using key_type = dr::index<>
 
+using map_type = T
 
+using iterator = dense_matrix_view_iterator< T, Iter >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

dense_matrix_view (Iter data, key_type shape, size_type ld, size_type rank)
 
dense_matrix_view (Iter data, key_type shape, key_type idx_offset, size_type ld, size_type rank)
 
+template<typename Allocator >
+requires (std::is_same_v<typename std::allocator_traits<Allocator>::pointer, Iter>)
 dense_matrix_view (dense_matrix< T, Allocator > &m)
 
+key_type shape () const noexcept
 
+size_type size () const noexcept
 
+scalar_reference operator[] (key_type idx) const
 
+iterator begin () const
 
+iterator end () const
 
+auto row (size_type row_index) const
 
+auto column (size_type column_index) const
 
+Iter data () const
 
+std::size_t rank () const
 
+size_type ld () const
 
+auto local () const
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/views/dense_matrix_view.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1dense__matrix__view__coll__graph.map b/doxygen/classdr_1_1shp_1_1dense__matrix__view__coll__graph.map new file mode 100644 index 0000000000..3b14aa35ce --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1dense__matrix__view__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/classdr_1_1shp_1_1dense__matrix__view__coll__graph.md5 b/doxygen/classdr_1_1shp_1_1dense__matrix__view__coll__graph.md5 new file mode 100644 index 0000000000..9409ea14a6 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1dense__matrix__view__coll__graph.md5 @@ -0,0 +1 @@ +2428038b7a1eba70bf99d13cb6901475 \ No newline at end of file diff --git a/doxygen/classdr_1_1shp_1_1dense__matrix__view__coll__graph.png b/doxygen/classdr_1_1shp_1_1dense__matrix__view__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..6a54c6671899df214474800b6fd47eeb4cf98299 GIT binary patch literal 6881 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 + + + diff --git a/doxygen/classdr_1_1shp_1_1dense__matrix__view__inherit__graph.md5 b/doxygen/classdr_1_1shp_1_1dense__matrix__view__inherit__graph.md5 new file mode 100644 index 0000000000..9409ea14a6 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1dense__matrix__view__inherit__graph.md5 @@ -0,0 +1 @@ +2428038b7a1eba70bf99d13cb6901475 \ No newline at end of file diff --git a/doxygen/classdr_1_1shp_1_1dense__matrix__view__inherit__graph.png b/doxygen/classdr_1_1shp_1_1dense__matrix__view__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..6a54c6671899df214474800b6fd47eeb4cf98299 GIT binary patch literal 6881 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 + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::shp::device_allocator< T, Alignment > Member List
+
+
+ +

This is the complete list of members for dr::shp::device_allocator< T, Alignment >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + +
allocate(std::size_t size) (defined in dr::shp::device_allocator< T, Alignment >)dr::shp::device_allocator< T, Alignment >inline
const_pointer typedef (defined in dr::shp::device_allocator< T, Alignment >)dr::shp::device_allocator< T, Alignment >
const_reference typedef (defined in dr::shp::device_allocator< T, Alignment >)dr::shp::device_allocator< T, Alignment >
deallocate(pointer ptr, std::size_t n) (defined in dr::shp::device_allocator< T, Alignment >)dr::shp::device_allocator< T, Alignment >inline
device_allocator(const device_allocator< U, Alignment > &other) noexcept (defined in dr::shp::device_allocator< T, Alignment >)dr::shp::device_allocator< T, Alignment >inline
device_allocator(const sycl::queue &q) noexcept (defined in dr::shp::device_allocator< T, Alignment >)dr::shp::device_allocator< T, Alignment >inline
device_allocator(const sycl::context &ctxt, const sycl::device &dev) noexcept (defined in dr::shp::device_allocator< T, Alignment >)dr::shp::device_allocator< T, Alignment >inline
device_allocator(const device_allocator &)=default (defined in dr::shp::device_allocator< T, Alignment >)dr::shp::device_allocator< T, Alignment >
difference_type typedef (defined in dr::shp::device_allocator< T, Alignment >)dr::shp::device_allocator< T, Alignment >
get_context() const noexcept (defined in dr::shp::device_allocator< T, Alignment >)dr::shp::device_allocator< T, Alignment >inline
get_device() const noexcept (defined in dr::shp::device_allocator< T, Alignment >)dr::shp::device_allocator< T, Alignment >inline
is_always_equal typedef (defined in dr::shp::device_allocator< T, Alignment >)dr::shp::device_allocator< T, Alignment >
operator!=(const device_allocator &) const =default (defined in dr::shp::device_allocator< T, Alignment >)dr::shp::device_allocator< T, Alignment >
operator=(const device_allocator &)=default (defined in dr::shp::device_allocator< T, Alignment >)dr::shp::device_allocator< T, Alignment >
operator==(const device_allocator &) const =default (defined in dr::shp::device_allocator< T, Alignment >)dr::shp::device_allocator< T, Alignment >
pointer typedef (defined in dr::shp::device_allocator< T, Alignment >)dr::shp::device_allocator< T, Alignment >
reference typedef (defined in dr::shp::device_allocator< T, Alignment >)dr::shp::device_allocator< T, Alignment >
size_type typedef (defined in dr::shp::device_allocator< T, Alignment >)dr::shp::device_allocator< T, Alignment >
value_type typedef (defined in dr::shp::device_allocator< T, Alignment >)dr::shp::device_allocator< T, Alignment >
~device_allocator()=default (defined in dr::shp::device_allocator< T, Alignment >)dr::shp::device_allocator< T, Alignment >
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1device__allocator.html b/doxygen/classdr_1_1shp_1_1device__allocator.html new file mode 100644 index 0000000000..7114bb05ca --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1device__allocator.html @@ -0,0 +1,163 @@ + + + + + + + +Distributed Ranges: dr::shp::device_allocator< T, Alignment > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::shp::device_allocator< T, Alignment > Class Template Reference
+
+
+ + + + +

+Classes

struct  rebind
 
+ + + + + + + + + + + + + + + + + +

+Public Types

+using value_type = T
 
+using pointer = device_ptr< T >
 
+using const_pointer = device_ptr< T >
 
+using reference = device_ref< T >
 
+using const_reference = device_ref< const T >
 
+using size_type = std::size_t
 
+using difference_type = std::ptrdiff_t
 
+using is_always_equal = std::false_type
 
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+template<typename U >
 device_allocator (const device_allocator< U, Alignment > &other) noexcept
 
device_allocator (const sycl::queue &q) noexcept
 
device_allocator (const sycl::context &ctxt, const sycl::device &dev) noexcept
 
device_allocator (const device_allocator &)=default
 
+device_allocatoroperator= (const device_allocator &)=default
 
+pointer allocate (std::size_t size)
 
+void deallocate (pointer ptr, std::size_t n)
 
+bool operator== (const device_allocator &) const =default
 
+bool operator!= (const device_allocator &) const =default
 
+sycl::device get_device () const noexcept
 
+sycl::context get_context () const noexcept
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/allocators.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1device__ptr-members.html b/doxygen/classdr_1_1shp_1_1device__ptr-members.html new file mode 100644 index 0000000000..a9d6c9a5e8 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1device__ptr-members.html @@ -0,0 +1,130 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::shp::device_ptr< T > Member List
+
+
+ +

This is the complete list of members for dr::shp::device_ptr< T >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
const_pointer typedef (defined in dr::shp::device_ptr< T >)dr::shp::device_ptr< T >
const_pointer (defined in dr::shp::device_ptr< T >)dr::shp::device_ptr< T >
device_ptr(T *pointer) noexcept (defined in dr::shp::device_ptr< T >)dr::shp::device_ptr< T >inline
device_ptr() noexcept=default (defined in dr::shp::device_ptr< T >)dr::shp::device_ptr< T >
device_ptr(const device_ptr &) noexcept=default (defined in dr::shp::device_ptr< T >)dr::shp::device_ptr< T >
device_ptr(std::nullptr_t) noexcept (defined in dr::shp::device_ptr< T >)dr::shp::device_ptr< T >inline
difference_type typedef (defined in dr::shp::device_ptr< T >)dr::shp::device_ptr< T >
get_raw_pointer() const noexcept (defined in dr::shp::device_ptr< T >)dr::shp::device_ptr< T >inline
iterator_category typedef (defined in dr::shp::device_ptr< T >)dr::shp::device_ptr< T >
local() const noexcept (defined in dr::shp::device_ptr< T >)dr::shp::device_ptr< T >inline
nonconst_pointer typedef (defined in dr::shp::device_ptr< T >)dr::shp::device_ptr< T >
nonconst_pointer (defined in dr::shp::device_ptr< T >)dr::shp::device_ptr< T >
operator const_pointer() const noexcept (defined in dr::shp::device_ptr< T >)dr::shp::device_ptr< T >inline
operator device_ptr< const void >() const noexcept (defined in dr::shp::device_ptr< T >)dr::shp::device_ptr< T >inline
operator device_ptr< void >() const noexcept (defined in dr::shp::device_ptr< T >)dr::shp::device_ptr< T >inline
operator!=(std::nullptr_t) const noexcept (defined in dr::shp::device_ptr< T >)dr::shp::device_ptr< T >inline
operator!=(const device_ptr &) const noexcept=default (defined in dr::shp::device_ptr< T >)dr::shp::device_ptr< T >
operator*() const noexcept (defined in dr::shp::device_ptr< T >)dr::shp::device_ptr< T >inline
operator+(difference_type offset) const noexcept (defined in dr::shp::device_ptr< T >)dr::shp::device_ptr< T >inline
operator+ (defined in dr::shp::device_ptr< T >)dr::shp::device_ptr< T >friend
operator++() noexcept (defined in dr::shp::device_ptr< T >)dr::shp::device_ptr< T >inline
operator++(int) noexcept (defined in dr::shp::device_ptr< T >)dr::shp::device_ptr< T >inline
operator+=(difference_type offset) noexcept (defined in dr::shp::device_ptr< T >)dr::shp::device_ptr< T >inline
operator-(difference_type offset) const noexcept (defined in dr::shp::device_ptr< T >)dr::shp::device_ptr< T >inline
operator-(const_pointer other) const noexcept (defined in dr::shp::device_ptr< T >)dr::shp::device_ptr< T >inline
operator-(pointer other) const noexcept (defined in dr::shp::device_ptr< T >)dr::shp::device_ptr< T >inline
operator--() noexcept (defined in dr::shp::device_ptr< T >)dr::shp::device_ptr< T >inline
operator--(int) noexcept (defined in dr::shp::device_ptr< T >)dr::shp::device_ptr< T >inline
operator-=(difference_type offset) noexcept (defined in dr::shp::device_ptr< T >)dr::shp::device_ptr< T >inline
operator<(const_pointer other) const noexcept (defined in dr::shp::device_ptr< T >)dr::shp::device_ptr< T >inline
operator<=(const_pointer other) const noexcept (defined in dr::shp::device_ptr< T >)dr::shp::device_ptr< T >inline
operator=(const device_ptr &) noexcept=default (defined in dr::shp::device_ptr< T >)dr::shp::device_ptr< T >
operator=(std::nullptr_t) noexcept (defined in dr::shp::device_ptr< T >)dr::shp::device_ptr< T >inline
operator==(std::nullptr_t) const noexcept (defined in dr::shp::device_ptr< T >)dr::shp::device_ptr< T >inline
operator==(const device_ptr &) const noexcept=default (defined in dr::shp::device_ptr< T >)dr::shp::device_ptr< T >
operator>(const_pointer other) const noexcept (defined in dr::shp::device_ptr< T >)dr::shp::device_ptr< T >inline
operator>=(const_pointer other) const noexcept (defined in dr::shp::device_ptr< T >)dr::shp::device_ptr< T >inline
operator[](difference_type offset) const noexcept (defined in dr::shp::device_ptr< T >)dr::shp::device_ptr< T >inline
pointer typedef (defined in dr::shp::device_ptr< T >)dr::shp::device_ptr< T >
reference typedef (defined in dr::shp::device_ptr< T >)dr::shp::device_ptr< T >
value_type typedef (defined in dr::shp::device_ptr< T >)dr::shp::device_ptr< T >
~device_ptr() noexcept=default (defined in dr::shp::device_ptr< T >)dr::shp::device_ptr< T >
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1device__ptr.html b/doxygen/classdr_1_1shp_1_1device__ptr.html new file mode 100644 index 0000000000..c05d5f3d13 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1device__ptr.html @@ -0,0 +1,227 @@ + + + + + + + +Distributed Ranges: dr::shp::device_ptr< T > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::shp::device_ptr< T > Class Template Reference
+
+
+ + + + + + + + + + + + + + + + +

+Public Types

+using value_type = T
 
+using difference_type = std::ptrdiff_t
 
+using pointer = device_ptr< T >
 
+using const_pointer = device_ptr< std::add_const_t< T > >
 
+using nonconst_pointer = device_ptr< std::remove_const_t< T > >
 
+using iterator_category = std::random_access_iterator_tag
 
+using reference = device_ref< T >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

device_ptr (T *pointer) noexcept
 
device_ptr (const device_ptr &) noexcept=default
 
+device_ptroperator= (const device_ptr &) noexcept=default
 
device_ptr (std::nullptr_t) noexcept
 
+device_ptroperator= (std::nullptr_t) noexcept
 
operator device_ptr< void > () const noexcept
 
operator device_ptr< const void > () const noexcept
 
operator const_pointer () const noexcept
 
+bool operator== (std::nullptr_t) const noexcept
 
+bool operator!= (std::nullptr_t) const noexcept
 
+bool operator== (const device_ptr &) const noexcept=default
 
+bool operator!= (const device_ptr &) const noexcept=default
 
+pointer operator+ (difference_type offset) const noexcept
 
+pointer operator- (difference_type offset) const noexcept
 
+difference_type operator- (const_pointer other) const noexcept
 
+difference_type operator- (pointer other) const noexcept
 
+bool operator< (const_pointer other) const noexcept
 
+bool operator> (const_pointer other) const noexcept
 
+bool operator<= (const_pointer other) const noexcept
 
+bool operator>= (const_pointer other) const noexcept
 
+pointeroperator++ () noexcept
 
+pointer operator++ (int) noexcept
 
+pointeroperator-- () noexcept
 
+pointer operator-- (int) noexcept
 
+pointeroperator+= (difference_type offset) noexcept
 
+pointeroperator-= (difference_type offset) noexcept
 
+reference operator* () const noexcept
 
+reference operator[] (difference_type offset) const noexcept
 
+T * get_raw_pointer () const noexcept
 
+T * local () const noexcept
 
+ + + + + +

+Public Attributes

+friend const_pointer
 
+friend nonconst_pointer
 
+ + + +

+Friends

+pointer operator+ (difference_type n, pointer iter)
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/device_ptr.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1device__ref-members.html b/doxygen/classdr_1_1shp_1_1device__ref-members.html new file mode 100644 index 0000000000..8fc0910efe --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1device__ref-members.html @@ -0,0 +1,95 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::shp::device_ref< T > Member List
+
+
+ +

This is the complete list of members for dr::shp::device_ref< T >, including all inherited members.

+ + + + + + + + +
device_ref()=delete (defined in dr::shp::device_ref< T >)dr::shp::device_ref< T >
device_ref(const device_ref &)=default (defined in dr::shp::device_ref< T >)dr::shp::device_ref< T >
device_ref(T *pointer) (defined in dr::shp::device_ref< T >)dr::shp::device_ref< T >inline
operator T() const (defined in dr::shp::device_ref< T >)dr::shp::device_ref< T >inline
operator=(const T &value) const (defined in dr::shp::device_ref< T >)dr::shp::device_ref< T >inline
operator=(const device_ref &other) const (defined in dr::shp::device_ref< T >)dr::shp::device_ref< T >inline
~device_ref()=default (defined in dr::shp::device_ref< T >)dr::shp::device_ref< T >
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1device__ref.html b/doxygen/classdr_1_1shp_1_1device__ref.html new file mode 100644 index 0000000000..14a72f9499 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1device__ref.html @@ -0,0 +1,110 @@ + + + + + + + +Distributed Ranges: dr::shp::device_ref< T > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::shp::device_ref< T > Class Template Reference
+
+
+ + + + + + + + + + + + +

+Public Member Functions

device_ref (const device_ref &)=default
 
device_ref (T *pointer)
 
operator T () const
 
+device_ref operator= (const T &value) const
 
+device_ref operator= (const device_ref &other) const
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/device_ref.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1device__span-members.html b/doxygen/classdr_1_1shp_1_1device__span-members.html new file mode 100644 index 0000000000..251fddbf47 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1device__span-members.html @@ -0,0 +1,113 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::shp::device_span< T, Iter > Member List
+
+
+ +

This is the complete list of members for dr::shp::device_span< T, Iter >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
begin() const noexcept (defined in dr::shp::span< T, Iter >)dr::shp::span< T, Iter >inline
device_span() noexcept (defined in dr::shp::device_span< T, Iter >)dr::shp::device_span< T, Iter >inline
device_span(R &&r) (defined in dr::shp::device_span< T, Iter >)dr::shp::device_span< T, Iter >inline
device_span(R &&r, std::size_t rank) (defined in dr::shp::device_span< T, Iter >)dr::shp::device_span< T, Iter >inline
device_span(It first, std::size_t count, std::size_t rank) (defined in dr::shp::device_span< T, Iter >)dr::shp::device_span< T, Iter >inline
device_span(It first, End last, std::size_t rank) (defined in dr::shp::device_span< T, Iter >)dr::shp::device_span< T, Iter >inline
difference_type typedef (defined in dr::shp::device_span< T, Iter >)dr::shp::device_span< T, Iter >
empty() const noexcept (defined in dr::shp::span< T, Iter >)dr::shp::span< T, Iter >inline
end() const noexcept (defined in dr::shp::span< T, Iter >)dr::shp::span< T, Iter >inline
first(std::size_t n) const (defined in dr::shp::device_span< T, Iter >)dr::shp::device_span< T, Iter >inline
iterator typedef (defined in dr::shp::span< T, Iter >)dr::shp::span< T, Iter >
last(std::size_t n) const (defined in dr::shp::device_span< T, Iter >)dr::shp::device_span< T, Iter >inline
operator=(const span &) noexcept=default (defined in dr::shp::span< T, Iter >)dr::shp::span< T, Iter >
operator[](size_type index) const (defined in dr::shp::span< T, Iter >)dr::shp::span< T, Iter >inline
rank() const noexcept (defined in dr::shp::device_span< T, Iter >)dr::shp::device_span< T, Iter >inline
reference typedef (defined in dr::shp::device_span< T, Iter >)dr::shp::device_span< T, Iter >
size() const noexcept (defined in dr::shp::span< T, Iter >)dr::shp::span< T, Iter >inline
size_type typedef (defined in dr::shp::device_span< T, Iter >)dr::shp::device_span< T, Iter >
span(R &&r) (defined in dr::shp::span< T, Iter >)dr::shp::span< T, Iter >inline
span(Iter first, Iter last) (defined in dr::shp::span< T, Iter >)dr::shp::span< T, Iter >inline
span(Iter first, std::size_t count) (defined in dr::shp::span< T, Iter >)dr::shp::span< T, Iter >inline
span()=default (defined in dr::shp::span< T, Iter >)dr::shp::span< T, Iter >
span(const span &) noexcept=default (defined in dr::shp::span< T, Iter >)dr::shp::span< T, Iter >
subspan(std::size_t offset, std::size_t count) const (defined in dr::shp::device_span< T, Iter >)dr::shp::device_span< T, Iter >inline
value_type typedef (defined in dr::shp::device_span< T, Iter >)dr::shp::device_span< T, Iter >
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1device__span.html b/doxygen/classdr_1_1shp_1_1device__span.html new file mode 100644 index 0000000000..79dcb8df6e --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1device__span.html @@ -0,0 +1,217 @@ + + + + + + + +Distributed Ranges: dr::shp::device_span< T, Iter > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::shp::device_span< T, Iter > Class Template Reference
+
+
+
+Inheritance diagram for dr::shp::device_span< T, Iter >:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for dr::shp::device_span< T, Iter >:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + +

+Public Types

+using value_type = T
 
+using size_type = std::size_t
 
+using difference_type = std::size_t
 
+using reference = std::iter_reference_t< Iter >
 
- Public Types inherited from dr::shp::span< T, Iter >
+using value_type = std::iter_value_t< Iter >
 
+using size_type = std::size_t
 
+using difference_type = std::iter_difference_t< Iter >
 
+using reference = std::iter_reference_t< Iter >
 
+using iterator = Iter
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+template<rng::random_access_range R>
+requires (dr::remote_range<R>)
 device_span (R &&r)
 
+template<rng::random_access_range R>
 device_span (R &&r, std::size_t rank)
 
+template<class It >
constexpr device_span (It first, std::size_t count, std::size_t rank)
 
+template<class It , class End >
constexpr device_span (It first, End last, std::size_t rank)
 
+constexpr std::size_t rank () const noexcept
 
+device_span first (std::size_t n) const
 
+device_span last (std::size_t n) const
 
+device_span subspan (std::size_t offset, std::size_t count) const
 
- Public Member Functions inherited from dr::shp::span< T, Iter >
+template<rng::random_access_range R>
 span (R &&r)
 
span (Iter first, Iter last)
 
span (Iter first, std::size_t count)
 
span (const span &) noexcept=default
 
+spanoperator= (const span &) noexcept=default
 
+std::size_t size () const noexcept
 
+bool empty () const noexcept
 
+Iter begin () const noexcept
 
+Iter end () const noexcept
 
+reference operator[] (size_type index) const
 
+span first (size_type n) const
 
+span last (size_type n) const
 
+span subspan (std::size_t offset, std::size_t count) const
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/device_span.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1device__span__coll__graph.map b/doxygen/classdr_1_1shp_1_1device__span__coll__graph.map new file mode 100644 index 0000000000..f108ef87e5 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1device__span__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/doxygen/classdr_1_1shp_1_1device__span__coll__graph.md5 b/doxygen/classdr_1_1shp_1_1device__span__coll__graph.md5 new file mode 100644 index 0000000000..a45270bb0f --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1device__span__coll__graph.md5 @@ -0,0 +1 @@ +e19ec50e0eac26d2e7e6caa5766de550 \ No newline at end of file diff --git a/doxygen/classdr_1_1shp_1_1device__span__coll__graph.png b/doxygen/classdr_1_1shp_1_1device__span__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..a3cdfa776fa5cd1c5fa9d811e62915cd31d8806a GIT binary patch literal 8348 zcmd6tg;!N=_pUb`N{UDd0s@MX5`sub2^&eJBsPdNh*HuW(jqAhf`Dv5>F$;eX%OjF zI^;~=@t*H|zj6M6bB06MV<>AqYd!P1=Y3z3Amt~rM1(Yi2n2%Yv7D4Dd>@3rL-@Gx z6&I5db@9zmK~@TJe(@)@COZm&U_?BYl2CU_+?aAvS6}!mwtaB@S9(1oqm!37=gT+( zOoH3&OvZNgwcgjh_%MC8EBaEb+HZby2|M04b3~Om;gdsW_g8&;7G_PmZO>Pvg~b`9 zlH%>sfx+p|7yq1OG&LjMU{t_8_H3&}P3oc?pGRr7{ZPfiIo-ZYk~E z-NkI_Z!6jTi~5$$b{=I7O+OccW>YJ4i6`} zbLWo#a1R5$etewv_wV1i1q4RyshyQRaKCkOV&vo`hE;J33bx5IxcNpzkm7qIf}}9n z*w~ue+I#{jO2)F$cX>1V8~t84f7^zCbV`%fef55-ZmczAfij+=B-<+eUQ=jS^{Mq*y@Qj?K=PZ3LDVq*G? zMu)i{udpTXnGj>79v?e1F=>}tQsdy^scC6Z^9u?N#@y90-CrLYnwnCK<8>^E=v1qQ;(%vJ_I(a*?v)9d4ui z1k{If*PlP!8&ad7r4=zy?CjYZ_@vO$+Z)cQS1qTgsQBUidr5uQ9X}cVidQ@?)Y<>lx9bmg4jg7F~GAX>OC_g_OdSSc37%u%MQc_T)9}*M4sOVz(Js#s>S!G~V zG^byFo=d0}KD|_yp6-oMe*E}x-QK+%iIg0|DATQYIyyRv>nTFEn90e>+**0g9lIXR1vt(5U7Ow52wh$_rMPy@qM8e8uL+OA)iW%N_{EDCv!nVR(wdq- zJlAsba1h?!-Vw>kVcp%x?j(_G7srN|m-phFBqq{fcokczIpm2N%-p2)YRchb_&JxN8&91ep9K<#gekJ zN32l|jg6QxGBWMoze}sCzHgnVs;o5JoUCvFwSB{F*Y{NiW!B?!-y6b9J2SG&t9M^D+=+3{WW*QrOIK28E*nQ!#F^!p=i!cZ=O z{n9Ah^~Q}Gfni~-;bMOS7Z+bFfRIaq#fzczA%gX7YZCr{$|Ou{{+=$0WfT>ujD9K<(d?xN zkq)NZ>k69=^AvJF6>1Hk_JN8fH8wVOTKN~L)4lBDJ_kWS5WAfn9xBrABwACsw<``3!X_%72`NMI({uK&IHjhx3%`T0YaOKU<8DMCstM#&NH-n~m78F?03#&P%VO@z9R4u=P) zsA!FT+>qkdvf|Y4CHq0j$*C!`ll=|CiSmkyjwJ@7vaN<<(Ks^>sYhZYHD=7n01}3* z@^Ycuckh0J4eadg&5nqOaDOwWo>Nee-Pfm#DQ;_P>yv9MG!X{3ZElvT-W$$li-DkN#5CHW^OJa7!1Ned|aB+f{qWK*AtL+%7RvD2X^7fZEo4&mrHD(T9KHH z6LRnVNwrc@Q3(tWj}346v%lYZP2V+b*H|xnbJH3O4z9&0+V9&pK4`DDv-KF3QFMi&)|2A8x=E)M zUV6Q`AIbYPOikGb1_mNxV*~2z#qVeqA_Q%whn!B5?+eygd@U=x_Q}TB>Huls1QM*G zriK-d^aoW4&H8pgwfeU2Dr`vT-*ITuvD>GAdYj+|N}_udiAhN+>gvAh>z3eR3{MYt zn7?iq1i51wE_TPuA(73XP$5G@>gvy){XE?9s>7>qX~Frk)Z3P&_z^eJJS`;mBVsj6 z-}Gm_7gl>`r=*1i$F%DoMd;?Jv9HGIyZK)(s&~bLdr9Jo+kwtUVtQd;uqcTS-jYK_ zIxR$N9P7@>8csCO6wOJI2VqM{NSJ3+UC1G=fF-o9;L|c$J-z9O6W#JxHwZ6XBBP@V zSzR@sbUT>xNp>%?otJ5DX-O+Dr$VFAhpTx721Z8A@-v;|rA0-NN*1Q(=H76W8XFt^ z-4rwi|D-+vheLTsllzN+zqybRuf1^c8+Jj)zj9DmE6e>E8R(73#l=O|^9*iB-lu|$ zyAG)wgIt}pGJa=a0atif$!mG{;BDQzJ@K-#O@p;nsu5*~WTE@#0}al&u$?Z(pzi=J zX-&W(_tZ)R!J$X=qUPq0^fgr~_Y(&a;}8BpVj6uU8pc;tCXGYQ1kv@R3E_iA_w6M#8KDzR$JxqJ;g~8 z*k6>ggDTNMx7ttxM!OTka`iUnH|$UqVG4$~U&ZYXRTivplFtU8CoxkSh}YB5$F``? zaJi zQD9>s%ATJ3bR+WYpRv=Do)h7VsxIKst~R>3ZO%<$&5|MB&EPR(^+uvBxzh(tjgbk- zXGO0B7~SLB{*!zDUw@D~`T8v+BqZ9fq{TgULQC|3?d$x!h$IX7V`Fh~@h~c@AWBvV z(y-uR%9E+*8RXs41c-;V%wB;HF$yI^N~O+ddZ_tc)`J#yvr^OYT;tM{a&xOO-Pm#Y z?}AGgL{);UV@rrXdejtHyfruHWz-fHDmM{=;Y`8WDkDNXNWVIguS1G0u~Nrlbg!!a zr0)^Q+?Yv9wAelf6?8R0$){_A#DfeU{zos|*ReJ<#AJGZeu;!c7KscwwbjswCC+_j z4c5u&cL!T!6m#cN9aeh|3+p5)DXFZYl2+*9)@!fd z-`@{;Rz_2k3Z%_{RL_M79E0J=D1nY*g3M zdW`s7S*iW^xuc`t<4>wbJ2dMRn_%*lAcSCh{`~n9x2EO?YM`U58m=CfkZ}95D7^QT zvSc40pH?g3`}gO7YcyZtszyKe$ryrKd9q2@C%WVoMfxa42n5kk+km z-n)&c@9BBs{-z0t!`-`g*}1r43$j-#Ha9n0p`Z&LHncAcbWsr*9x+`#oJiU9Q;Gh^ zaqAl!w)3q-L&L)zDYVOb1&sJU=7Nx~%*@Q%ySg437%)Pk@`Tu8UhUQ!w51zWQ&Yq4 z#$i!aT1pA2vK2B#NJ0Wl`wL!{n>UG8aqGcJ?@YewO)D%U)zZ?6kpC1I80ZP+!(nqW zXZw-J01J5w!!21^SveN+d-v|KPi`|Z`TF~Jj;cALxpXUimr^{ggD^O)=48*VuZO^+ zf*WEM5TFG7!Vq~zeL2Y&Si=AA{mTC*X>B;%DgFMK_h4SsAqybRb; zK9ip2{f!BfrR5jfDxf0t@<$ni23w0Ov~Y@qop+Z%TexJxkEuvY`=Pt2$P8yZ`^KV! zLWyHJbqDMTGH}B^4UjCZ#>Xk?>FFwC0)q^$#{aP<7ay`z#7Sguc!;2R(~)i4SD^C@ z5=i%~r@;;$z9ERzjS6iWLsN63+r1FAQY(D@jZ#v1&E~;pn_@|5+6h!~`DY9B>Hvwc zgG%&LxC~RI`n%zgS$|``eC-_`>c`*v5g3cubnXW?ZfKA4^DG>Sf=v-@dxYr55Jx2+q6FXE(>O%shhCkkh3E4E?63JmcV9l6!~AlCk2g;tVfC_J9x zGWNEnoM@8=mSp&sbGET7j92l8Ymx<6489Pq9!+9Dd)7c|U_g;2WX=-ViRp~ec^h?Jbie52dn&Sq$Obj2W z?NR1tW)hZ`cYrL(WS&h`InGa3ykQ>L7ngDNh}#dT4h_V3+HBoW7-TpmZ4fNMoYL?Fb(#14;+Fc8*Lm41+;=vrD@Ol@oeVq>p8 z`=W_qWMmZWmXoncl`A5%RsDy!_WZ94Aaf254)~!PLPAvDjO}G9{1!2%iTk2>$MRcE z9}*G>-@JJPIDH=a2Oe@{3IbNRiTm9c*|t7drjx*9*8o)8wS z48i(caKc!9_n@06^!*oPlShzKCe<)jTaLj7^6Crb#+7Q&d;{uxKWspH#2tb_sKe+ z@fOt9UcX3(yZy2-yC4Rs_4V`H)3NDKmwshy>m~JjV)Man-=p6g5;JYMxVTh&FE1mJ zNCQ(-d}!pp0RbGvWllSWNMMM-3Gwmq#UYg@eEhi31qeA1)WH;E@@ct}* zr`DeMO1I2h zQws>2zv0IZ%{jrp;`7J2d=Jdvo|<*;qEC_^1c61pphkdZ3(Lx43kIvifb1j0Wn}{- zY279)&CO}{|3d#pAoQG9KDkfm)w$C$hP%DO|he&Ljt$z&acDNq5S;s$%2@ro0g6a5ZpA_-_p|3vzVMUg{$^$%40mB5Dg7J zcx1G+!56R-SY>;AySTgi-&Bh}L8ypcIFp>5oQE){>K`9}=kJf}x<6)OUIxP#HK(ZQ zlbs9LdT~VIslZwTpk7{I$0h^!;W*X7Tbxub!JryV!CgW8(|DRedn+ z@;N_WT2>Yhuw#+OxjW!0jKhs-FW=UYN`sc?` zQst>C`kkh)FGtg7B=5C`(FgMwwa$V<$SEm}9{yP4gAK>1hxw2#(Bt*V3N`nGyy|M# z_6^040z_ixr+m}yCsz0P`B6ZGew5oX1IOdHZkm~4$bOO}`Sj^kODn4)vq9ES>xYQd z0}}`{7n~y^F);)j6*8U|2gooL-{OH9zs>Z6#D{J)YFWq&O!{>H8a@4mY@udq-IkY^ zJwbM00D`vF$Ljw@l`AZRLZO75wi&@a5rCiSP8OwwL_k9?=9abB;RR&4>!kMKbw!7* z>Cg*&3kSZEQ`%;wiRU&ud*AUd@fzr6KTOjPxcp~HVIIL5>8iRL6cJ=C~DQ_79 z;z7oZ@e+m6n;}9L78aSAnU~+5h|EzD`RXtJLsCLL!8RX7#Cw4uU7xAbw-N#B9(T`- z{2BT=0pf5?|NI^3{3qt?an`nR{+@vsGV*J2(eU@L4mi9)jj!Qc_{BbkBta$Oa0gCZ z#)c~Y>z~a8pjeHgqt|+RdMY_hhJJDrHNwctdvfymuZ0B(rbvUH#QWR7e-FsdKzsWP z7VTuKF8pA|g8^_kpxck*kuzAKxph#nSI3jZJRU-HyQqq|xVZYZHav)tXa3kc!$L^& z;^JaP7%2e$HMO+#h1Y9nXb6+Y++nhAfLG#fZf5eQc1$D4F1xGxfpn$8ox|$o*BY$Jfv<0O)50F1PyxSdSL%95^hM9XIr%xb&9PZ3x zAm--goS^bAWT_o5Z$BhgLzXFWcG_jDrRHEd7__4r)-42E0myNuojE*Yx%QOoRooE% zrAt0FHKMQIyeV=!ad3M3wgH|6PLyzpPR2^RjiT&u*9+d$gSzvUiZ@Hj>gw1cA|em= ze;94=?^6~mi*XZ2U5qP$&VjjoUuPn(sOSg7ELT_8*`=lI{%&=iU7~_4=DK0OS{Mk8 zjg3KsiK;V!;q$dR6B?GkiDsl($awFMb literal 0 HcmV?d00001 diff --git a/doxygen/classdr_1_1shp_1_1device__span__inherit__graph.map b/doxygen/classdr_1_1shp_1_1device__span__inherit__graph.map new file mode 100644 index 0000000000..f108ef87e5 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1device__span__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/doxygen/classdr_1_1shp_1_1device__span__inherit__graph.md5 b/doxygen/classdr_1_1shp_1_1device__span__inherit__graph.md5 new file mode 100644 index 0000000000..a45270bb0f --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1device__span__inherit__graph.md5 @@ -0,0 +1 @@ +e19ec50e0eac26d2e7e6caa5766de550 \ No newline at end of file diff --git a/doxygen/classdr_1_1shp_1_1device__span__inherit__graph.png b/doxygen/classdr_1_1shp_1_1device__span__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..a3cdfa776fa5cd1c5fa9d811e62915cd31d8806a GIT binary patch literal 8348 zcmd6tg;!N=_pUb`N{UDd0s@MX5`sub2^&eJBsPdNh*HuW(jqAhf`Dv5>F$;eX%OjF zI^;~=@t*H|zj6M6bB06MV<>AqYd!P1=Y3z3Amt~rM1(Yi2n2%Yv7D4Dd>@3rL-@Gx z6&I5db@9zmK~@TJe(@)@COZm&U_?BYl2CU_+?aAvS6}!mwtaB@S9(1oqm!37=gT+( zOoH3&OvZNgwcgjh_%MC8EBaEb+HZby2|M04b3~Om;gdsW_g8&;7G_PmZO>Pvg~b`9 zlH%>sfx+p|7yq1OG&LjMU{t_8_H3&}P3oc?pGRr7{ZPfiIo-ZYk~E z-NkI_Z!6jTi~5$$b{=I7O+OccW>YJ4i6`} zbLWo#a1R5$etewv_wV1i1q4RyshyQRaKCkOV&vo`hE;J33bx5IxcNpzkm7qIf}}9n z*w~ue+I#{jO2)F$cX>1V8~t84f7^zCbV`%fef55-ZmczAfij+=B-<+eUQ=jS^{Mq*y@Qj?K=PZ3LDVq*G? zMu)i{udpTXnGj>79v?e1F=>}tQsdy^scC6Z^9u?N#@y90-CrLYnwnCK<8>^E=v1qQ;(%vJ_I(a*?v)9d4ui z1k{If*PlP!8&ad7r4=zy?CjYZ_@vO$+Z)cQS1qTgsQBUidr5uQ9X}cVidQ@?)Y<>lx9bmg4jg7F~GAX>OC_g_OdSSc37%u%MQc_T)9}*M4sOVz(Js#s>S!G~V zG^byFo=d0}KD|_yp6-oMe*E}x-QK+%iIg0|DATQYIyyRv>nTFEn90e>+**0g9lIXR1vt(5U7Ow52wh$_rMPy@qM8e8uL+OA)iW%N_{EDCv!nVR(wdq- zJlAsba1h?!-Vw>kVcp%x?j(_G7srN|m-phFBqq{fcokczIpm2N%-p2)YRchb_&JxN8&91ep9K<#gekJ zN32l|jg6QxGBWMoze}sCzHgnVs;o5JoUCvFwSB{F*Y{NiW!B?!-y6b9J2SG&t9M^D+=+3{WW*QrOIK28E*nQ!#F^!p=i!cZ=O z{n9Ah^~Q}Gfni~-;bMOS7Z+bFfRIaq#fzczA%gX7YZCr{$|Ou{{+=$0WfT>ujD9K<(d?xN zkq)NZ>k69=^AvJF6>1Hk_JN8fH8wVOTKN~L)4lBDJ_kWS5WAfn9xBrABwACsw<``3!X_%72`NMI({uK&IHjhx3%`T0YaOKU<8DMCstM#&NH-n~m78F?03#&P%VO@z9R4u=P) zsA!FT+>qkdvf|Y4CHq0j$*C!`ll=|CiSmkyjwJ@7vaN<<(Ks^>sYhZYHD=7n01}3* z@^Ycuckh0J4eadg&5nqOaDOwWo>Nee-Pfm#DQ;_P>yv9MG!X{3ZElvT-W$$li-DkN#5CHW^OJa7!1Ned|aB+f{qWK*AtL+%7RvD2X^7fZEo4&mrHD(T9KHH z6LRnVNwrc@Q3(tWj}346v%lYZP2V+b*H|xnbJH3O4z9&0+V9&pK4`DDv-KF3QFMi&)|2A8x=E)M zUV6Q`AIbYPOikGb1_mNxV*~2z#qVeqA_Q%whn!B5?+eygd@U=x_Q}TB>Huls1QM*G zriK-d^aoW4&H8pgwfeU2Dr`vT-*ITuvD>GAdYj+|N}_udiAhN+>gvAh>z3eR3{MYt zn7?iq1i51wE_TPuA(73XP$5G@>gvy){XE?9s>7>qX~Frk)Z3P&_z^eJJS`;mBVsj6 z-}Gm_7gl>`r=*1i$F%DoMd;?Jv9HGIyZK)(s&~bLdr9Jo+kwtUVtQd;uqcTS-jYK_ zIxR$N9P7@>8csCO6wOJI2VqM{NSJ3+UC1G=fF-o9;L|c$J-z9O6W#JxHwZ6XBBP@V zSzR@sbUT>xNp>%?otJ5DX-O+Dr$VFAhpTx721Z8A@-v;|rA0-NN*1Q(=H76W8XFt^ z-4rwi|D-+vheLTsllzN+zqybRuf1^c8+Jj)zj9DmE6e>E8R(73#l=O|^9*iB-lu|$ zyAG)wgIt}pGJa=a0atif$!mG{;BDQzJ@K-#O@p;nsu5*~WTE@#0}al&u$?Z(pzi=J zX-&W(_tZ)R!J$X=qUPq0^fgr~_Y(&a;}8BpVj6uU8pc;tCXGYQ1kv@R3E_iA_w6M#8KDzR$JxqJ;g~8 z*k6>ggDTNMx7ttxM!OTka`iUnH|$UqVG4$~U&ZYXRTivplFtU8CoxkSh}YB5$F``? zaJi zQD9>s%ATJ3bR+WYpRv=Do)h7VsxIKst~R>3ZO%<$&5|MB&EPR(^+uvBxzh(tjgbk- zXGO0B7~SLB{*!zDUw@D~`T8v+BqZ9fq{TgULQC|3?d$x!h$IX7V`Fh~@h~c@AWBvV z(y-uR%9E+*8RXs41c-;V%wB;HF$yI^N~O+ddZ_tc)`J#yvr^OYT;tM{a&xOO-Pm#Y z?}AGgL{);UV@rrXdejtHyfruHWz-fHDmM{=;Y`8WDkDNXNWVIguS1G0u~Nrlbg!!a zr0)^Q+?Yv9wAelf6?8R0$){_A#DfeU{zos|*ReJ<#AJGZeu;!c7KscwwbjswCC+_j z4c5u&cL!T!6m#cN9aeh|3+p5)DXFZYl2+*9)@!fd z-`@{;Rz_2k3Z%_{RL_M79E0J=D1nY*g3M zdW`s7S*iW^xuc`t<4>wbJ2dMRn_%*lAcSCh{`~n9x2EO?YM`U58m=CfkZ}95D7^QT zvSc40pH?g3`}gO7YcyZtszyKe$ryrKd9q2@C%WVoMfxa42n5kk+km z-n)&c@9BBs{-z0t!`-`g*}1r43$j-#Ha9n0p`Z&LHncAcbWsr*9x+`#oJiU9Q;Gh^ zaqAl!w)3q-L&L)zDYVOb1&sJU=7Nx~%*@Q%ySg437%)Pk@`Tu8UhUQ!w51zWQ&Yq4 z#$i!aT1pA2vK2B#NJ0Wl`wL!{n>UG8aqGcJ?@YewO)D%U)zZ?6kpC1I80ZP+!(nqW zXZw-J01J5w!!21^SveN+d-v|KPi`|Z`TF~Jj;cALxpXUimr^{ggD^O)=48*VuZO^+ zf*WEM5TFG7!Vq~zeL2Y&Si=AA{mTC*X>B;%DgFMK_h4SsAqybRb; zK9ip2{f!BfrR5jfDxf0t@<$ni23w0Ov~Y@qop+Z%TexJxkEuvY`=Pt2$P8yZ`^KV! zLWyHJbqDMTGH}B^4UjCZ#>Xk?>FFwC0)q^$#{aP<7ay`z#7Sguc!;2R(~)i4SD^C@ z5=i%~r@;;$z9ERzjS6iWLsN63+r1FAQY(D@jZ#v1&E~;pn_@|5+6h!~`DY9B>Hvwc zgG%&LxC~RI`n%zgS$|``eC-_`>c`*v5g3cubnXW?ZfKA4^DG>Sf=v-@dxYr55Jx2+q6FXE(>O%shhCkkh3E4E?63JmcV9l6!~AlCk2g;tVfC_J9x zGWNEnoM@8=mSp&sbGET7j92l8Ymx<6489Pq9!+9Dd)7c|U_g;2WX=-ViRp~ec^h?Jbie52dn&Sq$Obj2W z?NR1tW)hZ`cYrL(WS&h`InGa3ykQ>L7ngDNh}#dT4h_V3+HBoW7-TpmZ4fNMoYL?Fb(#14;+Fc8*Lm41+;=vrD@Ol@oeVq>p8 z`=W_qWMmZWmXoncl`A5%RsDy!_WZ94Aaf254)~!PLPAvDjO}G9{1!2%iTk2>$MRcE z9}*G>-@JJPIDH=a2Oe@{3IbNRiTm9c*|t7drjx*9*8o)8wS z48i(caKc!9_n@06^!*oPlShzKCe<)jTaLj7^6Crb#+7Q&d;{uxKWspH#2tb_sKe+ z@fOt9UcX3(yZy2-yC4Rs_4V`H)3NDKmwshy>m~JjV)Man-=p6g5;JYMxVTh&FE1mJ zNCQ(-d}!pp0RbGvWllSWNMMM-3Gwmq#UYg@eEhi31qeA1)WH;E@@ct}* zr`DeMO1I2h zQws>2zv0IZ%{jrp;`7J2d=Jdvo|<*;qEC_^1c61pphkdZ3(Lx43kIvifb1j0Wn}{- zY279)&CO}{|3d#pAoQG9KDkfm)w$C$hP%DO|he&Ljt$z&acDNq5S;s$%2@ro0g6a5ZpA_-_p|3vzVMUg{$^$%40mB5Dg7J zcx1G+!56R-SY>;AySTgi-&Bh}L8ypcIFp>5oQE){>K`9}=kJf}x<6)OUIxP#HK(ZQ zlbs9LdT~VIslZwTpk7{I$0h^!;W*X7Tbxub!JryV!CgW8(|DRedn+ z@;N_WT2>Yhuw#+OxjW!0jKhs-FW=UYN`sc?` zQst>C`kkh)FGtg7B=5C`(FgMwwa$V<$SEm}9{yP4gAK>1hxw2#(Bt*V3N`nGyy|M# z_6^040z_ixr+m}yCsz0P`B6ZGew5oX1IOdHZkm~4$bOO}`Sj^kODn4)vq9ES>xYQd z0}}`{7n~y^F);)j6*8U|2gooL-{OH9zs>Z6#D{J)YFWq&O!{>H8a@4mY@udq-IkY^ zJwbM00D`vF$Ljw@l`AZRLZO75wi&@a5rCiSP8OwwL_k9?=9abB;RR&4>!kMKbw!7* z>Cg*&3kSZEQ`%;wiRU&ud*AUd@fzr6KTOjPxcp~HVIIL5>8iRL6cJ=C~DQ_79 z;z7oZ@e+m6n;}9L78aSAnU~+5h|EzD`RXtJLsCLL!8RX7#Cw4uU7xAbw-N#B9(T`- z{2BT=0pf5?|NI^3{3qt?an`nR{+@vsGV*J2(eU@L4mi9)jj!Qc_{BbkBta$Oa0gCZ z#)c~Y>z~a8pjeHgqt|+RdMY_hhJJDrHNwctdvfymuZ0B(rbvUH#QWR7e-FsdKzsWP z7VTuKF8pA|g8^_kpxck*kuzAKxph#nSI3jZJRU-HyQqq|xVZYZHav)tXa3kc!$L^& z;^JaP7%2e$HMO+#h1Y9nXb6+Y++nhAfLG#fZf5eQc1$D4F1xGxfpn$8ox|$o*BY$Jfv<0O)50F1PyxSdSL%95^hM9XIr%xb&9PZ3x zAm--goS^bAWT_o5Z$BhgLzXFWcG_jDrRHEd7__4r)-42E0myNuojE*Yx%QOoRooE% zrAt0FHKMQIyeV=!ad3M3wgH|6PLyzpPR2^RjiT&u*9+d$gSzvUiZ@Hj>gw1cA|em= ze;94=?^6~mi*XZ2U5qP$&VjjoUuPn(sOSg7ELT_8*`=lI{%&=iU7~_4=DK0OS{Mk8 zjg3KsiK;V!;q$dR6B?GkiDsl($awFMb literal 0 HcmV?d00001 diff --git a/doxygen/classdr_1_1shp_1_1device__vector-members.html b/doxygen/classdr_1_1shp_1_1device__vector-members.html new file mode 100644 index 0000000000..480b9cf288 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1device__vector-members.html @@ -0,0 +1,95 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::shp::device_vector< T, Allocator > Member List
+
+
+ +

This is the complete list of members for dr::shp::device_vector< T, Allocator >, including all inherited members.

+ + + + + + + + +
base typedef (defined in dr::shp::device_vector< T, Allocator >)dr::shp::device_vector< T, Allocator >
device_vector() noexcept (defined in dr::shp::device_vector< T, Allocator >)dr::shp::device_vector< T, Allocator >inline
device_vector(size_type count, const Allocator &alloc, size_type rank) (defined in dr::shp::device_vector< T, Allocator >)dr::shp::device_vector< T, Allocator >inline
difference_type typedef (defined in dr::shp::device_vector< T, Allocator >)dr::shp::device_vector< T, Allocator >
rank() const noexcept (defined in dr::shp::device_vector< T, Allocator >)dr::shp::device_vector< T, Allocator >inline
size_type typedef (defined in dr::shp::device_vector< T, Allocator >)dr::shp::device_vector< T, Allocator >
value_type typedef (defined in dr::shp::device_vector< T, Allocator >)dr::shp::device_vector< T, Allocator >
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1device__vector.html b/doxygen/classdr_1_1shp_1_1device__vector.html new file mode 100644 index 0000000000..43653d40ab --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1device__vector.html @@ -0,0 +1,254 @@ + + + + + + + +Distributed Ranges: dr::shp::device_vector< T, Allocator > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::shp::device_vector< T, Allocator > Class Template Reference
+
+
+
+Inheritance diagram for dr::shp::device_vector< T, Allocator >:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for dr::shp::device_vector< T, Allocator >:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

+using base = dr::shp::vector< T, Allocator >
 
+using value_type = T
 
+using size_type = std::size_t
 
+using difference_type = std::size_t
 
- Public Types inherited from dr::shp::vector< T, Allocator >
+using value_type = T
 
+using allocator_type = Allocator
 
+using size_type = std::size_t
 
+using difference_type = std::ptrdiff_t
 
+using pointer = typename std::allocator_traits< allocator_type >::pointer
 
+using const_pointer = typename std::allocator_traits< allocator_type >::const_pointer
 
+using reference = decltype(*std::declval< pointer >())
 
+using const_reference = decltype(*std::declval< const_pointer >())
 
+using iterator = pointer
 
+using const_iterator = const_pointer
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+constexpr device_vector (size_type count, const Allocator &alloc, size_type rank)
 
+constexpr std::size_t rank () const noexcept
 
- Public Member Functions inherited from dr::shp::vector< T, Allocator >
vector (const Allocator &allocator) noexcept
 
vector (size_type count, const T &value, const Allocator &alloc=Allocator())
 
vector (size_type count, const Allocator &alloc=Allocator())
 
+constexpr vector (Iter first, Iter last, const Allocator &alloc=Allocator())
 
vector (const vector &other)
 
vector (const vector &other, const Allocator &alloc)
 
vector (vector &&other) noexcept
 
vector (vector &&other, const Allocator &alloc) noexcept
 
vector (std::initializer_list< T > init, const Allocator &alloc=Allocator())
 
+vectoroperator= (const vector &other)
 
+void assign (Iter first, Iter last)
 
+size_type size () const noexcept
 
+bool empty () const noexcept
 
+size_type capacity () const noexcept
 
+pointer data () noexcept
 
+const_pointer data () const noexcept
 
+allocator_type get_allocator () const noexcept
 
+iterator begin () noexcept
 
+const_iterator begin () const noexcept
 
+iterator end () noexcept
 
+const_iterator end () const noexcept
 
+reference operator[] (size_type pos)
 
+const_reference operator[] (size_type pos) const
 
+void reserve (size_type new_cap)
 
+void push_back (const T &value)
 
+void push_back (T &&value)
 
+bool try_push_back (const T &value)
 
+void resize (size_type count)
 
+void resize (size_type count, const value_type &value)
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/device_vector.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1device__vector__coll__graph.map b/doxygen/classdr_1_1shp_1_1device__vector__coll__graph.map new file mode 100644 index 0000000000..707a6747f9 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1device__vector__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/classdr_1_1shp_1_1device__vector__coll__graph.md5 b/doxygen/classdr_1_1shp_1_1device__vector__coll__graph.md5 new file mode 100644 index 0000000000..0bb72fc64f --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1device__vector__coll__graph.md5 @@ -0,0 +1 @@ +7a1a59449d12aeb58a0ccc55d37ae525 \ No newline at end of file diff --git a/doxygen/classdr_1_1shp_1_1device__vector__coll__graph.png b/doxygen/classdr_1_1shp_1_1device__vector__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..adbfc73c1baa500f876d9d8cd7230a7e487f0b1d GIT binary patch literal 5856 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 + + + diff --git a/doxygen/classdr_1_1shp_1_1device__vector__inherit__graph.md5 b/doxygen/classdr_1_1shp_1_1device__vector__inherit__graph.md5 new file mode 100644 index 0000000000..0bb72fc64f --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1device__vector__inherit__graph.md5 @@ -0,0 +1 @@ +7a1a59449d12aeb58a0ccc55d37ae525 \ No newline at end of file diff --git a/doxygen/classdr_1_1shp_1_1device__vector__inherit__graph.png b/doxygen/classdr_1_1shp_1_1device__vector__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..adbfc73c1baa500f876d9d8cd7230a7e487f0b1d GIT binary patch literal 5856 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 + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::shp::distributed_dense_matrix< T > Member List
+
+
+ +

This is the complete list of members for dr::shp::distributed_dense_matrix< T >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
begin() (defined in dr::shp::distributed_dense_matrix< T >)dr::shp::distributed_dense_matrix< T >inline
const_reference typedef (defined in dr::shp::distributed_dense_matrix< T >)dr::shp::distributed_dense_matrix< T >
const_scalar_reference typedef (defined in dr::shp::distributed_dense_matrix< T >)dr::shp::distributed_dense_matrix< T >
difference_type typedef (defined in dr::shp::distributed_dense_matrix< T >)dr::shp::distributed_dense_matrix< T >
distributed_dense_matrix(key_type shape) (defined in dr::shp::distributed_dense_matrix< T >)dr::shp::distributed_dense_matrix< T >inline
distributed_dense_matrix(key_type shape, const matrix_partition &partition) (defined in dr::shp::distributed_dense_matrix< T >)dr::shp::distributed_dense_matrix< T >inline
end() (defined in dr::shp::distributed_dense_matrix< T >)dr::shp::distributed_dense_matrix< T >inline
get_tile(key_type tile_index, const Allocator &alloc=Allocator{}) (defined in dr::shp::distributed_dense_matrix< T >)dr::shp::distributed_dense_matrix< T >inline
get_tile_async(key_type tile_index, const Allocator &alloc=Allocator{}) (defined in dr::shp::distributed_dense_matrix< T >)dr::shp::distributed_dense_matrix< T >inline
grid_shape() const noexcept (defined in dr::shp::distributed_dense_matrix< T >)dr::shp::distributed_dense_matrix< T >inline
iterator typedef (defined in dr::shp::distributed_dense_matrix< T >)dr::shp::distributed_dense_matrix< T >
key_type typedef (defined in dr::shp::distributed_dense_matrix< T >)dr::shp::distributed_dense_matrix< T >
operator[](key_type index) (defined in dr::shp::distributed_dense_matrix< T >)dr::shp::distributed_dense_matrix< T >inline
operator[](key_type index) const (defined in dr::shp::distributed_dense_matrix< T >)dr::shp::distributed_dense_matrix< T >inline
reference typedef (defined in dr::shp::distributed_dense_matrix< T >)dr::shp::distributed_dense_matrix< T >
scalar_reference typedef (defined in dr::shp::distributed_dense_matrix< T >)dr::shp::distributed_dense_matrix< T >
segments() (defined in dr::shp::distributed_dense_matrix< T >)dr::shp::distributed_dense_matrix< T >inline
shape() const noexcept (defined in dr::shp::distributed_dense_matrix< T >)dr::shp::distributed_dense_matrix< T >inline
size() const noexcept (defined in dr::shp::distributed_dense_matrix< T >)dr::shp::distributed_dense_matrix< T >inline
size_type typedef (defined in dr::shp::distributed_dense_matrix< T >)dr::shp::distributed_dense_matrix< T >
tile(key_type tile_index) (defined in dr::shp::distributed_dense_matrix< T >)dr::shp::distributed_dense_matrix< T >inline
tile_shape() const noexcept (defined in dr::shp::distributed_dense_matrix< T >)dr::shp::distributed_dense_matrix< T >inline
tiles() (defined in dr::shp::distributed_dense_matrix< T >)dr::shp::distributed_dense_matrix< T >inline
value_type typedef (defined in dr::shp::distributed_dense_matrix< T >)dr::shp::distributed_dense_matrix< T >
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1distributed__dense__matrix.html b/doxygen/classdr_1_1shp_1_1distributed__dense__matrix.html new file mode 100644 index 0000000000..074bdddf53 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1distributed__dense__matrix.html @@ -0,0 +1,173 @@ + + + + + + + +Distributed Ranges: dr::shp::distributed_dense_matrix< T > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::shp::distributed_dense_matrix< T > Class Template Reference
+
+
+ + + + + + + + + + + + + + + + + + + + +

+Public Types

+using size_type = std::size_t
 
+using difference_type = std::ptrdiff_t
 
+using value_type = dr::shp::matrix_entry< T >
 
+using scalar_reference = rng::range_reference_t< dr::shp::device_vector< T, dr::shp::device_allocator< T > > >
 
+using const_scalar_reference = rng::range_reference_t< const dr::shp::device_vector< T, dr::shp::device_allocator< T > > >
 
+using reference = dr::shp::matrix_ref< T, scalar_reference >
 
+using const_reference = dr::shp::matrix_ref< const T, const_scalar_reference >
 
+using key_type = dr::index<>
 
+using iterator = distributed_dense_matrix_iterator< T, dr::shp::device_vector< T, dr::shp::device_allocator< T > > >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

distributed_dense_matrix (key_type shape)
 
distributed_dense_matrix (key_type shape, const matrix_partition &partition)
 
+size_type size () const noexcept
 
+key_type shape () const noexcept
 
+scalar_reference operator[] (key_type index)
 
+const_scalar_reference operator[] (key_type index) const
 
+iterator begin ()
 
+iterator end ()
 
+key_type tile_shape () const noexcept
 
+key_type grid_shape () const noexcept
 
+auto tile (key_type tile_index)
 
+std::vector< dense_matrix_view< T, rng::iterator_t< dr::shp::device_vector< T, dr::shp::device_allocator< T > > > > > tiles ()
 
+template<typename Allocator = std::allocator<T>>
auto get_tile (key_type tile_index, const Allocator &alloc=Allocator{})
 
+template<typename Allocator = std::allocator<T>>
auto get_tile_async (key_type tile_index, const Allocator &alloc=Allocator{})
 
+auto segments ()
 
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1distributed__dense__matrix__accessor-members.html b/doxygen/classdr_1_1shp_1_1distributed__dense__matrix__accessor-members.html new file mode 100644 index 0000000000..195ab94a62 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1distributed__dense__matrix__accessor-members.html @@ -0,0 +1,110 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::shp::distributed_dense_matrix_accessor< T, L > Member List
+
+
+ +

This is the complete list of members for dr::shp::distributed_dense_matrix_accessor< T, L >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + +
const_iterator_accessor typedef (defined in dr::shp::distributed_dense_matrix_accessor< T, L >)dr::shp::distributed_dense_matrix_accessor< T, L >
difference_type typedef (defined in dr::shp::distributed_dense_matrix_accessor< T, L >)dr::shp::distributed_dense_matrix_accessor< T, L >
distributed_dense_matrix_accessor() noexcept=default (defined in dr::shp::distributed_dense_matrix_accessor< T, L >)dr::shp::distributed_dense_matrix_accessor< T, L >
distributed_dense_matrix_accessor(const distributed_dense_matrix_accessor &) noexcept=default (defined in dr::shp::distributed_dense_matrix_accessor< T, L >)dr::shp::distributed_dense_matrix_accessor< T, L >
distributed_dense_matrix_accessor(std::span< tile_type > tiles, key_type grid_idx, key_type tile_idx, key_type grid_shape, key_type tile_shape, key_type matrix_shape) noexcept (defined in dr::shp::distributed_dense_matrix_accessor< T, L >)dr::shp::distributed_dense_matrix_accessor< T, L >inline
iterator_accessor typedef (defined in dr::shp::distributed_dense_matrix_accessor< T, L >)dr::shp::distributed_dense_matrix_accessor< T, L >
iterator_category typedef (defined in dr::shp::distributed_dense_matrix_accessor< T, L >)dr::shp::distributed_dense_matrix_accessor< T, L >
key_type typedef (defined in dr::shp::distributed_dense_matrix_accessor< T, L >)dr::shp::distributed_dense_matrix_accessor< T, L >
nonconst_iterator_accessor typedef (defined in dr::shp::distributed_dense_matrix_accessor< T, L >)dr::shp::distributed_dense_matrix_accessor< T, L >
operator*() const noexcept (defined in dr::shp::distributed_dense_matrix_accessor< T, L >)dr::shp::distributed_dense_matrix_accessor< T, L >inline
operator+=(difference_type offset) noexcept (defined in dr::shp::distributed_dense_matrix_accessor< T, L >)dr::shp::distributed_dense_matrix_accessor< T, L >inline
operator-(const iterator_accessor &other) const noexcept (defined in dr::shp::distributed_dense_matrix_accessor< T, L >)dr::shp::distributed_dense_matrix_accessor< T, L >inline
operator<(const iterator_accessor &other) const noexcept (defined in dr::shp::distributed_dense_matrix_accessor< T, L >)dr::shp::distributed_dense_matrix_accessor< T, L >inline
operator=(const distributed_dense_matrix_accessor &) noexcept=default (defined in dr::shp::distributed_dense_matrix_accessor< T, L >)dr::shp::distributed_dense_matrix_accessor< T, L >
operator==(const iterator_accessor &other) const noexcept (defined in dr::shp::distributed_dense_matrix_accessor< T, L >)dr::shp::distributed_dense_matrix_accessor< T, L >inline
reference typedef (defined in dr::shp::distributed_dense_matrix_accessor< T, L >)dr::shp::distributed_dense_matrix_accessor< T, L >
scalar_reference typedef (defined in dr::shp::distributed_dense_matrix_accessor< T, L >)dr::shp::distributed_dense_matrix_accessor< T, L >
scalar_value_type typedef (defined in dr::shp::distributed_dense_matrix_accessor< T, L >)dr::shp::distributed_dense_matrix_accessor< T, L >
size_type typedef (defined in dr::shp::distributed_dense_matrix_accessor< T, L >)dr::shp::distributed_dense_matrix_accessor< T, L >
tile_type typedef (defined in dr::shp::distributed_dense_matrix_accessor< T, L >)dr::shp::distributed_dense_matrix_accessor< T, L >
value_type typedef (defined in dr::shp::distributed_dense_matrix_accessor< T, L >)dr::shp::distributed_dense_matrix_accessor< T, L >
~distributed_dense_matrix_accessor() noexcept=default (defined in dr::shp::distributed_dense_matrix_accessor< T, L >)dr::shp::distributed_dense_matrix_accessor< T, L >
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1distributed__dense__matrix__accessor.html b/doxygen/classdr_1_1shp_1_1distributed__dense__matrix__accessor.html new file mode 100644 index 0000000000..8c8afbbb26 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1distributed__dense__matrix__accessor.html @@ -0,0 +1,159 @@ + + + + + + + +Distributed Ranges: dr::shp::distributed_dense_matrix_accessor< T, L > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::shp::distributed_dense_matrix_accessor< T, L > Class Template Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

+using size_type = std::size_t
 
+using difference_type = std::ptrdiff_t
 
+using scalar_value_type = rng::range_value_t< L >
 
+using scalar_reference = rng::range_reference_t< L >
 
+using value_type = dr::shp::matrix_entry< scalar_value_type, std::size_t >
 
+using reference = dr::shp::matrix_ref< T, std::size_t, scalar_reference >
 
+using iterator_category = std::random_access_iterator_tag
 
+using iterator_accessor = distributed_dense_matrix_accessor
 
+using const_iterator_accessor = iterator_accessor
 
+using nonconst_iterator_accessor = iterator_accessor
 
+using tile_type = L
 
+using key_type = dr::index<>
 
+ + + + + + + + + + + + + + + + + +

+Public Member Functions

+constexpr distributed_dense_matrix_accessor (const distributed_dense_matrix_accessor &) noexcept=default
 
+constexpr distributed_dense_matrix_accessoroperator= (const distributed_dense_matrix_accessor &) noexcept=default
 
+constexpr distributed_dense_matrix_accessor (std::span< tile_type > tiles, key_type grid_idx, key_type tile_idx, key_type grid_shape, key_type tile_shape, key_type matrix_shape) noexcept
 
+constexpr distributed_dense_matrix_accessoroperator+= (difference_type offset) noexcept
 
+constexpr bool operator== (const iterator_accessor &other) const noexcept
 
+constexpr difference_type operator- (const iterator_accessor &other) const noexcept
 
+constexpr bool operator< (const iterator_accessor &other) const noexcept
 
+constexpr reference operator* () const noexcept
 
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1distributed__range__accessor-members.html b/doxygen/classdr_1_1shp_1_1distributed__range__accessor-members.html new file mode 100644 index 0000000000..452af01d68 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1distributed__range__accessor-members.html @@ -0,0 +1,107 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::shp::distributed_range_accessor< Segments > Member List
+
+
+ +

This is the complete list of members for dr::shp::distributed_range_accessor< Segments >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + +
const_iterator_accessor typedef (defined in dr::shp::distributed_range_accessor< Segments >)dr::shp::distributed_range_accessor< Segments >
difference_type typedef (defined in dr::shp::distributed_range_accessor< Segments >)dr::shp::distributed_range_accessor< Segments >
distributed_range_accessor() noexcept=default (defined in dr::shp::distributed_range_accessor< Segments >)dr::shp::distributed_range_accessor< Segments >
distributed_range_accessor(const distributed_range_accessor &) noexcept=default (defined in dr::shp::distributed_range_accessor< Segments >)dr::shp::distributed_range_accessor< Segments >
distributed_range_accessor(Segments segments, size_type segment_id, size_type idx) noexcept (defined in dr::shp::distributed_range_accessor< Segments >)dr::shp::distributed_range_accessor< Segments >inline
iterator_accessor typedef (defined in dr::shp::distributed_range_accessor< Segments >)dr::shp::distributed_range_accessor< Segments >
iterator_category typedef (defined in dr::shp::distributed_range_accessor< Segments >)dr::shp::distributed_range_accessor< Segments >
nonconst_iterator_accessor typedef (defined in dr::shp::distributed_range_accessor< Segments >)dr::shp::distributed_range_accessor< Segments >
operator*() const noexcept (defined in dr::shp::distributed_range_accessor< Segments >)dr::shp::distributed_range_accessor< Segments >inline
operator+=(difference_type offset) noexcept (defined in dr::shp::distributed_range_accessor< Segments >)dr::shp::distributed_range_accessor< Segments >inline
operator-(const iterator_accessor &other) const noexcept (defined in dr::shp::distributed_range_accessor< Segments >)dr::shp::distributed_range_accessor< Segments >inline
operator<(const iterator_accessor &other) const noexcept (defined in dr::shp::distributed_range_accessor< Segments >)dr::shp::distributed_range_accessor< Segments >inline
operator=(const distributed_range_accessor &) noexcept=default (defined in dr::shp::distributed_range_accessor< Segments >)dr::shp::distributed_range_accessor< Segments >
operator==(const iterator_accessor &other) const noexcept (defined in dr::shp::distributed_range_accessor< Segments >)dr::shp::distributed_range_accessor< Segments >inline
reference typedef (defined in dr::shp::distributed_range_accessor< Segments >)dr::shp::distributed_range_accessor< Segments >
segment_type typedef (defined in dr::shp::distributed_range_accessor< Segments >)dr::shp::distributed_range_accessor< Segments >
size_type typedef (defined in dr::shp::distributed_range_accessor< Segments >)dr::shp::distributed_range_accessor< Segments >
value_type typedef (defined in dr::shp::distributed_range_accessor< Segments >)dr::shp::distributed_range_accessor< Segments >
~distributed_range_accessor() noexcept=default (defined in dr::shp::distributed_range_accessor< Segments >)dr::shp::distributed_range_accessor< Segments >
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1distributed__range__accessor.html b/doxygen/classdr_1_1shp_1_1distributed__range__accessor.html new file mode 100644 index 0000000000..a102cbcea2 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1distributed__range__accessor.html @@ -0,0 +1,150 @@ + + + + + + + +Distributed Ranges: dr::shp::distributed_range_accessor< Segments > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::shp::distributed_range_accessor< Segments > Class Template Reference
+
+
+ + + + + + + + + + + + + + + + + + + + +

+Public Types

+using segment_type = rng::range_value_t< Segments >
 
+using value_type = rng::range_value_t< segment_type >
 
+using size_type = rng::range_size_t< segment_type >
 
+using difference_type = rng::range_difference_t< segment_type >
 
+using reference = rng::range_reference_t< segment_type >
 
+using iterator_category = std::random_access_iterator_tag
 
+using iterator_accessor = distributed_range_accessor
 
+using const_iterator_accessor = iterator_accessor
 
+using nonconst_iterator_accessor = iterator_accessor
 
+ + + + + + + + + + + + + + + + + +

+Public Member Functions

+constexpr distributed_range_accessor (const distributed_range_accessor &) noexcept=default
 
+constexpr distributed_range_accessoroperator= (const distributed_range_accessor &) noexcept=default
 
+constexpr distributed_range_accessor (Segments segments, size_type segment_id, size_type idx) noexcept
 
+constexpr distributed_range_accessoroperator+= (difference_type offset) noexcept
 
+constexpr bool operator== (const iterator_accessor &other) const noexcept
 
+constexpr difference_type operator- (const iterator_accessor &other) const noexcept
 
+constexpr bool operator< (const iterator_accessor &other) const noexcept
 
+constexpr reference operator* () const noexcept
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/containers/sparse_matrix.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1distributed__span-members.html b/doxygen/classdr_1_1shp_1_1distributed__span-members.html new file mode 100644 index 0000000000..2a4a09b913 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1distributed__span-members.html @@ -0,0 +1,113 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::shp::distributed_span< T, L > Member List
+
+
+ +

This is the complete list of members for dr::shp::distributed_span< T, L >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
back() (defined in dr::shp::distributed_span< T, L >)dr::shp::distributed_span< T, L >inline
begin() (defined in dr::shp::distributed_span< T, L >)dr::shp::distributed_span< T, L >inline
difference_type typedef (defined in dr::shp::distributed_span< T, L >)dr::shp::distributed_span< T, L >
distributed_span() noexcept=default (defined in dr::shp::distributed_span< T, L >)dr::shp::distributed_span< T, L >
distributed_span(const distributed_span &) noexcept=default (defined in dr::shp::distributed_span< T, L >)dr::shp::distributed_span< T, L >
distributed_span(R &&segments) (defined in dr::shp::distributed_span< T, L >)dr::shp::distributed_span< T, L >inline
distributed_span(R &&r) (defined in dr::shp::distributed_span< T, L >)dr::shp::distributed_span< T, L >inline
element_type typedef (defined in dr::shp::distributed_span< T, L >)dr::shp::distributed_span< T, L >
empty() const noexcept (defined in dr::shp::distributed_span< T, L >)dr::shp::distributed_span< T, L >inline
end() (defined in dr::shp::distributed_span< T, L >)dr::shp::distributed_span< T, L >inline
first(size_type Count) const (defined in dr::shp::distributed_span< T, L >)dr::shp::distributed_span< T, L >inline
front() (defined in dr::shp::distributed_span< T, L >)dr::shp::distributed_span< T, L >inline
iterator typedef (defined in dr::shp::distributed_span< T, L >)dr::shp::distributed_span< T, L >
last(size_type Count) const (defined in dr::shp::distributed_span< T, L >)dr::shp::distributed_span< T, L >inline
operator=(const distributed_span &) noexcept=default (defined in dr::shp::distributed_span< T, L >)dr::shp::distributed_span< T, L >
operator[](size_type idx) const (defined in dr::shp::distributed_span< T, L >)dr::shp::distributed_span< T, L >inline
reference typedef (defined in dr::shp::distributed_span< T, L >)dr::shp::distributed_span< T, L >
segment_type typedef (defined in dr::shp::distributed_span< T, L >)dr::shp::distributed_span< T, L >
segments() (defined in dr::shp::distributed_span< T, L >)dr::shp::distributed_span< T, L >inline
segments() const (defined in dr::shp::distributed_span< T, L >)dr::shp::distributed_span< T, L >inline
size() const noexcept (defined in dr::shp::distributed_span< T, L >)dr::shp::distributed_span< T, L >inline
size_bytes() const noexcept (defined in dr::shp::distributed_span< T, L >)dr::shp::distributed_span< T, L >inline
size_type typedef (defined in dr::shp::distributed_span< T, L >)dr::shp::distributed_span< T, L >
subspan(size_type Offset, size_type Count=std::dynamic_extent) const (defined in dr::shp::distributed_span< T, L >)dr::shp::distributed_span< T, L >inline
value_type typedef (defined in dr::shp::distributed_span< T, L >)dr::shp::distributed_span< T, L >
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1distributed__span.html b/doxygen/classdr_1_1shp_1_1distributed__span.html new file mode 100644 index 0000000000..00ed1dba58 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1distributed__span.html @@ -0,0 +1,192 @@ + + + + + + + +Distributed Ranges: dr::shp::distributed_span< T, L > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::shp::distributed_span< T, L > Class Template Reference
+
+
+
+Inheritance diagram for dr::shp::distributed_span< T, L >:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for dr::shp::distributed_span< T, L >:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + +

+Public Types

+using element_type = T
 
+using value_type = std::remove_cv_t< T >
 
+using segment_type = dr::shp::device_span< T, L >
 
+using size_type = rng::range_size_t< segment_type >
 
+using difference_type = rng::range_difference_t< segment_type >
 
+using reference = rng::range_reference_t< segment_type >
 
+using iterator = distributed_span_iterator< T, segment_type >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+constexpr distributed_span (const distributed_span &) noexcept=default
 
+constexpr distributed_spanoperator= (const distributed_span &) noexcept=default
 
+template<rng::input_range R>
+requires (dr::remote_range<rng::range_reference_t<R>>)
constexpr distributed_span (R &&segments)
 
+template<dr::distributed_range R>
constexpr distributed_span (R &&r)
 
+constexpr size_type size () const noexcept
 
+constexpr size_type size_bytes () const noexcept
 
+constexpr reference operator[] (size_type idx) const
 
+constexpr bool empty () const noexcept
 
+constexpr distributed_span subspan (size_type Offset, size_type Count=std::dynamic_extent) const
 
+constexpr distributed_span first (size_type Count) const
 
+constexpr distributed_span last (size_type Count) const
 
+iterator begin ()
 
+iterator end ()
 
+constexpr reference front ()
 
+constexpr reference back ()
 
+std::span< segment_typesegments ()
 
+std::span< const segment_typesegments () const
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/distributed_span.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1distributed__span__accessor-members.html b/doxygen/classdr_1_1shp_1_1distributed__span__accessor-members.html new file mode 100644 index 0000000000..23664dd5ec --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1distributed__span__accessor-members.html @@ -0,0 +1,109 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::shp::distributed_span_accessor< T, L > Member List
+
+
+ +

This is the complete list of members for dr::shp::distributed_span_accessor< T, L >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + +
const_iterator_accessor typedef (defined in dr::shp::distributed_span_accessor< T, L >)dr::shp::distributed_span_accessor< T, L >
difference_type typedef (defined in dr::shp::distributed_span_accessor< T, L >)dr::shp::distributed_span_accessor< T, L >
distributed_span_accessor() noexcept=default (defined in dr::shp::distributed_span_accessor< T, L >)dr::shp::distributed_span_accessor< T, L >
distributed_span_accessor(const distributed_span_accessor &) noexcept=default (defined in dr::shp::distributed_span_accessor< T, L >)dr::shp::distributed_span_accessor< T, L >
distributed_span_accessor(std::span< segment_type > segments, size_type segment_id, size_type idx) noexcept (defined in dr::shp::distributed_span_accessor< T, L >)dr::shp::distributed_span_accessor< T, L >inline
element_type typedef (defined in dr::shp::distributed_span_accessor< T, L >)dr::shp::distributed_span_accessor< T, L >
iterator_accessor typedef (defined in dr::shp::distributed_span_accessor< T, L >)dr::shp::distributed_span_accessor< T, L >
iterator_category typedef (defined in dr::shp::distributed_span_accessor< T, L >)dr::shp::distributed_span_accessor< T, L >
nonconst_iterator_accessor typedef (defined in dr::shp::distributed_span_accessor< T, L >)dr::shp::distributed_span_accessor< T, L >
operator*() const noexcept (defined in dr::shp::distributed_span_accessor< T, L >)dr::shp::distributed_span_accessor< T, L >inline
operator+=(difference_type offset) noexcept (defined in dr::shp::distributed_span_accessor< T, L >)dr::shp::distributed_span_accessor< T, L >inline
operator-(const iterator_accessor &other) const noexcept (defined in dr::shp::distributed_span_accessor< T, L >)dr::shp::distributed_span_accessor< T, L >inline
operator<(const iterator_accessor &other) const noexcept (defined in dr::shp::distributed_span_accessor< T, L >)dr::shp::distributed_span_accessor< T, L >inline
operator=(const distributed_span_accessor &) noexcept=default (defined in dr::shp::distributed_span_accessor< T, L >)dr::shp::distributed_span_accessor< T, L >
operator==(const iterator_accessor &other) const noexcept (defined in dr::shp::distributed_span_accessor< T, L >)dr::shp::distributed_span_accessor< T, L >inline
reference typedef (defined in dr::shp::distributed_span_accessor< T, L >)dr::shp::distributed_span_accessor< T, L >
segment_type typedef (defined in dr::shp::distributed_span_accessor< T, L >)dr::shp::distributed_span_accessor< T, L >
segments() const noexcept (defined in dr::shp::distributed_span_accessor< T, L >)dr::shp::distributed_span_accessor< T, L >inline
size_type typedef (defined in dr::shp::distributed_span_accessor< T, L >)dr::shp::distributed_span_accessor< T, L >
value_type typedef (defined in dr::shp::distributed_span_accessor< T, L >)dr::shp::distributed_span_accessor< T, L >
~distributed_span_accessor() noexcept=default (defined in dr::shp::distributed_span_accessor< T, L >)dr::shp::distributed_span_accessor< T, L >
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1distributed__span__accessor.html b/doxygen/classdr_1_1shp_1_1distributed__span__accessor.html new file mode 100644 index 0000000000..017fcbd21c --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1distributed__span__accessor.html @@ -0,0 +1,156 @@ + + + + + + + +Distributed Ranges: dr::shp::distributed_span_accessor< T, L > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::shp::distributed_span_accessor< T, L > Class Template Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + +

+Public Types

+using element_type = T
 
+using value_type = std::remove_cv_t< T >
 
+using segment_type = L
 
+using size_type = rng::range_size_t< segment_type >
 
+using difference_type = rng::range_difference_t< segment_type >
 
+using reference = rng::range_reference_t< segment_type >
 
+using iterator_category = std::random_access_iterator_tag
 
+using iterator_accessor = distributed_span_accessor
 
+using const_iterator_accessor = iterator_accessor
 
+using nonconst_iterator_accessor = iterator_accessor
 
+ + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+constexpr distributed_span_accessor (const distributed_span_accessor &) noexcept=default
 
+constexpr distributed_span_accessoroperator= (const distributed_span_accessor &) noexcept=default
 
+constexpr distributed_span_accessor (std::span< segment_type > segments, size_type segment_id, size_type idx) noexcept
 
+constexpr distributed_span_accessoroperator+= (difference_type offset) noexcept
 
+constexpr bool operator== (const iterator_accessor &other) const noexcept
 
+constexpr difference_type operator- (const iterator_accessor &other) const noexcept
 
+constexpr bool operator< (const iterator_accessor &other) const noexcept
 
+constexpr reference operator* () const noexcept
 
+auto segments () const noexcept
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/distributed_span.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1distributed__span__coll__graph.map b/doxygen/classdr_1_1shp_1_1distributed__span__coll__graph.map new file mode 100644 index 0000000000..5b3a5e620e --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1distributed__span__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/classdr_1_1shp_1_1distributed__span__coll__graph.md5 b/doxygen/classdr_1_1shp_1_1distributed__span__coll__graph.md5 new file mode 100644 index 0000000000..c539c90f53 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1distributed__span__coll__graph.md5 @@ -0,0 +1 @@ +cfa30eb4c0f2cfd0f3c6d7845e4c1df5 \ No newline at end of file diff --git a/doxygen/classdr_1_1shp_1_1distributed__span__coll__graph.png b/doxygen/classdr_1_1shp_1_1distributed__span__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..41dd2f1e70bef39e87cb5acbe36ca8e8c49b2694 GIT binary patch literal 6265 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 literal 0 HcmV?d00001 diff --git a/doxygen/classdr_1_1shp_1_1distributed__span__inherit__graph.map b/doxygen/classdr_1_1shp_1_1distributed__span__inherit__graph.map new file mode 100644 index 0000000000..5b3a5e620e --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1distributed__span__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/classdr_1_1shp_1_1distributed__span__inherit__graph.md5 b/doxygen/classdr_1_1shp_1_1distributed__span__inherit__graph.md5 new file mode 100644 index 0000000000..c539c90f53 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1distributed__span__inherit__graph.md5 @@ -0,0 +1 @@ +cfa30eb4c0f2cfd0f3c6d7845e4c1df5 \ No newline at end of file diff --git a/doxygen/classdr_1_1shp_1_1distributed__span__inherit__graph.png b/doxygen/classdr_1_1shp_1_1distributed__span__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..41dd2f1e70bef39e87cb5acbe36ca8e8c49b2694 GIT binary patch literal 6265 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 literal 0 HcmV?d00001 diff --git a/doxygen/classdr_1_1shp_1_1distributed__vector__accessor-members.html b/doxygen/classdr_1_1shp_1_1distributed__vector__accessor-members.html new file mode 100644 index 0000000000..b7f84c7067 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1distributed__vector__accessor-members.html @@ -0,0 +1,111 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::shp::distributed_vector_accessor< T, L > Member List
+
+
+ +

This is the complete list of members for dr::shp::distributed_vector_accessor< T, L >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + +
const_iterator_accessor typedef (defined in dr::shp::distributed_vector_accessor< T, L >)dr::shp::distributed_vector_accessor< T, L >
const_segment_type typedef (defined in dr::shp::distributed_vector_accessor< T, L >)dr::shp::distributed_vector_accessor< T, L >
difference_type typedef (defined in dr::shp::distributed_vector_accessor< T, L >)dr::shp::distributed_vector_accessor< T, L >
distributed_vector_accessor() noexcept=default (defined in dr::shp::distributed_vector_accessor< T, L >)dr::shp::distributed_vector_accessor< T, L >
distributed_vector_accessor(const distributed_vector_accessor &) noexcept=default (defined in dr::shp::distributed_vector_accessor< T, L >)dr::shp::distributed_vector_accessor< T, L >
distributed_vector_accessor(std::span< segment_type > segments, size_type segment_id, size_type idx, size_type segment_size) noexcept (defined in dr::shp::distributed_vector_accessor< T, L >)dr::shp::distributed_vector_accessor< T, L >inline
element_type typedef (defined in dr::shp::distributed_vector_accessor< T, L >)dr::shp::distributed_vector_accessor< T, L >
iterator_accessor typedef (defined in dr::shp::distributed_vector_accessor< T, L >)dr::shp::distributed_vector_accessor< T, L >
iterator_category typedef (defined in dr::shp::distributed_vector_accessor< T, L >)dr::shp::distributed_vector_accessor< T, L >
nonconst_iterator_accessor typedef (defined in dr::shp::distributed_vector_accessor< T, L >)dr::shp::distributed_vector_accessor< T, L >
nonconst_segment_type typedef (defined in dr::shp::distributed_vector_accessor< T, L >)dr::shp::distributed_vector_accessor< T, L >
operator*() const noexcept (defined in dr::shp::distributed_vector_accessor< T, L >)dr::shp::distributed_vector_accessor< T, L >inline
operator+=(difference_type offset) noexcept (defined in dr::shp::distributed_vector_accessor< T, L >)dr::shp::distributed_vector_accessor< T, L >inline
operator-(const iterator_accessor &other) const noexcept (defined in dr::shp::distributed_vector_accessor< T, L >)dr::shp::distributed_vector_accessor< T, L >inline
operator<(const iterator_accessor &other) const noexcept (defined in dr::shp::distributed_vector_accessor< T, L >)dr::shp::distributed_vector_accessor< T, L >inline
operator=(const distributed_vector_accessor &) noexcept=default (defined in dr::shp::distributed_vector_accessor< T, L >)dr::shp::distributed_vector_accessor< T, L >
operator==(const iterator_accessor &other) const noexcept (defined in dr::shp::distributed_vector_accessor< T, L >)dr::shp::distributed_vector_accessor< T, L >inline
reference typedef (defined in dr::shp::distributed_vector_accessor< T, L >)dr::shp::distributed_vector_accessor< T, L >
segment_type typedef (defined in dr::shp::distributed_vector_accessor< T, L >)dr::shp::distributed_vector_accessor< T, L >
segments() const noexcept (defined in dr::shp::distributed_vector_accessor< T, L >)dr::shp::distributed_vector_accessor< T, L >inline
size_type typedef (defined in dr::shp::distributed_vector_accessor< T, L >)dr::shp::distributed_vector_accessor< T, L >
value_type typedef (defined in dr::shp::distributed_vector_accessor< T, L >)dr::shp::distributed_vector_accessor< T, L >
~distributed_vector_accessor() noexcept=default (defined in dr::shp::distributed_vector_accessor< T, L >)dr::shp::distributed_vector_accessor< T, L >
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1distributed__vector__accessor.html b/doxygen/classdr_1_1shp_1_1distributed__vector__accessor.html new file mode 100644 index 0000000000..8046799606 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1distributed__vector__accessor.html @@ -0,0 +1,162 @@ + + + + + + + +Distributed Ranges: dr::shp::distributed_vector_accessor< T, L > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::shp::distributed_vector_accessor< T, L > Class Template Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

+using element_type = T
 
+using value_type = std::remove_cv_t< T >
 
+using segment_type = L
 
+using const_segment_type = std::add_const_t< L >
 
+using nonconst_segment_type = std::remove_const_t< L >
 
+using size_type = std::size_t
 
+using difference_type = std::ptrdiff_t
 
+using reference = rng::range_reference_t< segment_type >
 
+using iterator_category = std::random_access_iterator_tag
 
+using iterator_accessor = distributed_vector_accessor
 
+using const_iterator_accessor = iterator_accessor
 
+using nonconst_iterator_accessor = iterator_accessor
 
+ + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+constexpr distributed_vector_accessor (const distributed_vector_accessor &) noexcept=default
 
+constexpr distributed_vector_accessoroperator= (const distributed_vector_accessor &) noexcept=default
 
+constexpr distributed_vector_accessor (std::span< segment_type > segments, size_type segment_id, size_type idx, size_type segment_size) noexcept
 
+constexpr distributed_vector_accessoroperator+= (difference_type offset) noexcept
 
+constexpr bool operator== (const iterator_accessor &other) const noexcept
 
+constexpr difference_type operator- (const iterator_accessor &other) const noexcept
 
+constexpr bool operator< (const iterator_accessor &other) const noexcept
 
+constexpr reference operator* () const noexcept
 
+auto segments () const noexcept
 
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1duplicated__vector-members.html b/doxygen/classdr_1_1shp_1_1duplicated__vector-members.html new file mode 100644 index 0000000000..a16ba99944 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1duplicated__vector-members.html @@ -0,0 +1,97 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::shp::duplicated_vector< T, Allocator > Member List
+
+ + + + + diff --git a/doxygen/classdr_1_1shp_1_1duplicated__vector.html b/doxygen/classdr_1_1shp_1_1duplicated__vector.html new file mode 100644 index 0000000000..7bedfdcdd3 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1duplicated__vector.html @@ -0,0 +1,126 @@ + + + + + + + +Distributed Ranges: dr::shp::duplicated_vector< T, Allocator > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::shp::duplicated_vector< T, Allocator > Class Template Reference
+
+
+ + + + + + + + + + + + +

+Public Types

+using segment_type = dr::shp::device_vector< T, Allocator >
 
+using value_type = T
 
+using size_type = std::size_t
 
+using difference_type = std::ptrdiff_t
 
+using allocator_type = Allocator
 
+ + + + + + + + + +

+Public Member Functions

duplicated_vector (std::size_t count=0)
 
+size_type size () const noexcept
 
+segment_typelocal_vector (std::size_t rank)
 
+const segment_typelocal_vector (std::size_t rank) const
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/containers/duplicated_vector.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1future-members.html b/doxygen/classdr_1_1shp_1_1future-members.html new file mode 100644 index 0000000000..f82738919d --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1future-members.html @@ -0,0 +1,100 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::shp::future< T, Event > Member List
+
+
+ +

This is the complete list of members for dr::shp::future< T, Event >, including all inherited members.

+ + + + + + + + + + + + + +
event_type typedef (defined in dr::shp::future< T, Event >)dr::shp::future< T, Event >
events() const (defined in dr::shp::future< T, Event >)dr::shp::future< T, Event >inline
future(std::unique_ptr< T > &&value, const std::vector< Event > &events) (defined in dr::shp::future< T, Event >)dr::shp::future< T, Event >inline
future(T &&value, const std::vector< Event > &events) (defined in dr::shp::future< T, Event >)dr::shp::future< T, Event >inline
future(future &&)=default (defined in dr::shp::future< T, Event >)dr::shp::future< T, Event >
future(const future &)=delete (defined in dr::shp::future< T, Event >)dr::shp::future< T, Event >
get() (defined in dr::shp::future< T, Event >)dr::shp::future< T, Event >inline
operator=(future &&)=default (defined in dr::shp::future< T, Event >)dr::shp::future< T, Event >
operator=(const future &)=delete (defined in dr::shp::future< T, Event >)dr::shp::future< T, Event >
update(const Event &event) (defined in dr::shp::future< T, Event >)dr::shp::future< T, Event >inline
value() const (defined in dr::shp::future< T, Event >)dr::shp::future< T, Event >inline
wait() (defined in dr::shp::future< T, Event >)dr::shp::future< T, Event >inline
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1future.html b/doxygen/classdr_1_1shp_1_1future.html new file mode 100644 index 0000000000..a35c799df7 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1future.html @@ -0,0 +1,135 @@ + + + + + + + +Distributed Ranges: dr::shp::future< T, Event > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::shp::future< T, Event > Class Template Reference
+
+
+ + + + +

+Public Types

+using event_type = Event
 
+ + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

future (std::unique_ptr< T > &&value, const std::vector< Event > &events)
 
future (T &&value, const std::vector< Event > &events)
 
+void update (const Event &event)
 
future (future &&)=default
 
+futureoperator= (future &&)=default
 
future (const future &)=delete
 
+futureoperator= (const future &)=delete
 
+T get ()
 
+std::vector< Event > events () const
 
+T & value () const
 
+void wait ()
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/future.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1id-members.html b/doxygen/classdr_1_1shp_1_1id-members.html new file mode 100644 index 0000000000..90131134a4 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1id-members.html @@ -0,0 +1,94 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::shp::id< dimensions > Member List
+
+
+ +

This is the complete list of members for dr::shp::id< dimensions >, including all inherited members.

+ + + + + + + +
get(int dimension) const (defined in dr::shp::id< dimensions >)dr::shp::id< dimensions >inline
id() noexcept=default (defined in dr::shp::id< dimensions >)dr::shp::id< dimensions >
id(std::size_t segment_id, std::size_t local_id, std::size_t global_id) (defined in dr::shp::id< dimensions >)dr::shp::id< dimensions >inline
local_id() const (defined in dr::shp::id< dimensions >)dr::shp::id< dimensions >inline
operator std::size_t() const (defined in dr::shp::id< dimensions >)dr::shp::id< dimensions >inline
segment() const (defined in dr::shp::id< dimensions >)dr::shp::id< dimensions >inline
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1id.html b/doxygen/classdr_1_1shp_1_1id.html new file mode 100644 index 0000000000..5721208e41 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1id.html @@ -0,0 +1,110 @@ + + + + + + + +Distributed Ranges: dr::shp::id< dimensions > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::shp::id< dimensions > Class Template Reference
+
+
+ + + + + + + + + + + + +

+Public Member Functions

id (std::size_t segment_id, std::size_t local_id, std::size_t global_id)
 
+std::size_t get (int dimension) const
 
operator std::size_t () const
 
+std::size_t segment () const
 
+std::size_t local_id () const
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/range.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1matrix__entry-members.html b/doxygen/classdr_1_1shp_1_1matrix__entry-members.html new file mode 100644 index 0000000000..f6fee75aa7 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1matrix__entry-members.html @@ -0,0 +1,107 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::shp::matrix_entry< T, I > Member List
+
+
+ +

This is the complete list of members for dr::shp::matrix_entry< T, I >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + +
get() const noexcept (defined in dr::shp::matrix_entry< T, I >)dr::shp::matrix_entry< T, I >inline
index() const noexcept (defined in dr::shp::matrix_entry< T, I >)dr::shp::matrix_entry< T, I >inline
index_type typedef (defined in dr::shp::matrix_entry< T, I >)dr::shp::matrix_entry< T, I >
map_type typedef (defined in dr::shp::matrix_entry< T, I >)dr::shp::matrix_entry< T, I >
matrix_entry(dr::index< I > index, const map_type &value) (defined in dr::shp::matrix_entry< T, I >)dr::shp::matrix_entry< T, I >inline
matrix_entry(dr::index< I > index, map_type &&value) (defined in dr::shp::matrix_entry< T, I >)dr::shp::matrix_entry< T, I >inline
matrix_entry(dr::index< I > index, U &&value) (defined in dr::shp::matrix_entry< T, I >)dr::shp::matrix_entry< T, I >inline
matrix_entry(Entry &&entry) (defined in dr::shp::matrix_entry< T, I >)dr::shp::matrix_entry< T, I >inline
matrix_entry()=default (defined in dr::shp::matrix_entry< T, I >)dr::shp::matrix_entry< T, I >
matrix_entry(const matrix_entry &)=default (defined in dr::shp::matrix_entry< T, I >)dr::shp::matrix_entry< T, I >
matrix_entry(matrix_entry &&)=default (defined in dr::shp::matrix_entry< T, I >)dr::shp::matrix_entry< T, I >
operator matrix_entry< std::add_const_t< T >, U >() const noexcept (defined in dr::shp::matrix_entry< T, I >)dr::shp::matrix_entry< T, I >inline
operator matrix_entry< T, U >() const noexcept (defined in dr::shp::matrix_entry< T, I >)dr::shp::matrix_entry< T, I >inline
operator std::pair< std::pair< I, I >, T >() const noexcept (defined in dr::shp::matrix_entry< T, I >)dr::shp::matrix_entry< T, I >inline
operator<(const matrix_entry &other) const noexcept (defined in dr::shp::matrix_entry< T, I >)dr::shp::matrix_entry< T, I >inline
operator=(const matrix_entry &)=default (defined in dr::shp::matrix_entry< T, I >)dr::shp::matrix_entry< T, I >
operator=(matrix_entry &&)=default (defined in dr::shp::matrix_entry< T, I >)dr::shp::matrix_entry< T, I >
value() const noexcept (defined in dr::shp::matrix_entry< T, I >)dr::shp::matrix_entry< T, I >inline
~matrix_entry()=default (defined in dr::shp::matrix_entry< T, I >)dr::shp::matrix_entry< T, I >
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1matrix__entry.html b/doxygen/classdr_1_1shp_1_1matrix__entry.html new file mode 100644 index 0000000000..1b7d9a489a --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1matrix__entry.html @@ -0,0 +1,158 @@ + + + + + + + +Distributed Ranges: dr::shp::matrix_entry< T, I > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::shp::matrix_entry< T, I > Class Template Reference
+
+
+ + + + + + +

+Public Types

+using index_type = I
 
+using map_type = T
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

matrix_entry (dr::index< I > index, const map_type &value)
 
matrix_entry (dr::index< I > index, map_type &&value)
 
+template<typename U >
+requires (std::is_constructible_v<T, U>)
 matrix_entry (dr::index< I > index, U &&value)
 
+template<typename Entry >
 matrix_entry (Entry &&entry)
 
+template<std::size_t Index>
auto get () const noexcept
 
operator std::pair< std::pair< I, I >, T > () const noexcept
 
+dr::index< I > index () const noexcept
 
+map_type value () const noexcept
 
+template<std::integral U>
+requires (!std::is_same_v<I, U> && std::numeric_limits<U>::max() >= std::numeric_limits<I>::max())
 operator matrix_entry< T, U > () const noexcept
 
+template<std::integral U>
+requires (!std::is_const_v<T> && !std::is_same_v<I, U> && std::numeric_limits<U>::max() >= std::numeric_limits<I>::max())
 operator matrix_entry< std::add_const_t< T >, U > () const noexcept
 
+bool operator< (const matrix_entry &other) const noexcept
 
matrix_entry (const matrix_entry &)=default
 
matrix_entry (matrix_entry &&)=default
 
+matrix_entryoperator= (const matrix_entry &)=default
 
+matrix_entryoperator= (matrix_entry &&)=default
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/containers/matrix_entry.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1matrix__partition-members.html b/doxygen/classdr_1_1shp_1_1matrix__partition-members.html new file mode 100644 index 0000000000..2c44cb6410 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1matrix__partition-members.html @@ -0,0 +1,93 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::shp::matrix_partition Member List
+
+
+ +

This is the complete list of members for dr::shp::matrix_partition, including all inherited members.

+ + + + + + +
clone() const =0 (defined in dr::shp::matrix_partition)dr::shp::matrix_partitionpure virtual
grid_shape(dr::index<> matrix_shape) const =0 (defined in dr::shp::matrix_partition)dr::shp::matrix_partitionpure virtual
tile_rank(dr::index<> matrix_shape, dr::index<> tile_id) const =0 (defined in dr::shp::matrix_partition)dr::shp::matrix_partitionpure virtual
tile_shape(dr::index<> matrix_shape) const =0 (defined in dr::shp::matrix_partition)dr::shp::matrix_partitionpure virtual
~matrix_partition() (defined in dr::shp::matrix_partition)dr::shp::matrix_partitioninlinevirtual
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1matrix__partition.html b/doxygen/classdr_1_1shp_1_1matrix__partition.html new file mode 100644 index 0000000000..b59ce939f1 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1matrix__partition.html @@ -0,0 +1,116 @@ + + + + + + + +Distributed Ranges: dr::shp::matrix_partition Class Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::shp::matrix_partition Class Referenceabstract
+
+
+
+Inheritance diagram for dr::shp::matrix_partition:
+
+
Inheritance graph
+ + + + +
[legend]
+ + + + + + + + + + +

+Public Member Functions

+virtual std::size_t tile_rank (dr::index<> matrix_shape, dr::index<> tile_id) const =0
 
+virtual dr::index grid_shape (dr::index<> matrix_shape) const =0
 
+virtual dr::index tile_shape (dr::index<> matrix_shape) const =0
 
+virtual std::unique_ptr< matrix_partitionclone () const =0
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/containers/matrix_partition.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1matrix__partition__inherit__graph.map b/doxygen/classdr_1_1shp_1_1matrix__partition__inherit__graph.map new file mode 100644 index 0000000000..d7e34a488f --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1matrix__partition__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/classdr_1_1shp_1_1matrix__partition__inherit__graph.md5 b/doxygen/classdr_1_1shp_1_1matrix__partition__inherit__graph.md5 new file mode 100644 index 0000000000..8c4d004f9c --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1matrix__partition__inherit__graph.md5 @@ -0,0 +1 @@ +1a1f38db8cbd5928ef53d5686469bd48 \ No newline at end of file diff --git a/doxygen/classdr_1_1shp_1_1matrix__partition__inherit__graph.png b/doxygen/classdr_1_1shp_1_1matrix__partition__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..2c8c0f0cde0989cd7b3de2888db7a001628a3367 GIT binary patch literal 4035 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 literal 0 HcmV?d00001 diff --git a/doxygen/classdr_1_1shp_1_1matrix__ref-members.html b/doxygen/classdr_1_1shp_1_1matrix__ref-members.html new file mode 100644 index 0000000000..82342f20dc --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1matrix__ref-members.html @@ -0,0 +1,109 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::shp::matrix_ref< T, I, TRef > Member List
+
+
+ +

This is the complete list of members for dr::shp::matrix_ref< T, I, TRef >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + +
get() const noexcept (defined in dr::shp::matrix_ref< T, I, TRef >)dr::shp::matrix_ref< T, I, TRef >inline
index() const noexcept (defined in dr::shp::matrix_ref< T, I, TRef >)dr::shp::matrix_ref< T, I, TRef >inline
index_type typedef (defined in dr::shp::matrix_ref< T, I, TRef >)dr::shp::matrix_ref< T, I, TRef >
key_type typedef (defined in dr::shp::matrix_ref< T, I, TRef >)dr::shp::matrix_ref< T, I, TRef >
map_type typedef (defined in dr::shp::matrix_ref< T, I, TRef >)dr::shp::matrix_ref< T, I, TRef >
matrix_ref(dr::index< I > index, scalar_reference value) (defined in dr::shp::matrix_ref< T, I, TRef >)dr::shp::matrix_ref< T, I, TRef >inline
matrix_ref()=delete (defined in dr::shp::matrix_ref< T, I, TRef >)dr::shp::matrix_ref< T, I, TRef >
matrix_ref(const matrix_ref &)=default (defined in dr::shp::matrix_ref< T, I, TRef >)dr::shp::matrix_ref< T, I, TRef >
matrix_ref(matrix_ref &&)=default (defined in dr::shp::matrix_ref< T, I, TRef >)dr::shp::matrix_ref< T, I, TRef >
operator matrix_ref< std::add_const_t< T >, U, TRef >() const noexcept (defined in dr::shp::matrix_ref< T, I, TRef >)dr::shp::matrix_ref< T, I, TRef >inline
operator matrix_ref< T, U, TRef >() const noexcept (defined in dr::shp::matrix_ref< T, I, TRef >)dr::shp::matrix_ref< T, I, TRef >inline
operator std::pair< std::pair< I, I >, T >() const noexcept (defined in dr::shp::matrix_ref< T, I, TRef >)dr::shp::matrix_ref< T, I, TRef >inline
operator value_type() const noexcept (defined in dr::shp::matrix_ref< T, I, TRef >)dr::shp::matrix_ref< T, I, TRef >inline
operator<(matrix_entry< T, I > other) const noexcept (defined in dr::shp::matrix_ref< T, I, TRef >)dr::shp::matrix_ref< T, I, TRef >inline
operator=(const matrix_ref &)=delete (defined in dr::shp::matrix_ref< T, I, TRef >)dr::shp::matrix_ref< T, I, TRef >
operator=(matrix_ref &&)=default (defined in dr::shp::matrix_ref< T, I, TRef >)dr::shp::matrix_ref< T, I, TRef >
scalar_reference typedef (defined in dr::shp::matrix_ref< T, I, TRef >)dr::shp::matrix_ref< T, I, TRef >
scalar_type typedef (defined in dr::shp::matrix_ref< T, I, TRef >)dr::shp::matrix_ref< T, I, TRef >
value() const noexcept (defined in dr::shp::matrix_ref< T, I, TRef >)dr::shp::matrix_ref< T, I, TRef >inline
value_type typedef (defined in dr::shp::matrix_ref< T, I, TRef >)dr::shp::matrix_ref< T, I, TRef >
~matrix_ref()=default (defined in dr::shp::matrix_ref< T, I, TRef >)dr::shp::matrix_ref< T, I, TRef >
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1matrix__ref.html b/doxygen/classdr_1_1shp_1_1matrix__ref.html new file mode 100644 index 0000000000..a9a8c37990 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1matrix__ref.html @@ -0,0 +1,162 @@ + + + + + + + +Distributed Ranges: dr::shp::matrix_ref< T, I, TRef > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::shp::matrix_ref< T, I, TRef > Class Template Reference
+
+
+ + + + + + + + + + + + + + +

+Public Types

+using scalar_type = T
 
+using index_type = I
 
+using key_type = dr::index< I >
 
+using map_type = T
 
+using scalar_reference = TRef
 
+using value_type = dr::shp::matrix_entry< T, I >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

matrix_ref (dr::index< I > index, scalar_reference value)
 
operator value_type () const noexcept
 
operator std::pair< std::pair< I, I >, T > () const noexcept
 
+template<std::size_t Index>
+requires (Index <= 1)
decltype(auto) get () const noexcept
 
+dr::index< I > index () const noexcept
 
+scalar_reference value () const noexcept
 
+template<std::integral U>
+requires (!std::is_same_v<I, U> && std::numeric_limits<U>::max() >= std::numeric_limits<I>::max())
 operator matrix_ref< T, U, TRef > () const noexcept
 
+template<std::integral U>
+requires (!std::is_const_v<T> && !std::is_same_v<I, U> && std::numeric_limits<U>::max() >= std::numeric_limits<I>::max())
 operator matrix_ref< std::add_const_t< T >, U, TRef > () const noexcept
 
+bool operator< (matrix_entry< T, I > other) const noexcept
 
matrix_ref (const matrix_ref &)=default
 
+matrix_refoperator= (const matrix_ref &)=delete
 
matrix_ref (matrix_ref &&)=default
 
+matrix_refoperator= (matrix_ref &&)=default
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/containers/matrix_entry.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1segment__range-members.html b/doxygen/classdr_1_1shp_1_1segment__range-members.html new file mode 100644 index 0000000000..dba7b4ab16 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1segment__range-members.html @@ -0,0 +1,99 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::shp::segment_range< dimensions > Member List
+
+
+ +

This is the complete list of members for dr::shp::segment_range< dimensions >, including all inherited members.

+ + + + + + + + + + + + +
begin() const (defined in dr::shp::segment_range< dimensions >)dr::shp::segment_range< dimensions >inline
different_type typedef (defined in dr::shp::segment_range< dimensions >)dr::shp::segment_range< dimensions >
end() const (defined in dr::shp::segment_range< dimensions >)dr::shp::segment_range< dimensions >inline
iterator typedef (defined in dr::shp::segment_range< dimensions >)dr::shp::segment_range< dimensions >
operator[](std::size_t idx) (defined in dr::shp::segment_range< dimensions >)dr::shp::segment_range< dimensions >inline
rank() const noexcept (defined in dr::shp::segment_range< dimensions >)dr::shp::segment_range< dimensions >inline
reference typedef (defined in dr::shp::segment_range< dimensions >)dr::shp::segment_range< dimensions >
segment_range(std::size_t segment_id, std::size_t segment_size, std::size_t global_offset) (defined in dr::shp::segment_range< dimensions >)dr::shp::segment_range< dimensions >inline
size() const noexcept (defined in dr::shp::segment_range< dimensions >)dr::shp::segment_range< dimensions >inline
size_type typedef (defined in dr::shp::segment_range< dimensions >)dr::shp::segment_range< dimensions >
value_type typedef (defined in dr::shp::segment_range< dimensions >)dr::shp::segment_range< dimensions >
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1segment__range.html b/doxygen/classdr_1_1shp_1_1segment__range.html new file mode 100644 index 0000000000..c33b48dd02 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1segment__range.html @@ -0,0 +1,132 @@ + + + + + + + +Distributed Ranges: dr::shp::segment_range< dimensions > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::shp::segment_range< dimensions > Class Template Reference
+
+
+ + + + + + + + + + + + +

+Public Types

+using value_type = id< dimensions >
 
+using size_type = std::size_t
 
+using different_type = std::ptrdiff_t
 
+using reference = value_type
 
+using iterator = segment_range_iterator
 
+ + + + + + + + + + + + + +

+Public Member Functions

segment_range (std::size_t segment_id, std::size_t segment_size, std::size_t global_offset)
 
+iterator begin () const
 
+iterator end () const
 
+size_type size () const noexcept
 
+value_type operator[] (std::size_t idx)
 
+size_type rank () const noexcept
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/range.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1segment__range__accessor-members.html b/doxygen/classdr_1_1shp_1_1segment__range__accessor-members.html new file mode 100644 index 0000000000..5745f1efa0 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1segment__range__accessor-members.html @@ -0,0 +1,107 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::shp::segment_range_accessor Member List
+
+
+ +

This is the complete list of members for dr::shp::segment_range_accessor, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + +
const_iterator_accessor typedef (defined in dr::shp::segment_range_accessor)dr::shp::segment_range_accessor
difference_type typedef (defined in dr::shp::segment_range_accessor)dr::shp::segment_range_accessor
element_type typedef (defined in dr::shp::segment_range_accessor)dr::shp::segment_range_accessor
iterator_accessor typedef (defined in dr::shp::segment_range_accessor)dr::shp::segment_range_accessor
iterator_category typedef (defined in dr::shp::segment_range_accessor)dr::shp::segment_range_accessor
nonconst_iterator_accessor typedef (defined in dr::shp::segment_range_accessor)dr::shp::segment_range_accessor
operator*() const noexcept (defined in dr::shp::segment_range_accessor)dr::shp::segment_range_accessorinline
operator+=(difference_type offset) noexcept (defined in dr::shp::segment_range_accessor)dr::shp::segment_range_accessorinline
operator-(const iterator_accessor &other) const noexcept (defined in dr::shp::segment_range_accessor)dr::shp::segment_range_accessorinline
operator<(const iterator_accessor &other) const noexcept (defined in dr::shp::segment_range_accessor)dr::shp::segment_range_accessorinline
operator=(const segment_range_accessor &) noexcept=default (defined in dr::shp::segment_range_accessor)dr::shp::segment_range_accessor
operator==(const iterator_accessor &other) const noexcept (defined in dr::shp::segment_range_accessor)dr::shp::segment_range_accessorinline
reference typedef (defined in dr::shp::segment_range_accessor)dr::shp::segment_range_accessor
segment_range_accessor() noexcept=default (defined in dr::shp::segment_range_accessor)dr::shp::segment_range_accessor
segment_range_accessor(const segment_range_accessor &) noexcept=default (defined in dr::shp::segment_range_accessor)dr::shp::segment_range_accessor
segment_range_accessor(size_type segment_id, size_type idx, size_type global_offset) noexcept (defined in dr::shp::segment_range_accessor)dr::shp::segment_range_accessorinline
size_type typedef (defined in dr::shp::segment_range_accessor)dr::shp::segment_range_accessor
value_type typedef (defined in dr::shp::segment_range_accessor)dr::shp::segment_range_accessor
~segment_range_accessor() noexcept=default (defined in dr::shp::segment_range_accessor)dr::shp::segment_range_accessor
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1segment__range__accessor.html b/doxygen/classdr_1_1shp_1_1segment__range__accessor.html new file mode 100644 index 0000000000..85bf0fe276 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1segment__range__accessor.html @@ -0,0 +1,150 @@ + + + + + + + +Distributed Ranges: dr::shp::segment_range_accessor Class Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::shp::segment_range_accessor Class Reference
+
+
+ + + + + + + + + + + + + + + + + + + + +

+Public Types

+using element_type = id< 1 >
 
+using value_type = element_type
 
+using size_type = std::size_t
 
+using difference_type = std::ptrdiff_t
 
+using reference = value_type
 
+using iterator_category = std::random_access_iterator_tag
 
+using iterator_accessor = segment_range_accessor
 
+using const_iterator_accessor = iterator_accessor
 
+using nonconst_iterator_accessor = iterator_accessor
 
+ + + + + + + + + + + + + + + + + +

+Public Member Functions

+constexpr segment_range_accessor (const segment_range_accessor &) noexcept=default
 
+constexpr segment_range_accessoroperator= (const segment_range_accessor &) noexcept=default
 
+constexpr segment_range_accessor (size_type segment_id, size_type idx, size_type global_offset) noexcept
 
+constexpr segment_range_accessoroperator+= (difference_type offset) noexcept
 
+constexpr bool operator== (const iterator_accessor &other) const noexcept
 
+constexpr difference_type operator- (const iterator_accessor &other) const noexcept
 
+constexpr bool operator< (const iterator_accessor &other) const noexcept
 
+reference operator* () const noexcept
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/range.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1span-members.html b/doxygen/classdr_1_1shp_1_1span-members.html new file mode 100644 index 0000000000..5d1a96168f --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1span-members.html @@ -0,0 +1,107 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::shp::span< T, Iter > Member List
+
+
+ +

This is the complete list of members for dr::shp::span< T, Iter >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + +
begin() const noexcept (defined in dr::shp::span< T, Iter >)dr::shp::span< T, Iter >inline
difference_type typedef (defined in dr::shp::span< T, Iter >)dr::shp::span< T, Iter >
empty() const noexcept (defined in dr::shp::span< T, Iter >)dr::shp::span< T, Iter >inline
end() const noexcept (defined in dr::shp::span< T, Iter >)dr::shp::span< T, Iter >inline
first(size_type n) const (defined in dr::shp::span< T, Iter >)dr::shp::span< T, Iter >inline
iterator typedef (defined in dr::shp::span< T, Iter >)dr::shp::span< T, Iter >
last(size_type n) const (defined in dr::shp::span< T, Iter >)dr::shp::span< T, Iter >inline
operator=(const span &) noexcept=default (defined in dr::shp::span< T, Iter >)dr::shp::span< T, Iter >
operator[](size_type index) const (defined in dr::shp::span< T, Iter >)dr::shp::span< T, Iter >inline
reference typedef (defined in dr::shp::span< T, Iter >)dr::shp::span< T, Iter >
size() const noexcept (defined in dr::shp::span< T, Iter >)dr::shp::span< T, Iter >inline
size_type typedef (defined in dr::shp::span< T, Iter >)dr::shp::span< T, Iter >
span(R &&r) (defined in dr::shp::span< T, Iter >)dr::shp::span< T, Iter >inline
span(Iter first, Iter last) (defined in dr::shp::span< T, Iter >)dr::shp::span< T, Iter >inline
span(Iter first, std::size_t count) (defined in dr::shp::span< T, Iter >)dr::shp::span< T, Iter >inline
span()=default (defined in dr::shp::span< T, Iter >)dr::shp::span< T, Iter >
span(const span &) noexcept=default (defined in dr::shp::span< T, Iter >)dr::shp::span< T, Iter >
subspan(std::size_t offset, std::size_t count) const (defined in dr::shp::span< T, Iter >)dr::shp::span< T, Iter >inline
value_type typedef (defined in dr::shp::span< T, Iter >)dr::shp::span< T, Iter >
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1span.html b/doxygen/classdr_1_1shp_1_1span.html new file mode 100644 index 0000000000..ed62a08f70 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1span.html @@ -0,0 +1,173 @@ + + + + + + + +Distributed Ranges: dr::shp::span< T, Iter > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::shp::span< T, Iter > Class Template Reference
+
+
+
+Inheritance diagram for dr::shp::span< T, Iter >:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for dr::shp::span< T, Iter >:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + +

+Public Types

+using value_type = std::iter_value_t< Iter >
 
+using size_type = std::size_t
 
+using difference_type = std::iter_difference_t< Iter >
 
+using reference = std::iter_reference_t< Iter >
 
+using iterator = Iter
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+template<rng::random_access_range R>
 span (R &&r)
 
span (Iter first, Iter last)
 
span (Iter first, std::size_t count)
 
span (const span &) noexcept=default
 
+spanoperator= (const span &) noexcept=default
 
+std::size_t size () const noexcept
 
+bool empty () const noexcept
 
+Iter begin () const noexcept
 
+Iter end () const noexcept
 
+reference operator[] (size_type index) const
 
+span first (size_type n) const
 
+span last (size_type n) const
 
+span subspan (std::size_t offset, std::size_t count) const
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/span.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1span__coll__graph.map b/doxygen/classdr_1_1shp_1_1span__coll__graph.map new file mode 100644 index 0000000000..2b1b971c30 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1span__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/classdr_1_1shp_1_1span__coll__graph.md5 b/doxygen/classdr_1_1shp_1_1span__coll__graph.md5 new file mode 100644 index 0000000000..45850b23c8 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1span__coll__graph.md5 @@ -0,0 +1 @@ +69377196b63bce2e6e7e341da8144374 \ No newline at end of file diff --git a/doxygen/classdr_1_1shp_1_1span__coll__graph.png b/doxygen/classdr_1_1shp_1_1span__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..810e4c5084c091d0a07d9b52c3dea4bb59bf6673 GIT binary patch literal 5566 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 + + + + diff --git a/doxygen/classdr_1_1shp_1_1span__inherit__graph.md5 b/doxygen/classdr_1_1shp_1_1span__inherit__graph.md5 new file mode 100644 index 0000000000..9ef8c32ecb --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1span__inherit__graph.md5 @@ -0,0 +1 @@ +cc153c58563666210cf69bbae54b7cbc \ No newline at end of file diff --git a/doxygen/classdr_1_1shp_1_1span__inherit__graph.png b/doxygen/classdr_1_1shp_1_1span__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..05854861dd52d981ac1ba9c1f552629b1c13c368 GIT binary patch literal 8434 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

Li35OwXaJRIYugI%W=ZKW zv$PD4h`<3cwY*bSU*NBUY55$slu7YsIn8sdSUf{GmTz7JGyeTP}{%d{R z?(Afr{gn#3q(sGL_Jl#h$44wODoPs+yOFW6A>bOeu+4nUo5la(RUeF&8LNWcEwM5+ zH3cT6!`+u9o&NXiY;CIkDKu(DFsb*xi_WfYsL}`a=F~nNE-Nifc#tV^54c*jO&?=Z zd8ka)`}eoNeE8BY`{%5%$ow`B4+lc`(IfPU2^eXqd;qFz)7G$zM+OG{U>PQ0Hi}j$0v9iJL9r25lm(xb;K6KI5rD%c? z3K9w1?)mW}4ScDGlimb6z*8D2p-dt1?qkQf8b$2Vi<(dD8(M1c-#1IvNnV*lDP;#k?a53-KmB{o(9WPtS*w zGb1CE;78lcHY65RS5qM7=H?J`BtV2=2GZZ(pY2CWO-~;u?SGJ6P;mLtqepc?XA-Qe ztPPvxU`BIra7(wiBRn5cJF;ko?Z#;@n2A`R1tRf*^~y;}dn zv#xO%Tlh8dPV@FFr3Vl0!$_r9CLvQRy65|MLMS$j%+WM9PI&Qx>>s0g?UkSjM(n?! z9t@z|z!Vyom;jqM6tWiF>!$UI22U<`clZAB@fc#6BZPZB1B`1VPDeeZfKj8Q{Y5M+ zEOyq*TNakTr{BDJ^DZQ-^K3IA;<*yLL4_F>h^QUlm0-v{u*`%j@bK{!z=-29stbX6 z1Cadr&&h0l`vtKwE1E;%_Orbc6Letc-UBZ8A|+*C=CJEqaR&|pj9*0^9dcm8Bve#U zm+`6g&`sb8Ssv}o;}H@@g8K&VcAIO(f~mr<>8^!OamgqYp1;5U#*g<`K+14CIyvo6 z!1?}Pec}=)3rkCk$CRcPbxWtvc9U0H`g#h7y1bGS9*}IztP3n#h3)2sygu<^k3=IQ zqa9$BmRnQx&s7S1_DA%Eo7Joy?=9P9RqlcX2gHWHfgsPCU?qm>E}uw@8_Iwh5UGSS zAhQLIjKDZ+V4>1iTGzn9c9rZTGcGP}A|@iMfxcJE`>6L{4d`qR+%P&*j;moIEDC%6 zayy;m8gon+N742_y1TD{<+@Q+^2ij1lyYd@1(*aO)zkQmglR4BRiBgDw^kK#nbAZxzLxq@W z%+W#|uco$knD>k?`0I{$e~o`|VZx{=%Wfi)WP7qXkj9$2x)E=KPOhf%ns(K>Es`)Y zmWj~KgCWq-xZNDLK2{E+kp|UC$U0^SE=%gyN*FD|AfjVvh#WlGqrD*wH$X}(@vgSS zx65lgUGy$mq5i4E{bam(tZ?R)keTLz}~^3(sNz!j%o8p*)J`Nm^=JW zJCm#YW0+~s@nx8k-1qPhQd3vwcbSpu?C$RP^vUY3eX`Q<#ij$(vGKp>N%m73W5p++ zy)0oAJ>KZeiS`gQdiTpvGuxj2nTn`& z_wA;`1*n9QqR>Fvi_hlC*&dv-OxZMd$u=p*ZZqM3w=M|)v%o$ZM2lw^T4XcRA#)3 lzJ6i8e}6}S=CtGDim4>N3ax9~Jy<3}`Q8I$nY>xpe*tdwWNZKc literal 0 HcmV?d00001 diff --git a/doxygen/classdr_1_1shp_1_1sparse__matrix-members.html b/doxygen/classdr_1_1shp_1_1sparse__matrix-members.html new file mode 100644 index 0000000000..3ac9ab4bf8 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1sparse__matrix-members.html @@ -0,0 +1,113 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +

+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::shp::sparse_matrix< T, I > Member List
+
+
+ +

This is the complete list of members for dr::shp::sparse_matrix< T, I >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
begin() (defined in dr::shp::sparse_matrix< T, I >)dr::shp::sparse_matrix< T, I >inline
const_reference typedef (defined in dr::shp::sparse_matrix< T, I >)dr::shp::sparse_matrix< T, I >
const_scalar_reference typedef (defined in dr::shp::sparse_matrix< T, I >)dr::shp::sparse_matrix< T, I >
copy_tile(key_type tile_index, csr_matrix_view< T, I, Args... > tile_view) (defined in dr::shp::sparse_matrix< T, I >)dr::shp::sparse_matrix< T, I >inline
copy_tile_async(key_type tile_index, csr_matrix_view< T, I, Args... > tile_view) (defined in dr::shp::sparse_matrix< T, I >)dr::shp::sparse_matrix< T, I >inline
difference_type typedef (defined in dr::shp::sparse_matrix< T, I >)dr::shp::sparse_matrix< T, I >
end() (defined in dr::shp::sparse_matrix< T, I >)dr::shp::sparse_matrix< T, I >inline
grid_shape() const noexcept (defined in dr::shp::sparse_matrix< T, I >)dr::shp::sparse_matrix< T, I >inline
iterator typedef (defined in dr::shp::sparse_matrix< T, I >)dr::shp::sparse_matrix< T, I >
key_type typedef (defined in dr::shp::sparse_matrix< T, I >)dr::shp::sparse_matrix< T, I >
reference typedef (defined in dr::shp::sparse_matrix< T, I >)dr::shp::sparse_matrix< T, I >
scalar_reference typedef (defined in dr::shp::sparse_matrix< T, I >)dr::shp::sparse_matrix< T, I >
segment_type typedef (defined in dr::shp::sparse_matrix< T, I >)dr::shp::sparse_matrix< T, I >
segments() (defined in dr::shp::sparse_matrix< T, I >)dr::shp::sparse_matrix< T, I >inline
shape() const noexcept (defined in dr::shp::sparse_matrix< T, I >)dr::shp::sparse_matrix< T, I >inline
size() const noexcept (defined in dr::shp::sparse_matrix< T, I >)dr::shp::sparse_matrix< T, I >inline
size_type typedef (defined in dr::shp::sparse_matrix< T, I >)dr::shp::sparse_matrix< T, I >
sparse_matrix(key_type shape) (defined in dr::shp::sparse_matrix< T, I >)dr::shp::sparse_matrix< T, I >inline
sparse_matrix(key_type shape, double density) (defined in dr::shp::sparse_matrix< T, I >)dr::shp::sparse_matrix< T, I >inline
sparse_matrix(key_type shape, double density, const matrix_partition &partition) (defined in dr::shp::sparse_matrix< T, I >)dr::shp::sparse_matrix< T, I >inline
sparse_matrix(key_type shape, const matrix_partition &partition) (defined in dr::shp::sparse_matrix< T, I >)dr::shp::sparse_matrix< T, I >inline
tile(key_type tile_index) (defined in dr::shp::sparse_matrix< T, I >)dr::shp::sparse_matrix< T, I >inline
tile_shape() const noexcept (defined in dr::shp::sparse_matrix< T, I >)dr::shp::sparse_matrix< T, I >inline
tiles() (defined in dr::shp::sparse_matrix< T, I >)dr::shp::sparse_matrix< T, I >inline
value_type typedef (defined in dr::shp::sparse_matrix< T, I >)dr::shp::sparse_matrix< T, I >
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1sparse__matrix.html b/doxygen/classdr_1_1shp_1_1sparse__matrix.html new file mode 100644 index 0000000000..208f52e6e8 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1sparse__matrix.html @@ -0,0 +1,176 @@ + + + + + + + +Distributed Ranges: dr::shp::sparse_matrix< T, I > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::shp::sparse_matrix< T, I > Class Template Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + +

+Public Types

+using size_type = std::size_t
 
+using difference_type = std::ptrdiff_t
 
+using value_type = dr::shp::matrix_entry< T >
 
+using scalar_reference = rng::range_reference_t< dr::shp::device_vector< T, dr::shp::device_allocator< T > > >
 
+using const_scalar_reference = rng::range_reference_t< const dr::shp::device_vector< T, dr::shp::device_allocator< T > > >
 
+using reference = dr::shp::matrix_ref< T, scalar_reference >
 
+using const_reference = dr::shp::matrix_ref< const T, const_scalar_reference >
 
+using key_type = dr::index< I >
 
+using segment_type = dr::shp::csr_matrix_view< T, I, rng::iterator_t< dr::shp::device_vector< T, dr::shp::device_allocator< T > > >, rng::iterator_t< dr::shp::device_vector< I, dr::shp::device_allocator< I > > > >
 
+using iterator = distributed_sparse_matrix_iterator< std::span< segment_type > && >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

sparse_matrix (key_type shape)
 
sparse_matrix (key_type shape, double density)
 
sparse_matrix (key_type shape, double density, const matrix_partition &partition)
 
sparse_matrix (key_type shape, const matrix_partition &partition)
 
+size_type size () const noexcept
 
+key_type shape () const noexcept
 
+iterator begin ()
 
+iterator end ()
 
+segment_type tile (key_type tile_index)
 
+template<typename... Args>
auto copy_tile_async (key_type tile_index, csr_matrix_view< T, I, Args... > tile_view)
 
+template<typename... Args>
void copy_tile (key_type tile_index, csr_matrix_view< T, I, Args... > tile_view)
 
+key_type tile_shape () const noexcept
 
+key_type grid_shape () const noexcept
 
+std::span< segment_typetiles ()
 
+std::span< segment_typesegments ()
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/containers/sparse_matrix.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1vector-members.html b/doxygen/classdr_1_1shp_1_1vector-members.html new file mode 100644 index 0000000000..f2d7451d6a --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1vector-members.html @@ -0,0 +1,129 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::shp::vector< T, Allocator > Member List
+
+
+ +

This is the complete list of members for dr::shp::vector< T, Allocator >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
allocator_type typedef (defined in dr::shp::vector< T, Allocator >)dr::shp::vector< T, Allocator >
assign(Iter first, Iter last) (defined in dr::shp::vector< T, Allocator >)dr::shp::vector< T, Allocator >inline
begin() noexcept (defined in dr::shp::vector< T, Allocator >)dr::shp::vector< T, Allocator >inline
begin() const noexcept (defined in dr::shp::vector< T, Allocator >)dr::shp::vector< T, Allocator >inline
capacity() const noexcept (defined in dr::shp::vector< T, Allocator >)dr::shp::vector< T, Allocator >inline
const_iterator typedef (defined in dr::shp::vector< T, Allocator >)dr::shp::vector< T, Allocator >
const_pointer typedef (defined in dr::shp::vector< T, Allocator >)dr::shp::vector< T, Allocator >
const_reference typedef (defined in dr::shp::vector< T, Allocator >)dr::shp::vector< T, Allocator >
data() noexcept (defined in dr::shp::vector< T, Allocator >)dr::shp::vector< T, Allocator >inline
data() const noexcept (defined in dr::shp::vector< T, Allocator >)dr::shp::vector< T, Allocator >inline
difference_type typedef (defined in dr::shp::vector< T, Allocator >)dr::shp::vector< T, Allocator >
empty() const noexcept (defined in dr::shp::vector< T, Allocator >)dr::shp::vector< T, Allocator >inline
end() noexcept (defined in dr::shp::vector< T, Allocator >)dr::shp::vector< T, Allocator >inline
end() const noexcept (defined in dr::shp::vector< T, Allocator >)dr::shp::vector< T, Allocator >inline
get_allocator() const noexcept (defined in dr::shp::vector< T, Allocator >)dr::shp::vector< T, Allocator >inline
iterator typedef (defined in dr::shp::vector< T, Allocator >)dr::shp::vector< T, Allocator >
operator=(const vector &other) (defined in dr::shp::vector< T, Allocator >)dr::shp::vector< T, Allocator >inline
operator[](size_type pos) (defined in dr::shp::vector< T, Allocator >)dr::shp::vector< T, Allocator >inline
operator[](size_type pos) const (defined in dr::shp::vector< T, Allocator >)dr::shp::vector< T, Allocator >inline
pointer typedef (defined in dr::shp::vector< T, Allocator >)dr::shp::vector< T, Allocator >
push_back(const T &value) (defined in dr::shp::vector< T, Allocator >)dr::shp::vector< T, Allocator >inline
push_back(T &&value) (defined in dr::shp::vector< T, Allocator >)dr::shp::vector< T, Allocator >inline
reference typedef (defined in dr::shp::vector< T, Allocator >)dr::shp::vector< T, Allocator >
reserve(size_type new_cap) (defined in dr::shp::vector< T, Allocator >)dr::shp::vector< T, Allocator >inline
resize(size_type count) (defined in dr::shp::vector< T, Allocator >)dr::shp::vector< T, Allocator >inline
resize(size_type count, const value_type &value) (defined in dr::shp::vector< T, Allocator >)dr::shp::vector< T, Allocator >inline
size() const noexcept (defined in dr::shp::vector< T, Allocator >)dr::shp::vector< T, Allocator >inline
size_type typedef (defined in dr::shp::vector< T, Allocator >)dr::shp::vector< T, Allocator >
try_push_back(const T &value) (defined in dr::shp::vector< T, Allocator >)dr::shp::vector< T, Allocator >inline
value_type typedef (defined in dr::shp::vector< T, Allocator >)dr::shp::vector< T, Allocator >
vector() noexcept (defined in dr::shp::vector< T, Allocator >)dr::shp::vector< T, Allocator >inline
vector(const Allocator &allocator) noexcept (defined in dr::shp::vector< T, Allocator >)dr::shp::vector< T, Allocator >inlineexplicit
vector(size_type count, const T &value, const Allocator &alloc=Allocator()) (defined in dr::shp::vector< T, Allocator >)dr::shp::vector< T, Allocator >inlineexplicit
vector(size_type count, const Allocator &alloc=Allocator()) (defined in dr::shp::vector< T, Allocator >)dr::shp::vector< T, Allocator >inlineexplicit
vector(Iter first, Iter last, const Allocator &alloc=Allocator()) (defined in dr::shp::vector< T, Allocator >)dr::shp::vector< T, Allocator >inline
vector(const vector &other) (defined in dr::shp::vector< T, Allocator >)dr::shp::vector< T, Allocator >inline
vector(const vector &other, const Allocator &alloc) (defined in dr::shp::vector< T, Allocator >)dr::shp::vector< T, Allocator >inline
vector(vector &&other) noexcept (defined in dr::shp::vector< T, Allocator >)dr::shp::vector< T, Allocator >inline
vector(vector &&other, const Allocator &alloc) noexcept (defined in dr::shp::vector< T, Allocator >)dr::shp::vector< T, Allocator >inline
vector(std::initializer_list< T > init, const Allocator &alloc=Allocator()) (defined in dr::shp::vector< T, Allocator >)dr::shp::vector< T, Allocator >inline
~vector() noexcept (defined in dr::shp::vector< T, Allocator >)dr::shp::vector< T, Allocator >inline
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1vector.html b/doxygen/classdr_1_1shp_1_1vector.html new file mode 100644 index 0000000000..bf9b371441 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1vector.html @@ -0,0 +1,218 @@ + + + + + + + +Distributed Ranges: dr::shp::vector< T, Allocator > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::shp::vector< T, Allocator > Class Template Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + +

+Public Types

+using value_type = T
 
+using allocator_type = Allocator
 
+using size_type = std::size_t
 
+using difference_type = std::ptrdiff_t
 
+using pointer = typename std::allocator_traits< allocator_type >::pointer
 
+using const_pointer = typename std::allocator_traits< allocator_type >::const_pointer
 
+using reference = decltype(*std::declval< pointer >())
 
+using const_reference = decltype(*std::declval< const_pointer >())
 
+using iterator = pointer
 
+using const_iterator = const_pointer
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

vector (const Allocator &allocator) noexcept
 
vector (size_type count, const T &value, const Allocator &alloc=Allocator())
 
vector (size_type count, const Allocator &alloc=Allocator())
 
+template<std::forward_iterator Iter>
constexpr vector (Iter first, Iter last, const Allocator &alloc=Allocator())
 
vector (const vector &other)
 
vector (const vector &other, const Allocator &alloc)
 
vector (vector &&other) noexcept
 
vector (vector &&other, const Allocator &alloc) noexcept
 
vector (std::initializer_list< T > init, const Allocator &alloc=Allocator())
 
+vectoroperator= (const vector &other)
 
+template<std::forward_iterator Iter>
void assign (Iter first, Iter last)
 
+size_type size () const noexcept
 
+bool empty () const noexcept
 
+size_type capacity () const noexcept
 
+pointer data () noexcept
 
+const_pointer data () const noexcept
 
+allocator_type get_allocator () const noexcept
 
+iterator begin () noexcept
 
+iterator end () noexcept
 
+const_iterator begin () const noexcept
 
+const_iterator end () const noexcept
 
+reference operator[] (size_type pos)
 
+const_reference operator[] (size_type pos) const
 
+void reserve (size_type new_cap)
 
+void push_back (const T &value)
 
+void push_back (T &&value)
 
+bool try_push_back (const T &value)
 
+void resize (size_type count)
 
+void resize (size_type count, const value_type &value)
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/vector.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1views_1_1enumerate__adapter__closure-members.html b/doxygen/classdr_1_1shp_1_1views_1_1enumerate__adapter__closure-members.html new file mode 100644 index 0000000000..32b6400d1b --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1views_1_1enumerate__adapter__closure-members.html @@ -0,0 +1,90 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::shp::views::enumerate_adapter_closure Member List
+
+
+ +

This is the complete list of members for dr::shp::views::enumerate_adapter_closure, including all inherited members.

+ + + +
operator()(R &&r) const (defined in dr::shp::views::enumerate_adapter_closure)dr::shp::views::enumerate_adapter_closureinline
operator| (defined in dr::shp::views::enumerate_adapter_closure)dr::shp::views::enumerate_adapter_closurefriend
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1views_1_1enumerate__adapter__closure.html b/doxygen/classdr_1_1shp_1_1views_1_1enumerate__adapter__closure.html new file mode 100644 index 0000000000..57e555a56f --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1views_1_1enumerate__adapter__closure.html @@ -0,0 +1,108 @@ + + + + + + + +Distributed Ranges: dr::shp::views::enumerate_adapter_closure Class Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::shp::views::enumerate_adapter_closure Class Reference
+
+
+ + + + + +

+Public Member Functions

+template<rng::viewable_range R>
+requires (rng::sized_range<R>)
auto operator() (R &&r) const
 
+ + + + +

+Friends

+template<rng::viewable_range R>
auto operator| (R &&r, const enumerate_adapter_closure &closure)
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/views/enumerate.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1views_1_1enumerate__fn__-members.html b/doxygen/classdr_1_1shp_1_1views_1_1enumerate__fn__-members.html new file mode 100644 index 0000000000..236d560cd0 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1views_1_1enumerate__fn__-members.html @@ -0,0 +1,90 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::shp::views::enumerate_fn_ Member List
+
+
+ +

This is the complete list of members for dr::shp::views::enumerate_fn_, including all inherited members.

+ + + +
enumerate() const (defined in dr::shp::views::enumerate_fn_)dr::shp::views::enumerate_fn_inline
operator()(R &&r) const (defined in dr::shp::views::enumerate_fn_)dr::shp::views::enumerate_fn_inline
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1views_1_1enumerate__fn__.html b/doxygen/classdr_1_1shp_1_1views_1_1enumerate__fn__.html new file mode 100644 index 0000000000..bd83c0af94 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1views_1_1enumerate__fn__.html @@ -0,0 +1,102 @@ + + + + + + + +Distributed Ranges: dr::shp::views::enumerate_fn_ Class Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::shp::views::enumerate_fn_ Class Reference
+
+
+ + + + + + + +

+Public Member Functions

+template<rng::viewable_range R>
constexpr auto operator() (R &&r) const
 
+auto enumerate () const
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/views/enumerate.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1views_1_1slice__adaptor__closure-members.html b/doxygen/classdr_1_1shp_1_1views_1_1slice__adaptor__closure-members.html new file mode 100644 index 0000000000..c9fe59781a --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1views_1_1slice__adaptor__closure-members.html @@ -0,0 +1,91 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::shp::views::slice_adaptor_closure Member List
+
+
+ +

This is the complete list of members for dr::shp::views::slice_adaptor_closure, including all inherited members.

+ + + + +
operator()(R &&r) const (defined in dr::shp::views::slice_adaptor_closure)dr::shp::views::slice_adaptor_closureinline
operator| (defined in dr::shp::views::slice_adaptor_closure)dr::shp::views::slice_adaptor_closurefriend
slice_adaptor_closure(dr::index<> slice_indices) (defined in dr::shp::views::slice_adaptor_closure)dr::shp::views::slice_adaptor_closureinline
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1views_1_1slice__adaptor__closure.html b/doxygen/classdr_1_1shp_1_1views_1_1slice__adaptor__closure.html new file mode 100644 index 0000000000..a326a61e2d --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1views_1_1slice__adaptor__closure.html @@ -0,0 +1,110 @@ + + + + + + + +Distributed Ranges: dr::shp::views::slice_adaptor_closure Class Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::shp::views::slice_adaptor_closure Class Reference
+
+
+ + + + + + + +

+Public Member Functions

slice_adaptor_closure (dr::index<> slice_indices)
 
+template<rng::random_access_range R>
auto operator() (R &&r) const
 
+ + + + +

+Friends

+template<rng::random_access_range R>
auto operator| (R &&r, const slice_adaptor_closure &closure)
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/views/standard_views.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1zip__accessor-members.html b/doxygen/classdr_1_1shp_1_1zip__accessor-members.html new file mode 100644 index 0000000000..4b03ca69f8 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1zip__accessor-members.html @@ -0,0 +1,107 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::shp::zip_accessor< Iters > Member List
+
+
+ +

This is the complete list of members for dr::shp::zip_accessor< Iters >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + +
const_iterator_accessor typedef (defined in dr::shp::zip_accessor< Iters >)dr::shp::zip_accessor< Iters >
difference_type typedef (defined in dr::shp::zip_accessor< Iters >)dr::shp::zip_accessor< Iters >
element_type typedef (defined in dr::shp::zip_accessor< Iters >)dr::shp::zip_accessor< Iters >
iterator_accessor typedef (defined in dr::shp::zip_accessor< Iters >)dr::shp::zip_accessor< Iters >
iterator_category typedef (defined in dr::shp::zip_accessor< Iters >)dr::shp::zip_accessor< Iters >
nonconst_iterator_accessor typedef (defined in dr::shp::zip_accessor< Iters >)dr::shp::zip_accessor< Iters >
operator*() const noexcept (defined in dr::shp::zip_accessor< Iters >)dr::shp::zip_accessor< Iters >inline
operator+=(difference_type offset) (defined in dr::shp::zip_accessor< Iters >)dr::shp::zip_accessor< Iters >inline
operator-(const iterator_accessor &other) const noexcept (defined in dr::shp::zip_accessor< Iters >)dr::shp::zip_accessor< Iters >inline
operator<(const iterator_accessor &other) const noexcept (defined in dr::shp::zip_accessor< Iters >)dr::shp::zip_accessor< Iters >inline
operator=(const zip_accessor &) noexcept=default (defined in dr::shp::zip_accessor< Iters >)dr::shp::zip_accessor< Iters >
operator==(const iterator_accessor &other) const noexcept (defined in dr::shp::zip_accessor< Iters >)dr::shp::zip_accessor< Iters >inline
reference typedef (defined in dr::shp::zip_accessor< Iters >)dr::shp::zip_accessor< Iters >
size_type typedef (defined in dr::shp::zip_accessor< Iters >)dr::shp::zip_accessor< Iters >
value_type typedef (defined in dr::shp::zip_accessor< Iters >)dr::shp::zip_accessor< Iters >
zip_accessor() noexcept=default (defined in dr::shp::zip_accessor< Iters >)dr::shp::zip_accessor< Iters >
zip_accessor(const zip_accessor &) noexcept=default (defined in dr::shp::zip_accessor< Iters >)dr::shp::zip_accessor< Iters >
zip_accessor(Iters... iters) (defined in dr::shp::zip_accessor< Iters >)dr::shp::zip_accessor< Iters >inline
~zip_accessor() noexcept=default (defined in dr::shp::zip_accessor< Iters >)dr::shp::zip_accessor< Iters >
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1zip__accessor.html b/doxygen/classdr_1_1shp_1_1zip__accessor.html new file mode 100644 index 0000000000..213729534f --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1zip__accessor.html @@ -0,0 +1,150 @@ + + + + + + + +Distributed Ranges: dr::shp::zip_accessor< Iters > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::shp::zip_accessor< Iters > Class Template Reference
+
+
+ + + + + + + + + + + + + + + + + + + + +

+Public Types

+using element_type = __detail::tuple_or_pair_t< std::iter_value_t< Iters >... >
 
+using value_type = element_type
 
+using size_type = std::size_t
 
+using difference_type = std::ptrdiff_t
 
+using reference = __detail::tuple_or_pair_t< std::iter_reference_t< Iters >... >
 
+using iterator_category = std::random_access_iterator_tag
 
+using iterator_accessor = zip_accessor
 
+using const_iterator_accessor = iterator_accessor
 
+using nonconst_iterator_accessor = iterator_accessor
 
+ + + + + + + + + + + + + + + + + +

+Public Member Functions

+constexpr zip_accessor (const zip_accessor &) noexcept=default
 
+constexpr zip_accessoroperator= (const zip_accessor &) noexcept=default
 
+constexpr zip_accessor (Iters... iters)
 
+zip_accessoroperator+= (difference_type offset)
 
+constexpr bool operator== (const iterator_accessor &other) const noexcept
 
+constexpr difference_type operator- (const iterator_accessor &other) const noexcept
 
+constexpr bool operator< (const iterator_accessor &other) const noexcept
 
+constexpr reference operator* () const noexcept
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/zip_view.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1zip__view-members.html b/doxygen/classdr_1_1shp_1_1zip__view-members.html new file mode 100644 index 0000000000..d34decaa32 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1zip__view-members.html @@ -0,0 +1,101 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::shp::zip_view< Rs > Member List
+
+
+ +

This is the complete list of members for dr::shp::zip_view< Rs >, including all inherited members.

+ + + + + + + + + + + + + + +
begin() const (defined in dr::shp::zip_view< Rs >)dr::shp::zip_view< Rs >inline
difference_type typedef (defined in dr::shp::zip_view< Rs >)dr::shp::zip_view< Rs >
end() const (defined in dr::shp::zip_view< Rs >)dr::shp::zip_view< Rs >inline
get_view() const (defined in dr::shp::zip_view< Rs >)dr::shp::zip_view< Rs >inline
local() const noexcept (defined in dr::shp::zip_view< Rs >)dr::shp::zip_view< Rs >inline
num_views (defined in dr::shp::zip_view< Rs >)dr::shp::zip_view< Rs >static
operator[](std::size_t idx) const (defined in dr::shp::zip_view< Rs >)dr::shp::zip_view< Rs >inline
rank() const (defined in dr::shp::zip_view< Rs >)dr::shp::zip_view< Rs >inline
segments() const (defined in dr::shp::zip_view< Rs >)dr::shp::zip_view< Rs >inline
size() const noexcept (defined in dr::shp::zip_view< Rs >)dr::shp::zip_view< Rs >inline
size_type typedef (defined in dr::shp::zip_view< Rs >)dr::shp::zip_view< Rs >
zip_view(Rs... rs) (defined in dr::shp::zip_view< Rs >)dr::shp::zip_view< Rs >inline
zipped_segments() const (defined in dr::shp::zip_view< Rs >)dr::shp::zip_view< Rs >inline
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1zip__view.html b/doxygen/classdr_1_1shp_1_1zip__view.html new file mode 100644 index 0000000000..f5b3710732 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1zip__view.html @@ -0,0 +1,169 @@ + + + + + + + +Distributed Ranges: dr::shp::zip_view< Rs > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::shp::zip_view< Rs > Class Template Reference
+
+
+ +

zip + More...

+ +

#include <zip_view.hpp>

+
+Inheritance diagram for dr::shp::zip_view< Rs >:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for dr::shp::zip_view< Rs >:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + +

+Public Types

+using size_type = std::size_t
 
+using difference_type = std::ptrdiff_t
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

zip_view (Rs... rs)
 
+std::size_t size () const noexcept
 
+auto begin () const
 
+auto end () const
 
+auto operator[] (std::size_t idx) const
 
+template<std::size_t I>
decltype(auto) get_view () const
 
+auto segments () const
 
+auto zipped_segments () const
 
+auto local () const noexcept
 
+std::size_t rank () const
 
+ + + +

+Static Public Attributes

+static constexpr bool num_views = sizeof...(Rs)
 
+

Detailed Description

+
template<rng::random_access_range... Rs>
+class dr::shp::zip_view< Rs >

zip

+

The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/zip_view.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1shp_1_1zip__view__coll__graph.map b/doxygen/classdr_1_1shp_1_1zip__view__coll__graph.map new file mode 100644 index 0000000000..465a8edb71 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1zip__view__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/classdr_1_1shp_1_1zip__view__coll__graph.md5 b/doxygen/classdr_1_1shp_1_1zip__view__coll__graph.md5 new file mode 100644 index 0000000000..eacc95bba7 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1zip__view__coll__graph.md5 @@ -0,0 +1 @@ +2f7a2c568275448d8e42979e1bfb61f9 \ No newline at end of file diff --git a/doxygen/classdr_1_1shp_1_1zip__view__coll__graph.png b/doxygen/classdr_1_1shp_1_1zip__view__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..7dc2016b4465ade9df77d0538d8d34581101cb19 GIT binary patch literal 5944 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 + + + diff --git a/doxygen/classdr_1_1shp_1_1zip__view__inherit__graph.md5 b/doxygen/classdr_1_1shp_1_1zip__view__inherit__graph.md5 new file mode 100644 index 0000000000..eacc95bba7 --- /dev/null +++ b/doxygen/classdr_1_1shp_1_1zip__view__inherit__graph.md5 @@ -0,0 +1 @@ +2f7a2c568275448d8e42979e1bfb61f9 \ No newline at end of file diff --git a/doxygen/classdr_1_1shp_1_1zip__view__inherit__graph.png b/doxygen/classdr_1_1shp_1_1zip__view__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..7dc2016b4465ade9df77d0538d8d34581101cb19 GIT binary patch literal 5944 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 + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::transform_iterator< Iter, F > Member List
+
+
+ +

This is the complete list of members for dr::transform_iterator< Iter, F >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
difference_type typedef (defined in dr::transform_iterator< Iter, F >)dr::transform_iterator< Iter, F >
iterator typedef (defined in dr::transform_iterator< Iter, F >)dr::transform_iterator< Iter, F >
iterator_category typedef (defined in dr::transform_iterator< Iter, F >)dr::transform_iterator< Iter, F >
local() const (defined in dr::transform_iterator< Iter, F >)dr::transform_iterator< Iter, F >inline
operator!=(const transform_iterator &other) const noexcept (defined in dr::transform_iterator< Iter, F >)dr::transform_iterator< Iter, F >inline
operator*() const noexcept (defined in dr::transform_iterator< Iter, F >)dr::transform_iterator< Iter, F >inline
operator+(difference_type offset) const noexcept (defined in dr::transform_iterator< Iter, F >)dr::transform_iterator< Iter, F >inline
operator+ (defined in dr::transform_iterator< Iter, F >)dr::transform_iterator< Iter, F >friend
operator++() noexcept (defined in dr::transform_iterator< Iter, F >)dr::transform_iterator< Iter, F >inline
operator++(int) noexcept (defined in dr::transform_iterator< Iter, F >)dr::transform_iterator< Iter, F >inline
operator+=(difference_type offset) noexcept (defined in dr::transform_iterator< Iter, F >)dr::transform_iterator< Iter, F >inline
operator-(difference_type offset) const noexcept (defined in dr::transform_iterator< Iter, F >)dr::transform_iterator< Iter, F >inline
operator-(iterator other) const noexcept (defined in dr::transform_iterator< Iter, F >)dr::transform_iterator< Iter, F >inline
operator--() noexcept (defined in dr::transform_iterator< Iter, F >)dr::transform_iterator< Iter, F >inline
operator--(int) noexcept (defined in dr::transform_iterator< Iter, F >)dr::transform_iterator< Iter, F >inline
operator-=(difference_type offset) noexcept (defined in dr::transform_iterator< Iter, F >)dr::transform_iterator< Iter, F >inline
operator<(iterator other) const noexcept (defined in dr::transform_iterator< Iter, F >)dr::transform_iterator< Iter, F >inline
operator<=(iterator other) const noexcept (defined in dr::transform_iterator< Iter, F >)dr::transform_iterator< Iter, F >inline
operator=(const transform_iterator &) noexcept=default (defined in dr::transform_iterator< Iter, F >)dr::transform_iterator< Iter, F >
operator==(const transform_iterator &other) const noexcept (defined in dr::transform_iterator< Iter, F >)dr::transform_iterator< Iter, F >inline
operator>(iterator other) const noexcept (defined in dr::transform_iterator< Iter, F >)dr::transform_iterator< Iter, F >inline
operator>=(iterator other) const noexcept (defined in dr::transform_iterator< Iter, F >)dr::transform_iterator< Iter, F >inline
operator[](difference_type offset) const noexcept (defined in dr::transform_iterator< Iter, F >)dr::transform_iterator< Iter, F >inline
pointer typedef (defined in dr::transform_iterator< Iter, F >)dr::transform_iterator< Iter, F >
reference typedef (defined in dr::transform_iterator< Iter, F >)dr::transform_iterator< Iter, F >
transform_iterator(Iter iter, F fn) noexcept (defined in dr::transform_iterator< Iter, F >)dr::transform_iterator< Iter, F >inline
transform_iterator() noexcept=default (defined in dr::transform_iterator< Iter, F >)dr::transform_iterator< Iter, F >
transform_iterator(const transform_iterator &) noexcept=default (defined in dr::transform_iterator< Iter, F >)dr::transform_iterator< Iter, F >
value_type typedef (defined in dr::transform_iterator< Iter, F >)dr::transform_iterator< Iter, F >
~transform_iterator() noexcept=default (defined in dr::transform_iterator< Iter, F >)dr::transform_iterator< Iter, F >
+ + + + diff --git a/doxygen/classdr_1_1transform__iterator.html b/doxygen/classdr_1_1transform__iterator.html new file mode 100644 index 0000000000..fe83f8da50 --- /dev/null +++ b/doxygen/classdr_1_1transform__iterator.html @@ -0,0 +1,187 @@ + + + + + + + +Distributed Ranges: dr::transform_iterator< Iter, F > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::transform_iterator< Iter, F > Class Template Reference
+
+
+ + + + + + + + + + + + + + +

+Public Types

+using value_type = std::invoke_result_t< F, std::iter_value_t< Iter > >
 
+using difference_type = std::iter_difference_t< Iter >
 
+using iterator = transform_iterator< Iter, F >
 
+using reference = value_type
 
+using pointer = iterator
 
+using iterator_category = std::random_access_iterator_tag
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

transform_iterator (Iter iter, F fn) noexcept
 
transform_iterator (const transform_iterator &) noexcept=default
 
+transform_iteratoroperator= (const transform_iterator &) noexcept=default
 
+bool operator== (const transform_iterator &other) const noexcept
 
+bool operator!= (const transform_iterator &other) const noexcept
 
+iterator operator+ (difference_type offset) const noexcept
 
+iterator operator- (difference_type offset) const noexcept
 
+difference_type operator- (iterator other) const noexcept
 
+bool operator< (iterator other) const noexcept
 
+bool operator> (iterator other) const noexcept
 
+bool operator<= (iterator other) const noexcept
 
+bool operator>= (iterator other) const noexcept
 
+iteratoroperator++ () noexcept
 
+iterator operator++ (int) noexcept
 
+iteratoroperator-- () noexcept
 
+iterator operator-- (int) noexcept
 
+iteratoroperator+= (difference_type offset) noexcept
 
+iteratoroperator-= (difference_type offset) noexcept
 
+reference operator* () const noexcept
 
+reference operator[] (difference_type offset) const noexcept
 
+auto local () const
 
+ + + +

+Friends

+iterator operator+ (difference_type n, iterator iter)
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/views/transform.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1transform__view-members.html b/doxygen/classdr_1_1transform__view-members.html new file mode 100644 index 0000000000..ff51b2da72 --- /dev/null +++ b/doxygen/classdr_1_1transform__view-members.html @@ -0,0 +1,95 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::transform_view< V, F > Member List
+
+
+ +

This is the complete list of members for dr::transform_view< V, F >, including all inherited members.

+ + + + + + + + +
base() const (defined in dr::transform_view< V, F >)dr::transform_view< V, F >inline
begin() const (defined in dr::transform_view< V, F >)dr::transform_view< V, F >inline
end() const (defined in dr::transform_view< V, F >)dr::transform_view< V, F >inline
rank() const (defined in dr::transform_view< V, F >)dr::transform_view< V, F >inline
segments() const (defined in dr::transform_view< V, F >)dr::transform_view< V, F >inline
size() const (defined in dr::transform_view< V, F >)dr::transform_view< V, F >inline
transform_view(R &&r, F fn) (defined in dr::transform_view< V, F >)dr::transform_view< V, F >inline
+ + + + diff --git a/doxygen/classdr_1_1transform__view.html b/doxygen/classdr_1_1transform__view.html new file mode 100644 index 0000000000..ce0523740d --- /dev/null +++ b/doxygen/classdr_1_1transform__view.html @@ -0,0 +1,135 @@ + + + + + + + +Distributed Ranges: dr::transform_view< V, F > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::transform_view< V, F > Class Template Reference
+
+
+
+Inheritance diagram for dr::transform_view< V, F >:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for dr::transform_view< V, F >:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + +

+Public Member Functions

+template<rng::viewable_range R>
 transform_view (R &&r, F fn)
 
+auto begin () const
 
+auto end () const
 
+auto size () const
 
+auto segments () const
 
+auto rank () const
 
+V base () const
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/views/transform.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1transform__view__coll__graph.map b/doxygen/classdr_1_1transform__view__coll__graph.map new file mode 100644 index 0000000000..e3502e0949 --- /dev/null +++ b/doxygen/classdr_1_1transform__view__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/classdr_1_1transform__view__coll__graph.md5 b/doxygen/classdr_1_1transform__view__coll__graph.md5 new file mode 100644 index 0000000000..e4824fd23c --- /dev/null +++ b/doxygen/classdr_1_1transform__view__coll__graph.md5 @@ -0,0 +1 @@ +69fdf31c5b75e1d33329c73c77e5c73c \ No newline at end of file diff --git a/doxygen/classdr_1_1transform__view__coll__graph.png b/doxygen/classdr_1_1transform__view__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..ac9c0c950a11775d8ad65436bd1bd999e48bc741 GIT binary patch literal 6573 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

fHEHz4 zIy-}a1_%*iHR<_tz?*^{uNo+3CZOKT%#6L0lV&yX-U+Cm4)`=WCdMDqC21xSlc{P4 z{?t}iSJ$BQbY@5;=eM`}`XqeLMIk_VCT=ipM1D(IQd^s{(sr6qOiawp-MtCyB_$=L z*dSwiz>_>kMGR}52*$_9b8>V2va{J|d@j788(dFbv$i|z92~Skh;kh8(#GbYi%aED z7ruFEW#uC`H{^`hp%F~!91POYMtPsf%a>Ompmy`{P~31(I8<-u7=Q$(JwEUC*=~EX zc*gJyq@(tGiwYD}R4q+SSjWf5Bq6fY0v5{gX7XxkavmPS68|7rHXF)OPc8xgp4-|Y zf^FRs6f}c&8iPy&K%Up@WdH7gny?%}wk!mEB^4D9RaJ?^j~B_|!p*=Ss;a7vsdGYn ze11Ve_&(I`=V$J)Wraf8-^x0@^Aiw1P1QPIsi~>y=<5p#55Ja?kx~0;Lsnc7c@uhB z8sa&~x{hB}L+pbI-e5(be*XLnzj!LO_c1YWx{;GrcCM>to$KJeFb4}}t0T3gP_O)L z@4N>I)EaX>y1LXBJqdomN6hT(_zh=!p+otxHdE8nn5@obvJyiVBO@bZ-Nyf>uA6ss zbu~jdcbf1Soo;`;DdtaB6y!jU4=@vD@98WWYl zX3!9cAX@?g0_2S#e;r#@v94{JK2>kFijufE?pq`Bb0Qa0Qux31?f1Wxk}4|UpcG|S sJ#3n + + + diff --git a/doxygen/classdr_1_1transform__view__inherit__graph.md5 b/doxygen/classdr_1_1transform__view__inherit__graph.md5 new file mode 100644 index 0000000000..e4824fd23c --- /dev/null +++ b/doxygen/classdr_1_1transform__view__inherit__graph.md5 @@ -0,0 +1 @@ +69fdf31c5b75e1d33329c73c77e5c73c \ No newline at end of file diff --git a/doxygen/classdr_1_1transform__view__inherit__graph.png b/doxygen/classdr_1_1transform__view__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..ac9c0c950a11775d8ad65436bd1bd999e48bc741 GIT binary patch literal 6573 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

fHEHz4 zIy-}a1_%*iHR<_tz?*^{uNo+3CZOKT%#6L0lV&yX-U+Cm4)`=WCdMDqC21xSlc{P4 z{?t}iSJ$BQbY@5;=eM`}`XqeLMIk_VCT=ipM1D(IQd^s{(sr6qOiawp-MtCyB_$=L z*dSwiz>_>kMGR}52*$_9b8>V2va{J|d@j788(dFbv$i|z92~Skh;kh8(#GbYi%aED z7ruFEW#uC`H{^`hp%F~!91POYMtPsf%a>Ompmy`{P~31(I8<-u7=Q$(JwEUC*=~EX zc*gJyq@(tGiwYD}R4q+SSjWf5Bq6fY0v5{gX7XxkavmPS68|7rHXF)OPc8xgp4-|Y zf^FRs6f}c&8iPy&K%Up@WdH7gny?%}wk!mEB^4D9RaJ?^j~B_|!p*=Ss;a7vsdGYn ze11Ve_&(I`=V$J)Wraf8-^x0@^Aiw1P1QPIsi~>y=<5p#55Ja?kx~0;Lsnc7c@uhB z8sa&~x{hB}L+pbI-e5(be*XLnzj!LO_c1YWx{;GrcCM>to$KJeFb4}}t0T3gP_O)L z@4N>I)EaX>y1LXBJqdomN6hT(_zh=!p+otxHdE8nn5@obvJyiVBO@bZ-Nyf>uA6ss zbu~jdcbf1Soo;`;DdtaB6y!jU4=@vD@98WWYl zX3!9cAX@?g0_2S#e;r#@v94{JK2>kFijufE?pq`Bb0Qa0Qux31?f1Wxk}4|UpcG|S sJ#3n + + + + + + +Distributed Ranges: Member List + + + + + + + + + +

+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::views::transform_adapter_closure< F > Member List
+
+
+ +

This is the complete list of members for dr::views::transform_adapter_closure< F >, including all inherited members.

+ + + + +
operator()(R &&r) const (defined in dr::views::transform_adapter_closure< F >)dr::views::transform_adapter_closure< F >inline
operator| (defined in dr::views::transform_adapter_closure< F >)dr::views::transform_adapter_closure< F >friend
transform_adapter_closure(F fn) (defined in dr::views::transform_adapter_closure< F >)dr::views::transform_adapter_closure< F >inline
+ + + + diff --git a/doxygen/classdr_1_1views_1_1transform__adapter__closure.html b/doxygen/classdr_1_1views_1_1transform__adapter__closure.html new file mode 100644 index 0000000000..99de9c6b9e --- /dev/null +++ b/doxygen/classdr_1_1views_1_1transform__adapter__closure.html @@ -0,0 +1,110 @@ + + + + + + + +Distributed Ranges: dr::views::transform_adapter_closure< F > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::views::transform_adapter_closure< F > Class Template Reference
+
+
+ + + + + + + +

+Public Member Functions

transform_adapter_closure (F fn)
 
+template<rng::viewable_range R>
auto operator() (R &&r) const
 
+ + + + +

+Friends

+template<rng::viewable_range R>
auto operator| (R &&r, const transform_adapter_closure &closure)
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/views/transform.hpp
  • +
+
+ + + + diff --git a/doxygen/classdr_1_1views_1_1transform__fn__-members.html b/doxygen/classdr_1_1views_1_1transform__fn__-members.html new file mode 100644 index 0000000000..89cfac799b --- /dev/null +++ b/doxygen/classdr_1_1views_1_1transform__fn__-members.html @@ -0,0 +1,90 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::views::transform_fn_ Member List
+
+
+ +

This is the complete list of members for dr::views::transform_fn_, including all inherited members.

+ + + +
operator()(R &&r, F &&f) const (defined in dr::views::transform_fn_)dr::views::transform_fn_inline
operator()(F &&fn) const (defined in dr::views::transform_fn_)dr::views::transform_fn_inline
+ + + + diff --git a/doxygen/classdr_1_1views_1_1transform__fn__.html b/doxygen/classdr_1_1views_1_1transform__fn__.html new file mode 100644 index 0000000000..fc14f17cf9 --- /dev/null +++ b/doxygen/classdr_1_1views_1_1transform__fn__.html @@ -0,0 +1,103 @@ + + + + + + + +Distributed Ranges: dr::views::transform_fn_ Class Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dr::views::transform_fn_ Class Reference
+
+
+ + + + + + + + +

+Public Member Functions

+template<rng::viewable_range R, std::copy_constructible F>
auto operator() (R &&r, F &&f) const
 
+template<std::copy_constructible F>
auto operator() (F &&fn) const
 
+
The documentation for this class was generated from the following file:
    +
  • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/views/transform.hpp
  • +
+
+ + + + diff --git a/doxygen/classes.html b/doxygen/classes.html new file mode 100644 index 0000000000..d058c46512 --- /dev/null +++ b/doxygen/classes.html @@ -0,0 +1,144 @@ + + + + + + + +Distributed Ranges: Class Index + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class Index
+
+
+
A | B | C | D | E | F | G | H | I | L | M | N | O | P | R | S | T | U | V | Z
+
+
+
A
+
allocator (dr::mhp::__detail)
any (dr::mhp::__detail)
+
+
B
+
block_cyclic (dr::shp)
buffered_allocator (dr::shp)
+
+
C
+
communicator (dr)
coo_matrix (dr::shp::__detail)
csr_matrix_view (dr::shp)
csr_matrix_view_accessor (dr::shp)
+
+
D
+
default_memory (dr)
dense_matrix (dr::shp)
dense_matrix_accessor (dr::shp)
dense_matrix_column_accessor (dr::shp)
dense_matrix_column_view (dr::shp)
dense_matrix_row_accessor (dr::shp)
dense_matrix_row_view (dr::shp)
dense_matrix_view (dr::shp)
device_allocator (dr::shp)
device_policy (dr::mhp)
device_policy (dr::shp)
device_ptr (dr::shp)
device_ref (dr::shp)
device_span (dr::shp)
device_vector (dr::shp)
direct_iterator (dr::__detail)
distributed_dense_matrix (dr::shp)
distributed_dense_matrix_accessor (dr::shp)
distributed_mdarray (dr::mhp)
distributed_range_accessor (dr::shp)
distributed_span (dr::shp)
distributed_span_accessor (dr::shp)
distributed_vector (dr::mhp)
distributed_vector (dr::shp)
distributed_vector_accessor (dr::shp)
distribution (dr::mhp)
duplicated_vector (dr::shp)
dv_segment (dr::mhp)
dv_segment_iterator (dr::mhp)
dv_segment_reference (dr::mhp)
+
+
E
+
enumerate_adapter_closure (dr::__detail)
enumerate_adapter_closure (dr::mhp::views)
enumerate_adapter_closure (dr::shp::views)
enumerate_fn_ (dr::__detail)
enumerate_fn_ (dr::mhp::views)
enumerate_fn_ (dr::shp::views)
+
+
F
+
formatter< Mdspan, char > (fmt)
future (dr::shp)
+
+
G
+
global_context (dr::mhp::__detail)
+
+
H
+
halo_bounds (dr::mhp)
halo_impl (dr::mhp)
+
+
I
+
id (dr::shp)
index (dr)
index_group (dr::mhp)
iota_fn_ (dr::views)
is_drop_view (dr)
is_drop_view< rng::drop_view< T > > (dr)
is_iota_view (dr)
is_iota_view< rng::iota_view< W > > (dr)
is_owning_view (dr)
is_ref_view (dr)
is_ref_view< rng::ref_view< R > > (dr)
is_sliding_view (dr)
is_sliding_view< rng::sliding_view< T > > (dr)
is_subrange_view (dr)
is_subrange_view< rng::subrange< T > > (dr)
is_take_view (dr)
is_take_view< rng::take_view< T > > (dr)
is_zip_view (dr)
is_zip_view< rng::zip_view< Views... > > (dr)
distributed_vector::iterator (dr::mhp)
iterator_adaptor (dr)
+
+
L
+
local_fn_ (dr::ranges::__detail)
logger (dr)
+
+
M
+
matrix_entry (dr::shp)
matrix_partition (dr::shp)
matrix_ref (dr::shp)
halo_impl::max_op (dr::mhp)
md_segment (dr::mhp::__detail)
mdspan_adapter_closure (dr::mhp::views)
mdspan_fn_ (dr::mhp::views)
mdspan_iter_accessor (dr::__detail)
mdspan_view (dr::mhp)
mdsub_segment (dr::mhp::__detail)
mdtranspose (dr::__detail)
halo_impl::min_op (dr::mhp)
halo_impl::multiplies_op (dr::mhp)
+
+
N
+
normal_distributed_iterator_accessor (dr)
+
+
O
+
owning_view (dr::__detail)
+
+
P
+
halo_impl::plus_op (dr::mhp)
+
+
R
+
range_size (dr::mhp::views::__detail)
range_size< R > (dr::mhp::views::__detail)
device_allocator::rebind (dr::shp)
remote_subrange (dr)
rma_window (dr)
+
+
S
+
halo_impl::second_op (dr::mhp)
segment_range (dr::shp)
segment_range_accessor (dr::shp)
segmented_view (dr::mhp)
segmented_view_iterator (dr::mhp)
slice_adaptor_closure (dr::shp::views)
sliding_fn (dr::mhp::views::__detail)
source_location (nostd)
span (dr::shp)
span_group (dr::mhp)
span_halo (dr::mhp)
sparse_matrix (dr::shp)
submdspan_adapter_closure (dr::mhp::views)
submdspan_fn_ (dr::mhp::views)
submdspan_view (dr::mhp)
subrange (dr::mhp)
subrange_iterator (dr::mhp)
+
+
T
+
transform_adapter_closure (dr::views)
transform_fn_ (dr::views)
transform_iterator (dr)
transform_view (dr)
tuple_element< Index, dr::index< I > > (std)
tuple_element< Index, dr::shp::matrix_entry< T, I > > (std)
tuple_element< Index, dr::shp::matrix_ref< T, I, TRef > > (std)
tuple_or_pair (dr::shp::__detail)
tuple_or_pair< T, U > (dr::shp::__detail)
tuple_size< dr::index< I > > (std)
tuple_size< dr::shp::matrix_entry< T, I > > (std)
tuple_size< dr::shp::matrix_ref< T, I, TRef > > (std)
+
+
U
+
unstructured_halo (dr::mhp)
+
+
V
+
vector (dr::shp)
+
+
Z
+
zip_accessor (dr::shp)
zip_iterator (dr::mhp)
zip_view (dr::mhp)
zip_view (dr::shp)
+
+
+ + + + diff --git a/doxygen/closed.png b/doxygen/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/doxygen/communicator_8hpp_source.html b/doxygen/communicator_8hpp_source.html new file mode 100644 index 0000000000..08a8435d83 --- /dev/null +++ b/doxygen/communicator_8hpp_source.html @@ -0,0 +1,336 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail/communicator.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
communicator.hpp
+
+
+
1// SPDX-FileCopyrightText: Intel Corporation
+
2//
+
3// SPDX-License-Identifier: BSD-3-Clause
+
4
+
5#pragma once
+
6
+
7namespace dr {
+
8
+ +
10public:
+
11 enum class tag {
+
12 invalid,
+
13 halo_forward,
+
14 halo_reverse,
+
15 halo_index,
+
16 };
+
17
+
18 communicator(MPI_Comm comm = MPI_COMM_WORLD) : mpi_comm_(comm) {
+
19 int rank, size;
+
20 MPI_Comm_rank(comm, &rank);
+
21 MPI_Comm_size(comm, &size);
+
22 rank_ = rank;
+
23 size_ = size;
+
24 }
+
25
+
26 auto size() const { return size_; }
+
27 auto rank() const { return rank_; }
+
28 auto prev() const { return (rank() + size() - 1) % size(); }
+
29 auto next() const { return (rank() + 1) % size(); }
+
30 auto first() const { return rank() == 0; }
+
31 auto last() const { return rank() == size() - 1; }
+
32
+
33 MPI_Comm mpi_comm() const { return mpi_comm_; }
+
34
+
35 void barrier() const { MPI_Barrier(mpi_comm_); }
+
36
+
37 void bcast(void *src, std::size_t count, std::size_t root) const {
+
38 MPI_Bcast(src, count, MPI_BYTE, root, mpi_comm_);
+
39 }
+
40
+
41 void scatter(const void *src, void *dst, std::size_t count,
+
42 std::size_t root) const {
+
43 MPI_Scatter(src, count, MPI_BYTE, dst, count, MPI_BYTE, root, mpi_comm_);
+
44 }
+
45
+
46 template <typename T>
+
47 void scatter(const std::span<T> src, T &dst, std::size_t root) const {
+
48 assert(rng::size(src) >= size_);
+
49 scatter(rng::data(src), &dst, sizeof(T), root);
+
50 }
+
51
+
52 void scatterv(const void *src, int *counts, int *offsets, void *dst,
+
53 int dst_count, std::size_t root) const {
+
54 assert(counts == nullptr || counts[rank()] == dst_count);
+
55 MPI_Scatterv(src, counts, offsets, MPI_BYTE, dst, dst_count, MPI_BYTE, root,
+
56 mpi_comm_);
+
57 }
+
58
+
59 void gather(const void *src, void *dst, std::size_t count,
+
60 std::size_t root) const {
+
61 MPI_Gather(src, count, MPI_BYTE, dst, count, MPI_BYTE, root, mpi_comm_);
+
62 }
+
63
+
64 template <typename T>
+
65 void gather(const T &src, std::span<T> dst, std::size_t root) const {
+
66 assert(rng::size(dst) >= size_);
+
67 gather(&src, rng::data(dst), sizeof(T), root);
+
68 }
+
69
+
70 template <typename T>
+
71 void all_gather(const T *src, T *dst, std::size_t count) const {
+
72 // Gather size elements from each rank
+
73 MPI_Allgather(src, count * sizeof(T), MPI_BYTE, dst, count * sizeof(T),
+
74 MPI_BYTE, mpi_comm_);
+
75 }
+
76
+
77 template <typename T>
+
78 void all_gather(const T &src, std::vector<T> &dst) const {
+
79 assert(rng::size(dst) >= size_);
+
80 all_gather(&src, rng::data(dst), 1);
+
81 }
+
82
+
83 template <rng::contiguous_range R>
+
84 void all_gather(const R &src, R &dst) const {
+
85 assert(rng::size(dst) >= size_ * rng::size(src));
+
86 all_gather(rng::data(src), rng::data(dst), rng::size(src));
+
87 }
+
88
+
89 template <typename T>
+
90 void i_all_gather(const T *src, T *dst, std::size_t count,
+
91 MPI_Request *req) const {
+
92 // Gather size elements from each rank
+
93 MPI_Iallgather(src, count * sizeof(T), MPI_BYTE, dst, count * sizeof(T),
+
94 MPI_BYTE, mpi_comm_, req);
+
95 }
+
96
+
97 template <typename T>
+
98 void i_all_gather(const T &src, std::vector<T> &dst, MPI_Request *req) const {
+
99 assert(rng::size(dst) >= size_);
+
100 i_all_gather(&src, rng::data(dst), 1, req);
+
101 }
+
102
+
103 void gatherv(const void *src, int *counts, int *offsets, void *dst,
+
104 std::size_t root) const {
+
105 MPI_Gatherv(src, counts[rank()], MPI_BYTE, dst, counts, offsets, MPI_BYTE,
+
106 root, mpi_comm_);
+
107 }
+
108
+
109 template <typename T>
+
110 void isend(const T *data, std::size_t count, std::size_t dst_rank, tag t,
+
111 MPI_Request *request) const {
+
112 MPI_Isend(data, count * sizeof(T), MPI_BYTE, dst_rank, int(t), mpi_comm_,
+
113 request);
+
114 }
+
115
+
116 template <rng::contiguous_range R>
+
117 void isend(const R &data, std::size_t dst_rank, tag t,
+
118 MPI_Request *request) const {
+
119 isend(rng::data(data), rng::size(data), dst_rank, t, request);
+
120 }
+
121
+
122 template <typename T>
+
123 void irecv(T *data, std::size_t size, std::size_t src_rank, tag t,
+
124 MPI_Request *request) const {
+
125 MPI_Irecv(data, size * sizeof(T), MPI_BYTE, src_rank, int(t), mpi_comm_,
+
126 request);
+
127 }
+
128
+
129 template <rng::contiguous_range R>
+
130 void irecv(R &data, std::size_t src_rank, tag t, MPI_Request *request) const {
+
131 irecv(rng::data(data), rng::size(data), src_rank, t, request);
+
132 }
+
133
+
134 template <rng::contiguous_range R>
+
135 void alltoall(const R &sendr, R &recvr, std::size_t count) {
+
136 using T = typename R::value_type;
+
137 MPI_Alltoall(rng::data(sendr), count * sizeof(T), MPI_BYTE,
+
138 rng::data(recvr), count * sizeof(T), MPI_BYTE, mpi_comm_);
+
139 }
+
140
+
141 template <rng::contiguous_range SendR, rng::contiguous_range RecvR>
+
142 void alltoallv(const SendR &sendbuf, const std::vector<std::size_t> &sendcnt,
+
143 const std::vector<std::size_t> &senddsp, RecvR &recvbuf,
+
144 const std::vector<std::size_t> &recvcnt,
+
145 const std::vector<std::size_t> &recvdsp) {
+
146 using valT = typename RecvR::value_type;
+
147
+
148 static_assert(std::is_same_v<std::ranges::range_value_t<SendR>,
+
149 std::ranges::range_value_t<RecvR>>);
+
150
+
151 assert(rng::size(sendcnt) == size_);
+
152 assert(rng::size(senddsp) == size_);
+
153 assert(rng::size(recvcnt) == size_);
+
154 assert(rng::size(recvdsp) == size_);
+
155
+
156 std::vector<int> _sendcnt(size_);
+
157 std::vector<int> _senddsp(size_);
+
158 std::vector<int> _recvcnt(size_);
+
159 std::vector<int> _recvdsp(size_);
+
160
+
161 rng::transform(sendcnt, _sendcnt.begin(),
+
162 [](auto e) { return e * sizeof(valT); });
+
163 rng::transform(senddsp, _senddsp.begin(),
+
164 [](auto e) { return e * sizeof(valT); });
+
165 rng::transform(recvcnt, _recvcnt.begin(),
+
166 [](auto e) { return e * sizeof(valT); });
+
167 rng::transform(recvdsp, _recvdsp.begin(),
+
168 [](auto e) { return e * sizeof(valT); });
+
169
+
170 MPI_Alltoallv(rng::data(sendbuf), rng::data(_sendcnt), rng::data(_senddsp),
+
171 MPI_BYTE, rng::data(recvbuf), rng::data(_recvcnt),
+
172 rng::data(_recvdsp), MPI_BYTE, mpi_comm_);
+
173 }
+
174
+
175 bool operator==(const communicator &other) const {
+
176 return mpi_comm_ == other.mpi_comm_;
+
177 }
+
178
+
179private:
+
180 MPI_Comm mpi_comm_;
+
181 std::size_t rank_;
+
182 std::size_t size_;
+
183};
+
184
+ +
186public:
+
187 void create(communicator comm, void *data, std::size_t size) {
+
188 local_data_ = data;
+
189 communicator_ = comm;
+
190 drlog.debug("win create:: size: {}\n", size);
+
191 MPI_Win_create(data, size, 1, MPI_INFO_NULL, comm.mpi_comm(), &win_);
+
192 }
+
193
+
194 template <typename T> auto local_data() {
+
195 return static_cast<T *>(local_data_);
+
196 }
+
197
+
198 void free() { MPI_Win_free(&win_); }
+
199
+
200 bool operator==(const rma_window other) const noexcept {
+
201 return this->win_ == other.win_;
+
202 }
+
203
+
204 void set_null() { win_ = MPI_WIN_NULL; }
+
205 bool null() const noexcept { return win_ == MPI_WIN_NULL; }
+
206
+
207 template <typename T> T get(std::size_t rank, std::size_t disp) const {
+
208 T dst;
+
209 get(&dst, sizeof(T), rank, disp * sizeof(T));
+
210 return dst;
+
211 }
+
212
+
213 void get(void *dst, std::size_t size, std::size_t rank,
+
214 std::size_t disp) const {
+
215 drlog.debug("comm get:: ({}:{}:{})\n", rank, disp, size);
+
216 MPI_Request request;
+
217 MPI_Rget(dst, size, MPI_BYTE, rank, disp, size, MPI_BYTE, win_, &request);
+
218 MPI_Wait(&request, MPI_STATUS_IGNORE);
+
219 }
+
220
+
221 void put(const auto &src, std::size_t rank, std::size_t disp) const {
+
222 put(&src, sizeof(src), rank, disp * sizeof(src));
+
223 }
+
224
+
225 void put(const void *src, std::size_t size, std::size_t rank,
+
226 std::size_t disp) const {
+
227 drlog.debug("comm put:: ({}:{}:{})\n", rank, disp, size);
+
228 MPI_Request request;
+
229 MPI_Rput(src, size, MPI_BYTE, rank, disp, size, MPI_BYTE, win_, &request);
+
230 MPI_Wait(&request, MPI_STATUS_IGNORE);
+
231 }
+
232
+
233 void fence() const { MPI_Win_fence(0, win_); }
+
234
+
235 void flush(std::size_t rank) const {
+
236 drlog.debug("flush:: rank: {}\n", rank);
+
237 MPI_Win_flush(rank, win_);
+
238 }
+
239
+
240 const auto &communicator() const { return communicator_; }
+
241 auto mpi_win() { return win_; }
+
242
+
243private:
+
244 dr::communicator communicator_;
+
245 MPI_Win win_ = MPI_WIN_NULL;
+
246 void *local_data_ = nullptr;
+
247};
+
248
+
249} // namespace dr
+
Definition: communicator.hpp:9
+
Definition: communicator.hpp:185
+
+ + + + diff --git a/doxygen/conceptdr_1_1TupleLike.html b/doxygen/conceptdr_1_1TupleLike.html new file mode 100644 index 0000000000..61c17b32d5 --- /dev/null +++ b/doxygen/conceptdr_1_1TupleLike.html @@ -0,0 +1,99 @@ + + + + + + + +Distributed Ranges: dr::TupleLike Concept Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::TupleLike Concept Reference
+
+
+

Concept definition

+
template<typename T, typename... Args>
+
concept dr::TupleLike =
+
requires {
+
typename std::tuple_size<std::remove_cvref_t<T>>::type;
+
requires std::same_as<
+
std::remove_cvref_t<
+
decltype(std::tuple_size_v<std::remove_cvref_t<T>>)>,
+
std::size_t>;
+
} && sizeof...(Args) == std::tuple_size_v<std::remove_cvref_t<T>> &&
+
[]<std::size_t... I>(std::index_sequence<I...>) {
+
return (TupleElementGettable<T, I, Args> && ...);
+
}(std::make_index_sequence<std::tuple_size_v<std::remove_cvref_t<T>>>())
+
Definition: index.hpp:22
+
+ + + + diff --git a/doxygen/conceptdr_1_1_0d4_1_1TupleElementGettable.html b/doxygen/conceptdr_1_1_0d4_1_1TupleElementGettable.html new file mode 100644 index 0000000000..67e59e4cb5 --- /dev/null +++ b/doxygen/conceptdr_1_1_0d4_1_1TupleElementGettable.html @@ -0,0 +1,91 @@ + + + + + + + +Distributed Ranges: dr::@4::TupleElementGettable Concept Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::@4::TupleElementGettable Concept Reference
+
+
+

Concept definition

+
template<typename T, std::size_t I, typename U std::any>
+
concept dr::@4::TupleElementGettable = requires(T tuple) {
+
{ std::get<I>(tuple) } -> std::convertible_to<U>;
+
}
+
Definition: index.hpp:16
+
+ + + + diff --git a/doxygen/conceptdr_1_1_0d5_1_1has__segments__method.html b/doxygen/conceptdr_1_1_0d5_1_1has__segments__method.html new file mode 100644 index 0000000000..427afbd46f --- /dev/null +++ b/doxygen/conceptdr_1_1_0d5_1_1has__segments__method.html @@ -0,0 +1,91 @@ + + + + + + + +Distributed Ranges: dr::@5::has_segments_method Concept Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::@5::has_segments_method Concept Reference
+
+
+

Concept definition

+
template<typename R>
+
concept dr::@5::has_segments_method = requires(R r) {
+
{ r.segments() };
+
}
+
Definition: iterator_adaptor.hpp:17
+
+ + + + diff --git a/doxygen/conceptdr_1_1____detail_1_1mdspan__like.html b/doxygen/conceptdr_1_1____detail_1_1mdspan__like.html new file mode 100644 index 0000000000..d82e10ad93 --- /dev/null +++ b/doxygen/conceptdr_1_1____detail_1_1mdspan__like.html @@ -0,0 +1,92 @@ + + + + + + + +Distributed Ranges: dr::__detail::mdspan_like Concept Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::__detail::mdspan_like Concept Reference
+
+
+

Concept definition

+
template<typename Mdspan>
+
concept dr::__detail::mdspan_like = requires(Mdspan &mdspan) {
+
mdspan.rank();
+
mdspan.extents();
+
}
+
Definition: mdspan_utils.hpp:34
+
+ + + + diff --git a/doxygen/conceptdr_1_1distributed__contiguous__iterator.html b/doxygen/conceptdr_1_1distributed__contiguous__iterator.html new file mode 100644 index 0000000000..e58f11fd75 --- /dev/null +++ b/doxygen/conceptdr_1_1distributed__contiguous__iterator.html @@ -0,0 +1,96 @@ + + + + + + + +Distributed Ranges: dr::distributed_contiguous_iterator Concept Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::distributed_contiguous_iterator Concept Reference
+
+
+

Concept definition

+
template<typename Iter>
+ +
distributed_iterator<Iter> && rng::random_access_iterator<Iter> &&
+
requires(Iter &iter) {
+
{ dr::ranges::segments(iter) } -> rng::random_access_range;
+
} &&
+
remote_contiguous_range<rng::range_value_t<decltype(dr::ranges::segments(
+
std::declval<Iter>()))>>
+
Definition: concepts.hpp:51
+
Definition: concepts.hpp:31
+
+ + + + diff --git a/doxygen/conceptdr_1_1distributed__contiguous__range.html b/doxygen/conceptdr_1_1distributed__contiguous__range.html new file mode 100644 index 0000000000..92efb0904b --- /dev/null +++ b/doxygen/conceptdr_1_1distributed__contiguous__range.html @@ -0,0 +1,96 @@ + + + + + + + +Distributed Ranges: dr::distributed_contiguous_range Concept Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::distributed_contiguous_range Concept Reference
+
+
+

Concept definition

+
template<typename R>
+ +
distributed_range<R> && rng::random_access_range<R> &&
+
requires(R &r) {
+
{ dr::ranges::segments(r) } -> rng::random_access_range;
+
} &&
+
remote_contiguous_range<
+
rng::range_value_t<decltype(dr::ranges::segments(std::declval<R>()))>>
+
Definition: concepts.hpp:42
+
Definition: concepts.hpp:20
+
+ + + + diff --git a/doxygen/conceptdr_1_1distributed__iterator.html b/doxygen/conceptdr_1_1distributed__iterator.html new file mode 100644 index 0000000000..c2e2066a7f --- /dev/null +++ b/doxygen/conceptdr_1_1distributed__iterator.html @@ -0,0 +1,91 @@ + + + + + + + +Distributed Ranges: dr::distributed_iterator Concept Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::distributed_iterator Concept Reference
+
+
+

Concept definition

+
template<typename I>
+
concept dr::distributed_iterator = std::forward_iterator<I> && requires(I &iter) {
+
dr::ranges::segments(iter);
+
}
+
Definition: concepts.hpp:31
+
+ + + + diff --git a/doxygen/conceptdr_1_1distributed__range.html b/doxygen/conceptdr_1_1distributed__range.html new file mode 100644 index 0000000000..ccd64645a1 --- /dev/null +++ b/doxygen/conceptdr_1_1distributed__range.html @@ -0,0 +1,90 @@ + + + + + + + +Distributed Ranges: dr::distributed_range Concept Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::distributed_range Concept Reference
+
+
+

Concept definition

+
template<typename R>
+ +
rng::forward_range<R> && requires(R &r) { dr::ranges::segments(r); }
+
Definition: concepts.hpp:20
+
+ + + + diff --git a/doxygen/conceptdr_1_1mhp_1_1____detail_1_1is__distributed.html b/doxygen/conceptdr_1_1mhp_1_1____detail_1_1is__distributed.html new file mode 100644 index 0000000000..0b461d6a35 --- /dev/null +++ b/doxygen/conceptdr_1_1mhp_1_1____detail_1_1is__distributed.html @@ -0,0 +1,92 @@ + + + + + + + +Distributed Ranges: dr::mhp::__detail::is_distributed Concept Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::mhp::__detail::is_distributed Concept Reference
+
+
+

Concept definition

+
+ + + + diff --git a/doxygen/conceptdr_1_1mhp_1_1____detail_1_1one__argument.html b/doxygen/conceptdr_1_1mhp_1_1____detail_1_1one__argument.html new file mode 100644 index 0000000000..ef024c50ff --- /dev/null +++ b/doxygen/conceptdr_1_1mhp_1_1____detail_1_1one__argument.html @@ -0,0 +1,91 @@ + + + + + + + +Distributed Ranges: dr::mhp::__detail::one_argument Concept Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::mhp::__detail::one_argument Concept Reference
+
+
+

Concept definition

+
template<typename F, typename Arg1>
+
concept dr::mhp::__detail::one_argument = requires(F &f) {
+
{ f(Arg1{}) };
+
}
+
Definition: md_for_each.hpp:28
+
+ + + + diff --git a/doxygen/conceptdr_1_1mhp_1_1____detail_1_1two__arguments.html b/doxygen/conceptdr_1_1mhp_1_1____detail_1_1two__arguments.html new file mode 100644 index 0000000000..edf615ae94 --- /dev/null +++ b/doxygen/conceptdr_1_1mhp_1_1____detail_1_1two__arguments.html @@ -0,0 +1,91 @@ + + + + + + + +Distributed Ranges: dr::mhp::__detail::two_arguments Concept Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::mhp::__detail::two_arguments Concept Reference
+
+
+

Concept definition

+
template<typename F, typename Arg1, typename Arg2>
+
concept dr::mhp::__detail::two_arguments = requires(F &f) {
+
{ f(Arg1{}, Arg2{}) };
+
}
+
Definition: md_for_each.hpp:33
+
+ + + + diff --git a/doxygen/conceptdr_1_1mhp_1_1____detail_1_1zipable.html b/doxygen/conceptdr_1_1mhp_1_1____detail_1_1zipable.html new file mode 100644 index 0000000000..b9ad0714f5 --- /dev/null +++ b/doxygen/conceptdr_1_1mhp_1_1____detail_1_1zipable.html @@ -0,0 +1,89 @@ + + + + + + + +Distributed Ranges: dr::mhp::__detail::zipable Concept Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::mhp::__detail::zipable Concept Reference
+
+
+

Concept definition

+
template<typename R>
+
concept dr::mhp::__detail::zipable = rng::random_access_range<R> && rng::common_range<R>
+
Definition: zip.hpp:20
+
+ + + + diff --git a/doxygen/conceptdr_1_1mhp_1_1has__halo__method.html b/doxygen/conceptdr_1_1mhp_1_1has__halo__method.html new file mode 100644 index 0000000000..6844f8d154 --- /dev/null +++ b/doxygen/conceptdr_1_1mhp_1_1has__halo__method.html @@ -0,0 +1,92 @@ + + + + + + + +Distributed Ranges: dr::mhp::has_halo_method Concept Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::mhp::has_halo_method Concept Reference
+
+
+

Concept definition

+
template<typename DR>
+
concept dr::mhp::has_halo_method = dr::distributed_range<DR> && requires(DR &&dr) {
+
{ rng::begin(dr::ranges::segments(dr)[0]).halo() };
+
}
+
Definition: concepts.hpp:20
+
Definition: segment.hpp:251
+
+ + + + diff --git a/doxygen/conceptdr_1_1mhp_1_1has__segments.html b/doxygen/conceptdr_1_1mhp_1_1has__segments.html new file mode 100644 index 0000000000..8d9663a21c --- /dev/null +++ b/doxygen/conceptdr_1_1mhp_1_1has__segments.html @@ -0,0 +1,89 @@ + + + + + + + +Distributed Ranges: dr::mhp::has_segments Concept Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::mhp::has_segments Concept Reference
+
+
+

Concept definition

+
template<typename T>
+
concept dr::mhp::has_segments = requires(T &t) { dr::ranges::segments(t); }
+
Definition: alignment.hpp:14
+
+ + + + diff --git a/doxygen/conceptdr_1_1mhp_1_1is__mdspan__view.html b/doxygen/conceptdr_1_1mhp_1_1is__mdspan__view.html new file mode 100644 index 0000000000..81307b33a8 --- /dev/null +++ b/doxygen/conceptdr_1_1mhp_1_1is__mdspan__view.html @@ -0,0 +1,91 @@ + + + + + + + +Distributed Ranges: dr::mhp::is_mdspan_view Concept Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::mhp::is_mdspan_view Concept Reference
+
+
+

Concept definition

+
template<typename R>
+ +
dr::distributed_range<R> && requires(R &r) { r.mdspan(); }
+
Definition: concepts.hpp:20
+
Definition: mdspan_view.hpp:197
+
+ + + + diff --git a/doxygen/conceptdr_1_1mhp_1_1no__segments.html b/doxygen/conceptdr_1_1mhp_1_1no__segments.html new file mode 100644 index 0000000000..422a7008e0 --- /dev/null +++ b/doxygen/conceptdr_1_1mhp_1_1no__segments.html @@ -0,0 +1,90 @@ + + + + + + + +Distributed Ranges: dr::mhp::no_segments Concept Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::mhp::no_segments Concept Reference
+
+
+

Concept definition

+
template<typename T>
+ +
Definition: alignment.hpp:14
+
Definition: alignment.hpp:17
+
+ + + + diff --git a/doxygen/conceptdr_1_1ranges_1_1_0d13_1_1has__local__adl.html b/doxygen/conceptdr_1_1ranges_1_1_0d13_1_1has__local__adl.html new file mode 100644 index 0000000000..1a632e24c7 --- /dev/null +++ b/doxygen/conceptdr_1_1ranges_1_1_0d13_1_1has__local__adl.html @@ -0,0 +1,91 @@ + + + + + + + +Distributed Ranges: dr::ranges::@13::has_local_adl Concept Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::ranges::@13::has_local_adl Concept Reference
+
+
+

Concept definition

+
template<typename Iter>
+
concept dr::ranges::@13::has_local_adl = requires(Iter &iter) {
+
{ local_(iter) } -> std::forward_iterator;
+
}
+
Definition: ranges.hpp:128
+
+ + + + diff --git a/doxygen/conceptdr_1_1ranges_1_1_0d13_1_1has__rank__adl.html b/doxygen/conceptdr_1_1ranges_1_1_0d13_1_1has__rank__adl.html new file mode 100644 index 0000000000..ee15b83965 --- /dev/null +++ b/doxygen/conceptdr_1_1ranges_1_1_0d13_1_1has__rank__adl.html @@ -0,0 +1,91 @@ + + + + + + + +Distributed Ranges: dr::ranges::@13::has_rank_adl Concept Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::ranges::@13::has_rank_adl Concept Reference
+
+
+

Concept definition

+
template<typename R>
+
concept dr::ranges::@13::has_rank_adl = requires(R &r) {
+
{ rank_(r) } -> std::weakly_incrementable;
+
}
+
Definition: ranges.hpp:27
+
+ + + + diff --git a/doxygen/conceptdr_1_1ranges_1_1_0d13_1_1has__rank__method.html b/doxygen/conceptdr_1_1ranges_1_1_0d13_1_1has__rank__method.html new file mode 100644 index 0000000000..9757fc86a8 --- /dev/null +++ b/doxygen/conceptdr_1_1ranges_1_1_0d13_1_1has__rank__method.html @@ -0,0 +1,91 @@ + + + + + + + +Distributed Ranges: dr::ranges::@13::has_rank_method Concept Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::ranges::@13::has_rank_method Concept Reference
+
+
+

Concept definition

+
template<typename T>
+
concept dr::ranges::@13::has_rank_method = requires(T t) {
+
{ t.rank() } -> std::weakly_incrementable;
+
}
+
Definition: ranges.hpp:22
+
+ + + + diff --git a/doxygen/conceptdr_1_1ranges_1_1_0d13_1_1has__segments__adl.html b/doxygen/conceptdr_1_1ranges_1_1_0d13_1_1has__segments__adl.html new file mode 100644 index 0000000000..0a1ed9c4b0 --- /dev/null +++ b/doxygen/conceptdr_1_1ranges_1_1_0d13_1_1has__segments__adl.html @@ -0,0 +1,92 @@ + + + + + + + +Distributed Ranges: dr::ranges::@13::has_segments_adl Concept Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::ranges::@13::has_segments_adl Concept Reference
+
+
+

Concept definition

+
template<typename R>
+
concept dr::ranges::@13::has_segments_adl = requires(R &r) {
+
{ segments_(r) } -> segments_range;
+
}
+
Definition: ranges.hpp:95
+
Definition: ranges.hpp:86
+
+ + + + diff --git a/doxygen/conceptdr_1_1ranges_1_1_0d13_1_1has__segments__method.html b/doxygen/conceptdr_1_1ranges_1_1_0d13_1_1has__segments__method.html new file mode 100644 index 0000000000..156af75a32 --- /dev/null +++ b/doxygen/conceptdr_1_1ranges_1_1_0d13_1_1has__segments__method.html @@ -0,0 +1,92 @@ + + + + + + + +Distributed Ranges: dr::ranges::@13::has_segments_method Concept Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::ranges::@13::has_segments_method Concept Reference
+
+
+

Concept definition

+
template<typename R>
+
concept dr::ranges::@13::has_segments_method = requires(R r) {
+
{ r.segments() } -> segments_range;
+
}
+
Definition: ranges.hpp:90
+
Definition: ranges.hpp:86
+
+ + + + diff --git a/doxygen/conceptdr_1_1ranges_1_1_0d13_1_1is__localizable.html b/doxygen/conceptdr_1_1ranges_1_1_0d13_1_1is__localizable.html new file mode 100644 index 0000000000..70526cc927 --- /dev/null +++ b/doxygen/conceptdr_1_1ranges_1_1_0d13_1_1is__localizable.html @@ -0,0 +1,89 @@ + + + + + + + +Distributed Ranges: dr::ranges::@13::is_localizable Concept Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::ranges::@13::is_localizable Concept Reference
+
+
+

Concept definition

+
template<typename T>
+
concept dr::ranges::@13::is_localizable = is_localizable_helper<T>::value
+
Definition: ranges.hpp:155
+
+ + + + diff --git a/doxygen/conceptdr_1_1ranges_1_1_0d13_1_1is__remote__iterator__shadow__impl__.html b/doxygen/conceptdr_1_1ranges_1_1_0d13_1_1is__remote__iterator__shadow__impl__.html new file mode 100644 index 0000000000..64c0a0d5b4 --- /dev/null +++ b/doxygen/conceptdr_1_1ranges_1_1_0d13_1_1is__remote__iterator__shadow__impl__.html @@ -0,0 +1,92 @@ + + + + + + + +Distributed Ranges: dr::ranges::@13::is_remote_iterator_shadow_impl_ Concept Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::ranges::@13::is_remote_iterator_shadow_impl_ Concept Reference
+
+
+

Concept definition

+
template<typename Iter>
+
concept dr::ranges::@13::is_remote_iterator_shadow_impl_ =
+
std::forward_iterator<Iter> && has_rank_method<Iter> &&
+
!disable_rank<std::remove_cv_t<Iter>>
+
Definition: ranges.hpp:22
+ +
+ + + + diff --git a/doxygen/conceptdr_1_1ranges_1_1_0d13_1_1iter__has__local__method.html b/doxygen/conceptdr_1_1ranges_1_1_0d13_1_1iter__has__local__method.html new file mode 100644 index 0000000000..e58b6a3062 --- /dev/null +++ b/doxygen/conceptdr_1_1ranges_1_1_0d13_1_1iter__has__local__method.html @@ -0,0 +1,92 @@ + + + + + + + +Distributed Ranges: dr::ranges::@13::iter_has_local_method Concept Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::ranges::@13::iter_has_local_method Concept Reference
+
+
+

Concept definition

+
template<typename Iter>
+
concept dr::ranges::@13::iter_has_local_method =
+
std::forward_iterator<Iter> && requires(Iter iter) {
+
{ iter.local() } -> std::forward_iterator;
+
}
+
Definition: ranges.hpp:133
+
+ + + + diff --git a/doxygen/conceptdr_1_1ranges_1_1_0d13_1_1remote__range__shadow__impl__.html b/doxygen/conceptdr_1_1ranges_1_1_0d13_1_1remote__range__shadow__impl__.html new file mode 100644 index 0000000000..0a8c9ce667 --- /dev/null +++ b/doxygen/conceptdr_1_1ranges_1_1_0d13_1_1remote__range__shadow__impl__.html @@ -0,0 +1,90 @@ + + + + + + + +Distributed Ranges: dr::ranges::@13::remote_range_shadow_impl_ Concept Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::ranges::@13::remote_range_shadow_impl_ Concept Reference
+
+
+

Concept definition

+
template<typename R>
+
concept dr::ranges::@13::remote_range_shadow_impl_ =
+
rng::forward_range<R> && requires(R &r) { dr::ranges::rank(r); }
+ +
+ + + + diff --git a/doxygen/conceptdr_1_1ranges_1_1_0d13_1_1segment__has__local__method.html b/doxygen/conceptdr_1_1ranges_1_1_0d13_1_1segment__has__local__method.html new file mode 100644 index 0000000000..278498e86d --- /dev/null +++ b/doxygen/conceptdr_1_1ranges_1_1_0d13_1_1segment__has__local__method.html @@ -0,0 +1,92 @@ + + + + + + + +Distributed Ranges: dr::ranges::@13::segment_has_local_method Concept Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::ranges::@13::segment_has_local_method Concept Reference
+
+
+

Concept definition

+
template<typename Segment>
+
concept dr::ranges::@13::segment_has_local_method =
+
rng::forward_range<Segment> && requires(Segment segment) {
+
{ segment.local() } -> rng::forward_range;
+
}
+ +
+ + + + diff --git a/doxygen/conceptdr_1_1ranges_1_1_0d13_1_1segments__range.html b/doxygen/conceptdr_1_1ranges_1_1_0d13_1_1segments__range.html new file mode 100644 index 0000000000..b8e7781250 --- /dev/null +++ b/doxygen/conceptdr_1_1ranges_1_1_0d13_1_1segments__range.html @@ -0,0 +1,91 @@ + + + + + + + +Distributed Ranges: dr::ranges::@13::segments_range Concept Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::ranges::@13::segments_range Concept Reference
+
+
+

Concept definition

+
template<typename R>
+
concept dr::ranges::@13::segments_range =
+ + +
Definition: ranges.hpp:86
+
+ + + + diff --git a/doxygen/conceptdr_1_1ranges_1_1____detail_1_1has__local.html b/doxygen/conceptdr_1_1ranges_1_1____detail_1_1has__local.html new file mode 100644 index 0000000000..2338729a39 --- /dev/null +++ b/doxygen/conceptdr_1_1ranges_1_1____detail_1_1has__local.html @@ -0,0 +1,91 @@ + + + + + + + +Distributed Ranges: dr::ranges::__detail::has_local Concept Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::ranges::__detail::has_local Concept Reference
+
+
+

Concept definition

+
template<typename T>
+
concept dr::ranges::__detail::has_local = requires(T &t) {
+
{ dr::ranges::local(t) } -> std::convertible_to<std::any>;
+
}
+
Definition: ranges.hpp:242
+
+ + + + diff --git a/doxygen/conceptdr_1_1remote__contiguous__iterator.html b/doxygen/conceptdr_1_1remote__contiguous__iterator.html new file mode 100644 index 0000000000..1df08f1d5b --- /dev/null +++ b/doxygen/conceptdr_1_1remote__contiguous__iterator.html @@ -0,0 +1,93 @@ + + + + + + + +Distributed Ranges: dr::remote_contiguous_iterator Concept Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::remote_contiguous_iterator Concept Reference
+
+
+

Concept definition

+
template<typename I>
+ +
std::random_access_iterator<I> && requires(I &iter) {
+
dr::ranges::rank(iter);
+
{ dr::ranges::local(iter) } -> std::contiguous_iterator;
+
}
+
Definition: concepts.hpp:24
+
+ + + + diff --git a/doxygen/conceptdr_1_1remote__contiguous__range.html b/doxygen/conceptdr_1_1remote__contiguous__range.html new file mode 100644 index 0000000000..af9ebcb366 --- /dev/null +++ b/doxygen/conceptdr_1_1remote__contiguous__range.html @@ -0,0 +1,93 @@ + + + + + + + +Distributed Ranges: dr::remote_contiguous_range Concept Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::remote_contiguous_range Concept Reference
+
+
+

Concept definition

+
template<typename R>
+ +
remote_range<R> && rng::random_access_range<R> && requires(R &r) {
+
{ dr::ranges::local(r) } -> rng::contiguous_range;
+
}
+
Definition: concepts.hpp:36
+
Definition: concepts.hpp:16
+
+ + + + diff --git a/doxygen/conceptdr_1_1remote__iterator.html b/doxygen/conceptdr_1_1remote__iterator.html new file mode 100644 index 0000000000..0f041999a8 --- /dev/null +++ b/doxygen/conceptdr_1_1remote__iterator.html @@ -0,0 +1,90 @@ + + + + + + + +Distributed Ranges: dr::remote_iterator Concept Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::remote_iterator Concept Reference
+
+
+

Concept definition

+
template<typename I>
+ +
std::forward_iterator<I> && requires(I &iter) { dr::ranges::rank(iter); }
+
Definition: concepts.hpp:12
+
+ + + + diff --git a/doxygen/conceptdr_1_1remote__range.html b/doxygen/conceptdr_1_1remote__range.html new file mode 100644 index 0000000000..29233c5e1f --- /dev/null +++ b/doxygen/conceptdr_1_1remote__range.html @@ -0,0 +1,90 @@ + + + + + + + +Distributed Ranges: dr::remote_range Concept Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::remote_range Concept Reference
+
+
+

Concept definition

+
template<typename R>
+
concept dr::remote_range =
+
rng::forward_range<R> && requires(R &r) { dr::ranges::rank(r); }
+
Definition: concepts.hpp:16
+
+ + + + diff --git a/doxygen/conceptdr_1_1shp_1_1____detail_1_1is__syclmemcopyable.html b/doxygen/conceptdr_1_1shp_1_1____detail_1_1is__syclmemcopyable.html new file mode 100644 index 0000000000..38cadb09ad --- /dev/null +++ b/doxygen/conceptdr_1_1shp_1_1____detail_1_1is__syclmemcopyable.html @@ -0,0 +1,90 @@ + + + + + + + +Distributed Ranges: dr::shp::__detail::is_syclmemcopyable Concept Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::shp::__detail::is_syclmemcopyable Concept Reference
+
+
+

Concept definition

+
template<typename Src, typename Dest>
+
concept dr::shp::__detail::is_syclmemcopyable = std::is_same_v<std::remove_const_t<Src>, Dest> &&
+
std::is_trivially_copyable_v<Dest>
+
Definition: detail.hpp:21
+
+ + + + diff --git a/doxygen/conceptdr_1_1shp_1_1____detail_1_1sycl__device__selector.html b/doxygen/conceptdr_1_1shp_1_1____detail_1_1sycl__device__selector.html new file mode 100644 index 0000000000..d0d83a5cbe --- /dev/null +++ b/doxygen/conceptdr_1_1shp_1_1____detail_1_1sycl__device__selector.html @@ -0,0 +1,91 @@ + + + + + + + +Distributed Ranges: dr::shp::__detail::sycl_device_selector Concept Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr::shp::__detail::sycl_device_selector Concept Reference
+
+
+

Concept definition

+
template<typename T>
+
concept dr::shp::__detail::sycl_device_selector = requires(T &t, const sycl::device &device) {
+
{ t(device) } -> std::convertible_to<int>;
+
}
+ +
+ + + + diff --git a/doxygen/concepts.html b/doxygen/concepts.html new file mode 100644 index 0000000000..b44a2a406d --- /dev/null +++ b/doxygen/concepts.html @@ -0,0 +1,114 @@ + + + + + + + +Distributed Ranges: Concepts + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Concepts
+
+
+
Here is a list of all documented concepts with brief descriptions:
+
[detail level 1234]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 Ndr
 N__detail
 Rmdspan_like
 Nmhp
 N__detail
 Rone_argument
 Rtwo_arguments
 Rzipable
 Ris_distributed
 Rhas_segments
 Rno_segments
 Rhas_halo_method
 Ris_mdspan_view
 Nranges
 N__detail
 Rhas_local
 Nshp
 N__detail
 Ris_syclmemcopyable
 Rsycl_device_selector
 Rremote_iterator
 Rremote_range
 Rdistributed_range
 Rremote_contiguous_iterator
 Rdistributed_iterator
 Rremote_contiguous_range
 Rdistributed_contiguous_range
 Rdistributed_contiguous_iterator
 RTupleLike
+
+
+ + + + diff --git a/doxygen/concepts_8hpp_source.html b/doxygen/concepts_8hpp_source.html new file mode 100644 index 0000000000..a4428f0249 --- /dev/null +++ b/doxygen/concepts_8hpp_source.html @@ -0,0 +1,152 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/concepts/concepts.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
concepts.hpp
+
+
+
1// SPDX-FileCopyrightText: Intel Corporation
+
2//
+
3// SPDX-License-Identifier: BSD-3-Clause
+
4
+
5#pragma once
+
6
+
7#include <dr/detail/ranges.hpp>
+
8
+
9namespace dr {
+
10
+
11template <typename I>
+ +
13 std::forward_iterator<I> && requires(I &iter) { dr::ranges::rank(iter); };
+
14
+
15template <typename R>
+
16concept remote_range =
+
17 rng::forward_range<R> && requires(R &r) { dr::ranges::rank(r); };
+
18
+
19template <typename R>
+ +
21 rng::forward_range<R> && requires(R &r) { dr::ranges::segments(r); };
+
22
+
23template <typename I>
+ +
25 std::random_access_iterator<I> && requires(I &iter) {
+
26 dr::ranges::rank(iter);
+
27 { dr::ranges::local(iter) } -> std::contiguous_iterator;
+
28 };
+
29
+
30template <typename I>
+
31concept distributed_iterator = std::forward_iterator<I> && requires(I &iter) {
+
32 dr::ranges::segments(iter);
+
33};
+
34
+
35template <typename R>
+ +
37 remote_range<R> && rng::random_access_range<R> && requires(R &r) {
+
38 { dr::ranges::local(r) } -> rng::contiguous_range;
+
39 };
+
40
+
41template <typename R>
+ +
43 distributed_range<R> && rng::random_access_range<R> &&
+
44 requires(R &r) {
+
45 { dr::ranges::segments(r) } -> rng::random_access_range;
+
46 } &&
+ +
48 rng::range_value_t<decltype(dr::ranges::segments(std::declval<R>()))>>;
+
49
+
50template <typename Iter>
+ +
52 distributed_iterator<Iter> && rng::random_access_iterator<Iter> &&
+
53 requires(Iter &iter) {
+
54 { dr::ranges::segments(iter) } -> rng::random_access_range;
+
55 } &&
+
56 remote_contiguous_range<rng::range_value_t<decltype(dr::ranges::segments(
+
57 std::declval<Iter>()))>>;
+
58
+
59} // namespace dr
+
Definition: concepts.hpp:51
+
Definition: concepts.hpp:42
+
Definition: concepts.hpp:31
+
Definition: concepts.hpp:20
+
Definition: concepts.hpp:24
+
Definition: concepts.hpp:36
+
Definition: concepts.hpp:12
+
Definition: concepts.hpp:16
+
+ + + + diff --git a/doxygen/containers_2detail_8hpp_source.html b/doxygen/containers_2detail_8hpp_source.html new file mode 100644 index 0000000000..27af141ddc --- /dev/null +++ b/doxygen/containers_2detail_8hpp_source.html @@ -0,0 +1,113 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/containers/detail.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
detail.hpp
+
+
+
1// SPDX-FileCopyrightText: Intel Corporation
+
2//
+
3// SPDX-License-Identifier: BSD-3-Clause
+
4
+
5#pragma once
+
6
+
7#include <cmath>
+
8
+
9namespace dr::shp {
+
10
+
11namespace detail {
+
12
+
13// Factor n into 2 roughly equal factors
+
14// n = pq, p >= q
+
15inline std::tuple<std::size_t, std::size_t> factor(std::size_t n) {
+
16 std::size_t q = std::sqrt(n);
+
17
+
18 while (q > 1 && n / q != static_cast<double>(n) / q) {
+
19 q--;
+
20 }
+
21 std::size_t p = n / q;
+
22
+
23 return {p, q};
+
24}
+
25
+
26} // namespace detail
+
27
+
28} // namespace dr::shp
+
+ + + + diff --git a/doxygen/coo__matrix_8hpp_source.html b/doxygen/coo__matrix_8hpp_source.html new file mode 100644 index 0000000000..e70c7cfb42 --- /dev/null +++ b/doxygen/coo__matrix_8hpp_source.html @@ -0,0 +1,259 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/util/coo_matrix.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
coo_matrix.hpp
+
+
+
1// SPDX-FileCopyrightText: Intel Corporation
+
2//
+
3// SPDX-License-Identifier: BSD-3-Clause
+
4
+
5#pragma once
+
6
+
7#include <dr/shp/containers/matrix_entry.hpp>
+
8#include <memory>
+
9#include <vector>
+
10
+
11namespace dr::shp {
+
12
+
13namespace __detail {
+
14
+
15template <typename T, typename I, typename Allocator = std::allocator<T>>
+ +
17public:
+ +
19 using scalar_type = T;
+
20 using index_type = I;
+
21 using size_type = std::size_t;
+
22 using difference_type = std::ptrdiff_t;
+
23
+
24 using allocator_type = Allocator;
+
25
+
26 using key_type = dr::index<I>;
+
27 using map_type = T;
+
28
+
29 using backend_allocator_type = typename std::allocator_traits<
+
30 allocator_type>::template rebind_alloc<value_type>;
+
31 using backend_type = std::vector<value_type, backend_allocator_type>;
+
32
+
33 using iterator = typename backend_type::iterator;
+
34 using const_iterator = typename backend_type::const_iterator;
+
35
+ + +
38
+
39 using scalar_reference = T &;
+
40
+
41 coo_matrix(dr::index<I> shape) : shape_(shape) {}
+
42
+
43 dr::index<I> shape() const noexcept { return shape_; }
+
44
+
45 size_type size() const noexcept { return tuples_.size(); }
+
46
+
47 void reserve(size_type new_cap) { tuples_.reserve(new_cap); }
+
48
+
49 iterator begin() noexcept { return tuples_.begin(); }
+
50
+
51 const_iterator begin() const noexcept { return tuples_.begin(); }
+
52
+
53 iterator end() noexcept { return tuples_.end(); }
+
54
+
55 const_iterator end() const noexcept { return tuples_.end(); }
+
56
+
57 template <typename InputIt> void insert(InputIt first, InputIt last) {
+
58 for (auto iter = first; iter != last; ++iter) {
+
59 insert(*iter);
+
60 }
+
61 }
+
62
+
63 template <typename InputIt> void push_back(InputIt first, InputIt last) {
+
64 for (auto iter = first; iter != last; ++iter) {
+
65 push_back(*iter);
+
66 }
+
67 }
+
68
+
69 void push_back(const value_type &value) { tuples_.push_back(value); }
+
70
+
71 template <typename InputIt> void assign_tuples(InputIt first, InputIt last) {
+
72 tuples_.assign(first, last);
+
73 }
+
74
+
75 std::pair<iterator, bool> insert(value_type &&value) {
+
76 auto &&[insert_index, insert_value] = value;
+
77 for (auto iter = begin(); iter != end(); ++iter) {
+
78 auto &&[index, v] = *iter;
+
79 if (index == insert_index) {
+
80 return {iter, false};
+
81 }
+
82 }
+
83 tuples_.push_back(value);
+
84 return {--tuples_.end(), true};
+
85 }
+
86
+
87 std::pair<iterator, bool> insert(const value_type &value) {
+
88 auto &&[insert_index, insert_value] = value;
+
89 for (auto iter = begin(); iter != end(); ++iter) {
+
90 auto &&[index, v] = *iter;
+
91 if (index == insert_index) {
+
92 return {iter, false};
+
93 }
+
94 }
+
95 tuples_.push_back(value);
+
96 return {--tuples_.end(), true};
+
97 }
+
98
+
99 template <class M>
+
100 std::pair<iterator, bool> insert_or_assign(key_type k, M &&obj) {
+
101 for (auto iter = begin(); iter != end(); ++iter) {
+
102 auto &&[index, v] = *iter;
+
103 if (index == k) {
+
104 v = std::forward<M>(obj);
+
105 return {iter, false};
+
106 }
+
107 }
+
108 tuples_.push_back({k, std::forward<M>(obj)});
+
109 return {--tuples_.end(), true};
+
110 }
+
111
+
112 iterator find(key_type key) noexcept {
+
113 return std::find_if(begin(), end(), [&](auto &&v) {
+
114 auto &&[i, v_] = v;
+
115 return i == key;
+
116 });
+
117 }
+
118
+
119 const_iterator find(key_type key) const noexcept {
+
120 return std::find_if(begin(), end(), [&](auto &&v) {
+
121 auto &&[i, v_] = v;
+
122 return i == key;
+
123 });
+
124 }
+
125
+
126 void reshape(dr::index<I> shape) {
+
127 bool all_inside = true;
+
128 for (auto &&[index, v] : *this) {
+
129 auto &&[i, j] = index;
+
130 if (!(i < shape[0] && j < shape[1])) {
+
131 all_inside = false;
+
132 break;
+
133 }
+
134 }
+
135
+
136 if (all_inside) {
+
137 shape_ = shape;
+
138 return;
+
139 } else {
+
140 coo_matrix<T, I> new_tuples(shape);
+
141 for (auto &&[index, v] : *this) {
+
142 auto &&[i, j] = index;
+
143 if (i < shape[0] && j < shape[1]) {
+
144 new_tuples.insert({index, v});
+
145 }
+
146 }
+
147 shape_ = shape;
+
148 assign_tuples(new_tuples.begin(), new_tuples.end());
+
149 }
+
150 }
+
151
+
152 coo_matrix() = default;
+
153 ~coo_matrix() = default;
+
154 coo_matrix(const coo_matrix &) = default;
+
155 coo_matrix(coo_matrix &&) = default;
+
156 coo_matrix &operator=(const coo_matrix &) = default;
+
157 coo_matrix &operator=(coo_matrix &&) = default;
+
158
+
159 std::size_t nbytes() const noexcept {
+
160 return tuples_.size() * sizeof(value_type);
+
161 }
+
162
+
163private:
+
164 dr::index<I> shape_;
+
165 backend_type tuples_;
+
166};
+
167
+
168} // namespace __detail
+
169
+
170} // namespace dr::shp
+ +
Definition: coo_matrix.hpp:16
+
Definition: matrix_entry.hpp:15
+
Definition: matrix_entry.hpp:113
+
+ + + + diff --git a/doxygen/csr__matrix__view_8hpp_source.html b/doxygen/csr__matrix__view_8hpp_source.html new file mode 100644 index 0000000000..ee77d3e7e1 --- /dev/null +++ b/doxygen/csr__matrix__view_8hpp_source.html @@ -0,0 +1,316 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/views/csr_matrix_view.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
csr_matrix_view.hpp
+
+
+
1// SPDX-FileCopyrightText: Intel Corporation
+
2//
+
3// SPDX-License-Identifier: BSD-3-Clause
+
4
+
5#pragma once
+
6
+
7#include <dr/detail/index.hpp>
+
8#include <dr/shp/containers/matrix_entry.hpp>
+
9#include <iterator>
+
10
+
11namespace dr::shp {
+
12
+
13template <typename T, typename I, typename TIter, typename IIter>
+ +
15public:
+
16 using size_type = std::size_t;
+
17 using difference_type = std::ptrdiff_t;
+
18
+
19 using scalar_type = std::iter_value_t<TIter>;
+
20 using scalar_reference = std::iter_reference_t<TIter>;
+
21
+
22 using index_type = I;
+
23
+ +
25
+ +
27
+
28 using iterator_category = std::random_access_iterator_tag;
+
29
+ + + +
33
+
34 using key_type = dr::index<I>;
+
35
+
36 constexpr csr_matrix_view_accessor() noexcept = default;
+
37 constexpr ~csr_matrix_view_accessor() noexcept = default;
+ +
39 const csr_matrix_view_accessor &) noexcept = default;
+
40 constexpr csr_matrix_view_accessor &
+
41 operator=(const csr_matrix_view_accessor &) noexcept = default;
+
42
+
43 constexpr csr_matrix_view_accessor(TIter values, IIter rowptr, IIter colind,
+
44 size_type idx, index_type row,
+
45 size_type row_dim) noexcept
+
46 : values_(values), rowptr_(rowptr), colind_(colind), idx_(idx), row_(row),
+
47 row_dim_(row_dim), idx_offset_(key_type{0, 0}) {
+
48 fast_forward_row();
+
49 }
+
50
+
51 constexpr csr_matrix_view_accessor(TIter values, IIter rowptr, IIter colind,
+
52 size_type idx, index_type row,
+
53 size_type row_dim,
+
54 key_type idx_offset) noexcept
+
55 : values_(values), rowptr_(rowptr), colind_(colind), idx_(idx), row_(row),
+
56 row_dim_(row_dim), idx_offset_(idx_offset) {
+
57 fast_forward_row();
+
58 }
+
59
+
60 // Given that `idx_` has just been advanced to an element
+
61 // possibly in a new row, advance `row_` to find the new row.
+
62 // That is:
+
63 // Advance `row_` until idx_ >= rowptr_[row_] && idx_ < rowptr_[row_+1]
+
64 void fast_forward_row() noexcept {
+
65 while (row_ < row_dim_ - 1 && idx_ >= rowptr_[row_ + 1]) {
+
66 row_++;
+
67 }
+
68 }
+
69
+
70 // Given that `idx_` has just been retreated to an element
+
71 // possibly in a previous row, retreat `row_` to find the new row.
+
72 // That is:
+
73 // Retreat `row_` until idx_ >= rowptr_[row_] && idx_ < rowptr_[row_+1]
+
74 void fast_backward_row() noexcept {
+
75 while (idx_ < rowptr_[row_]) {
+
76 row_--;
+
77 }
+
78 }
+
79
+
80 constexpr csr_matrix_view_accessor &
+
81 operator+=(difference_type offset) noexcept {
+
82 idx_ += offset;
+
83 if (offset < 0) {
+
84 fast_backward_row();
+
85 } else {
+
86 fast_forward_row();
+
87 }
+
88 return *this;
+
89 }
+
90
+
91 constexpr bool operator==(const iterator_accessor &other) const noexcept {
+
92 return idx_ == other.idx_;
+
93 }
+
94
+
95 constexpr difference_type
+
96 operator-(const iterator_accessor &other) const noexcept {
+
97 return difference_type(idx_) - difference_type(other.idx_);
+
98 }
+
99
+
100 constexpr bool operator<(const iterator_accessor &other) const noexcept {
+
101 return idx_ < other.idx_;
+
102 }
+
103
+
104 constexpr reference operator*() const noexcept {
+
105 return reference(
+
106 key_type(row_ + idx_offset_[0], colind_[idx_] + idx_offset_[1]),
+
107 values_[idx_]);
+
108 }
+
109
+
110private:
+
111 TIter values_;
+
112 IIter rowptr_;
+
113 IIter colind_;
+
114 size_type idx_;
+
115 index_type row_;
+
116 size_type row_dim_;
+
117 key_type idx_offset_;
+
118};
+
119
+
120template <typename T, typename I, typename TIter, typename IIter>
+ + +
123
+
124template <typename T, typename I, typename TIter = T *, typename IIter = I *>
+ +
126 : public rng::view_interface<csr_matrix_view<T, I, TIter, IIter>> {
+
127public:
+
128 using size_type = std::size_t;
+
129 using difference_type = std::ptrdiff_t;
+
130
+
131 using scalar_reference = std::iter_reference_t<TIter>;
+ +
133
+
134 using scalar_type = T;
+
135 using index_type = I;
+
136
+
137 using key_type = dr::index<I>;
+
138 using map_type = T;
+
139
+ +
141
+
142 csr_matrix_view(TIter values, IIter rowptr, IIter colind, key_type shape,
+
143 size_type nnz, size_type rank)
+
144 : values_(values), rowptr_(rowptr), colind_(colind), shape_(shape),
+
145 nnz_(nnz), rank_(rank), idx_offset_(key_type{0, 0}) {}
+
146
+
147 csr_matrix_view(TIter values, IIter rowptr, IIter colind, key_type shape,
+
148 size_type nnz, size_type rank, key_type idx_offset)
+
149 : values_(values), rowptr_(rowptr), colind_(colind), shape_(shape),
+
150 nnz_(nnz), rank_(rank), idx_offset_(idx_offset) {}
+
151
+
152 key_type shape() const noexcept { return shape_; }
+
153
+
154 size_type size() const noexcept { return nnz_; }
+
155
+
156 std::size_t rank() const { return rank_; }
+
157
+
158 iterator begin() const {
+
159 return iterator(values_, rowptr_, colind_, 0, 0, shape()[1], idx_offset_);
+
160 }
+
161
+
162 iterator end() const {
+
163 return iterator(values_, rowptr_, colind_, nnz_, shape()[1], shape()[1],
+
164 idx_offset_);
+
165 }
+
166
+
167 auto row(I row_index) const {
+
168 I first = rowptr_[row_index];
+
169 I last = rowptr_[row_index + 1];
+
170
+
171 TIter values = values_;
+
172 IIter colind = colind_;
+
173
+
174 auto row_elements = rng::views::iota(first, last);
+
175
+
176 return row_elements | rng::views::transform([=](auto idx) {
+
177 return reference(key_type(row_index, colind[idx]), values[idx]);
+
178 });
+
179 }
+
180
+
181 auto submatrix(key_type rows, key_type columns) const {
+
182 return rng::views::iota(rows[0], rows[1]) |
+
183 rng::views::transform([=, *this](auto &&row_index) {
+
184 return row(row_index) | rng::views::drop_while([=](auto &&e) {
+
185 auto &&[index, v] = e;
+
186 return index[1] < columns[0];
+
187 }) |
+
188 rng::views::take_while([=](auto &&e) {
+
189 auto &&[index, v] = e;
+
190 return index[1] < columns[1];
+
191 }) |
+
192 rng::views::transform([=](auto &&elem) {
+
193 auto &&[index, v] = elem;
+
194 auto &&[i, j] = index;
+
195 return reference(key_type(i - rows[0], j - columns[0]),
+
196 v);
+
197 });
+
198 }) |
+
199 rng::views::join;
+
200 }
+
201
+
202 auto values_data() const { return values_; }
+
203
+
204 auto rowptr_data() const { return rowptr_; }
+
205
+
206 auto colind_data() const { return colind_; }
+
207
+
208private:
+
209 TIter values_;
+
210 IIter rowptr_;
+
211 IIter colind_;
+
212
+
213 key_type shape_;
+
214 size_type nnz_;
+
215
+
216 size_type rank_;
+
217 key_type idx_offset_;
+
218};
+
219
+
220template <typename TIter, typename IIter, typename... Args>
+
221csr_matrix_view(TIter, IIter, IIter, Args &&...)
+
222 -> csr_matrix_view<std::iter_value_t<TIter>, std::iter_value_t<IIter>,
+
223 TIter, IIter>;
+
224
+
225} // namespace dr::shp
+ +
Definition: iterator_adaptor.hpp:23
+
Definition: csr_matrix_view.hpp:14
+
Definition: csr_matrix_view.hpp:126
+
Definition: matrix_entry.hpp:15
+
Definition: matrix_entry.hpp:113
+
+ + + + diff --git a/doxygen/dense__column__view_8hpp_source.html b/doxygen/dense__column__view_8hpp_source.html new file mode 100644 index 0000000000..d069141ebe --- /dev/null +++ b/doxygen/dense__column__view_8hpp_source.html @@ -0,0 +1,202 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/views/dense_column_view.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dense_column_view.hpp
+
+
+
1// SPDX-FileCopyrightText: Intel Corporation
+
2//
+
3// SPDX-License-Identifier: BSD-3-Clause
+
4
+
5#pragma once
+
6
+
7#include <dr/detail/index.hpp>
+
8#include <dr/shp/containers/matrix_entry.hpp>
+
9#include <iterator>
+
10
+
11namespace dr::shp {
+
12template <typename T, typename Iter> class dense_matrix_column_accessor {
+
13public:
+
14 using size_type = std::size_t;
+
15 using difference_type = std::ptrdiff_t;
+
16
+
17 using scalar_value_type = std::iter_value_t<Iter>;
+
18 using scalar_reference = std::iter_reference_t<Iter>;
+
19
+ +
21
+ +
23
+
24 using iterator_category = std::random_access_iterator_tag;
+
25
+ + + +
29
+
30 using key_type = dr::index<>;
+
31
+
32 constexpr dense_matrix_column_accessor() noexcept = default;
+
33 constexpr ~dense_matrix_column_accessor() noexcept = default;
+ +
35 const dense_matrix_column_accessor &) noexcept = default;
+ +
37 operator=(const dense_matrix_column_accessor &) noexcept = default;
+
38
+
39 constexpr dense_matrix_column_accessor(Iter data, std::size_t i,
+
40 std::size_t j, std::size_t ld) noexcept
+
41 : data_(data), i_(i), j_(j), ld_(ld) {}
+
42
+ +
44 operator+=(difference_type offset) noexcept {
+
45 i_ += offset;
+
46 return *this;
+
47 }
+
48
+
49 constexpr bool operator==(const iterator_accessor &other) const noexcept {
+
50 return i_ == other.i_;
+
51 }
+
52
+
53 constexpr difference_type
+
54 operator-(const iterator_accessor &other) const noexcept {
+
55 return difference_type(i_) - difference_type(other.i_);
+
56 }
+
57
+
58 constexpr bool operator<(const iterator_accessor &other) const noexcept {
+
59 return i_ < other.i_;
+
60 }
+
61
+
62 constexpr reference operator*() const noexcept {
+
63 return reference(key_type({i_, j_}), data_[i_ * ld_]);
+
64 }
+
65
+
66private:
+
67 size_type i_, j_;
+
68 size_type ld_;
+
69
+
70 Iter data_;
+
71};
+
72
+
73template <typename T, typename Iter>
+ + +
76
+
77template <typename T, typename Iter> class dense_matrix_column_view {
+
78public:
+
79 using size_type = std::size_t;
+
80 using difference_type = std::ptrdiff_t;
+
81
+
82 using scalar_reference = std::iter_reference_t<Iter>;
+
83
+
84 using key_type = dr::index<>;
+
85 using map_type = T;
+
86
+ +
88
+
89 dense_matrix_column_view(Iter data, size_type column_idx, size_type size,
+
90 size_type ld)
+
91 : data_(data), column_idx_(column_idx), size_(size), ld_(ld) {}
+
92
+
93 scalar_reference operator[](size_type idx) { return data_[idx * ld_]; }
+
94
+
95 iterator begin() const { return iterator(data_, 0, column_idx_, ld_); }
+
96
+
97 iterator end() const { return iterator(data_, size_, column_idx_, ld_); }
+
98
+
99 size_type size() const noexcept { return size_; }
+
100
+
101 Iter data_;
+
102 size_type column_idx_;
+
103 size_type size_;
+
104 size_type ld_;
+
105};
+
106
+
107template <std::random_access_iterator Iter>
+
108dense_matrix_column_view(Iter, std::size_t, std::size_t, std::size_t)
+ +
110
+
111} // namespace dr::shp
+
Definition: index.hpp:34
+
Definition: iterator_adaptor.hpp:23
+
Definition: dense_column_view.hpp:12
+
Definition: dense_column_view.hpp:77
+
Definition: matrix_entry.hpp:15
+
Definition: matrix_entry.hpp:113
+
+ + + + diff --git a/doxygen/dense__matrix_8hpp_source.html b/doxygen/dense__matrix_8hpp_source.html new file mode 100644 index 0000000000..68d811fedc --- /dev/null +++ b/doxygen/dense__matrix_8hpp_source.html @@ -0,0 +1,232 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/containers/sequential/dense_matrix.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dense_matrix.hpp
+
+
+
1// SPDX-FileCopyrightText: Intel Corporation
+
2//
+
3// SPDX-License-Identifier: BSD-3-Clause
+
4
+
5#pragma once
+
6
+
7#include <iterator>
+
8
+
9#include <dr/detail/index.hpp>
+
10#include <dr/detail/iterator_adaptor.hpp>
+
11#include <dr/shp/containers/matrix_entry.hpp>
+
12#include <dr/shp/views/dense_column_view.hpp>
+
13#include <dr/shp/views/dense_matrix_iterator.hpp>
+
14#include <dr/shp/views/dense_row_view.hpp>
+
15
+
16namespace dr::shp {
+
17
+
18template <typename T, typename Allocator = std::allocator<T>>
+ +
20public:
+
21 using size_type = std::size_t;
+
22 using difference_type = std::ptrdiff_t;
+
23
+
24 using allocator_type = Allocator;
+
25
+
26 using scalar_pointer = typename std::allocator_traits<Allocator>::pointer;
+
27
+
28 using scalar_reference = std::iter_reference_t<scalar_pointer>;
+ +
30
+
31 using key_type = dr::index<>;
+
32 using map_type = T;
+
33
+ +
35
+ +
37 : allocator_(Allocator()), shape_(shape), ld_(shape[1]) {
+
38 data_ = allocator_.allocate(shape_[0] * shape_[1]);
+
39 }
+
40
+
41 dense_matrix(key_type shape, std::size_t ld)
+
42 requires(std::is_default_constructible_v<Allocator>)
+
43 : allocator_(Allocator()), shape_(shape), ld_(ld) {
+
44 data_ = allocator_.allocate(shape_[0] * ld_);
+
45 }
+
46
+
47 dense_matrix(key_type shape, std::size_t ld, const Allocator &alloc)
+
48 : allocator_(alloc), shape_(shape), ld_(ld) {
+
49 data_ = allocator_.allocate(shape_[0] * ld_);
+
50 }
+
51
+ +
53 : allocator_(other.allocator_), data_(other.data_), shape_(other.shape_),
+
54 ld_(other.ld_) {
+
55 other.null_data_();
+
56 }
+
57
+
58 dense_matrix &operator=(dense_matrix &&other) {
+
59 deallocate_storage_();
+
60 allocator_ = other.allocator_;
+
61 data_ = other.data_;
+
62 shape_ = other.shape_;
+
63 ld_ = other.ld_;
+
64
+
65 other.null_data_();
+
66 }
+
67
+
68 dense_matrix(const dense_matrix &other) = delete;
+
69 dense_matrix &operator=(const dense_matrix &other) = delete;
+
70
+
71 ~dense_matrix() { deallocate_storage_(); }
+
72
+
73 key_type shape() const noexcept { return shape_; }
+
74
+
75 size_type size() const noexcept { return shape()[0] * shape()[1]; }
+
76
+
77 scalar_reference operator[](key_type idx) const {
+
78 return data_[idx[0] * ld_ + idx[1]];
+
79 }
+
80
+
81 iterator begin() const {
+
82 return iterator(data_, key_type{0, 0}, shape_, ld_);
+
83 }
+
84
+
85 iterator end() const {
+
86 return iterator(data_, key_type{shape_[0], 0}, shape_, ld_);
+
87 }
+
88
+
89 auto row(size_type row_index) const {
+
90 // return dense_matrix_row_view(data_ + row_index * ld_, row_index,
+
91 // shape()[1]);
+
92 auto row_elements = rng::views::iota(size_type(0), size_type(shape()[1]));
+
93 scalar_pointer data = data_ + row_index * ld_;
+
94
+
95 return row_elements | rng::views::transform([=](auto column_index) {
+
96 return reference(key_type(row_index, column_index),
+
97 data[column_index]);
+
98 });
+
99 }
+
100
+
101 auto column(size_type column_index) const {
+
102 // return dense_matrix_column_view(data_ + column_index, column_index,
+
103 // shape()[0], ld_);
+
104 auto column_elements =
+
105 rng::views::iota(size_type(0), size_type(shape()[0]));
+
106 scalar_pointer data = data_ + column_index;
+
107 size_type ld = ld_;
+
108
+
109 return column_elements | rng::views::transform([=](auto row_index) {
+
110 return reference(key_type(row_index, column_index),
+
111 data[row_index * ld]);
+
112 });
+
113 }
+
114
+
115 scalar_pointer data() const { return data_; }
+
116
+
117 size_type ld() const { return ld_; }
+
118
+
119 /*
+
120 auto local() const {
+
121 }
+
122 */
+
123
+
124private:
+
125 void deallocate_storage_() {
+
126 if (data_ != nullptr) {
+
127 allocator_.deallocate(data_, shape_[0] * ld_);
+
128 }
+
129 }
+
130
+
131 void null_data_() {
+
132 data_ = nullptr;
+
133 shape_ = {0, 0};
+
134 ld_ = 0;
+
135 }
+
136
+
137 allocator_type allocator_;
+
138 scalar_pointer data_;
+
139 key_type shape_;
+
140 size_type ld_;
+
141};
+
142
+
143} // namespace dr::shp
+
Definition: index.hpp:34
+
Definition: iterator_adaptor.hpp:23
+
Definition: dense_matrix.hpp:19
+
Definition: matrix_entry.hpp:113
+
+ + + + diff --git a/doxygen/dense__matrix__iterator_8hpp_source.html b/doxygen/dense__matrix__iterator_8hpp_source.html new file mode 100644 index 0000000000..98d546408e --- /dev/null +++ b/doxygen/dense__matrix__iterator_8hpp_source.html @@ -0,0 +1,199 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/views/dense_matrix_iterator.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dense_matrix_iterator.hpp
+
+
+
1// SPDX-FileCopyrightText: Intel Corporation
+
2//
+
3// SPDX-License-Identifier: BSD-3-Clause
+
4
+
5#pragma once
+
6
+
7#include <iterator>
+
8
+
9#include <dr/detail/index.hpp>
+
10#include <dr/detail/iterator_adaptor.hpp>
+
11#include <dr/shp/containers/matrix_entry.hpp>
+
12#include <dr/shp/views/dense_column_view.hpp>
+
13#include <dr/shp/views/dense_row_view.hpp>
+
14
+
15namespace dr::shp {
+
16
+
17template <typename T, typename Iter> class dense_matrix_accessor {
+
18public:
+
19 using size_type = std::size_t;
+
20 using difference_type = std::ptrdiff_t;
+
21
+
22 using scalar_type = std::iter_value_t<Iter>;
+
23 using scalar_reference = std::iter_reference_t<Iter>;
+
24
+ +
26
+ +
28
+
29 using iterator_category = std::random_access_iterator_tag;
+
30
+ + + +
34
+
35 using key_type = dr::index<>;
+
36
+
37 constexpr dense_matrix_accessor() noexcept = default;
+
38 constexpr ~dense_matrix_accessor() noexcept = default;
+
39 constexpr dense_matrix_accessor(const dense_matrix_accessor &) noexcept =
+
40 default;
+
41 constexpr dense_matrix_accessor &
+
42 operator=(const dense_matrix_accessor &) noexcept = default;
+
43
+
44 constexpr dense_matrix_accessor(Iter data, key_type idx,
+
45 key_type matrix_shape, size_type ld) noexcept
+
46 : data_(data), idx_(idx), matrix_shape_(matrix_shape), ld_(ld),
+
47 idx_offset_({0, 0}) {}
+
48
+
49 constexpr dense_matrix_accessor(Iter data, key_type idx, key_type idx_offset,
+
50 key_type matrix_shape, size_type ld) noexcept
+
51 : data_(data), idx_(idx), matrix_shape_(matrix_shape), ld_(ld),
+
52 idx_offset_(idx_offset) {}
+
53
+
54 constexpr dense_matrix_accessor &operator+=(difference_type offset) noexcept {
+
55 size_type new_idx = get_global_idx() + offset;
+
56 idx_ = {new_idx / matrix_shape_[1], new_idx % matrix_shape_[1]};
+
57
+
58 return *this;
+
59 }
+
60
+
61 constexpr bool operator==(const iterator_accessor &other) const noexcept {
+
62 return idx_ == other.idx_;
+
63 }
+
64
+
65 constexpr difference_type
+
66 operator-(const iterator_accessor &other) const noexcept {
+
67 return difference_type(get_global_idx()) - other.get_global_idx();
+
68 }
+
69
+
70 constexpr bool operator<(const iterator_accessor &other) const noexcept {
+
71 if (idx_[0] < other.idx_[0]) {
+
72 return true;
+
73 } else if (idx_[0] == other.idx_[0]) {
+
74 return idx_[1] < other.idx_[1];
+
75 } else {
+
76 return false;
+
77 }
+
78 }
+
79
+
80 constexpr reference operator*() const noexcept {
+
81 return reference(
+
82 key_type(idx_[0] + idx_offset_[0], idx_[1] + idx_offset_[1]),
+
83 data_[idx_[0] * ld_ + idx_[1]]);
+
84 }
+
85
+
86 Iter data() const noexcept { return data_; }
+
87
+
88private:
+
89 size_type get_global_idx() const noexcept {
+
90 return idx_[0] * matrix_shape_[1] + idx_[1];
+
91 }
+
92
+
93private:
+
94 Iter data_;
+
95 key_type idx_;
+
96 key_type matrix_shape_;
+
97 size_type ld_;
+
98
+
99 key_type idx_offset_;
+
100};
+
101
+
102template <typename T, typename Iter>
+ + +
105
+
106template <typename T, typename Iter>
+ +
108
+
109} // namespace dr::shp
+
Definition: index.hpp:34
+
Definition: iterator_adaptor.hpp:23
+
Definition: dense_matrix_iterator.hpp:17
+
Definition: matrix_entry.hpp:15
+
Definition: matrix_entry.hpp:113
+
+ + + + diff --git a/doxygen/dense__matrix__view_8hpp_source.html b/doxygen/dense__matrix__view_8hpp_source.html new file mode 100644 index 0000000000..af79828af5 --- /dev/null +++ b/doxygen/dense__matrix__view_8hpp_source.html @@ -0,0 +1,214 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/views/dense_matrix_view.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dense_matrix_view.hpp
+
+
+
1// SPDX-FileCopyrightText: Intel Corporation
+
2//
+
3// SPDX-License-Identifier: BSD-3-Clause
+
4
+
5#pragma once
+
6
+
7#include <iterator>
+
8
+
9#include <dr/detail/index.hpp>
+
10#include <dr/detail/iterator_adaptor.hpp>
+
11#include <dr/shp/containers/matrix_entry.hpp>
+
12#include <dr/shp/containers/sequential/dense_matrix.hpp>
+
13#include <dr/shp/views/dense_column_view.hpp>
+
14#include <dr/shp/views/dense_matrix_iterator.hpp>
+
15#include <dr/shp/views/dense_row_view.hpp>
+
16
+
17namespace dr::shp {
+
18
+
19template <typename T, typename Iter = T *>
+ +
21 : public rng::view_interface<dense_matrix_view<T, Iter>> {
+
22public:
+
23 using size_type = std::size_t;
+
24 using difference_type = std::ptrdiff_t;
+
25
+
26 using scalar_reference = std::iter_reference_t<Iter>;
+ +
28
+
29 using key_type = dr::index<>;
+
30 using map_type = T;
+
31
+ +
33
+
34 dense_matrix_view(Iter data, key_type shape, size_type ld, size_type rank)
+
35 : data_(data), shape_(shape), idx_offset_(key_type{0, 0}), ld_(ld),
+
36 rank_(rank) {}
+
37
+
38 dense_matrix_view(Iter data, key_type shape, key_type idx_offset,
+
39 size_type ld, size_type rank)
+
40 : data_(data), shape_(shape), idx_offset_(idx_offset), ld_(ld),
+
41 rank_(rank) {}
+
42
+
43 template <typename Allocator>
+
44 requires(std::is_same_v<typename std::allocator_traits<Allocator>::pointer,
+
45 Iter>)
+ +
47 : data_(m.data()), shape_(m.shape()), idx_offset_(key_type{0, 0}),
+
48 ld_(m.ld()), rank_(0) {}
+
49
+
50 key_type shape() const noexcept { return shape_; }
+
51
+
52 size_type size() const noexcept { return shape()[0] * shape()[1]; }
+
53
+
54 scalar_reference operator[](key_type idx) const {
+
55 return data_[idx[0] * ld_ + idx[1]];
+
56 }
+
57
+
58 iterator begin() const {
+
59 return iterator(data_, key_type{0, 0}, idx_offset_, shape_, ld_);
+
60 }
+
61
+
62 iterator end() const {
+
63 return iterator(data_, key_type{shape_[0], 0}, idx_offset_, shape_, ld_);
+
64 }
+
65
+
66 auto row(size_type row_index) const {
+
67 // return dense_matrix_row_view(data_ + row_index * ld_, row_index,
+
68 // shape()[1]);
+
69 auto row_elements = rng::views::iota(size_type(0), size_type(shape()[1]));
+
70 Iter data = data_ + row_index * ld_;
+
71
+
72 return row_elements | rng::views::transform([=](auto column_index) {
+
73 return reference(key_type(row_index, column_index),
+
74 data[column_index]);
+
75 });
+
76 }
+
77
+
78 auto column(size_type column_index) const {
+
79 // return dense_matrix_column_view(data_ + column_index, column_index,
+
80 // shape()[0], ld_);
+
81 auto column_elements =
+
82 rng::views::iota(size_type(0), size_type(shape()[0]));
+
83 Iter data = data_ + column_index;
+
84 size_type ld = ld_;
+
85
+
86 return column_elements | rng::views::transform([=](auto row_index) {
+
87 return reference(key_type(row_index, column_index),
+
88 data[row_index * ld]);
+
89 });
+
90 }
+
91
+
92 Iter data() const { return data_; }
+
93
+
94 std::size_t rank() const { return rank_; }
+
95
+
96 size_type ld() const { return ld_; }
+
97
+
98 auto local() const {
+
99 auto local_data = __detail::local(data_);
+ +
101 local_data, shape_, idx_offset_, ld(), rank());
+
102 }
+
103
+
104private:
+
105 Iter data_;
+
106 key_type shape_;
+
107 key_type idx_offset_;
+
108 size_type ld_;
+
109 size_type rank_;
+
110};
+
111
+
112template <std::random_access_iterator Iter>
+
113dense_matrix_view(Iter, dr::index<>, std::size_t)
+ +
115
+
116template <std::random_access_iterator Iter>
+ + +
119
+
120template <typename T, typename Allocator>
+ + +
123
+
124} // namespace dr::shp
+
Definition: index.hpp:34
+
Definition: iterator_adaptor.hpp:23
+
Definition: dense_matrix_view.hpp:21
+
Definition: dense_matrix.hpp:19
+
Definition: matrix_entry.hpp:113
+
+ + + + diff --git a/doxygen/dense__row__view_8hpp_source.html b/doxygen/dense__row__view_8hpp_source.html new file mode 100644 index 0000000000..01dd485536 --- /dev/null +++ b/doxygen/dense__row__view_8hpp_source.html @@ -0,0 +1,200 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/views/dense_row_view.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dense_row_view.hpp
+
+
+
1// SPDX-FileCopyrightText: Intel Corporation
+
2//
+
3// SPDX-License-Identifier: BSD-3-Clause
+
4
+
5#pragma once
+
6
+
7#include <dr/detail/index.hpp>
+
8#include <dr/detail/iterator_adaptor.hpp>
+
9#include <dr/shp/containers/matrix_entry.hpp>
+
10#include <iterator>
+
11
+
12namespace dr::shp {
+
13template <typename T, typename Iter> class dense_matrix_row_accessor {
+
14public:
+
15 using size_type = std::size_t;
+
16 using difference_type = std::ptrdiff_t;
+
17
+
18 using scalar_value_type = std::iter_value_t<Iter>;
+
19 using scalar_reference = std::iter_reference_t<Iter>;
+
20
+ +
22
+ +
24
+
25 using iterator_category = std::random_access_iterator_tag;
+
26
+ + + +
30
+
31 using key_type = dr::index<>;
+
32
+
33 constexpr dense_matrix_row_accessor() noexcept = default;
+
34 constexpr ~dense_matrix_row_accessor() noexcept = default;
+ +
36 const dense_matrix_row_accessor &) noexcept = default;
+ +
38 operator=(const dense_matrix_row_accessor &) noexcept = default;
+
39
+
40 constexpr dense_matrix_row_accessor(Iter data, std::size_t i,
+
41 std::size_t j) noexcept
+
42 : data_(data), i_(i), j_(j) {}
+
43
+ +
45 operator+=(difference_type offset) noexcept {
+
46 j_ += offset;
+
47 return *this;
+
48 }
+
49
+
50 constexpr bool operator==(const iterator_accessor &other) const noexcept {
+
51 return j_ == other.j_;
+
52 }
+
53
+
54 constexpr difference_type
+
55 operator-(const iterator_accessor &other) const noexcept {
+
56 return difference_type(j_) - difference_type(other.j_);
+
57 }
+
58
+
59 constexpr bool operator<(const iterator_accessor &other) const noexcept {
+
60 return j_ < other.j_;
+
61 }
+
62
+
63 constexpr reference operator*() const noexcept {
+
64 return reference(key_type({i_, j_}), data_[j_]);
+
65 }
+
66
+
67private:
+
68 size_type i_, j_;
+
69
+
70 Iter data_;
+
71};
+
72
+
73template <typename T, typename Iter>
+ + +
76
+
77template <typename T, typename Iter> class dense_matrix_row_view {
+
78public:
+
79 using size_type = std::size_t;
+
80 using difference_type = std::ptrdiff_t;
+
81
+
82 using scalar_reference = std::iter_reference_t<Iter>;
+
83
+
84 using key_type = dr::index<>;
+
85 using map_type = T;
+
86
+ +
88
+
89 dense_matrix_row_view(Iter data, size_type row_idx, size_type size)
+
90 : data_(data), row_idx_(row_idx), size_(size) {}
+
91
+
92 scalar_reference operator[](size_type idx) { return data_[idx]; }
+
93
+
94 iterator begin() const { return iterator(data_, row_idx_, 0); }
+
95
+
96 iterator end() const { return iterator(data_, row_idx_, size_); }
+
97
+
98 size_type size() const noexcept { return size_; }
+
99
+
100 Iter data_;
+
101 size_type row_idx_;
+
102 size_type size_;
+
103};
+
104
+
105template <std::random_access_iterator Iter>
+
106dense_matrix_row_view(Iter, std::size_t, std::size_t)
+ +
108
+
109} // namespace dr::shp
+
Definition: index.hpp:34
+
Definition: iterator_adaptor.hpp:23
+
Definition: dense_row_view.hpp:13
+
Definition: dense_row_view.hpp:77
+
Definition: matrix_entry.hpp:15
+
Definition: matrix_entry.hpp:113
+
+ + + + diff --git a/doxygen/detail_2enumerate_8hpp_source.html b/doxygen/detail_2enumerate_8hpp_source.html new file mode 100644 index 0000000000..22bedec798 --- /dev/null +++ b/doxygen/detail_2enumerate_8hpp_source.html @@ -0,0 +1,149 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail/enumerate.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
enumerate.hpp
+
+
+
1// SPDX-FileCopyrightText: Intel Corporation
+
2//
+
3// SPDX-License-Identifier: BSD-3-Clause
+
4
+
5#pragma once
+
6
+
7#include <dr/detail/ranges_shim.hpp>
+
8
+
9namespace dr {
+
10
+
11namespace __detail {
+
12
+
13namespace {
+
14
+
15template <rng::range R> struct range_size {
+
16 using type = std::size_t;
+
17};
+
18
+
19template <rng::sized_range R> struct range_size<R> {
+
20 using type = rng::range_size_t<R>;
+
21};
+
22
+
23template <rng::range R> using range_size_t = typename range_size<R>::type;
+
24
+
25} // namespace
+
26
+ +
28public:
+
29 template <rng::viewable_range R> auto operator()(R &&r) const {
+
30 using S = range_size_t<R>;
+
31 // NOTE: This line only necessary due to bug in range-v3 where views
+
32 // have non-weakly-incrementable size types. (Standard mandates
+
33 // size type must be weakly incrementable.)
+
34 using W = std::conditional_t<std::weakly_incrementable<S>, S, std::size_t>;
+
35 if constexpr (rng::sized_range<R>) {
+
36 return rng::views::zip(rng::views::iota(W{0}, W{rng::size(r)}),
+
37 std::forward<R>(r));
+
38 } else {
+
39 return rng::views::zip(rng::views::iota(W{0}), std::forward<R>(r));
+
40 }
+
41 }
+
42
+
43 template <rng::viewable_range R>
+
44 friend auto operator|(R &&r, const enumerate_adapter_closure &closure) {
+
45 return closure(std::forward<R>(r));
+
46 }
+
47};
+
48
+ +
50public:
+
51 template <rng::viewable_range R> constexpr auto operator()(R &&r) const {
+
52 return enumerate_adapter_closure{}(std::forward<R>(r));
+
53 }
+
54
+
55 inline auto enumerate() const { return enumerate_adapter_closure{}; }
+
56};
+
57
+
58inline constexpr auto enumerate = enumerate_fn_{};
+
59
+
60} // namespace __detail
+
61
+
62} // namespace dr
+
Definition: enumerate.hpp:27
+
Definition: enumerate.hpp:49
+
+ + + + diff --git a/doxygen/detail_8hpp_source.html b/doxygen/detail_8hpp_source.html new file mode 100644 index 0000000000..b0599717b8 --- /dev/null +++ b/doxygen/detail_8hpp_source.html @@ -0,0 +1,177 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/detail.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
detail.hpp
+
+
+
1// SPDX-FileCopyrightText: Intel Corporation
+
2//
+
3// SPDX-License-Identifier: BSD-3-Clause
+
4
+
5#pragma once
+
6
+
7#include <dr/detail/ranges.hpp>
+
8#include <dr/detail/sycl_utils.hpp>
+
9#include <dr/shp/device_ptr.hpp>
+
10#include <dr/shp/init.hpp>
+
11#include <iterator>
+
12#include <sycl/sycl.hpp>
+
13
+
14namespace dr::shp {
+
15
+
16namespace __detail {
+
17
+
18inline constexpr auto local = dr::ranges::__detail::local;
+
19
+
20template <typename Src, typename Dest>
+
21concept is_syclmemcopyable = std::is_same_v<std::remove_const_t<Src>, Dest> &&
+
22 std::is_trivially_copyable_v<Dest>;
+
23
+
24template <std::contiguous_iterator Iter>
+
25sycl::usm::alloc get_pointer_type(Iter iter) {
+
26 return sycl::get_pointer_type(std::to_address(iter), shp::context());
+
27}
+
28
+
29template <typename T>
+
30sycl::usm::alloc get_pointer_type(shp::device_ptr<T> ptr) {
+
31 return sycl::get_pointer_type(ptr.get_raw_pointer(), shp::context());
+
32}
+
33
+
34template <std::contiguous_iterator Iter>
+
35sycl::device get_pointer_device(Iter iter) {
+
36 return sycl::get_pointer_device(std::to_address(iter), shp::context());
+
37}
+
38
+
39template <typename T> sycl::device get_pointer_device(shp::device_ptr<T> ptr) {
+
40 return sycl::get_pointer_device(ptr.get_raw_pointer(), shp::context());
+
41}
+
42
+
43template <typename InputIt> sycl::queue &get_queue_for_pointer(InputIt iter) {
+
44 if (get_pointer_type(iter) == sycl::usm::alloc::device) {
+
45 auto device = get_pointer_device(iter);
+
46 return __detail::queue(device);
+
47 } else {
+
48 return default_queue();
+
49 }
+
50}
+
51
+
52template <typename InputIt, typename OutputIt>
+
53sycl::queue &get_queue_for_pointers(InputIt iter, OutputIt iter2) {
+
54 if (get_pointer_type(iter) == sycl::usm::alloc::device) {
+
55 auto device = get_pointer_device(iter);
+
56 return __detail::queue(device);
+
57 } else if (get_pointer_type(iter2) == sycl::usm::alloc::device) {
+
58 auto device = get_pointer_device(iter2);
+
59 return __detail::queue(device);
+
60 } else {
+
61 return default_queue();
+
62 }
+
63}
+
64
+
65inline sycl::event combine_events(sycl::queue &q,
+
66 const std::vector<sycl::event> &events) {
+
67 auto e = q.submit([&](auto &&h) {
+
68 h.depends_on(events);
+
69 h.host_task([] {});
+
70 });
+
71
+
72 return e;
+
73}
+
74
+
75inline sycl::event combine_events(const std::vector<sycl::event> &events) {
+
76 auto &&q = __detail::queue(0);
+
77 return combine_events(q, events);
+
78}
+
79
+
80inline void wait(sycl::event &event) { event.wait(); }
+
81
+
82inline void wait(sycl::event &&event) { event.wait(); }
+
83
+
84inline void wait(const std::vector<sycl::event> &events) {
+
85 sycl::event::wait(events);
+
86}
+
87
+
88} // namespace __detail
+
89
+
90} // namespace dr::shp
+
Definition: device_ptr.hpp:17
+
Definition: detail.hpp:21
+
+ + + + diff --git a/doxygen/device__ptr_8hpp_source.html b/doxygen/device__ptr_8hpp_source.html new file mode 100644 index 0000000000..bb0697990e --- /dev/null +++ b/doxygen/device__ptr_8hpp_source.html @@ -0,0 +1,231 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/device_ptr.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
device_ptr.hpp
+
+
+
1// SPDX-FileCopyrightText: Intel Corporation
+
2//
+
3// SPDX-License-Identifier: BSD-3-Clause
+
4
+
5#pragma once
+
6
+
7#include <type_traits>
+
8
+
9#include <sycl/sycl.hpp>
+
10
+
11#include <dr/shp/device_ref.hpp>
+
12
+
13namespace dr::shp {
+
14
+
15template <typename T>
+
16 requires(std::is_trivially_copyable_v<T> || std::is_void_v<T>)
+ +
18public:
+
19 using value_type = T;
+
20 using difference_type = std::ptrdiff_t;
+
21 using pointer = device_ptr<T>;
+ + +
24 using iterator_category = std::random_access_iterator_tag;
+ +
26
+
27 device_ptr(T *pointer) noexcept : pointer_(pointer) {}
+
28 device_ptr() noexcept = default;
+
29 ~device_ptr() noexcept = default;
+
30 device_ptr(const device_ptr &) noexcept = default;
+
31 device_ptr &operator=(const device_ptr &) noexcept = default;
+
32
+
33 device_ptr(std::nullptr_t) noexcept : pointer_(nullptr) {}
+
34
+
35 device_ptr &operator=(std::nullptr_t) noexcept {
+
36 pointer_ = nullptr;
+
37 return *this;
+
38 }
+
39
+
40 operator device_ptr<void>() const noexcept
+
41 requires(!std::is_void_v<T>)
+
42 {
+
43 return device_ptr<void>(reinterpret_cast<void *>(pointer_));
+
44 }
+
45
+
46 operator device_ptr<const void>() const noexcept
+
47 requires(!std::is_void_v<T>)
+
48 {
+
49 return device_ptr<const void>(reinterpret_cast<const void *>(pointer_));
+
50 }
+
51
+
52 operator const_pointer() const noexcept
+
53 requires(!std::is_const_v<T>)
+
54 {
+
55 return const_pointer(pointer_);
+
56 }
+
57
+
58 bool operator==(std::nullptr_t) const noexcept { return pointer_ == nullptr; }
+
59 bool operator!=(std::nullptr_t) const noexcept { return pointer_ != nullptr; }
+
60
+
61 bool operator==(const device_ptr &) const noexcept = default;
+
62 bool operator!=(const device_ptr &) const noexcept = default;
+
63
+
64 pointer operator+(difference_type offset) const noexcept {
+
65 return pointer(pointer_ + offset);
+
66 }
+
67 pointer operator-(difference_type offset) const noexcept {
+
68 return pointer(pointer_ - offset);
+
69 }
+
70
+
71 difference_type operator-(const_pointer other) const noexcept
+
72 requires(!std::is_const_v<T>)
+
73 {
+
74 return pointer_ - other.pointer_;
+
75 }
+
76 difference_type operator-(pointer other) const noexcept {
+
77 return pointer_ - other.pointer_;
+
78 }
+
79
+
80 bool operator<(const_pointer other) const noexcept {
+
81 return pointer_ < other.pointer_;
+
82 }
+
83 bool operator>(const_pointer other) const noexcept {
+
84 return pointer_ > other.pointer_;
+
85 }
+
86 bool operator<=(const_pointer other) const noexcept {
+
87 return pointer_ <= other.pointer_;
+
88 }
+
89 bool operator>=(const_pointer other) const noexcept {
+
90 return pointer_ >= other.pointer_;
+
91 }
+
92
+
93 pointer &operator++() noexcept {
+
94 ++pointer_;
+
95 return *this;
+
96 }
+
97
+
98 pointer operator++(int) noexcept {
+
99 pointer other = *this;
+
100 ++(*this);
+
101 return other;
+
102 }
+
103
+
104 pointer &operator--() noexcept {
+
105 --pointer_;
+
106 return *this;
+
107 }
+
108
+
109 pointer operator--(int) noexcept {
+
110 pointer other = *this;
+
111 --(*this);
+
112 return other;
+
113 }
+
114
+
115 pointer &operator+=(difference_type offset) noexcept {
+
116 pointer_ += offset;
+
117 return *this;
+
118 }
+
119
+
120 pointer &operator-=(difference_type offset) noexcept {
+
121 pointer_ -= offset;
+
122 return *this;
+
123 }
+
124
+
125 reference operator*() const noexcept { return reference(pointer_); }
+
126
+
127 reference operator[](difference_type offset) const noexcept {
+
128 return reference(*(*this + offset));
+
129 }
+
130
+
131 T *get_raw_pointer() const noexcept { return pointer_; }
+
132
+
133 friend pointer operator+(difference_type n, pointer iter) { return iter + n; }
+
134
+
135 T *local() const noexcept { return pointer_; }
+
136
+
137 friend const_pointer;
+
138 friend nonconst_pointer;
+
139
+
140private:
+
141 T *pointer_;
+
142};
+
143
+
144} // namespace dr::shp
+
Definition: device_ptr.hpp:17
+
Definition: device_ref.hpp:15
+
+ + + + diff --git a/doxygen/device__ref_8hpp_source.html b/doxygen/device__ref_8hpp_source.html new file mode 100644 index 0000000000..9ccfa358e9 --- /dev/null +++ b/doxygen/device__ref_8hpp_source.html @@ -0,0 +1,146 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/device_ref.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
device_ref.hpp
+
+
+
1// SPDX-FileCopyrightText: Intel Corporation
+
2//
+
3// SPDX-License-Identifier: BSD-3-Clause
+
4
+
5#pragma once
+
6
+
7#include <dr/shp/init.hpp>
+
8#include <sycl/sycl.hpp>
+
9#include <type_traits>
+
10
+
11namespace dr::shp {
+
12
+
13template <typename T>
+
14 requires(std::is_trivially_copyable_v<T> || std::is_void_v<T>)
+ +
16public:
+
17 device_ref() = delete;
+
18 ~device_ref() = default;
+
19 device_ref(const device_ref &) = default;
+
20
+
21 device_ref(T *pointer) : pointer_(pointer) {}
+
22
+
23 operator T() const {
+
24#ifdef __SYCL_DEVICE_ONLY__
+
25 return *pointer_;
+
26#else
+
27 auto &&q = dr::shp::__detail::default_queue();
+
28 char buffer[sizeof(T)] __attribute__((aligned(sizeof(T))));
+
29 q.memcpy(reinterpret_cast<T *>(buffer), pointer_, sizeof(T)).wait();
+
30 return *reinterpret_cast<T *>(buffer);
+
31#endif
+
32 }
+
33
+
34 device_ref operator=(const T &value) const
+
35 requires(!std::is_const_v<T>)
+
36 {
+
37#ifdef __SYCL_DEVICE_ONLY__
+
38 *pointer_ = value;
+
39#else
+
40 auto &&q = dr::shp::__detail::default_queue();
+
41 q.memcpy(pointer_, &value, sizeof(T)).wait();
+
42#endif
+
43 return *this;
+
44 }
+
45
+
46 device_ref operator=(const device_ref &other) const {
+
47#ifdef __SYCL_DEVICE_ONLY__
+
48 *pointer_ = *other.pointer_;
+
49#else
+
50 T value = other;
+
51 *this = value;
+
52#endif
+
53 return *this;
+
54 }
+
55
+
56private:
+
57 T *pointer_;
+
58};
+
59
+
60} // namespace dr::shp
+
Definition: device_ref.hpp:15
+
+ + + + diff --git a/doxygen/device__span_8hpp_source.html b/doxygen/device__span_8hpp_source.html new file mode 100644 index 0000000000..d83b71ecea --- /dev/null +++ b/doxygen/device__span_8hpp_source.html @@ -0,0 +1,185 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/device_span.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
device_span.hpp
+
+
+
1// SPDX-FileCopyrightText: Intel Corporation
+
2//
+
3// SPDX-License-Identifier: BSD-3-Clause
+
4
+
5#pragma once
+
6
+
7#include <dr/concepts/concepts.hpp>
+
8#include <dr/shp/span.hpp>
+
9#include <span>
+
10
+
11namespace dr::shp {
+
12
+
13// A `device_span` is simply a normal `std::span` that's
+
14// been decorated with an extra `rank()` function, showing
+
15// which rank its memory is located on.
+
16// (Thus fulfilling the `remote_range` concept.)
+
17/*
+
18template <class T,
+
19 std::size_t Extent = std::dynamic_extent>
+
20class device_span : public std::span<T, Extent> {
+
21public:
+
22 constexpr device_span() noexcept {}
+
23
+
24 template< class It >
+
25 explicit(Extent != std::dynamic_extent)
+
26 constexpr device_span(It first, std::size_t count, std::size_t rank)
+
27 : rank_(rank), std::span<T, Extent>(first, count) {}
+
28
+
29 template< class It, class End >
+
30 explicit(Extent != std::dynamic_extent)
+
31 constexpr device_span(It first, End last, std::size_t rank)
+
32 : rank_(rank), std::span<T, Extent>(first, last) {}
+
33
+
34 constexpr std::size_t rank() const noexcept {
+
35 return rank_;
+
36 }
+
37
+
38private:
+
39 std::size_t rank_;
+
40};
+
41*/
+
42
+
43template <typename T, typename Iter = T *>
+
44class device_span : public dr::shp::span<T, Iter> {
+
45public:
+
46 constexpr device_span() noexcept {}
+
47
+
48 using value_type = T;
+
49 using size_type = std::size_t;
+
50 using difference_type = std::size_t;
+
51 using reference = std::iter_reference_t<Iter>;
+
52
+
53 template <rng::random_access_range R>
+
54 requires(dr::remote_range<R>)
+
55 device_span(R &&r)
+
56 : dr::shp::span<T, Iter>(rng::begin(r), rng::size(r)),
+
57 rank_(dr::ranges::rank(r)) {}
+
58
+
59 template <rng::random_access_range R>
+
60 device_span(R &&r, std::size_t rank)
+
61 : dr::shp::span<T, Iter>(rng::begin(r), rng::size(r)), rank_(rank) {}
+
62
+
63 template <class It>
+
64 constexpr device_span(It first, std::size_t count, std::size_t rank)
+
65 : dr::shp::span<T, Iter>(first, count), rank_(rank) {}
+
66
+
67 template <class It, class End>
+
68 constexpr device_span(It first, End last, std::size_t rank)
+
69 : dr::shp::span<T, Iter>(first, last), rank_(rank) {}
+
70
+
71 constexpr std::size_t rank() const noexcept { return rank_; }
+
72
+
73 device_span first(std::size_t n) const {
+
74 return device_span(this->begin(), this->begin() + n, rank_);
+
75 }
+
76
+
77 device_span last(std::size_t n) const {
+
78 return device_span(this->end() - n, this->end(), rank_);
+
79 }
+
80
+
81 device_span subspan(std::size_t offset, std::size_t count) const {
+
82 return device_span(this->begin() + offset, this->begin() + offset + count,
+
83 rank_);
+
84 }
+
85
+
86private:
+
87 std::size_t rank_;
+
88};
+
89
+
90template <rng::random_access_range R>
+
91device_span(R &&) -> device_span<rng::range_value_t<R>, rng::iterator_t<R>>;
+
92
+
93template <rng::random_access_range R>
+
94device_span(R &&, std::size_t)
+
95 -> device_span<rng::range_value_t<R>, rng::iterator_t<R>>;
+
96
+
97} // namespace dr::shp
+
Definition: device_span.hpp:44
+
Definition: span.hpp:14
+
Definition: concepts.hpp:16
+
+ + + + diff --git a/doxygen/device__vector_8hpp_source.html b/doxygen/device__vector_8hpp_source.html new file mode 100644 index 0000000000..84deaadb15 --- /dev/null +++ b/doxygen/device__vector_8hpp_source.html @@ -0,0 +1,124 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/device_vector.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
device_vector.hpp
+
+
+
1// SPDX-FileCopyrightText: Intel Corporation
+
2//
+
3// SPDX-License-Identifier: BSD-3-Clause
+
4
+
5#pragma once
+
6
+
7#include <dr/shp/allocators.hpp>
+
8#include <dr/shp/vector.hpp>
+
9
+
10namespace dr::shp {
+
11
+
12template <typename T, typename Allocator>
+
13class device_vector : public dr::shp::vector<T, Allocator> {
+
14public:
+
15 constexpr device_vector() noexcept {}
+
16
+ +
18
+
19 using value_type = T;
+
20 using size_type = std::size_t;
+
21 using difference_type = std::size_t;
+
22
+
23 constexpr device_vector(size_type count, const Allocator &alloc,
+
24 size_type rank)
+
25 : base(count, alloc), rank_(rank) {}
+
26
+
27 constexpr std::size_t rank() const noexcept { return rank_; }
+
28
+
29private:
+
30 std::size_t rank_ = 0;
+
31};
+
32
+
33template <class Alloc>
+
34device_vector(std::size_t, const Alloc, std::size_t)
+ +
36
+
37} // namespace dr::shp
+
Definition: device_vector.hpp:13
+
Definition: vector.hpp:14
+
+ + + + diff --git a/doxygen/dir_14ee7c343b929a37ea63a8b178bcb898.html b/doxygen/dir_14ee7c343b929a37ea63a8b178bcb898.html new file mode 100644 index 0000000000..feca1618df --- /dev/null +++ b/doxygen/dir_14ee7c343b929a37ea63a8b178bcb898.html @@ -0,0 +1,120 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/algorithms Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
algorithms Directory Reference
+
+
+
+Directory dependency graph for algorithms:
+
+
/opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/algorithms
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Files

file  copy.hpp [code]
 
file  exclusive_scan.hpp [code]
 
file  fill.hpp [code]
 
file  for_each.hpp [code]
 
file  inclusive_exclusive_scan_impl.hpp [code]
 
file  inclusive_scan.hpp [code]
 
file  iota.hpp [code]
 
file  md_for_each.hpp [code]
 
file  reduce.hpp [code]
 
file  sort.hpp [code]
 
file  transform.hpp [code]
 
+
+ + + + diff --git a/doxygen/dir_14ee7c343b929a37ea63a8b178bcb898_dep.map b/doxygen/dir_14ee7c343b929a37ea63a8b178bcb898_dep.map new file mode 100644 index 0000000000..78ae545b22 --- /dev/null +++ b/doxygen/dir_14ee7c343b929a37ea63a8b178bcb898_dep.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/dir_14ee7c343b929a37ea63a8b178bcb898_dep.md5 b/doxygen/dir_14ee7c343b929a37ea63a8b178bcb898_dep.md5 new file mode 100644 index 0000000000..1c4ba27355 --- /dev/null +++ b/doxygen/dir_14ee7c343b929a37ea63a8b178bcb898_dep.md5 @@ -0,0 +1 @@ +e859d8826ba45036dedfb28b43d77f83 \ No newline at end of file diff --git a/doxygen/dir_14ee7c343b929a37ea63a8b178bcb898_dep.png b/doxygen/dir_14ee7c343b929a37ea63a8b178bcb898_dep.png new file mode 100644 index 0000000000000000000000000000000000000000..91f52dfd933d1c0529027fcecbd4770b3e37befd GIT binary patch literal 2183 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 BFcAO% literal 0 HcmV?d00001 diff --git a/doxygen/dir_1cfe8e00bd9dfe72fc53a9846db2893f.html b/doxygen/dir_1cfe8e00bd9dfe72fc53a9846db2893f.html new file mode 100644 index 0000000000..be6d8c1fa8 --- /dev/null +++ b/doxygen/dir_1cfe8e00bd9dfe72fc53a9846db2893f.html @@ -0,0 +1,100 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/containers/sequential Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
sequential Directory Reference
+
+
+
+Directory dependency graph for sequential:
+
+
/opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/containers/sequential
+ + + + +
+ + + + +

+Files

file  dense_matrix.hpp [code]
 
+
+ + + + diff --git a/doxygen/dir_1cfe8e00bd9dfe72fc53a9846db2893f_dep.map b/doxygen/dir_1cfe8e00bd9dfe72fc53a9846db2893f_dep.map new file mode 100644 index 0000000000..787466f3e9 --- /dev/null +++ b/doxygen/dir_1cfe8e00bd9dfe72fc53a9846db2893f_dep.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/dir_1cfe8e00bd9dfe72fc53a9846db2893f_dep.md5 b/doxygen/dir_1cfe8e00bd9dfe72fc53a9846db2893f_dep.md5 new file mode 100644 index 0000000000..6761b21ad1 --- /dev/null +++ b/doxygen/dir_1cfe8e00bd9dfe72fc53a9846db2893f_dep.md5 @@ -0,0 +1 @@ +8b8780e5330a5779bb23556889117ddc \ No newline at end of file diff --git a/doxygen/dir_1cfe8e00bd9dfe72fc53a9846db2893f_dep.png b/doxygen/dir_1cfe8e00bd9dfe72fc53a9846db2893f_dep.png new file mode 100644 index 0000000000000000000000000000000000000000..bc515b344fc9cef581b087ab1eaaef8697e54258 GIT binary patch literal 2268 zcmZWrcU03`5)MV06sgjS5|G|eKH#P*FU#zm;nk*2AA=A`Q-!`gcl|ybEnfM(NzTHuRVA#*pv-(nG^=A2Y48`Ore5iQ;Rngwq_aG(fPahiB)*L05RH$>ltt} zW?0>!o-_0^dhR{7QykFCTt6#D^J`Ov{pI%ZY=hD$x>O

*C{VeNrW@my(hKU2`}h z%3Rl;{Ejk$HV~P^w(Qkp9AvMn-nyb2bTe1pX@an<2C~i0YjyuBK-;rwn$UkWjR%V# zK?x+cR3@`|43Z5cET0W6SJEd9CLWWALO_2`qSoFWTkt42C$wfID^(g(D?W-=#ai;; zE7>*h4Hhj_k9+2N{zJHU4{Y&(HKCy3{B`KCvOyvlx3xAhu`$iX&8^PcAJ~{%iWW(7 z2y$Sp5_Wf);W0>}*$a;JiTMucjQZ9Ccl~1T-A3iyDT+>8S2;dSQ&m>*;Z(kntx^M_ zQY20CV(RNP4m*N0LiPpB%u-FCl`gxVQnGt}!?)gd*$kxfDaodnrnxq+Ki48&0nBt` zdQd>V1-0V%6SB{cwLMPePQ!8$;9W^DIDan5?M72eiw1}ThkyTJ^4m{`(axw1WeO!W zpHl@zCPxn*^^SEPxgYZHUp8lCKE%){ZX zp@mJ?yG7!L=9}3-K|Or*diwf0u&ENU15cj7z#UM`(X>P|5@~JkYzDb`6NKaBIl!5F zfF_EsPLabk&CJhH-3W!@KM32~46LjkZxd+&f3Wen4b;x^f?#xSN%IWbBPp4wS4JxZ zEJyI}teis#nZ!ozPC2EeW8-7elSCl438m$J9Zk2wb}SY?Brzi3!IxdNKfE3Xar3wi zW3j9vZvCU}IoVvZbx_Hko*ow6g9C!s0#Q*V|0s$l?_cR(Ic3+- z&`364%P9Yry5;YWo_TEpqNCO6qr7`ppA3RWMe)b&5D0@cS`p><4~27bxS4qsGmf5g zFfuXO-}}v_bsPkT!ylbfVwv_2m|b z)3a?$KHT;@-3ry=znjO?ILOhkuabd8N;Vs#@#{gOk2JK>HaDdsc9-6|p?y~Icyq&{ z;9Lb41E&X4VDNB*BZaln4Y3kTRH}kOBIVDH*fuveLAAY5bHMpZSNPyp3SZyJNr(T+ zzLwqAb3v_=;j}-q3LiaPT3Ys|{M2qyn(YMQ;v6kHB{w(RZ!I|Oxwo^@Z5(?RyK~zy zPYp-`m3Y9i{yCMtMM}v)n%G%quuc~Hbz`bmu`p#c8lBF|Gg4pqZsSw^RT0U6p#7Hk zy$@A_x^d}W1E*AcewhG8nr>Vi=;_oriXyHik@7gzJSs4UL1*4t7bsQ#{aWlv)ZW%w zzo)&0EGsK3pxb%hpGa zEKeQozv`0`&n>iAjS`U6EFGrdQu2RNRkLlS9`I&6CX|sAW1?$CPqZb`gohETY#`L$ zVg&G&Nidail4Q7|PNPuTML3`6OzIRq+Mc@uMOCRW#uKKKeu|a*pQ|#$Bw2EDazM0) zTZ463lFTP=-S&w9bzv|V388+lQ2I!oBD6T2@YIg(#?AFqPq(r<%G=HkAN=a-04YCj zfdrR6DRA0Y&W;=WGeVKy&s4Hf?e%!Fa#i1e-@F;u3B6i@e34dU?zYU+&dx3zZZp-s z13kt$s`eldIvVc?nV(@b@|xW6eq)58e);JkoA=9_=_OKPHkrEFRSv|zE3&=RCUC#& z77j(_&=k{(9#d1FxOnpK z#mgQRxQOdnb4swQdAtBubMQ!<=?N8`%2~XT`nT!dU_QJ}dJF)ZtD~^%k|=&s%T>;f z>NU^@u4*B2aimlW?I6!hgy}_t4%b| + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/views Directory Reference + + + + + + + + + +

+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
views Directory Reference
+
+
+
+Directory dependency graph for views:
+
+
/opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/views
+ + + + +
+ + + + + + + + +

+Files

file  iota.hpp [code]
 
file  transform.hpp [code]
 
file  views.hpp [code]
 
+
+ + + + diff --git a/doxygen/dir_323acea4eb551240b18003d2e88b28b7_dep.map b/doxygen/dir_323acea4eb551240b18003d2e88b28b7_dep.map new file mode 100644 index 0000000000..8b476ba17a --- /dev/null +++ b/doxygen/dir_323acea4eb551240b18003d2e88b28b7_dep.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/dir_323acea4eb551240b18003d2e88b28b7_dep.md5 b/doxygen/dir_323acea4eb551240b18003d2e88b28b7_dep.md5 new file mode 100644 index 0000000000..75d551edb1 --- /dev/null +++ b/doxygen/dir_323acea4eb551240b18003d2e88b28b7_dep.md5 @@ -0,0 +1 @@ +50763f347614f3c0d87ff0069e0d3ad5 \ No newline at end of file diff --git a/doxygen/dir_323acea4eb551240b18003d2e88b28b7_dep.png b/doxygen/dir_323acea4eb551240b18003d2e88b28b7_dep.png new file mode 100644 index 0000000000000000000000000000000000000000..24ac51fecf641df1f119aec6ac5ba893c60c79d6 GIT binary patch literal 1817 zcmV+!2j=*RP)-%D4qK#s_vE4*$Mcxhv$Tg9I8Z|o{wHB7M8Z^v@?rk_+&LnRp|rQR z`+F!}?JM7%R$N@1uH_uchdET7X>E=U3JRK}|6DD%$QYYs> z`>f|!Q=_wY!vIYmNe_x_OWxmrBU;X(RG5<|$B~+r&eKml!TIy&X>4?|&R*>AVcnFO zNy)7?o2^yLIg|<$;MHxr=n6S{|vX_SL0yB`V59!n8!6T+3%+zWBm=UtLO9GBUIH=~K`89>Cs!grq9ESjEo{9Gt1YP^|=>c_{>(#vIqdHt=*p0unZlE9!~E^m%~-Nh zJ&rXsHDZbgqq(^W=)KH#c6RX0&!1%Goe4~i8AsuYCA73O1F*m152Pf|=xMwDc{`ED zP#VA7zj^$m7}uf=gc{C2@VdXq5c#l#m}&1>oyvkXRw!UVBg+12K9cG-k)hS8dc8;3?U&T&rZQ!y1_R$u7R%WnGY7N zV(*);bLGkvst-H3aNz>?-nY2VwoOfq0DLnsj!0uDk;YI=5n;Go7kidvizSyTMbMTVDP(W5z^yl&bRc3&_te!0mRkxBLwjEy&~JIwzr_qXy+(2ZC;wS%AR6 zKvonMv31KP_E)^!?-C3D{R<-b3kvx04_DJre~PZIOPqNBI4g^mbNTXR08-O3a9woq z=AJULzg$wYEjeub)h~KxC4l4IcPL#~g7b6(SFc{h?Y_wsbS;=18Zhqxe;^PxozH~7OQ)2kp(`$IJXe9=N0RV%+Kw5eRh7beOr{4*H zC1)Nk*F`Khgqe|<#qGBnS+;aBapv)C-n5a|ez%*ju+f8eqXR(K%Pc_Ll&Q3T-qq)8 z|No)E=+WWWOE-9Zv$F5410Fx;&Cl<3{*fa`^4Q~RdF=7Ew>WD5(EZFDE@XeELS%oY z@F4X}g~-fQh=i#S2~#0Hf6hEoQ_Yc@1-`!Qupl#2CkCRP>9d(R9KI{tmuZR9Z>rtQ zq~zAzoH?56nX=hdH~hTWR`zG=i~P=1h=i#S2~!~wra~l4osfE_LI$Fqsrf^Lv!Ay0 z`uFuocc(CZ!o+_2oOu5jpSJb?d_3Iy-zrUE1_T5g?dWh(f2!8wcwOzsFL~R}T~boA zCLkanqrcaOYya!luebEqM+hN=5JCtcgb+dqA%qY@h+*hIUlw{O+g0(600000NkvXX Hu0mjfag>#E literal 0 HcmV?d00001 diff --git a/doxygen/dir_3e0780f9fd691ce6aa718969242efd7f.html b/doxygen/dir_3e0780f9fd691ce6aa718969242efd7f.html new file mode 100644 index 0000000000..51ef300946 --- /dev/null +++ b/doxygen/dir_3e0780f9fd691ce6aa718969242efd7f.html @@ -0,0 +1,101 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/vendor Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
vendor Directory Reference
+
+
+
+Directory dependency graph for vendor:
+
+
/opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/vendor
+ + + + + +
+ + + + +

+Directories

directory  source_location
 
+
+ + + + diff --git a/doxygen/dir_3e0780f9fd691ce6aa718969242efd7f_dep.map b/doxygen/dir_3e0780f9fd691ce6aa718969242efd7f_dep.map new file mode 100644 index 0000000000..be2c8c6913 --- /dev/null +++ b/doxygen/dir_3e0780f9fd691ce6aa718969242efd7f_dep.map @@ -0,0 +1,5 @@ + + + + + diff --git a/doxygen/dir_3e0780f9fd691ce6aa718969242efd7f_dep.md5 b/doxygen/dir_3e0780f9fd691ce6aa718969242efd7f_dep.md5 new file mode 100644 index 0000000000..7684441e9f --- /dev/null +++ b/doxygen/dir_3e0780f9fd691ce6aa718969242efd7f_dep.md5 @@ -0,0 +1 @@ +c3c586f85eda8097b6c88278176d8c36 \ No newline at end of file diff --git a/doxygen/dir_3e0780f9fd691ce6aa718969242efd7f_dep.png b/doxygen/dir_3e0780f9fd691ce6aa718969242efd7f_dep.png new file mode 100644 index 0000000000000000000000000000000000000000..34670d25adae2396207998a21e320c3c1bdf1cc4 GIT binary patch literal 3943 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 A&Hw-a literal 0 HcmV?d00001 diff --git a/doxygen/dir_4a11d3f5fb7a8fdc61e1e1f87277b621.html b/doxygen/dir_4a11d3f5fb7a8fdc61e1e1f87277b621.html new file mode 100644 index 0000000000..860061dc13 --- /dev/null +++ b/doxygen/dir_4a11d3f5fb7a8fdc61e1e1f87277b621.html @@ -0,0 +1,104 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/util Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
util Directory Reference
+
+
+
+Directory dependency graph for util:
+
+
/opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/util
+ + + + +
+ + + + + + + + +

+Files

file  coo_matrix.hpp [code]
 
file  generate_random.hpp [code]
 
file  matrix_io.hpp [code]
 
+
+ + + + diff --git a/doxygen/dir_4a11d3f5fb7a8fdc61e1e1f87277b621_dep.map b/doxygen/dir_4a11d3f5fb7a8fdc61e1e1f87277b621_dep.map new file mode 100644 index 0000000000..b88160060c --- /dev/null +++ b/doxygen/dir_4a11d3f5fb7a8fdc61e1e1f87277b621_dep.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/dir_4a11d3f5fb7a8fdc61e1e1f87277b621_dep.md5 b/doxygen/dir_4a11d3f5fb7a8fdc61e1e1f87277b621_dep.md5 new file mode 100644 index 0000000000..f27c2c88df --- /dev/null +++ b/doxygen/dir_4a11d3f5fb7a8fdc61e1e1f87277b621_dep.md5 @@ -0,0 +1 @@ +f5a25e92d2d6228fe7b4589161536f08 \ No newline at end of file diff --git a/doxygen/dir_4a11d3f5fb7a8fdc61e1e1f87277b621_dep.png b/doxygen/dir_4a11d3f5fb7a8fdc61e1e1f87277b621_dep.png new file mode 100644 index 0000000000000000000000000000000000000000..a0e16e0eaa8be7a5b28fdcd3b4ea78cc25e03701 GIT binary patch literal 1372 zcmYk6dpOez7{`BNthpCi49RiwIF7YrBWcGaJ8o;S^%?BzcE}mF23@y>e1Ml*yj1F2MHZy4AwH3;-Z)cNZt0xEph0NnSdqU@D6X2t0v( zw6iMpIZaFXNjDZ#)*M)z9<3H$M)qbyE*9kBQe1u?cYkY~cg%W_W7^|hrga-JjIn;s zx}ULneCb8`Qltjg8g|Uq&d^%xRm!_4>oFtQ+>c_THgO2OXxX7!`KIN|R)Kfxz8uk31IL-O5?MlYgAR$0t}OXh%34pPsN7^~b$rIN=u z%zgsU&fY=7`T~1$?z+tMAWQkffoAlV<+NeNJmYnkxZKR-TZ>(wzj=KFNx{fu(!`!@ z$g;LUJ-GYD0Ijui-mtK+By}VmW&SjTHB^L&Gojnn2G8LWv^RvoK)T{)rQM=Yo}oi( zyTsc+Qgc#vEvz5ebBt?J91n5%6l< zfvVNAkE|x(EsMP$`N1Ru4i-&GazCof)(j`Wi%&Y~)v>{nI74ov=6@neoXOi+zYdqvzI+%+{Qr zmNj$M*S0%O-%Q>inl^`EF^~qv>cb$=sj#VAT&{tcK@RPe#L>9}?=L-0+1ha3EEP#d z8z#MKn62Z)E|F-GSKtd(Qw9a06Y6kJ!D)S$9w2`)J-)spet7TD$|^BxgmBLz>7q6x zpv{ENyVWRvFsEr-Av(A@I`{nUunY!3(fLAML#V=xG%_vVdX28)rmfg5`1O?P%D+bW z&n{mzZ9b7XGM&g2Rz)BB^hb{Y?Xc)&r3Fci&5HX0;r^cCvvZ;;=FbUkZ+E1R?!jvT zc0=1#{+pFPi!8*TIIHTtpP8uN)VM0}=B&ccVN;dCQydt&jGFWtgv^=OykHW(pb5T$ z;>GmSmXxGnA9Z{b!X+x(@E+yGH_xz0luZ_!KMKDs9It-bD7iw2ibDq?^U*qx8%YfDr;HV(CQ}yjmTquiw?1ZE=PAJ!K3Q z@NiBchE;8}5A5uDz2@Y5*GG$yB@t-(nz~ZGuCtop0jZ=kjy72mgH1eS|4qhdg%~XG zyjWb!7M?gDiEgC5>s>ggx{xD;6Je~7bp`^3dQ! + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dr Directory Reference
+
+
+
+Directory dependency graph for dr:
+
+
/opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr
+ + + + + + + + + +
+ + + + + + + + + + + + +

+Directories

directory  concepts
 
directory  detail
 
directory  mhp
 
directory  shp
 
directory  views
 
+ + + + + +

+Files

file  mhp.hpp [code]
 
file  shp.hpp [code]
 
+
+ + + + diff --git a/doxygen/dir_4c0da47f5488ee935cb4372f760579e2_dep.map b/doxygen/dir_4c0da47f5488ee935cb4372f760579e2_dep.map new file mode 100644 index 0000000000..d8d95960a8 --- /dev/null +++ b/doxygen/dir_4c0da47f5488ee935cb4372f760579e2_dep.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/doxygen/dir_4c0da47f5488ee935cb4372f760579e2_dep.md5 b/doxygen/dir_4c0da47f5488ee935cb4372f760579e2_dep.md5 new file mode 100644 index 0000000000..080116374f --- /dev/null +++ b/doxygen/dir_4c0da47f5488ee935cb4372f760579e2_dep.md5 @@ -0,0 +1 @@ +97363db8db09850c8929f13b18a6173a \ No newline at end of file diff --git a/doxygen/dir_4c0da47f5488ee935cb4372f760579e2_dep.png b/doxygen/dir_4c0da47f5488ee935cb4372f760579e2_dep.png new file mode 100644 index 0000000000000000000000000000000000000000..134592b1c4feb49fe88c59a17ebc252b64aa403e GIT binary patch literal 5000 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 nPko%3SS + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
mhp Directory Reference
+
+
+
+Directory dependency graph for mhp:
+
+
/opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp
+ + + + + + + +
+ + + + + + + + +

+Directories

directory  algorithms
 
directory  containers
 
directory  views
 
+ + + + + + + + + +

+Files

file  alignment.hpp [code]
 
file  global.hpp [code]
 
file  halo.hpp [code]
 
file  sycl_support.hpp [code]
 
+
+ + + + diff --git a/doxygen/dir_5915a580df0ec2fa6a1c1b2debb4bdbd_dep.map b/doxygen/dir_5915a580df0ec2fa6a1c1b2debb4bdbd_dep.map new file mode 100644 index 0000000000..994b9b0658 --- /dev/null +++ b/doxygen/dir_5915a580df0ec2fa6a1c1b2debb4bdbd_dep.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/doxygen/dir_5915a580df0ec2fa6a1c1b2debb4bdbd_dep.md5 b/doxygen/dir_5915a580df0ec2fa6a1c1b2debb4bdbd_dep.md5 new file mode 100644 index 0000000000..aad0c35209 --- /dev/null +++ b/doxygen/dir_5915a580df0ec2fa6a1c1b2debb4bdbd_dep.md5 @@ -0,0 +1 @@ +c32028386c56738e423320a8624f01dd \ No newline at end of file diff --git a/doxygen/dir_5915a580df0ec2fa6a1c1b2debb4bdbd_dep.png b/doxygen/dir_5915a580df0ec2fa6a1c1b2debb4bdbd_dep.png new file mode 100644 index 0000000000000000000000000000000000000000..110772fc620aec1f8977f40799203242db5d1378 GIT binary patch literal 4323 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 + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/containers Directory Reference + + + + + + + + + + +
+
containers Directory Reference
+
+
+
+Directory dependency graph for containers:
+
+
/opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/containers
+ + + + +
+ + + + + + + + + + + + +

+Files

file  distributed_mdarray.hpp [code]
 
file  distributed_vector.hpp [code]
 
file  distribution.hpp [code]
 
file  segment.hpp [code]
 
file  subrange.hpp [code]
 
+
+ + + + diff --git a/doxygen/dir_6619e339e135944080d183968eaad8ad_dep.map b/doxygen/dir_6619e339e135944080d183968eaad8ad_dep.map new file mode 100644 index 0000000000..6f5a7eff3a --- /dev/null +++ b/doxygen/dir_6619e339e135944080d183968eaad8ad_dep.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/dir_6619e339e135944080d183968eaad8ad_dep.md5 b/doxygen/dir_6619e339e135944080d183968eaad8ad_dep.md5 new file mode 100644 index 0000000000..13717687cb --- /dev/null +++ b/doxygen/dir_6619e339e135944080d183968eaad8ad_dep.md5 @@ -0,0 +1 @@ +9897bd1fec298e0175ec05f1b40da732 \ No newline at end of file diff --git a/doxygen/dir_6619e339e135944080d183968eaad8ad_dep.png b/doxygen/dir_6619e339e135944080d183968eaad8ad_dep.png new file mode 100644 index 0000000000000000000000000000000000000000..fffd1fdf7f60e3683f3bc138f9f88524cc8fb117 GIT binary patch literal 2209 zcmZXW3p5jaAIB$hOSw$tGM6F5`;aBKF^fr&k^5yr44KJo$jto`HN-S>si@I26k{4q zQFvuYav2d`#M4tqGq-rw^S+()p7%Zf^ZWhI@BGjIoZmVB@Bj1tXFDLR4~xo)0sw%+ z7tSLbc{QIG!NP*PteAD3#VdkWY^@Q1{h#YTv$_xf5O%$QIO`l&_GKywmCIG^S#x{z zsMDe5duedA4b)Dpndm{PGX6$IBON=Byov~C5k6V3&#aCc``=Q1F(w7E1&R0Ux|d<; z!a)~EB=kZ@Z(iK_a`QlL%(d2QJuY0r&mBge5^N)!)#BHun-2P|4%vv zK4z0M62j4M_GF^QU|L05PGcJ+5=rK<;bmqcA+zKvw-dNAg$ZJLdV*tZ;ceg-Xt!{Iz}R#q8evY?bK3_f0PYkj$c z-*b@RyJxDRx;;BPQ9}$Uf=6HO+D0TgWz(GzxaI~7$r$ff^ ze+meRFEn2Js0d>-ZK>+21Z^#jh3EkJRAj(EfCY1ppX{&Atz_+q)`b@4Thh$v=nU)J=C!e6wG;I-+*M zesSxgpdSWfonRs5QdH#ZoIqv63=&NV7O#TYjYpj*$R2iAh8bJw=eR_Vga7R4xU}9t zw2KPGetAlxjm6he7VBM!RsPWa9(sQ%e|QV!+u(7nT_~F2JrB1T2E2IXm>sKJG=QUN#`A>## z(gulBsYAVzyq-@g=X`Ryij?w$8B?5*Y9BDC#cXhm6Px=JG~U$&5w zl0I}HS#dad&o6YkX?h%645Ep>?bFT7-t)e681M zciFT+iKUgBEm^=}3UYCvd=lX7;#yF=D(DSu8ye{;&jw08OZ?GFG2jXIz17J))Z{5J zEZ0e6z1UPwGHaABwxlHZvPRM}A{cwqUmkkk2f>3L-7xAHV{V?YEXO~y@x_Z(aV8D$ zLMM&^)eCv;pyQ)6^1IJ7c-M-G(9Cp$0yH+DF_2@!I~akBQHE41ZB-);`b#HoTr_|K zrFw2BLGtqG=-cF^T%H6$W|1<(C7Fc%OtXJ8La0p7jHq5T7=Ku=}yCc>tB-^-uYV3!C zVK8qQAQXj>9IW#)fW%HGV1#V2Y_D-K9Y z?`DNf?E+-XVI>tEOh9lTme|ZW-4r?^Rl3+O68}KstnT-O)Y!qN(g)8!azrl%1PzUk zrP|o)`k~Po)nu+Ny@*U6s`WViVaiND?>Zj$E_4SB-ySvCW#q+vnV(v))zs2@SEiMQ z=Zvz0Ed8BPb%6VAE4n+nzcC+*ybZ;J?%bIO z`ub+2-GBF)Ug$Up>ArcB2bY<&5p6cZl6$fi92WM~-P1F&ehGq|q+{c(4}D>vBqeVn z5C}&%x1J4_SfyZlr(s6d_{45!;y=XzIXhs&3{YfFZg_uo+OR^`DIOpKy7SXVG7NaC#R^a=TBa!=)@RtzfR!;`XAWuccpHvYqrOw>~L3{ z+_=eY;yVzux~y{Y2k{>gu3eU_dZJDbb% zu{2Oh>vqiP*Qe$*#5fi5YVb>GRoQYN?2QNMDZSh9K;+&r^; + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
detail Directory Reference
+
+
+
+Directory dependency graph for detail:
+
+
/opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

file  communicator.hpp [code]
 
file  enumerate.hpp [code]
 
file  format_shim.hpp [code]
 
file  index.hpp [code]
 
file  iterator_adaptor.hpp [code]
 
file  logger.hpp [code]
 
file  mdspan_shim.hpp [code]
 
file  mdspan_utils.hpp [code]
 
file  memory.hpp [code]
 
file  normal_distributed_iterator.hpp [code]
 
file  onedpl_direct_iterator.hpp [code]
 
file  owning_view.hpp [code]
 
file  ranges.hpp [code]
 
file  ranges_shim.hpp [code]
 
file  ranges_utils.hpp [code]
 
file  remote_subrange.hpp [code]
 
file  segments_tools.hpp [code]
 
file  sycl_utils.hpp [code]
 
file  tuple_utils.hpp [code]
 
file  utils.hpp [code]
 
file  view_detectors.hpp [code]
 
+
+ + + + diff --git a/doxygen/dir_73601acfd5a2822dd473820b789b56e4_dep.map b/doxygen/dir_73601acfd5a2822dd473820b789b56e4_dep.map new file mode 100644 index 0000000000..4bd1d26b75 --- /dev/null +++ b/doxygen/dir_73601acfd5a2822dd473820b789b56e4_dep.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/dir_73601acfd5a2822dd473820b789b56e4_dep.md5 b/doxygen/dir_73601acfd5a2822dd473820b789b56e4_dep.md5 new file mode 100644 index 0000000000..18da7fe4ec --- /dev/null +++ b/doxygen/dir_73601acfd5a2822dd473820b789b56e4_dep.md5 @@ -0,0 +1 @@ +2ceba209da8dc3e514d57db855e9b6d3 \ No newline at end of file diff --git a/doxygen/dir_73601acfd5a2822dd473820b789b56e4_dep.png b/doxygen/dir_73601acfd5a2822dd473820b789b56e4_dep.png new file mode 100644 index 0000000000000000000000000000000000000000..59939980ae6ea54199e823af178ee33c77f38641 GIT binary patch literal 1480 zcmZWpXH=616#Wtcgh&X>mStp#fF2T-$OsU208vU%1Oy^epcaE*WUnGi%2LBf4okui zuvP?#tOE#@B?^cT2-Bd9ur$aBjkQ18)AP=|_s{$D?!E7&UU0C6!(?Cp0KjoJ7C-Sg zgx3L30UoOP-fZEKz*ReI3*hiu6}QlG0f0XmXMx3&idLs$?eoIq1lKuJz9RO?3``(Q z&|knR^lp~mpqte--OqOxI3A>fa+KVPJInq3iVgqJSg(T5`!I}-N{E0Gd zQW;mhjkl8Q?xapPz7LiKKW}xQ1>M_|jUW#BoC3#9t~xx@C-t@%=pJPH7RW4Pklssd zu|^uF!GqbX)-x|?nprBQnl?8p$m)5-k(A%)my#)0k< z8fLeKe@>YQNd;V_?XQu1 zhax2>B^6yu@6&88cGx%!jixt`w2daNw=aMH7DW=6ibS#F#V>9%@Zvm_M&c`><( zAqEteeH*zae`r0v;axXzS3!0jzn zYs-FmQ`%#in>;jGVyDU?o8%A7IaO7pZE97lY9i3rK5C7f({gqke1>UGB04z6ohkg8 zZvb?%zUp_6FX?d$A==>4@h$2TEot4+z5E6}X$GVhjEFyY;Kvt5v=k3Sj53@lAMPLb z8kk%uLw-&6;}e#Qku7FWZ_&2YJz`gno^}_7r{6xqTR3FnDgr1*Gt-!{hKaRqX#`=o z*{fGRfGN-3j1nw*0Q$0Y#|59)cBFA{O#8BthuJ}RdIN*X$zj1}h|gb#ypSdk2&%F5 z!ndF2@2u@P?JT^Nac_E^S~@50!(vol+VedI%a`t$<#V4CsJg{p{;Dd1^DLX ze=Kckf-tE8+ly5@MczP}^<2(Dou}x|Ma{m(s|-{aXs!y#8I;RE!vJEeWJ~ z{qe{f(o1Y>M=a8~rp|J6^C_Esol5H?)w<)&522JV zA{iON^ZoTS!oWaM-y#_3F9oZXO~^@?BZRgEp?TlE_~jDyBbSK{RlH$ZVWp=tOnRWOZVG{)r9(qdj(DylvmVx598ZQ z4&v3zB1`^v7GI-~svK + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/views Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
views Directory Reference
+
+
+
+Directory dependency graph for views:
+
+
/opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/views
+ + + + +
+ + + + + + + + + + + + + + + + +

+Files

file  enumerate.hpp [code]
 
file  mdspan_view.hpp [code]
 
file  segmented.hpp [code]
 
file  sliding.hpp [code]
 
file  submdspan_view.hpp [code]
 
file  views.hpp [code]
 
file  zip.hpp [code]
 
+
+ + + + diff --git a/doxygen/dir_773570e071a7f6eb5f21c8991c43558c_dep.map b/doxygen/dir_773570e071a7f6eb5f21c8991c43558c_dep.map new file mode 100644 index 0000000000..267bb6f37d --- /dev/null +++ b/doxygen/dir_773570e071a7f6eb5f21c8991c43558c_dep.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/dir_773570e071a7f6eb5f21c8991c43558c_dep.md5 b/doxygen/dir_773570e071a7f6eb5f21c8991c43558c_dep.md5 new file mode 100644 index 0000000000..bf6185ba0d --- /dev/null +++ b/doxygen/dir_773570e071a7f6eb5f21c8991c43558c_dep.md5 @@ -0,0 +1 @@ +37ca8860903b90aa32fb67bb3e7b3491 \ No newline at end of file diff --git a/doxygen/dir_773570e071a7f6eb5f21c8991c43558c_dep.png b/doxygen/dir_773570e071a7f6eb5f21c8991c43558c_dep.png new file mode 100644 index 0000000000000000000000000000000000000000..bb4924d240fb38c8677c0cef63702774c1572b49 GIT binary patch literal 1996 zcmV;-2Q&DIP)B8II@_O@mzOU6yM~)Rovl{uq%9w8vp$*j;||;WwPVbdryCt z-M%_^yMncAWEzdef{~%4XLS~)cu@9->DpD7B6^;LsUi}liu8&w6XT-UwR3wjti5&U-Ge_T=-JC8=fa0P;R{rL9oUN)OGBS#pGg7Ips-*1jF-pwk zeDqN<`wKs`>9ceDR*a@!bGE9EIdigjK6^e^>;EQ|%^Nqc>0PyudiR*&l-(8 zTCE2j9-cPaT3fH%^zri>*!Hv5-5r4It*vd_f`fwbILHg!};@d zHm~dIYVr5~fy2(9sGssVaM+$>*!6B!O*U`bKvME#!o$b2dDD9|H8zr(Hr-+8508j! zNKT4tu;&;O=C_`i_be;&jhsGpija^Hb`%o$4@#;g;x2ZDX*3!O?zjF>IF5`=6>(Sz>~MLRqfVtLetrWPH9E{8 z=WZ@szFQKwRrnAmt;`NcAaoJ*!z6><0{4MvAOO4>B%{s7p6_`WmIclFHt{QQSr zd(y{`1nvyUxK1I^~e;q6dUHB*RMq%A8oVk{P{Wt`gn5T!g=7{X||>18n6HARl>)P zV)(EjWX_&RefPxC2g_B?Yqg(H{E9#kw4RcmTCY6;HoH})~ZQJ&3TZoNIVA!yrcKf`L{VeBdswpf! zz{!7B5*j*+xmg)lEEeJu^wgfKp`oE3fKqb_AtOdoYA$Je9UGT`o0}Uo)m7x?yw1Ay zo2aR6Brkszdv@>a*82^Qh-@&KOm?l$RBV_!osOwbrm=17`v6$2R(5RrfUKWB({B5w zrbdd33VCPsT7rUt@$wpgY57WOYil`s_Fw39I>v>Mr_@|RbMsXyD=JvLG_rU;6g#ht~ivH16(1J|0D0{wl}ZxE&N-&wMItF1vSa=jP3ulpQj2<;oSN z{iyxb%-=0z|6y1NzB(`l*gl@nKH#d*&#D6E!Q}9 z^azRiWB`JKg4wX~FBo%{k*ts5rG?p?K7F#?^D2p=-_0f^Pe!A0=fL0pMsd+TX8t4{ zcXw^OZ36>`;p*y2MRh$sK0fWXNz^Cv+=6-NynWCor7&plV1^9wXWbv)#oOD*rc`Ax zq+&3nVzF4*U9gk1sZ%&pS<d(JlAd6%;$o0=T-mGCMPi_3PHKzi?lNQ!GG0Kp=*x zsl52}1=Lhm(c1cNPJD5kr?WD+apML6(Gz26zS_*L9otC!c1lguC$ahuzi%6r0Oo_A zkiR^a+H*DBx^)YSMo>^N6CR7~wC&nIy+>&1C^BYE zXVi#c{PMLWJeBn{8jS`3jYh-7Nik^LHH;ZE765%x3eC+|(ccwjOl&-lJfb6g)^tLG zhO&0eYBp}(il=A)?z_=0py+89AY{ZyzW%1Q-F^T6M}z+Ty~xX7)#;m+J$s96UQc<# zaL@7k_3OvWiobK7sb{K)j7$}gFjYjtR1t?iXC5vu z<8b*@N1wJ=kddhnPW64Wz2UR6?HL_5=7HLE#rMt1Vq3-N;l;MHK2urbcczL+m?|P+ zs)&TCA`+%TNIg?Ux}u(G_a6-|U2MAN-`7V>h+=3b|E=f57e~3+)baCiZ}0!G> + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/vendor/source_location Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
source_location Directory Reference
+
+
+
+Directory dependency graph for source_location:
+
+
/opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/vendor/source_location
+ + + + +
+ + + + +

+Files

file  source_location.hpp [code]
 
+
+ + + + diff --git a/doxygen/dir_a385eca21dc3d8045dcdc4e17916b108_dep.map b/doxygen/dir_a385eca21dc3d8045dcdc4e17916b108_dep.map new file mode 100644 index 0000000000..771f343e44 --- /dev/null +++ b/doxygen/dir_a385eca21dc3d8045dcdc4e17916b108_dep.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/dir_a385eca21dc3d8045dcdc4e17916b108_dep.md5 b/doxygen/dir_a385eca21dc3d8045dcdc4e17916b108_dep.md5 new file mode 100644 index 0000000000..a9cedfe195 --- /dev/null +++ b/doxygen/dir_a385eca21dc3d8045dcdc4e17916b108_dep.md5 @@ -0,0 +1 @@ +40c4bd592a0462b6364399762012246b \ No newline at end of file diff --git a/doxygen/dir_a385eca21dc3d8045dcdc4e17916b108_dep.png b/doxygen/dir_a385eca21dc3d8045dcdc4e17916b108_dep.png new file mode 100644 index 0000000000000000000000000000000000000000..d23d643d163ee42901d2dc135848515705ce27ba GIT binary patch literal 2538 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 lPm>M)Pb-umx}19~A{F* + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
shp Directory Reference
+
+
+
+Directory dependency graph for shp:
+
+
/opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp
+ + + + + + + + +
+ + + + + + + + + + +

+Directories

directory  algorithms
 
directory  containers
 
directory  util
 
directory  views
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

file  allocators.hpp [code]
 
file  detail.hpp [code]
 
file  device_ptr.hpp [code]
 
file  device_ref.hpp [code]
 
file  device_span.hpp [code]
 
file  device_vector.hpp [code]
 
file  distributed_span.hpp [code]
 
file  distributed_vector.hpp [code]
 
file  future.hpp [code]
 
file  init.hpp [code]
 
file  range.hpp [code]
 
file  range_adaptors.hpp [code]
 
file  span.hpp [code]
 
file  util.hpp [code]
 
file  vector.hpp [code]
 
file  zip_view.hpp [code]
 
+
+ + + + diff --git a/doxygen/dir_aa3ba46e7b5e341940d314e57af78bea_dep.map b/doxygen/dir_aa3ba46e7b5e341940d314e57af78bea_dep.map new file mode 100644 index 0000000000..135115baef --- /dev/null +++ b/doxygen/dir_aa3ba46e7b5e341940d314e57af78bea_dep.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/doxygen/dir_aa3ba46e7b5e341940d314e57af78bea_dep.md5 b/doxygen/dir_aa3ba46e7b5e341940d314e57af78bea_dep.md5 new file mode 100644 index 0000000000..8fa83afa90 --- /dev/null +++ b/doxygen/dir_aa3ba46e7b5e341940d314e57af78bea_dep.md5 @@ -0,0 +1 @@ +5b02d042d83e966426a4e66d2fd1a658 \ No newline at end of file diff --git a/doxygen/dir_aa3ba46e7b5e341940d314e57af78bea_dep.png b/doxygen/dir_aa3ba46e7b5e341940d314e57af78bea_dep.png new file mode 100644 index 0000000000000000000000000000000000000000..61e4f8e222bda219a1584d81c3708552e3b3c904 GIT binary patch literal 4588 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 literal 0 HcmV?d00001 diff --git a/doxygen/dir_ad1fcb57fe88fc977cd33acae3e499c7.html b/doxygen/dir_ad1fcb57fe88fc977cd33acae3e499c7.html new file mode 100644 index 0000000000..7ce6ebd541 --- /dev/null +++ b/doxygen/dir_ad1fcb57fe88fc977cd33acae3e499c7.html @@ -0,0 +1,126 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/algorithms Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
algorithms Directory Reference
+
+
+
+Directory dependency graph for algorithms:
+
+
/opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/algorithms
+ + + + + +
+ + + + +

+Directories

directory  matrix
 
+ + + + + + + + + + + + + + + + + + + + + + + +

+Files

file  algorithms.hpp [code]
 
file  copy.hpp [code]
 
file  exclusive_scan.hpp [code]
 
file  execution_policy.hpp [code]
 
file  fill.hpp [code]
 
file  for_each.hpp [code]
 
file  inclusive_scan.hpp [code]
 
file  iota.hpp [code]
 
file  reduce.hpp [code]
 
file  sort.hpp [code]
 
file  transform.hpp [code]
 
+
+ + + + diff --git a/doxygen/dir_ad1fcb57fe88fc977cd33acae3e499c7_dep.map b/doxygen/dir_ad1fcb57fe88fc977cd33acae3e499c7_dep.map new file mode 100644 index 0000000000..0ecbba9f69 --- /dev/null +++ b/doxygen/dir_ad1fcb57fe88fc977cd33acae3e499c7_dep.map @@ -0,0 +1,5 @@ + + + + + diff --git a/doxygen/dir_ad1fcb57fe88fc977cd33acae3e499c7_dep.md5 b/doxygen/dir_ad1fcb57fe88fc977cd33acae3e499c7_dep.md5 new file mode 100644 index 0000000000..7b38741b30 --- /dev/null +++ b/doxygen/dir_ad1fcb57fe88fc977cd33acae3e499c7_dep.md5 @@ -0,0 +1 @@ +b0a71166f3946e94b63839284869285d \ No newline at end of file diff --git a/doxygen/dir_ad1fcb57fe88fc977cd33acae3e499c7_dep.png b/doxygen/dir_ad1fcb57fe88fc977cd33acae3e499c7_dep.png new file mode 100644 index 0000000000000000000000000000000000000000..81858b9e28e1273b9ef9174c1902f50b1e1a88e4 GIT binary patch literal 3461 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 literal 0 HcmV?d00001 diff --git a/doxygen/dir_b55ceb0166778f6f645d8761656b8ad8.html b/doxygen/dir_b55ceb0166778f6f645d8761656b8ad8.html new file mode 100644 index 0000000000..68d0d8e2cb --- /dev/null +++ b/doxygen/dir_b55ceb0166778f6f645d8761656b8ad8.html @@ -0,0 +1,114 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/views Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
views Directory Reference
+
+
+
+Directory dependency graph for views:
+
+
/opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/views
+ + + + +
+ + + + + + + + + + + + + + + + + + +

+Files

file  csr_matrix_view.hpp [code]
 
file  dense_column_view.hpp [code]
 
file  dense_matrix_iterator.hpp [code]
 
file  dense_matrix_view.hpp [code]
 
file  dense_row_view.hpp [code]
 
file  enumerate.hpp [code]
 
file  standard_views.hpp [code]
 
file  views.hpp [code]
 
+
+ + + + diff --git a/doxygen/dir_b55ceb0166778f6f645d8761656b8ad8_dep.map b/doxygen/dir_b55ceb0166778f6f645d8761656b8ad8_dep.map new file mode 100644 index 0000000000..052cd34a6f --- /dev/null +++ b/doxygen/dir_b55ceb0166778f6f645d8761656b8ad8_dep.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/dir_b55ceb0166778f6f645d8761656b8ad8_dep.md5 b/doxygen/dir_b55ceb0166778f6f645d8761656b8ad8_dep.md5 new file mode 100644 index 0000000000..637af9e0cb --- /dev/null +++ b/doxygen/dir_b55ceb0166778f6f645d8761656b8ad8_dep.md5 @@ -0,0 +1 @@ +b0da0213eec83dd6e7af190e1cfa6d2c \ No newline at end of file diff --git a/doxygen/dir_b55ceb0166778f6f645d8761656b8ad8_dep.png b/doxygen/dir_b55ceb0166778f6f645d8761656b8ad8_dep.png new file mode 100644 index 0000000000000000000000000000000000000000..416919fb5c72353d50144b15549ea4a493bc3fe0 GIT binary patch literal 1962 zcmV;b2UYlqP)dk!Fk5JCtcgb+dqA%qY@2qA>3I9XEJXf&=e z8jbJtRK{R16!vsJFE1}c>RX44C6zlmI%e$nu%P4F)E_^v%-@O+^w`FgZ`wP0IzMpg zJMHt-x>^)ii$a@VCoJtrq;h9zyNGMJ92x#^CT+GJf1goAgiqmU$&t=;@iCF)ugN7vKNEkSQ6$7o=j5lK z*!nG4okIq*w&py!Id8CO^EPVhn#s#w$NqhL%*yQ9wG)H!cbq$4&-2e`@$>A(baZ?_ ziEQ7xh1I_`aOP|c&&|nTZpL%8wzk^(tyq;q2GeEmUpJvng_19d!e5v#NqQy&yj)}wFeK^ZkyvA5>Zw?h7wDnuDDvLfd z?Zw|efGu19f+1%$SFW@&Y0?kLUb>9Qlc#i+@$wqk`L~;^D*!j!+dGd11dKClGaz6b zEiKLc-1GkBkRua7uTPUA62w{9UJaTZ}=PqKa6`?NGS zlaiX&kG<|$*wpZ*#Dth8OWJVAU`9p9Qd#*G8R=C*%T2C}>G0A5~R{n+dNHy~4B@iCDsdu0WgbLZK+D_uwmOmrc^R1t^#%(PV5 z@ssxMLcfrasUi|gg^+xviby_Fn2~&@ipa=R5ecS>NHA4If~g`BOogyUKGUMC2|Roi zl;|zVnusne3Z}teD16xZLt#5IGF8N8DXv)IPZ~@J{Q;@79qR$GzIfD`=(~Joetv$R7rod#n4X?qL`BEi z`m#3n_FIouzDqu{&%u;wRz)PAsUk8mRm7o#`OK_1c6_kS-rZ0PhkkDM@R4Ko?t-E? z^vD$E6dTMxZ{CP5Hqz`^Lqk0yJ%)1eVgqphG<)O5b>8^R>x4}XVVvI>=FOc$W8*~t zJ}UYv5#ir2#$Een9-dk^>g($O`24d|1o)2T?%lh~0Vpdi zA#i*UWu+yZucKq)aB*?z)t(8~7B)4!$!IiMv_4a@!PIKCBtM%jBd?9NA`}XeQ_U+r0A1meR)vL_@QTMBxzgyNmDKrpI zts9gx=NzxZ?g%Bv(RWCn@#V%%ZL#kW~nN@J_Wr#1(V6dzQR4ECMR*Wx(+wD z$NJ^HT7zPzSpa8eXXeh!V)LdAd{lJsfm1AikB=|<`i;JrnFf(bFtI;P@b}eAC|Tx&Qys zVAwEs^77a9_+@4Pfnu}QNzdr-Yk$a)A-uYL6|XK|)yH1jhvG-(Kq2chRYcZj3Nw<= zR1q1ODk8yD5ecS>*!({8L`69#Dw1t|*#SXDrb0N>ezODNS=sJP2%Xrga@N>yRua+;P_VC|( zzWm}8ms%cte>~9Z_mxG#baHa~JK&^l8 w-o3^L)e%AnA%qY@2qA + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/algorithms/matrix Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
matrix Directory Reference
+
+
+
+Directory dependency graph for matrix:
+
+
/opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/algorithms/matrix
+ + + + +
+ + + + + + + + + + + + +

+Files

file  gemm.hpp [code]
 
file  gemv.hpp [code]
 
file  local_gemm.hpp [code]
 
file  local_gemv.hpp [code]
 
file  matrix_algorithms.hpp [code]
 
+
+ + + + diff --git a/doxygen/dir_c8b8cfb288a36c9e6df9dd28eaffc0ac_dep.map b/doxygen/dir_c8b8cfb288a36c9e6df9dd28eaffc0ac_dep.map new file mode 100644 index 0000000000..51599067b2 --- /dev/null +++ b/doxygen/dir_c8b8cfb288a36c9e6df9dd28eaffc0ac_dep.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/dir_c8b8cfb288a36c9e6df9dd28eaffc0ac_dep.md5 b/doxygen/dir_c8b8cfb288a36c9e6df9dd28eaffc0ac_dep.md5 new file mode 100644 index 0000000000..fed619f62b --- /dev/null +++ b/doxygen/dir_c8b8cfb288a36c9e6df9dd28eaffc0ac_dep.md5 @@ -0,0 +1 @@ +3d05121cad2c7c44eda647003d2502fc \ No newline at end of file diff --git a/doxygen/dir_c8b8cfb288a36c9e6df9dd28eaffc0ac_dep.png b/doxygen/dir_c8b8cfb288a36c9e6df9dd28eaffc0ac_dep.png new file mode 100644 index 0000000000000000000000000000000000000000..9a70345818af3a9582e3f0ed4545cecac3b1316f GIT binary patch literal 2318 zcmV+p3Gw!cP)vCk6aq3#NC@yt6)}_`_izuzQbW{eVIxWgJl_eE2=qVb{5pw5`sjtu@ z2_fMn;r%}6a8B~>y}38zt18dP$cU%*?Qd^lVsb;>K3B!8qYVLoF*fq>kx$sf=*ex?Id}Gy%EypD zQ7~2I)c%+Dvf3InHvXjY@zl{O;O(L6#X#*fYk%(SDU?1e(dzNKY1Nt-9SXR>bowEk z=+4CG$&grzRKCem$KYmo#MlrVK6F6e!$9b$0Q~*aWBMM3&KX?5`Cuq7Dt!=Sz;pAi zV0PkM?tXY!AdY=)&hYeb!NLVeXlQ8Q+J}w` zzy}+ocq=LbE{^?h^2G60hxDX*vvK!M5f(2@fy7dTh_NAD+tShph?x`#S0@_`_xDEr z<-AspyKYSyq9Vt@*})nk1AI|<`xbWY_$#~y4}hDqEtV}^1f^2Rwb{F8Cw#pJ!O32N zsK_xWzI#V!`;|BHCkob)zsK@MmVf0N=H7n*`)J=mZo8lVFt+W(UEKYE5hGdLlz3KB z`iK?Y`8ONt=g$DJ2W3@E{zSoof`Zw&h)8z-`*K!%{~;R{9LmN;L~`xDyu6u>tt~tM zWj=c>Z+vYZK0|!jj$M0OjnB)=n>jf-vx}DsSXHf@tzDPSto!w2^$pLtau*j@cKNI8 z?1$<)HY*{K_3G7|CC-`0N-JvEt-^1ajjb)qK6sSLpD5VP+r`Y>+?<`eaGBM}8rYW? zzh;Zyc~|58rft0Rb`Cc+HHEjg4^mQ6apC;g*Vd^hFT+2-xq&TP{{m}kYq+_&<9+D{ zuDr6c0@tn;VC$c@!OqSej*d>)vNa1Ab1&dWnT)HKoScf`0V7~)YO2u~=cg{lP(Oc& zL>8ErG#~YKb&$zwx$=|+i{LZF7h-WQ%$S*gXU`h3ar0JKSy`d~fPn}N9gX6rciJF?~*Ve76 zt$|qF3lfQh+ve)#&fTuAu7a7F8C+akxo!R32XJMtI5|0YXsp)O{kYqro;?8oFBA%H zn?z#G-R{w&CqyC(SXhW#ZBr;-{D0i8ZrGQd1L=Ef5FQqYcNWdZy?ezPjpy9iQ)(Au z)ZsPYb&nq-`Rzok`omg$_n-px4bQQ0b0(UanqFJq!QKJSo;7mkYXJC9Wd(QJ(a{M_ zO--n(dcT7rx5BgbnN8M@4xVUcP(@rLq|> ze%>E^;x*tdF0M#lzX?fiC&JCy2J62l=d<-*a%^*J0+e_b`vEs3Q_ ztC-OY7Z?h-z)-*ih5~LxjBY)g=pO}KU?|`MqgBAAQt5GZzkeo%g=V0(`E@Rs zu0W6hH&%jJ5AR4W6;*j;+REvoE*FeURtrxLmsYvkmMmU?x1z_Rxw)CgJ)#|>_@?b2 zXV2i^p<@{6;epj@D-ahOg}5p4D7bzb4gZxRYT{UgjUI!T*f;>du}@C|0GgYdasU23 z%=>);T;1F;HGVqwXCFp+c^Q&ZQZaMZ>{k68J(7c*Lw|#x|1g-EnqtrH?Od6iojvyM zJBY;J&A^Z$z9=dxL~ibRTq(GzaVimgGWZz|XqHQ*rS{~JX-Qo!n9#6rEL^+<3A5sn zwsINv?azUYt*zG2k55Li9GcE%+Kcwr|6MoTIR? z5F=<*2$n2ej=6IZ@cj9+&Uh-Fg4Y}`S(%%-3m{IMKCeyJM(g^u0%T=w0?@GwAn3Pc zL?aY%fuVp446TO?49#$Xp@0hv1zceC_D$QA*a`aT+GxF657#EwD$Q_#;dO?44tkT% z?hIbb|G2;xUIQLIDHhR_V)^Wn{EAVmhZEhQbGX1zzy*c^E-+p0ikGg8@}(1vQNRU8 z>qEM%wg##`nyI_|N!`afYOmXW5vEnZO-xK~G&cT((uXB&)=_uPQTJOZYOmcnn-D?> oA%qY@2qA + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/containers Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
containers Directory Reference
+
+
+
+Directory dependency graph for containers:
+
+
/opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/containers
+ + + + + +
+ + + + +

+Directories

directory  sequential
 
+ + + + + + + + + + + + + +

+Files

file  detail.hpp [code]
 
file  distributed_dense_matrix.hpp [code]
 
file  duplicated_vector.hpp [code]
 
file  matrix_entry.hpp [code]
 
file  matrix_partition.hpp [code]
 
file  sparse_matrix.hpp [code]
 
+
+ + + + diff --git a/doxygen/dir_ce06eccc165702df51b9ab16680c58ae_dep.map b/doxygen/dir_ce06eccc165702df51b9ab16680c58ae_dep.map new file mode 100644 index 0000000000..aa2ec10c06 --- /dev/null +++ b/doxygen/dir_ce06eccc165702df51b9ab16680c58ae_dep.map @@ -0,0 +1,5 @@ + + + + + diff --git a/doxygen/dir_ce06eccc165702df51b9ab16680c58ae_dep.md5 b/doxygen/dir_ce06eccc165702df51b9ab16680c58ae_dep.md5 new file mode 100644 index 0000000000..f5def38c71 --- /dev/null +++ b/doxygen/dir_ce06eccc165702df51b9ab16680c58ae_dep.md5 @@ -0,0 +1 @@ +61e088508ea2d475793f3a5882aee911 \ No newline at end of file diff --git a/doxygen/dir_ce06eccc165702df51b9ab16680c58ae_dep.png b/doxygen/dir_ce06eccc165702df51b9ab16680c58ae_dep.png new file mode 100644 index 0000000000000000000000000000000000000000..4b7c4de63db0eedbfaf4a81fd423490a67684f76 GIT binary patch literal 3798 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 + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
include Directory Reference
+
+
+ + + + +

+Directories

directory  dr
 
+
+ + + + diff --git a/doxygen/dir_d7c528dc6ed0943eef8ba09c0b02746e.html b/doxygen/dir_d7c528dc6ed0943eef8ba09c0b02746e.html new file mode 100644 index 0000000000..7050fe83ca --- /dev/null +++ b/doxygen/dir_d7c528dc6ed0943eef8ba09c0b02746e.html @@ -0,0 +1,100 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/concepts Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
concepts Directory Reference
+
+
+
+Directory dependency graph for concepts:
+
+
/opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/concepts
+ + + + +
+ + + + +

+Files

file  concepts.hpp [code]
 
+
+ + + + diff --git a/doxygen/dir_d7c528dc6ed0943eef8ba09c0b02746e_dep.map b/doxygen/dir_d7c528dc6ed0943eef8ba09c0b02746e_dep.map new file mode 100644 index 0000000000..b18eb879cc --- /dev/null +++ b/doxygen/dir_d7c528dc6ed0943eef8ba09c0b02746e_dep.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/dir_d7c528dc6ed0943eef8ba09c0b02746e_dep.md5 b/doxygen/dir_d7c528dc6ed0943eef8ba09c0b02746e_dep.md5 new file mode 100644 index 0000000000..a111bc261c --- /dev/null +++ b/doxygen/dir_d7c528dc6ed0943eef8ba09c0b02746e_dep.md5 @@ -0,0 +1 @@ +686b09cdacdba75d2971014aeb1bef38 \ No newline at end of file diff --git a/doxygen/dir_d7c528dc6ed0943eef8ba09c0b02746e_dep.png b/doxygen/dir_d7c528dc6ed0943eef8ba09c0b02746e_dep.png new file mode 100644 index 0000000000000000000000000000000000000000..44f72ecd136abf0acc21e3299fcb43449753960e GIT binary patch literal 2047 zcmY*aeK-^P7hhc>LNUzyTggjT$y*q^=B>3zCYNwoE+*u<3(YK)&85&)lhMZPGVkOi zHyY(F5fe9rOqeNmn~-^(JHOvwJ>Tbh&hwn}{ha4K=X=iQq!Nw||Nl^oIa|L?g_}!Ryu&?njKrBZ0>2uknDT6mQR; ztaC?-lr$8b5BDN7O$|yx6=fyf(oSGCT2C3mf3%VuHyo$``27X*>*l6CK#Qwz3r*Cl zc`;B;*4jyl`VwUwJHM!0t?=k=sfrrcvbcTMG#@C6>L6Kp7RLTAbR2gRt;!aQ< zNlWeMnW`DeDZp~C1aCd?kQ6^GzRapHdP3gv^z)1OO!W~zjQ7~L(|%Jl{d({tQEm|Q4V%jhHG!9 z+^aMW3<;#SQ7Q9Xn;ACS0xpudEuo?e*2H45()WkY>~6~i&AgxZI@!9GI%_Mcp)dQ`qoYngyJ ztbxyp;0=j9nl>amKmSXOafS)r?f#J8^pFRW4OfO9xXa4PKLK<#v;TB$6oXdpTfn=4 zsm(jKONQPm2}hnMiqJ`szkQ2PdyDJU zA*$#PJo3ipVMz6jpxW*%KJU|;J6+BR0ysZIl)g`t!Iz~apY|Iv4m83Xf3By3*dKoV zx>!+ZOTP0PY0&z8<<5gId|S?uY~y*06E66)x~NLRxH9eQWtnTxWrM*dgNc8&si~>$ zhoHI2b~7h4Mb-N|wzA5RRbUl$Tz|_t(d+I8Y`!6Jv-<=fM}dRpUbpOjY|`wsw#~`^7)#)zxle0^S-qaw9W;sy6zJ*$qo{DD$t znuy6NR>MbL3}CKn@GpB6J2z}Ls|z>f*s7 zQA<@-t^UfH|Fp0m`;vcq@6adetNq~_ACO6YbfRCy)&!K?H4l7t14gS~v8=AHCa(uv zrm{Dl9;x9dE^WC_Hp(Pv#jmUg9fM}h1C;dJ-gYfVho=1OU9&Kgf>VdATLnN^?4e3! zM#66L0f_ofe0!XvCM0F%t3u0MBkBH?8oGgTYdV9mE8sboyw9DRnMrPL&gNMpwd=Ih zr}_K0eH^KXF0=A8y9K@_08lC!ilMkUwQYAGsC z@OOO^6B9p>+9YDX9MZoe72I79{2h&Mu@P4aAwHIij@G*B=V$n%q4y(9LIo;3ocdxX zm)A6#qZ>dn#bGg+;IJ@PRD9U?8NUqr4j?Qdi#fX&~i|G4M$jzo2vw{hpb+*jGj0Ti#aBz2`;LxCSnEowo|mc z95?=@r#M%e6g`)-#ysbqETQRGO{l^#74gJ|Fd~hncTC|fNnJ4`Elq+S$qLD7W9{~v z96U&nhZyHl9baH@+{zs=(w>18j5Y<z_`J}L(*Vn1q~sU?E~1-S@WX^Tqo` + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/containers/distributed_dense_matrix.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
distributed_dense_matrix.hpp
+
+
+
1// SPDX-FileCopyrightText: Intel Corporation
+
2//
+
3// SPDX-License-Identifier: BSD-3-Clause
+
4
+
5#pragma once
+
6
+
7#include <memory>
+
8
+
9#include <dr/detail/index.hpp>
+
10#include <dr/detail/owning_view.hpp>
+
11#include <dr/shp/containers/matrix_entry.hpp>
+
12#include <dr/shp/containers/matrix_partition.hpp>
+
13#include <dr/shp/containers/sequential/dense_matrix.hpp>
+
14#include <dr/shp/device_vector.hpp>
+
15#include <dr/shp/future.hpp>
+
16#include <dr/shp/views/dense_matrix_view.hpp>
+
17
+
18namespace dr::shp {
+
19
+
20template <typename T, typename L> class distributed_dense_matrix_accessor {
+
21public:
+
22 using size_type = std::size_t;
+
23 using difference_type = std::ptrdiff_t;
+
24
+
25 using scalar_value_type = rng::range_value_t<L>;
+
26 using scalar_reference = rng::range_reference_t<L>;
+
27
+ +
29
+ +
31
+
32 using iterator_category = std::random_access_iterator_tag;
+
33
+ + + +
37
+
38 using tile_type = L;
+
39
+
40 using key_type = dr::index<>;
+
41
+
42 constexpr distributed_dense_matrix_accessor() noexcept = default;
+
43 constexpr ~distributed_dense_matrix_accessor() noexcept = default;
+ +
45 const distributed_dense_matrix_accessor &) noexcept = default;
+ +
47 operator=(const distributed_dense_matrix_accessor &) noexcept = default;
+
48
+ +
50 std::span<tile_type> tiles, key_type grid_idx, key_type tile_idx,
+
51 key_type grid_shape, key_type tile_shape, key_type matrix_shape) noexcept
+
52 : grid_idx_(grid_idx), tile_idx_(tile_idx), grid_shape_(grid_shape),
+
53 tile_shape_(tile_shape), matrix_shape_(matrix_shape), tiles_(tiles) {}
+
54
+ +
56 operator+=(difference_type offset) noexcept {
+
57 std::size_t new_global_idx_ = get_global_idx_() + offset;
+
58 key_type new_global_idx = {new_global_idx_ / matrix_shape_[1],
+
59 new_global_idx_ % matrix_shape_[1]};
+
60 key_type new_grid_idx = {new_global_idx[0] / tile_shape_[0],
+
61 new_global_idx[1] / tile_shape_[1]};
+
62
+
63 key_type new_tile_idx = {new_global_idx[0] % tile_shape_[0],
+
64 new_global_idx[1] % tile_shape_[1]};
+
65
+
66 grid_idx_ = new_grid_idx;
+
67 tile_idx_ = new_tile_idx;
+
68 return *this;
+
69 }
+
70
+
71 constexpr bool operator==(const iterator_accessor &other) const noexcept {
+
72 return grid_idx_ == other.grid_idx_ && tile_idx_ == other.tile_idx_;
+
73 }
+
74
+
75 constexpr difference_type
+
76 operator-(const iterator_accessor &other) const noexcept {
+
77 return difference_type(get_global_idx_()) - other.get_global_idx_();
+
78 }
+
79
+
80 constexpr bool operator<(const iterator_accessor &other) const noexcept {
+
81 if (get_grid_idx() < other.get_grid_idx()) {
+
82 return true;
+
83 } else if (get_grid_idx() == other.get_grid_idx()) {
+
84 return get_local_idx() < other.get_local_idx();
+
85 } else {
+
86 return false;
+
87 }
+
88 }
+
89
+
90 constexpr reference operator*() const noexcept {
+
91 auto &&tile = tiles_[get_grid_idx()];
+
92 auto &&value = tile[get_local_idx()];
+
93 key_type idx = {tile_idx_[0] + grid_idx_[0] * tile_shape_[0],
+
94 tile_idx_[1] + grid_idx_[1] * tile_shape_[1]};
+
95 return reference(idx, value);
+
96 }
+
97
+
98private:
+
99 size_type get_global_idx_() const noexcept {
+
100 auto gidx = get_global_idx();
+
101 return gidx[0] * matrix_shape_[1] + gidx[1];
+
102 }
+
103
+
104 key_type get_global_idx() const noexcept {
+
105 return {grid_idx_[0] * tile_shape_[0] + tile_idx_[0],
+
106 grid_idx_[1] * tile_shape_[1] + tile_idx_[1]};
+
107 }
+
108
+
109 size_type get_grid_idx() const noexcept {
+
110 return grid_idx_[0] * grid_shape_[1] + grid_idx_[1];
+
111 }
+
112
+
113 size_type get_local_idx() const noexcept {
+
114 return tile_idx_[0] * tile_shape_[1] + tile_idx_[1];
+
115 }
+
116
+
117 size_type get_tile_size() const noexcept {
+
118 return tile_shape_[0] * tile_shape_[1];
+
119 }
+
120
+
121private:
+
122 key_type grid_idx_;
+
123 key_type tile_idx_;
+
124
+
125 key_type grid_shape_;
+
126 key_type tile_shape_;
+
127 key_type matrix_shape_;
+
128
+
129 std::span<tile_type> tiles_;
+
130};
+
131
+
132template <typename T, typename L>
+ + +
135
+
136template <typename T> class distributed_dense_matrix {
+
137public:
+
138 using size_type = std::size_t;
+
139 using difference_type = std::ptrdiff_t;
+
140
+ +
142
+
143 using scalar_reference = rng::range_reference_t<
+ +
145 using const_scalar_reference = rng::range_reference_t<
+ +
147
+ + +
150
+
151 using key_type = dr::index<>;
+
152
+ + +
155
+ +
157 : shape_(shape), partition_(new dr::shp::block_cyclic()) {
+
158 init_();
+
159 }
+
160
+
161 distributed_dense_matrix(key_type shape, const matrix_partition &partition)
+
162 : shape_(shape), partition_(partition.clone()) {
+
163 init_();
+
164 }
+
165
+
166 size_type size() const noexcept { return shape()[0] * shape()[1]; }
+
167
+
168 key_type shape() const noexcept { return shape_; }
+
169
+
170 scalar_reference operator[](key_type index) {
+
171 std::size_t tile_i = index[0] / tile_shape_[0];
+
172 std::size_t tile_j = index[1] / tile_shape_[1];
+
173
+
174 std::size_t local_i = index[0] % tile_shape_[0];
+
175 std::size_t local_j = index[1] % tile_shape_[1];
+
176
+
177 auto &&tile = tiles_[tile_i * grid_shape_[1] + tile_j];
+
178
+
179 return tile[local_i * tile_shape_[1] + local_j];
+
180 }
+
181
+
182 const_scalar_reference operator[](key_type index) const {
+
183 std::size_t tile_i = index[0] / tile_shape_[0];
+
184 std::size_t tile_j = index[1] / tile_shape_[1];
+
185
+
186 std::size_t local_i = index[0] % tile_shape_[0];
+
187 std::size_t local_j = index[1] % tile_shape_[1];
+
188
+
189 auto &&tile = tiles_[tile_i * grid_shape_[1] + tile_j];
+
190
+
191 return tile[local_i * tile_shape_[1] + local_j];
+
192 }
+
193
+
194 iterator begin() {
+
195 return iterator(tiles_, key_type({0, 0}), key_type({0, 0}), grid_shape_,
+
196 tile_shape_, shape_);
+
197 }
+
198
+
199 iterator end() { return begin() + shape()[0] * shape()[1]; }
+
200
+
201 key_type tile_shape() const noexcept { return tile_shape_; }
+
202
+
203 key_type grid_shape() const noexcept { return grid_shape_; }
+
204
+
205 auto tile(key_type tile_index) {
+
206 auto &&[i, j] = tile_index;
+
207 auto iter = tiles_[i * grid_shape()[1] + j].begin();
+
208
+
209 std::size_t tm =
+
210 std::min(tile_shape()[0], shape()[0] - i * tile_shape()[0]);
+
211 std::size_t tn =
+
212 std::min(tile_shape()[1], shape()[1] - j * tile_shape()[1]);
+
213
+
214 return dense_matrix_view<T, rng::iterator_t<dr::shp::device_vector<
+ +
216 iter, key_type{tm, tn}, tile_shape()[1],
+
217 tiles_[i * grid_shape()[1] + j].rank());
+
218 }
+
219
+
220 std::vector<dense_matrix_view<T, rng::iterator_t<dr::shp::device_vector<
+ +
222 tiles() {
+
223 std::vector<dense_matrix_view<T, rng::iterator_t<dr::shp::device_vector<
+ +
225 views_;
+
226
+
227 for (std::size_t i = 0; i < grid_shape_[0]; i++) {
+
228 for (std::size_t j = 0; j < grid_shape_[1]; j++) {
+
229 auto iter = tiles_[i * grid_shape_[1] + j].begin();
+
230
+
231 std::size_t tm =
+
232 std::min(tile_shape_[0], shape()[0] - i * tile_shape_[0]);
+
233 std::size_t tn =
+
234 std::min(tile_shape_[1], shape()[1] - j * tile_shape_[1]);
+
235
+
236 views_.emplace_back(iter, key_type{tm, tn}, tile_shape_[1],
+
237 tiles_[i * grid_shape_[1] + j].rank());
+
238 }
+
239 }
+
240 return views_;
+
241 }
+
242
+
243 template <typename Allocator = std::allocator<T>>
+
244 auto get_tile(key_type tile_index, const Allocator &alloc = Allocator{}) {
+
245 std::size_t nrows = get_tile_shape_(tile_index)[0];
+
246 std::size_t ld = tile_shape_[1];
+
247 std::size_t tile_size = nrows * ld;
+
248 dense_matrix<T, Allocator> local_tile(get_tile_shape_(tile_index), ld,
+
249 alloc);
+
250 auto remote_tile = tile(tile_index);
+
251 shp::copy(remote_tile.data(), remote_tile.data() + tile_size,
+
252 local_tile.data());
+
253 return local_tile;
+
254 }
+
255
+
256 template <typename Allocator = std::allocator<T>>
+
257 auto get_tile_async(key_type tile_index,
+
258 const Allocator &alloc = Allocator{}) {
+
259 std::size_t nrows = get_tile_shape_(tile_index)[0];
+
260 std::size_t ld = tile_shape_[1];
+
261 std::size_t tile_size = nrows * ld;
+
262 dense_matrix<T, Allocator> local_tile(get_tile_shape_(tile_index), ld,
+
263 alloc);
+
264 auto remote_tile = tile(tile_index);
+
265 auto event = shp::copy_async(
+
266 remote_tile.data(), remote_tile.data() + tile_size, local_tile.data());
+
267 return future(std::move(local_tile), {event});
+
268 }
+
269
+
270 auto segments() {
+
271 std::vector<dense_matrix_view<T, rng::iterator_t<dr::shp::device_vector<
+ +
273 views_;
+
274
+
275 for (std::size_t i = 0; i < grid_shape_[0]; i++) {
+
276 for (std::size_t j = 0; j < grid_shape_[1]; j++) {
+
277 auto iter = tiles_[i * grid_shape_[1] + j].begin();
+
278
+
279 std::size_t tm =
+
280 std::min(tile_shape_[0], shape()[0] - i * tile_shape_[0]);
+
281 std::size_t tn =
+
282 std::min(tile_shape_[1], shape()[1] - j * tile_shape_[1]);
+
283
+
284 std::size_t m_offset = i * tile_shape_[0];
+
285 std::size_t n_offset = j * tile_shape_[1];
+
286
+
287 views_.emplace_back(iter, key_type{tm, tn},
+
288 key_type{m_offset, n_offset}, tile_shape_[1],
+
289 tiles_[i * grid_shape_[1] + j].rank());
+
290 }
+
291 }
+
292 return dr::__detail::owning_view(std::move(views_));
+
293 }
+
294
+
295private:
+
296 void init_() {
+
297 grid_shape_ = partition_->grid_shape(shape());
+
298 tile_shape_ = partition_->tile_shape(shape());
+
299
+
300 tiles_.reserve(grid_shape_[0] * grid_shape_[1]);
+
301
+
302 for (std::size_t i = 0; i < grid_shape_[0]; i++) {
+
303 for (std::size_t j = 0; j < grid_shape_[1]; j++) {
+
304 std::size_t rank = partition_->tile_rank(shape(), {i, j});
+
305
+
306 auto device = dr::shp::devices()[rank];
+
307 dr::shp::device_allocator<T> alloc(dr::shp::context(), device);
+
308
+
309 std::size_t tile_size = tile_shape_[0] * tile_shape_[1];
+
310
+
311 tiles_.emplace_back(tile_size, alloc, rank);
+
312 }
+
313 }
+
314 }
+
315
+
316 key_type get_tile_shape_(key_type tile_index) {
+
317 auto &&[i, j] = tile_index;
+
318 std::size_t tm = std::min(tile_shape_[0], shape()[0] - i * tile_shape_[0]);
+
319 std::size_t tn = std::min(tile_shape_[1], shape()[1] - j * tile_shape_[1]);
+
320 return key_type{tm, tn};
+
321 }
+
322
+
323private:
+
324 key_type shape_;
+
325 key_type grid_shape_;
+
326 key_type tile_shape_;
+
327 std::unique_ptr<dr::shp::matrix_partition> partition_;
+
328
+
329 std::vector<dr::shp::device_vector<T, dr::shp::device_allocator<T>>> tiles_;
+
330};
+
331
+
332} // namespace dr::shp
+
Definition: owning_view.hpp:18
+
Definition: index.hpp:34
+
Definition: iterator_adaptor.hpp:23
+
Definition: matrix_partition.hpp:34
+
Definition: dense_matrix_view.hpp:21
+
Definition: dense_matrix.hpp:19
+
Definition: allocators.hpp:20
+
Definition: device_vector.hpp:13
+
Definition: distributed_dense_matrix.hpp:20
+
Definition: distributed_dense_matrix.hpp:136
+
Definition: future.hpp:14
+
Definition: matrix_entry.hpp:15
+
Definition: matrix_partition.hpp:23
+
Definition: matrix_entry.hpp:113
+
+ + + + diff --git a/doxygen/distributed__mdarray_8hpp_source.html b/doxygen/distributed__mdarray_8hpp_source.html new file mode 100644 index 0000000000..8ef00d6fb9 --- /dev/null +++ b/doxygen/distributed__mdarray_8hpp_source.html @@ -0,0 +1,184 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/containers/distributed_mdarray.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
distributed_mdarray.hpp
+
+
+
1// SPDX-FileCopyrightText: Intel Corporation
+
2//
+
3// SPDX-License-Identifier: BSD-3-Clause
+
4
+
5#pragma once
+
6
+
7#include <dr/detail/ranges_shim.hpp>
+
8#include <dr/mhp/views/mdspan_view.hpp>
+
9
+
10namespace dr::mhp {
+
11
+
12template <typename T, std::size_t Rank> class distributed_mdarray {
+
13public:
+
14 using shape_type = dr::__detail::dr_extents<Rank>;
+
15
+
16 distributed_mdarray(dr::__detail::dr_extents<Rank> shape,
+ +
18 : tile_shape_(tile_shape(shape)), dv_(dv_size(), dv_dist(dist, shape)),
+
19 md_view_(make_md_view(dv_, shape, tile_shape_)) {}
+
20
+
21 auto begin() const { return rng::begin(md_view_); }
+
22 auto end() const { return rng::end(md_view_); }
+
23 auto size() const { return rng::size(md_view_); }
+
24 auto operator[](auto n) { return md_view_[n]; }
+
25
+
26 auto segments() { return dr::ranges::segments(md_view_); }
+
27 auto &halo() const { return dr::mhp::halo(dv_); }
+
28
+
29 auto mdspan() const { return md_view_.mdspan(); }
+
30 auto extent(std::size_t r) const { return mdspan().extent(r); }
+
31 auto grid() { return md_view_.grid(); }
+
32 auto view() const { return md_view_; }
+
33
+
34 auto operator==(const distributed_mdarray &other) const {
+
35 return std::equal(begin(), end(), other.begin());
+
36 }
+
37
+
38private:
+ +
40
+
41 static auto tile_shape(auto shape) {
+
42 std::size_t n = default_comm().size(); // dr-style ignore
+
43 shape[0] = dr::__detail::partition_up(shape[0], n);
+
44 return shape;
+
45 }
+
46
+
47 static auto md_size(auto shape) {
+
48 std::size_t size = 1;
+
49 for (auto extent : shape) {
+
50 size *= extent;
+
51 }
+
52 return size;
+
53 }
+
54
+
55 auto dv_size() {
+
56 return default_comm().size() * md_size(tile_shape_); // dr-style ignore
+
57 }
+
58
+
59 static auto dv_dist(distribution incoming_dist, auto shape) {
+
60 // Decomp is 1 "row" in decomp dimension
+
61 // TODO: only supports dist on leading dimension
+
62 shape[0] = 1;
+
63 std::size_t row_size = md_size(shape);
+
64 auto incoming_halo = incoming_dist.halo();
+
65 return distribution().halo(incoming_halo.prev * row_size,
+
66 incoming_halo.next * row_size);
+
67 }
+
68
+
69 // This wrapper seems to avoid an issue with template argument
+
70 // deduction for mdspan_view
+
71 static auto make_md_view(const DV &dv, shape_type shape,
+
72 shape_type tile_shape) {
+
73 return views::mdspan(dv, shape, tile_shape);
+
74 }
+
75
+
76 shape_type tile_shape_;
+
77 DV dv_;
+
78 using mdspan_type =
+
79 decltype(make_md_view(std::declval<DV>(), std::declval<shape_type>(),
+
80 std::declval<shape_type>()));
+
81 mdspan_type md_view_;
+
82};
+
83
+
84template <typename T, std::size_t Rank>
+
85auto &halo(const distributed_mdarray<T, Rank> &mdarray) {
+
86 return mdarray.halo();
+
87}
+
88
+
89template <typename T, std::size_t Rank>
+
90std::ostream &operator<<(std::ostream &os,
+
91 const distributed_mdarray<T, Rank> &mdarray) {
+
92 os << fmt::format("\n{}", mdarray.mdspan());
+
93 return os;
+
94}
+
95
+
96} // namespace dr::mhp
+
Definition: distributed_mdarray.hpp:12
+
distributed vector
Definition: distributed_vector.hpp:14
+
Definition: distribution.hpp:11
+
+ + + + diff --git a/doxygen/distributed__span_8hpp_source.html b/doxygen/distributed__span_8hpp_source.html new file mode 100644 index 0000000000..f010656aa6 --- /dev/null +++ b/doxygen/distributed__span_8hpp_source.html @@ -0,0 +1,347 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/distributed_span.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
distributed_span.hpp
+
+
+
1// SPDX-FileCopyrightText: Intel Corporation
+
2//
+
3// SPDX-License-Identifier: BSD-3-Clause
+
4
+
5#pragma once
+
6
+
7#include <vector>
+
8
+
9#include <dr/concepts/concepts.hpp>
+
10#include <dr/detail/iterator_adaptor.hpp>
+
11#include <dr/detail/ranges.hpp>
+
12#include <dr/detail/segments_tools.hpp>
+
13#include <dr/shp/device_span.hpp>
+
14
+
15namespace dr::shp {
+
16
+
17template <typename T, typename L> class distributed_span_accessor {
+
18public:
+
19 using element_type = T;
+
20 using value_type = std::remove_cv_t<T>;
+
21
+
22 using segment_type = L;
+
23
+
24 using size_type = rng::range_size_t<segment_type>;
+
25 using difference_type = rng::range_difference_t<segment_type>;
+
26
+
27 // using pointer = typename segment_type::pointer;
+
28 using reference = rng::range_reference_t<segment_type>;
+
29
+
30 using iterator_category = std::random_access_iterator_tag;
+
31
+ + + +
35
+
36 constexpr distributed_span_accessor() noexcept = default;
+
37 constexpr ~distributed_span_accessor() noexcept = default;
+ +
39 const distributed_span_accessor &) noexcept = default;
+ +
41 operator=(const distributed_span_accessor &) noexcept = default;
+
42
+
43 constexpr distributed_span_accessor(std::span<segment_type> segments,
+
44 size_type segment_id,
+
45 size_type idx) noexcept
+
46 : segments_(segments), segment_id_(segment_id), idx_(idx) {}
+
47
+ +
49 operator+=(difference_type offset) noexcept {
+
50
+
51 while (offset > 0) {
+
52 difference_type current_offset =
+
53 std::min(offset, difference_type(segments_[segment_id_].size()) -
+
54 difference_type(idx_));
+
55 idx_ += current_offset;
+
56 offset -= current_offset;
+
57
+
58 if (idx_ >= segments_[segment_id_].size()) {
+
59 segment_id_++;
+
60 idx_ = 0;
+
61 }
+
62 }
+
63
+
64 while (offset < 0) {
+
65 difference_type current_offset =
+
66 std::min(-offset, difference_type(idx_) + 1);
+
67
+
68 difference_type new_idx = difference_type(idx_) - current_offset;
+
69
+
70 if (new_idx < 0) {
+
71 segment_id_--;
+
72 new_idx = segments_[segment_id_].size() - 1;
+
73 }
+
74
+
75 idx_ = new_idx;
+
76 }
+
77
+
78 return *this;
+
79 }
+
80
+
81 constexpr bool operator==(const iterator_accessor &other) const noexcept {
+
82 return segment_id_ == other.segment_id_ && idx_ == other.idx_;
+
83 }
+
84
+
85 constexpr difference_type
+
86 operator-(const iterator_accessor &other) const noexcept {
+
87 return difference_type(get_global_idx()) - other.get_global_idx();
+
88 }
+
89
+
90 constexpr bool operator<(const iterator_accessor &other) const noexcept {
+
91 if (segment_id_ < other.segment_id_) {
+
92 return true;
+
93 } else if (segment_id_ == other.segment_id_) {
+
94 return idx_ < other.idx_;
+
95 } else {
+
96 return false;
+
97 }
+
98 }
+
99
+
100 constexpr reference operator*() const noexcept {
+
101 return segments_[segment_id_][idx_];
+
102 }
+
103
+
104 auto segments() const noexcept {
+
105 return dr::__detail::drop_segments(segments_, segment_id_, idx_);
+
106 }
+
107
+
108private:
+
109 size_type get_global_idx() const noexcept {
+
110 size_type cumulative_size = 0;
+
111 for (std::size_t i = 0; i < segment_id_; i++) {
+
112 cumulative_size += segments_[i].size();
+
113 }
+
114 return cumulative_size + idx_;
+
115 }
+
116
+
117 std::span<segment_type> segments_;
+
118 size_type segment_id_ = 0;
+
119 size_type idx_ = 0;
+
120};
+
121
+
122template <typename T, typename L>
+ + +
125
+
126template <typename T, typename L>
+
127class distributed_span : public rng::view_interface<distributed_span<T, L>> {
+
128public:
+
129 using element_type = T;
+
130 using value_type = std::remove_cv_t<T>;
+
131
+ +
133
+
134 using size_type = rng::range_size_t<segment_type>;
+
135 using difference_type = rng::range_difference_t<segment_type>;
+
136
+
137 // using pointer = typename segment_type::pointer;
+
138 using reference = rng::range_reference_t<segment_type>;
+
139
+
140 // Note: creating the "global view" will be trivial once #44178 is resolved.
+
141 // (https://github.com/llvm/llvm-project/issues/44178)
+
142 // The "global view" is simply all of the segmented views joined together.
+
143 // However, this code does not currently compile due to a bug in Clang,
+
144 // so I am currently implementing my own global iterator manually.
+
145 // using joined_view_type =
+
146 // rng::join_view<rng::ref_view<std::vector<segment_type>>>;
+
147 // using iterator = rng::iterator_t<joined_view_type>;
+
148
+ +
150
+
151 constexpr distributed_span() noexcept = default;
+
152 constexpr distributed_span(const distributed_span &) noexcept = default;
+
153 constexpr distributed_span &
+
154 operator=(const distributed_span &) noexcept = default;
+
155
+
156 template <rng::input_range R>
+ +
158 constexpr distributed_span(R &&segments) {
+
159 for (auto &&segment : segments) {
+
160 std::size_t size = rng::size(segment);
+
161 segments_.push_back(
+
162 segment_type(rng::begin(segment), size, dr::ranges::rank(segment)));
+
163 size_ += size;
+
164 }
+
165 }
+
166
+
167 template <dr::distributed_range R> constexpr distributed_span(R &&r) {
+
168 for (auto &&segment : dr::ranges::segments(std::forward<R>(r))) {
+
169 std::size_t size = rng::size(segment);
+
170 segments_.push_back(
+
171 segment_type(rng::begin(segment), size, dr::ranges::rank(segment)));
+
172 size_ += size;
+
173 }
+
174 }
+
175
+
176 constexpr size_type size() const noexcept { return size_; }
+
177
+
178 constexpr size_type size_bytes() const noexcept {
+
179 return size() * sizeof(element_type);
+
180 }
+
181
+
182 constexpr reference operator[](size_type idx) const {
+
183 // TODO: optimize this
+
184 std::size_t span_id = 0;
+
185 for (std::size_t span_id = 0; idx >= segments()[span_id].size();
+
186 span_id++) {
+
187 idx -= segments()[span_id].size();
+
188 }
+
189 return segments()[span_id][idx];
+
190 }
+
191
+
192 [[nodiscard]] constexpr bool empty() const noexcept { return size() == 0; }
+
193
+
194 constexpr distributed_span
+
195 subspan(size_type Offset, size_type Count = std::dynamic_extent) const {
+
196 Count = std::min(Count, size() - Offset);
+
197
+
198 std::vector<segment_type> new_segments;
+
199
+
200 // Forward to segment_id that contains global index `Offset`.
+
201 std::size_t segment_id = 0;
+
202 for (segment_id = 0; Offset >= segments()[segment_id].size();
+
203 segment_id++) {
+
204 Offset -= segments()[segment_id].size();
+
205 }
+
206
+
207 // Our Offset begins at `segment_id, Offset`
+
208
+
209 while (Count > 0) {
+
210 std::size_t local_count =
+
211 std::min(Count, segments()[segment_id].size() - Offset);
+
212 auto new_segment = segments()[segment_id].subspan(Offset, local_count);
+
213 new_segments.push_back(new_segment);
+
214 Count -= local_count;
+
215 Offset = 0;
+
216 segment_id++;
+
217 }
+
218
+
219 return distributed_span(new_segments);
+
220 }
+
221
+
222 constexpr distributed_span first(size_type Count) const {
+
223 return subspan(0, Count);
+
224 }
+
225
+
226 constexpr distributed_span last(size_type Count) const {
+
227 return subspan(size() - Count, Count);
+
228 }
+
229
+
230 iterator begin() { return iterator(segments(), 0, 0); }
+
231
+
232 iterator end() { return iterator(segments(), segments().size(), 0); }
+
233
+
234 constexpr reference front() { return segments().front().front(); }
+
235
+
236 constexpr reference back() { return segments().back().back(); }
+
237
+
238 std::span<segment_type> segments() { return segments_; }
+
239
+
240 std::span<const segment_type> segments() const { return segments_; }
+
241
+
242private:
+
243 std::size_t size_ = 0;
+
244 std::vector<segment_type> segments_;
+
245};
+
246
+
247template <rng::input_range R>
+
248distributed_span(R &&segments)
+ +
250 rng::iterator_t<rng::range_value_t<R>>>;
+
251
+
252template <dr::distributed_contiguous_range R>
+ +
254 rng::range_value_t<R>,
+
255 rng::iterator_t<rng::range_value_t<decltype(dr::ranges::segments(r))>>>;
+
256
+
257} // namespace dr::shp
+
Definition: iterator_adaptor.hpp:23
+
Definition: device_span.hpp:44
+
Definition: distributed_span.hpp:17
+
Definition: distributed_span.hpp:127
+
Definition: concepts.hpp:16
+
+ + + + diff --git a/doxygen/distribution_8hpp_source.html b/doxygen/distribution_8hpp_source.html new file mode 100644 index 0000000000..9203ebc864 --- /dev/null +++ b/doxygen/distribution_8hpp_source.html @@ -0,0 +1,133 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/containers/distribution.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
distribution.hpp
+
+
+
1// SPDX-FileCopyrightText: Intel Corporation
+
2//
+
3// SPDX-License-Identifier: BSD-3-Clause
+
4
+
5#pragma once
+
6
+
7#include <dr/mhp/halo.hpp>
+
8
+
9namespace dr::mhp {
+
10
+ +
12public:
+
13 distribution &halo(std::size_t radius) {
+
14 halo_bounds_.prev = radius;
+
15 halo_bounds_.next = radius;
+
16 return *this;
+
17 }
+
18
+
19 distribution &halo(std::size_t prev, std::size_t next) {
+
20 halo_bounds_.prev = prev;
+
21 halo_bounds_.next = next;
+
22 return *this;
+
23 }
+
24
+
25 auto halo() const { return halo_bounds_; }
+
26
+
27 distribution &periodic(bool periodic) {
+
28 halo_bounds_.periodic = periodic;
+
29 return *this;
+
30 }
+
31
+
32 auto periodic() const { return halo_bounds_.periodic; }
+
33
+
34 distribution &granularity(std::size_t size) {
+
35 granularity_ = size;
+
36 return *this;
+
37 }
+
38
+
39 auto granularity() const { return granularity_; }
+
40
+
41private:
+
42 halo_bounds halo_bounds_;
+
43 std::size_t granularity_ = 1;
+
44};
+
45
+
46} // namespace dr::mhp
+
Definition: distribution.hpp:11
+
Definition: halo.hpp:354
+
+ + + + diff --git a/doxygen/doc.png b/doxygen/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 GIT binary patch literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t literal 0 HcmV?d00001 diff --git a/doxygen/docd.png b/doxygen/docd.png new file mode 100644 index 0000000000000000000000000000000000000000..d7c94fda9bf08ecc02c7190d968452b7a2dbf04b GIT binary patch literal 756 zcmV1wr-rhpn+wxm%q2)IkAYsr{iGq<}_z5JCD4J;FN?6Qh;@TCubdp(_XdD-^ zG_#)IP7_z6hKNdx5^+FGArwLWTWCG!j+oKji?U!hxA#d-ljgkN`+e^@-P+RWG{Bx= z2iQyYTtEf*o~ySWrIVW}HWHi0_hd4~$E6Jx1U`>Owo}EYJ1O>iZvS?!z8}B}QwLMA zC3Keqf1c}K@?C`X>68b(EUzYUYAS&OH^VPteZLPr{S&|nQvp@6W4GH-1U8!u&7l~A zx~RUSNH+>7@q38W6!BzirtjLFCzc|XGx)EF#G%^pWION*k@?vP<2O>|XkCD3ujl%1 z{55JSVkw{~HbX>iEZ2%yJ2eHj5Yh8OTpzs0A2;tZ^x!#5D+y-es{k1&0|Ns9-|+Xt ziGiTsZ8(^nUo#wdTpIDkb-Zp(3|A*FzW}GZ5SQD-r^R`&X@`26E3W|GyrwDIZjtQ& z$g5f8Sv=VgVtDien@J(!^BK+#l;s-LgP--p7C;7;E!ysXcXK6?+9D>_-B(?Wm(U zQbNm-5TyYxIU=rs0+)!ixqzhuxw(AqKc3?KKX32{D~Qibp*r0x&Wux5-9WCMMRi3U zTd6dOCQlj>a;gr;gLwRKulT&(m@^L{&HkSC(qH05HSSf$YEhynGvH zWNez``Z8FJXE+BSg=%ak{OR z+Nylcb{?evLYLuE1_HngYw0g%LC#=$a@?4~Tx>F9295Q>9UJ|_6v-KMw;!YZSgGj@ zR8fRov=hJ#QvsO@xw*{0%zH@OKVEUrsummary { + list-style-type: none; +} + +details > summary::-webkit-details-marker { + display: none; +} + +details>summary::before { + content: "\25ba"; + padding-right:4px; + font-size: 80%; +} + +details[open]>summary::before { + content: "\25bc"; + padding-right:4px; + font-size: 80%; +} + +body { + scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-background-color); +} + +::-webkit-scrollbar { + background-color: var(--scrollbar-background-color); + height: 12px; + width: 12px; +} +::-webkit-scrollbar-thumb { + border-radius: 6px; + box-shadow: inset 0 0 12px 12px var(--scrollbar-thumb-color); + border: solid 2px transparent; +} +::-webkit-scrollbar-corner { + background-color: var(--scrollbar-background-color); +} + diff --git a/doxygen/doxygen.svg b/doxygen/doxygen.svg new file mode 100644 index 0000000000..d42dad52d5 --- /dev/null +++ b/doxygen/doxygen.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doxygen/duplicated__vector_8hpp_source.html b/doxygen/duplicated__vector_8hpp_source.html new file mode 100644 index 0000000000..b1842cdbda --- /dev/null +++ b/doxygen/duplicated__vector_8hpp_source.html @@ -0,0 +1,135 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/containers/duplicated_vector.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
duplicated_vector.hpp
+
+
+
1// SPDX-FileCopyrightText: Intel Corporation
+
2//
+
3// SPDX-License-Identifier: BSD-3-Clause
+
4
+
5#pragma once
+
6
+
7#include <dr/shp/allocators.hpp>
+
8#include <dr/shp/device_vector.hpp>
+
9
+
10namespace dr::shp {
+
11
+
12template <typename T, typename Allocator = dr::shp::device_allocator<T>>
+ +
14public:
+ +
16
+
17 using value_type = T;
+
18 using size_type = std::size_t;
+
19 using difference_type = std::ptrdiff_t;
+
20
+
21 using allocator_type = Allocator;
+
22
+
23 duplicated_vector(std::size_t count = 0) {
+
24 size_ = count;
+
25 capacity_ = count;
+
26
+
27 std::size_t rank = 0;
+
28 for (auto &&device : dr::shp::devices()) {
+
29 segments_.emplace_back(
+
30 segment_type(size(), Allocator(dr::shp::context(), device), rank++));
+
31 }
+
32 }
+
33
+
34 size_type size() const noexcept { return size_; }
+
35
+
36 segment_type &local_vector(std::size_t rank) { return segments_[rank]; }
+
37
+
38 const segment_type &local_vector(std::size_t rank) const {
+
39 return segments_[rank];
+
40 }
+
41
+
42private:
+
43 std::vector<segment_type> segments_;
+
44 std::size_t capacity_ = 0;
+
45 std::size_t size_ = 0;
+
46};
+
47
+
48} // namespace dr::shp
+
Definition: device_vector.hpp:13
+
Definition: duplicated_vector.hpp:13
+
+ + + + diff --git a/doxygen/dynsections.js b/doxygen/dynsections.js new file mode 100644 index 0000000000..f579fbf3e2 --- /dev/null +++ b/doxygen/dynsections.js @@ -0,0 +1,123 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); + $('table.directory tr'). + removeClass('odd').filter(':visible:odd').addClass('odd'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/algorithms/execution_policy.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
execution_policy.hpp
+
+
+
1// SPDX-FileCopyrightText: Intel Corporation
+
2//
+
3// SPDX-License-Identifier: BSD-3-Clause
+
4
+
5#pragma once
+
6
+
7#include <span>
+
8#include <sycl/sycl.hpp>
+
9#include <vector>
+
10
+
11namespace dr::shp {
+
12
+ +
14 device_policy(sycl::device device) : devices_({device}) {}
+
15 device_policy(sycl::queue queue) : devices_({queue.get_device()}) {}
+
16
+
17 device_policy() : devices_({sycl::queue{}.get_device()}) {}
+
18
+
19 template <rng::range R>
+
20 requires(std::is_same_v<rng::range_value_t<R>, sycl::device>)
+
21 device_policy(R &&devices)
+
22 : devices_(rng::begin(devices), rng::end(devices)) {}
+
23
+
24 std::span<sycl::device> get_devices() noexcept { return devices_; }
+
25
+
26 std::span<const sycl::device> get_devices() const noexcept {
+
27 return devices_;
+
28 }
+
29
+
30private:
+
31 std::vector<sycl::device> devices_;
+
32};
+
33
+
34} // namespace dr::shp
+
Definition: execution_policy.hpp:13
+
+ + + + diff --git a/doxygen/files.html b/doxygen/files.html new file mode 100644 index 0000000000..56378b74e9 --- /dev/null +++ b/doxygen/files.html @@ -0,0 +1,208 @@ + + + + + + + +Distributed Ranges: File List + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
File List
+
+
+
Here is a list of all documented files with brief descriptions:
+
[detail level 123456]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  include
  dr
  concepts
 concepts.hpp
  detail
 communicator.hpp
 enumerate.hpp
 format_shim.hpp
 index.hpp
 iterator_adaptor.hpp
 logger.hpp
 mdspan_shim.hpp
 mdspan_utils.hpp
 memory.hpp
 normal_distributed_iterator.hpp
 onedpl_direct_iterator.hpp
 owning_view.hpp
 ranges.hpp
 ranges_shim.hpp
 ranges_utils.hpp
 remote_subrange.hpp
 segments_tools.hpp
 sycl_utils.hpp
 tuple_utils.hpp
 utils.hpp
 view_detectors.hpp
  mhp
  algorithms
  containers
  views
 alignment.hpp
 global.hpp
 halo.hpp
 sycl_support.hpp
  shp
  algorithms
  containers
  util
  views
 allocators.hpp
 detail.hpp
 device_ptr.hpp
 device_ref.hpp
 device_span.hpp
 device_vector.hpp
 distributed_span.hpp
 distributed_vector.hpp
 future.hpp
 init.hpp
 range.hpp
 range_adaptors.hpp
 span.hpp
 util.hpp
 vector.hpp
 zip_view.hpp
  views
 iota.hpp
 transform.hpp
 views.hpp
 mhp.hpp
 shp.hpp
  vendor
  source_location
 source_location.hpp
+
+
+ + + + diff --git a/doxygen/folderclosed.png b/doxygen/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66 GIT binary patch literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA literal 0 HcmV?d00001 diff --git a/doxygen/format__shim_8hpp_source.html b/doxygen/format__shim_8hpp_source.html new file mode 100644 index 0000000000..552633f4b1 --- /dev/null +++ b/doxygen/format__shim_8hpp_source.html @@ -0,0 +1,98 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail/format_shim.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
format_shim.hpp
+
+
+
1// SPDX-FileCopyrightText: Intel Corporation
+
2//
+
3// SPDX-License-Identifier: BSD-3-Clause
+
4
+
5#pragma once
+
6
+
7#ifdef DR_FORMAT
+
8#include <fmt/core.h>
+
9#include <fmt/ranges.h>
+
10#endif
+
11
+
12// Workaround for doxygen warning about internal inconsistency
+
13namespace fmt {}
+
+ + + + diff --git a/doxygen/functions.html b/doxygen/functions.html new file mode 100644 index 0000000000..095eaef648 --- /dev/null +++ b/doxygen/functions.html @@ -0,0 +1,92 @@ + + + + + + + +Distributed Ranges: Class Members + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+
+ + + + diff --git a/doxygen/functions_func.html b/doxygen/functions_func.html new file mode 100644 index 0000000000..ef0bc58dd8 --- /dev/null +++ b/doxygen/functions_func.html @@ -0,0 +1,92 @@ + + + + + + + +Distributed Ranges: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
+ + + + diff --git a/doxygen/future_8hpp_source.html b/doxygen/future_8hpp_source.html new file mode 100644 index 0000000000..ea1859247d --- /dev/null +++ b/doxygen/future_8hpp_source.html @@ -0,0 +1,134 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/future.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
future.hpp
+
+
+
1// SPDX-FileCopyrightText: Intel Corporation
+
2//
+
3// SPDX-License-Identifier: BSD-3-Clause
+
4
+
5#pragma once
+
6
+
7#include <memory>
+
8#include <sycl/sycl.hpp>
+
9
+
10#include <dr/shp/detail.hpp>
+
11
+
12namespace dr::shp {
+
13
+
14template <typename T, typename Event = sycl::event> class future {
+
15public:
+
16 using event_type = Event;
+
17
+
18 future(std::unique_ptr<T> &&value, const std::vector<Event> &events)
+
19 : value_(std::move(value)), events_(events) {}
+
20
+
21 future(T &&value, const std::vector<Event> &events)
+
22 : value_(new T(std::move(value))), events_(events) {}
+
23
+
24 void update(const Event &event) { events_.push_back(event); }
+
25
+
26 future(future &&) = default;
+
27 future &operator=(future &&) = default;
+
28
+
29 future(const future &) = delete;
+
30 future &operator=(const future &) = delete;
+
31
+
32 T get() {
+
33 wait();
+
34 return std::move(*value_);
+
35 }
+
36
+
37 std::vector<Event> events() const { return events_; }
+
38
+
39 T &value() const { return *value_; }
+
40
+
41 void wait() { __detail::wait(events_); }
+
42
+
43private:
+
44 std::unique_ptr<T> value_;
+
45 std::vector<Event> events_;
+
46};
+
47
+
48} // namespace dr::shp
+
Definition: future.hpp:14
+
+ + + + diff --git a/doxygen/gemm_8hpp_source.html b/doxygen/gemm_8hpp_source.html new file mode 100644 index 0000000000..4b8787c5b3 --- /dev/null +++ b/doxygen/gemm_8hpp_source.html @@ -0,0 +1,333 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/algorithms/matrix/gemm.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
gemm.hpp
+
+
+
1// SPDX-FileCopyrightText: Intel Corporation
+
2//
+
3// SPDX-License-Identifier: BSD-3-Clause
+
4
+
5#pragma once
+
6
+
7#include <dr/shp/algorithms/matrix/local_gemm.hpp>
+
8#include <dr/shp/containers/distributed_dense_matrix.hpp>
+
9
+
10namespace dr::shp {
+
11
+
12template <typename T>
+
13void gemm(distributed_dense_matrix<T> &a, distributed_dense_matrix<T> &b,
+
14 distributed_dense_matrix<T> &c) {
+
15 gemm_buffered(a, b, c);
+
16}
+
17
+
18template <typename T>
+
19void gemm_inplace(distributed_dense_matrix<T> &a,
+
20 distributed_dense_matrix<T> &b,
+
21 distributed_dense_matrix<T> &c) {
+
22 // Matrix dimensions must match (algorithm requirement)
+
23 assert(c.shape()[0] == a.shape()[0]);
+
24 assert(c.shape()[1] == b.shape()[1]);
+
25 assert(a.shape()[1] == b.shape()[0]);
+
26
+
27 // Tile grid dimensions must match (implementation limitation)
+
28
+
29 assert(c.grid_shape()[0] == a.grid_shape()[0]);
+
30 assert(c.grid_shape()[1] == b.grid_shape()[1]);
+
31 assert(a.grid_shape()[1] == b.grid_shape()[0]);
+
32
+
33 std::vector<sycl::event> events;
+
34 events.reserve(c.grid_shape()[0] * c.grid_shape()[1] * a.grid_shape()[1]);
+
35
+
36 for (std::size_t i = 0; i < c.grid_shape()[0]; i++) {
+
37 for (std::size_t j = 0; j < c.grid_shape()[1]; j++) {
+
38 // For each tile of the output C matrix
+
39 auto &&c_tile = c.tile({i, j});
+
40
+
41 std::vector<sycl::event> local_events;
+
42 local_events.reserve(a.grid_shape()[1]);
+
43
+
44 std::size_t k_offset = i + j;
+
45 for (std::size_t k_ = 0; k_ < a.grid_shape()[1]; k_++) {
+
46 std::size_t k = (k_ + k_offset) % a.grid_shape()[1];
+
47
+
48 auto &&a_tile = a.tile({i, k});
+
49 auto &&b_tile = b.tile({k, j});
+
50
+
51 auto &&q = __detail::queue(dr::ranges::rank(c_tile));
+
52
+
53 auto e = __detail::local_gemm(q, __detail::local(a_tile),
+
54 __detail::local(b_tile),
+
55 __detail::local(c_tile), local_events);
+
56
+
57 local_events.push_back(e);
+
58 }
+
59
+
60 for (auto &&e : local_events) {
+
61 events.push_back(e);
+
62 }
+
63 }
+
64 }
+
65
+
66 __detail::wait(events);
+
67}
+
68
+
69template <typename T>
+
70void gemm_buffered(distributed_dense_matrix<T> &a,
+
71 distributed_dense_matrix<T> &b,
+
72 distributed_dense_matrix<T> &c) {
+
73 // Matrix dimensions must match (algorithm requirement)
+
74 assert(c.shape()[0] == a.shape()[0]);
+
75 assert(c.shape()[1] == b.shape()[1]);
+
76 assert(a.shape()[1] == b.shape()[0]);
+
77
+
78 // Tile grid dimensions must match (implementation limitation)
+
79
+
80 assert(c.grid_shape()[0] == a.grid_shape()[0]);
+
81 assert(c.grid_shape()[1] == b.grid_shape()[1]);
+
82 assert(a.grid_shape()[1] == b.grid_shape()[0]);
+
83
+
84 std::vector<std::thread> threads;
+
85
+
86 std::atomic<double> communication = 0;
+
87 std::atomic<double> compute = 0;
+
88
+
89 for (std::size_t i = 0; i < c.grid_shape()[0]; i++) {
+
90 for (std::size_t j = 0; j < c.grid_shape()[1]; j++) {
+
91 auto c_local = c.tile({i, j});
+
92
+
93 threads.emplace_back([c_local, i, j, &a, &b, &communication, &compute] {
+
94 auto &&q = __detail::queue(dr::ranges::rank(c_local));
+
95
+
96 std::size_t a_elem = a.tile_shape()[0] * a.tile_shape()[1];
+
97 std::size_t b_elem = b.tile_shape()[0] * b.tile_shape()[1];
+
98 std::size_t buffer_size = std::max(a_elem, b_elem);
+
99
+
100 dr::shp::device_allocator<T> gpu_allocator(q);
+
101 dr::shp::buffered_allocator buffered_allocator(gpu_allocator,
+
102 buffer_size, 2);
+
103 auto &&allocator = buffered_allocator;
+
104
+
105 std::size_t k_offset = i + j;
+
106
+
107 for (std::size_t k_ = 0; k_ < a.grid_shape()[1]; k_++) {
+
108 std::size_t k = (k_ + k_offset) % a.grid_shape()[1];
+
109
+
110 auto begin = std::chrono::high_resolution_clock::now();
+
111 auto a_tile = a.get_tile({i, k}, allocator);
+
112 auto b_tile = b.get_tile({k, j}, allocator);
+
113 auto end = std::chrono::high_resolution_clock::now();
+
114 double duration = std::chrono::duration<double>(end - begin).count();
+
115 communication += duration;
+
116
+
117 dr::shp::dense_matrix_view a_local(a_tile);
+
118 dr::shp::dense_matrix_view b_local(b_tile);
+
119
+
120 begin = std::chrono::high_resolution_clock::now();
+
121 __detail::local_gemm(q, __detail::local(a_local),
+
122 __detail::local(b_local),
+
123 __detail::local(c_local))
+
124 .wait();
+
125 end = std::chrono::high_resolution_clock::now();
+
126 duration = std::chrono::duration<double>(end - begin).count();
+
127 compute += duration;
+
128 }
+
129 });
+
130 }
+
131 }
+
132
+
133 for (auto &&t : threads) {
+
134 t.join();
+
135 }
+
136
+
137 bool debug_print = false;
+
138
+
139 if (debug_print) {
+
140 std::cout << "communication total: " << (double)communication << std::endl;
+
141 std::cout << "compute total: " << (double)compute << std::endl;
+
142 }
+
143}
+
144
+
145template <typename T>
+
146void gemm_buffered_async(distributed_dense_matrix<T> &a,
+
147 distributed_dense_matrix<T> &b,
+
148 distributed_dense_matrix<T> &c) {
+
149 // Matrix dimensions must match (algorithm requirement)
+
150 assert(c.shape()[0] == a.shape()[0]);
+
151 assert(c.shape()[1] == b.shape()[1]);
+
152 assert(a.shape()[1] == b.shape()[0]);
+
153
+
154 // Tile grid dimensions must match (implementation limitation)
+
155
+
156 assert(c.grid_shape()[0] == a.grid_shape()[0]);
+
157 assert(c.grid_shape()[1] == b.grid_shape()[1]);
+
158 assert(a.grid_shape()[1] == b.grid_shape()[0]);
+
159
+
160 std::vector<std::thread> threads;
+
161
+
162 std::atomic<double> issue = 0;
+
163 std::atomic<double> sync = 0;
+
164 std::atomic<double> compute = 0;
+
165
+
166 for (std::size_t i = 0; i < c.grid_shape()[0]; i++) {
+
167 for (std::size_t j = 0; j < c.grid_shape()[1]; j++) {
+
168 auto c_local = c.tile({i, j});
+
169
+
170 threads.emplace_back([c_local, i, j, &a, &b, &issue, &sync, &compute] {
+
171 auto &&q = __detail::queue(dr::ranges::rank(c_local));
+
172
+
173 std::size_t a_elem = a.tile_shape()[0] * a.tile_shape()[1];
+
174 std::size_t b_elem = b.tile_shape()[0] * b.tile_shape()[1];
+
175 std::size_t buffer_size = std::max(a_elem, b_elem);
+
176
+
177 dr::shp::device_allocator<T> gpu_allocator(q);
+
178 dr::shp::buffered_allocator buffered_allocator(gpu_allocator,
+
179 buffer_size, 4);
+
180 auto &&allocator = buffered_allocator;
+
181
+
182 std::size_t k_offset = i + j;
+
183
+
184 auto begin = std::chrono::high_resolution_clock::now();
+
185 auto a_f =
+
186 a.get_tile_async({i, k_offset % a.grid_shape()[1]}, allocator);
+
187 // a_f.wait();
+
188 auto b_f =
+
189 b.get_tile_async({k_offset % a.grid_shape()[1], j}, allocator);
+
190 // b_f.wait();
+
191 auto end = std::chrono::high_resolution_clock::now();
+
192 double duration = std::chrono::duration<double>(end - begin).count();
+
193 issue += duration;
+
194
+
195 for (std::size_t k_ = 0; k_ < a.grid_shape()[1]; k_++) {
+
196 std::size_t k = (k_ + k_offset) % a.grid_shape()[1];
+
197
+
198 auto begin = std::chrono::high_resolution_clock::now();
+
199 auto a_tile = a_f.get();
+
200 auto b_tile = b_f.get();
+
201 auto end = std::chrono::high_resolution_clock::now();
+
202 double duration = std::chrono::duration<double>(end - begin).count();
+
203 sync += duration;
+
204
+
205 dr::shp::dense_matrix_view a_local(a_tile);
+
206 dr::shp::dense_matrix_view b_local(b_tile);
+
207
+
208 if (k_ + 1 < a.grid_shape()[1]) {
+
209 begin = std::chrono::high_resolution_clock::now();
+
210 a_f = a.get_tile_async({i, (k + 1) % a.grid_shape()[1]}, allocator);
+
211 // a_f.wait();
+
212 b_f = b.get_tile_async({(k + 1) % a.grid_shape()[1], j}, allocator);
+
213 // b_f.wait();
+
214 end = std::chrono::high_resolution_clock::now();
+
215 duration = std::chrono::duration<double>(end - begin).count();
+
216 issue += duration;
+
217 }
+
218
+
219 begin = std::chrono::high_resolution_clock::now();
+
220 __detail::local_gemm(q, __detail::local(a_local),
+
221 __detail::local(b_local),
+
222 __detail::local(c_local))
+
223 .wait();
+
224 end = std::chrono::high_resolution_clock::now();
+
225 duration = std::chrono::duration<double>(end - begin).count();
+
226 compute += duration;
+
227 }
+
228 });
+
229 }
+
230 }
+
231
+
232 for (auto &&t : threads) {
+
233 t.join();
+
234 }
+
235
+
236 bool debug_print = false;
+
237
+
238 if (debug_print) {
+
239 std::cout << "sync total: " << (double)sync << std::endl;
+
240 std::cout << "issue total: " << (double)issue << std::endl;
+
241 std::cout << "compute total: " << (double)compute << std::endl;
+
242 }
+
243}
+
244
+
245} // namespace dr::shp
+
Definition: allocators.hpp:74
+
Definition: dense_matrix_view.hpp:21
+
Definition: allocators.hpp:20
+
+ + + + diff --git a/doxygen/gemv_8hpp_source.html b/doxygen/gemv_8hpp_source.html new file mode 100644 index 0000000000..8036202d99 --- /dev/null +++ b/doxygen/gemv_8hpp_source.html @@ -0,0 +1,299 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/algorithms/matrix/gemv.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
gemv.hpp
+
+
+
1// SPDX-FileCopyrightText: Intel Corporation
+
2//
+
3// SPDX-License-Identifier: BSD-3-Clause
+
4
+
5#pragma once
+
6
+
7#include <dr/detail/index.hpp>
+
8#include <dr/detail/ranges_shim.hpp>
+
9
+
10#include <dr/shp/algorithms/matrix/local_gemv.hpp>
+
11#include <dr/shp/containers/duplicated_vector.hpp>
+
12#include <dr/shp/containers/sparse_matrix.hpp>
+
13#include <dr/shp/device_vector.hpp>
+
14#include <dr/shp/distributed_span.hpp>
+
15#include <dr/shp/util.hpp>
+
16
+
17namespace dr::shp {
+
18
+
19template <dr::distributed_range C, typename T, typename I,
+ +
21void flat_gemv(C &&c, dr::shp::sparse_matrix<T, I> &a, B &&b) {
+
22 assert(c.size() == b.size());
+
23 assert(a.shape()[1] == b.size());
+
24 assert(a.grid_shape()[0] == c.segments().size());
+
25 assert(a.grid_shape()[1] == 1);
+
26
+
27 auto &&devices = dr::shp::devices();
+
28
+
29 using b_scalar_type = rng::range_value_t<B>;
+
30
+
31 using local_vector_type =
+
32 dr::shp::device_vector<b_scalar_type,
+ +
34
+
35 std::vector<local_vector_type> local_b;
+
36 std::vector<sycl::event> copy_events;
+
37 std::vector<sycl::event> comp_events;
+
38
+
39 for (std::size_t i = 0; i < devices.size(); i++) {
+
40 dr::shp::device_allocator<T> allocator(dr::shp::context(), devices[i]);
+
41 local_b.push_back(local_vector_type(b.size(), allocator, i));
+
42 }
+
43
+
44 for (auto &&l_b : local_b) {
+
45 auto event =
+
46 dr::shp::copy_async(b.begin(), b.end(), dr::ranges::local(l_b.begin()));
+
47 copy_events.push_back(event);
+
48 }
+
49
+
50 for (std::size_t i = 0; i < a.grid_shape()[0]; i++) {
+
51 auto a_tile = a.tile(dr::index<I>(i, 0));
+
52
+
53 auto a_iter = a_tile.begin();
+
54 auto b_iter = dr::ranges::local(local_b[i].begin());
+
55 auto c_iter = dr::ranges::local(c.segments()[i].begin());
+
56
+
57 auto &&q = __detail::queue(a_tile.rank());
+
58
+
59 auto event = q.submit([&](auto &&h) {
+
60 h.depends_on(copy_events[a_tile.rank()]);
+
61 h.parallel_for(a_tile.size(), [=](auto idx) {
+
62 auto &&[index, a_v] = *(a_iter + idx);
+
63 auto &&[i, k] = index;
+
64 auto &&b_v = *(b_iter + k);
+
65 auto &&c_v = *(c_iter + i);
+
66 sycl::atomic_ref<T, sycl::memory_order::relaxed,
+
67 sycl::memory_scope::device>
+
68 c_ref(c_v);
+
69 c_ref += a_v * b_v;
+
70 });
+
71 });
+
72 comp_events.push_back(event);
+
73 }
+
74
+
75 __detail::wait(comp_events);
+
76}
+
77
+
78template <dr::distributed_range C, typename T, typename I,
+ +
80void gemv(C &&c, dr::shp::sparse_matrix<T, I> &a, B &&b,
+
81 shp::duplicated_vector<rng::range_value_t<B>> &scratch) {
+
82 assert(c.size() == b.size());
+
83 assert(a.shape()[1] == b.size());
+
84 assert(a.grid_shape()[0] == c.segments().size());
+
85 assert(a.grid_shape()[1] == 1);
+
86
+
87 auto &&b_duplicated = scratch;
+
88
+
89 std::vector<sycl::event> copy_events;
+
90 std::vector<sycl::event> comp_events;
+
91 copy_events.reserve(shp::nprocs());
+
92 comp_events.reserve(a.grid_shape()[0]);
+
93
+
94 for (std::size_t i = 0; i < shp::nprocs(); i++) {
+
95 auto &&l_b = b_duplicated.local_vector(i);
+
96 auto event = dr::shp::copy_async(b.begin(), b.end(), l_b.begin());
+
97 copy_events.push_back(event);
+
98 }
+
99
+
100 for (std::size_t i = 0; i < a.grid_shape()[0]; i++) {
+
101 auto a_tile = a.tile(dr::index<I>(i, 0));
+
102
+
103 auto b_iter =
+
104 dr::ranges::local(b_duplicated.local_vector(a_tile.rank()).begin());
+
105 auto c_iter = dr::ranges::local(c.segments()[i].begin());
+
106
+
107 auto &&q = __detail::queue(a_tile.rank());
+
108
+
109 auto event = __detail::local_gemv(q, a_tile, b_iter, c_iter,
+
110 {copy_events[a_tile.rank()]});
+
111 comp_events.push_back(event);
+
112 }
+
113
+
114 __detail::wait(comp_events);
+
115}
+
116
+
117template <dr::distributed_range C, typename T, typename I,
+ +
119void gemv(C &&c, dr::shp::sparse_matrix<T, I> &a, B &&b) {
+ +
121
+
122 gemv(c, a, b, b_duplicated);
+
123}
+
124
+
125template <dr::distributed_range C, typename T, typename I,
+ +
127void gemv_square(C &&c, dr::shp::sparse_matrix<T, I> &a, B &&b) {
+
128 assert(a.shape()[0] == c.size());
+
129 assert(a.shape()[1] == b.size());
+
130 assert(a.grid_shape()[0] == c.segments().size());
+
131 assert(a.grid_shape()[1] == b.segments().size());
+
132
+
133 std::vector<sycl::event> events;
+
134
+
135 for (std::size_t i = 0; i < a.grid_shape()[0]; i++) {
+
136 std::size_t k_offset = i;
+
137 for (std::size_t k_ = 0; k_ < a.grid_shape()[1]; k_++) {
+
138 std::size_t k = (k_ + k_offset) % a.grid_shape()[1];
+
139 auto a_tile = a.tile(dr::index<I>(i, k));
+
140 auto b_segment = b.segments()[k];
+
141 auto c_segment = c.segments()[i];
+
142
+
143 auto b_iter = dr::ranges::local(b_segment.begin());
+
144 auto c_iter = dr::ranges::local(c_segment.begin());
+
145
+
146 auto &&q = __detail::queue(a_tile.rank());
+
147
+
148 auto event = __detail::custom_gemv(q, a_tile, b_iter, c_iter);
+
149 events.push_back(event);
+
150 }
+
151 }
+
152
+
153 __detail::wait(events);
+
154}
+
155
+
156template <dr::distributed_range C, typename T, typename I,
+ +
158void gemv_square_copy(C &&c, dr::shp::sparse_matrix<T, I> &a, B &&b) {
+
159 assert(a.shape()[0] == c.size());
+
160 assert(a.shape()[1] == b.size());
+
161 assert(a.grid_shape()[0] == c.segments().size());
+
162 assert(a.grid_shape()[1] == b.segments().size());
+
163
+
164 auto &&devices = dr::shp::devices();
+
165
+
166 using b_scalar_type = rng::range_value_t<B>;
+
167
+
168 using local_vector_type =
+
169 dr::shp::device_vector<b_scalar_type,
+ +
171
+
172 std::vector<local_vector_type> local_b;
+
173 std::vector<sycl::event> events;
+
174
+
175 local_b.reserve(a.grid_shape()[0]);
+
176
+
177 for (std::size_t i = 0; i < a.grid_shape()[0]; i++) {
+ +
179 dr::shp::context(), devices[a.tile(dr::index<I>(i, 0)).rank()]);
+
180 local_b.emplace_back(b.size(), allocator,
+
181 a.tile(dr::index<I>(i, 0)).rank());
+
182 }
+
183
+
184 for (std::size_t i = 0; i < a.grid_shape()[0]; i++) {
+
185 std::size_t k_offset = i;
+
186 for (std::size_t k_ = 0; k_ < a.grid_shape()[1]; k_++) {
+
187 std::size_t k = (k_ + k_offset) % a.grid_shape()[1];
+
188 auto a_tile = a.tile({i, k});
+
189 auto b_iter = local_b[i].begin() + (k * a.tile_shape()[1]);
+
190 auto c_iter = c.segments()[i].begin();
+
191
+
192 auto &&b_segment = b.segments()[k];
+
193 auto &&q = __detail::queue(a_tile.rank());
+
194
+
195 auto ce =
+
196 dr::shp::copy_async(q, b_segment.begin(), b_segment.end(), b_iter);
+
197
+
198 auto event = __detail::custom_gemv(q, a_tile, b_iter.local(),
+
199 c_iter.local(), {ce});
+
200
+
201 events.push_back(event);
+
202 }
+
203 }
+
204
+
205 __detail::wait(events);
+
206}
+
207
+
208} // namespace dr::shp
+
Definition: index.hpp:34
+
Definition: allocators.hpp:20
+
Definition: device_vector.hpp:13
+
Definition: duplicated_vector.hpp:13
+
Definition: sparse_matrix.hpp:126
+
Definition: concepts.hpp:20
+
+ + + + diff --git a/doxygen/generate__random_8hpp_source.html b/doxygen/generate__random_8hpp_source.html new file mode 100644 index 0000000000..7182eac637 --- /dev/null +++ b/doxygen/generate__random_8hpp_source.html @@ -0,0 +1,178 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/util/generate_random.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
generate_random.hpp
+
+
+
1// SPDX-FileCopyrightText: Intel Corporation
+
2//
+
3// SPDX-License-Identifier: BSD-3-Clause
+
4
+
5#pragma once
+
6
+
7#include <concepts>
+
8#include <dr/shp/views/csr_matrix_view.hpp>
+
9#include <map>
+
10#include <random>
+
11
+
12namespace dr::shp {
+
13
+
14namespace {
+
15
+
16template <typename T> struct uniform_distribution {
+
17 using type = std::uniform_int_distribution<T>;
+
18};
+
19
+
20template <std::floating_point T> struct uniform_distribution<T> {
+
21 using type = std::uniform_real_distribution<T>;
+
22};
+
23
+
24template <typename T>
+
25using uniform_distribution_t = typename uniform_distribution<T>::type;
+
26
+
27} // namespace
+
28
+
29template <typename T = float, std::integral I = std::size_t>
+
30auto generate_random_csr(dr::index<I> shape, double density = 0.01,
+
31 unsigned int seed = 0) {
+
32
+
33 assert(density >= 0.0 && density < 1.0);
+
34
+
35 std::map<std::pair<I, I>, T> tuples;
+
36
+
37 std::size_t nnz = density * shape[0] * shape[1];
+
38
+
39 std::mt19937 gen(seed);
+
40 std::uniform_int_distribution<I> row(0, shape[0] - 1);
+
41 std::uniform_int_distribution<I> column(0, shape[1] - 1);
+
42
+
43 uniform_distribution_t<T> value_gen(0, 1);
+
44
+
45 while (tuples.size() < nnz) {
+
46 auto i = row(gen);
+
47 auto j = column(gen);
+
48 if (tuples.find({i, j}) == tuples.end()) {
+
49 T value = value_gen(gen);
+
50 tuples.insert({{i, j}, value});
+
51 }
+
52 }
+
53
+
54 T *values = new T[nnz];
+
55 I *rowptr = new I[shape[0] + 1];
+
56 I *colind = new I[nnz];
+
57
+
58 rowptr[0] = 0;
+
59
+
60 std::size_t r = 0;
+
61 std::size_t c = 0;
+
62 for (auto iter = tuples.begin(); iter != tuples.end(); ++iter) {
+
63 auto &&[index, value] = *iter;
+
64 auto &&[i, j] = index;
+
65
+
66 values[c] = value;
+
67 colind[c] = j;
+
68
+
69 while (r < i) {
+
70 if (r + 1 > shape[0]) {
+
71 // TODO: exception?
+
72 // throw std::runtime_error("csr_matrix_impl_: given invalid matrix");
+
73 }
+
74 rowptr[r + 1] = c;
+
75 r++;
+
76 }
+
77 c++;
+
78
+
79 if (c > nnz) {
+
80 // TODO: exception?
+
81 // throw std::runtime_error("csr_matrix_impl_: given invalid matrix");
+
82 }
+
83 }
+
84
+
85 for (; r < shape[0]; r++) {
+
86 rowptr[r + 1] = nnz;
+
87 }
+
88
+
89 return csr_matrix_view(values, rowptr, colind, shape, nnz, 0);
+
90}
+
91
+
92} // namespace dr::shp
+
Definition: index.hpp:34
+
+ + + + diff --git a/doxygen/global_8hpp_source.html b/doxygen/global_8hpp_source.html new file mode 100644 index 0000000000..dd4192a30e --- /dev/null +++ b/doxygen/global_8hpp_source.html @@ -0,0 +1,334 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/global.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
global.hpp
+
+
+
1// SPDX-FileCopyrightText: Intel Corporation
+
2//
+
3// SPDX-License-Identifier: BSD-3-Clause
+
4
+
5#pragma once
+
6
+
7#include <unistd.h>
+
8#ifdef DRISHMEM
+
9#include <ishmem.h>
+
10#endif
+
11#include <dr/detail/sycl_utils.hpp>
+
12#include <dr/mhp/sycl_support.hpp>
+
13
+
14namespace dr::mhp {
+
15
+
16namespace __detail {
+
17
+ +
19 void init() {
+
20 void *data = nullptr;
+
21 std::size_t size = 0;
+
22 if (comm_.rank() == 0) {
+
23 root_scratchpad_.resize(scratchpad_size_);
+
24 data = root_scratchpad_.data();
+
25 size = rng::size(root_scratchpad_) * sizeof(root_scratchpad_[0]);
+
26 }
+
27 root_win_.create(comm_, data, size);
+
28 root_win_.fence();
+
29 }
+
30
+ +
32 root_win_.fence();
+
33 root_win_.free();
+
34 }
+
35
+
36 global_context() { init(); }
+
37#ifdef SYCL_LANGUAGE_VERSION
+
38 global_context(sycl::queue q, sycl::usm::alloc kind)
+
39 : sycl_queue_(q), sycl_mem_kind_(kind), dpl_policy_(q), use_sycl_(true) {
+
40 init();
+
41 }
+
42
+
43 sycl::queue sycl_queue_;
+
44 sycl::usm::alloc sycl_mem_kind_;
+
45 decltype(oneapi::dpl::execution::make_device_policy(
+
46 std::declval<sycl::queue>())) dpl_policy_;
+
47#endif
+
48
+
49 static constexpr std::size_t scratchpad_size_ = 1000000;
+
50 bool use_sycl_ = false;
+
51 dr::communicator comm_;
+
52 // container owns the window, we just track MPI handle
+
53 std::set<MPI_Win> wins_;
+
54 dr::rma_window root_win_;
+
55 std::vector<char> root_scratchpad_;
+
56};
+
57
+
58inline global_context *global_context_ = nullptr;
+
59
+
60inline bool finalized_ = false;
+
61inline bool we_initialized_mpi_ = false;
+
62
+
63inline auto gcontext() {
+
64 assert(global_context_ && "Call mhp::init() after MPI_Init()");
+
65 return global_context_;
+
66}
+
67
+
68// Initialize MPI if not already initialized.
+
69inline void initialize_mpi() {
+
70 int initialized;
+
71 MPI_Initialized(&initialized);
+
72 if (!initialized) {
+
73 MPI_Init(nullptr, nullptr);
+
74 we_initialized_mpi_ = true;
+
75 }
+
76
+
77#ifdef DRISHMEM
+
78 ishmem_init();
+
79#endif
+
80}
+
81
+
82// Finalize MPI *if* we initialized it and it has not been finalized.
+
83inline void finalize_mpi() {
+
84 int finalized;
+
85 MPI_Finalized(&finalized);
+
86
+
87 if (we_initialized_mpi_ && !finalized) {
+
88 MPI_Finalize();
+
89 }
+
90
+
91#ifdef DRISHMEM
+
92 ishmem_finalize();
+
93#endif
+
94}
+
95
+
96} // namespace __detail
+
97
+
98inline auto root_win() { return __detail::gcontext()->root_win_; }
+
99inline dr::communicator &default_comm() { return __detail::gcontext()->comm_; }
+
100
+
101inline bool finalized() { return __detail::finalized_; }
+
102inline std::size_t rank() { return default_comm().rank(); }
+
103inline std::size_t nprocs() { return default_comm().size(); } // dr-style ignore
+
104
+
105inline std::set<MPI_Win> &active_wins() { return __detail::gcontext()->wins_; }
+
106
+
107inline void barrier() { __detail::gcontext()->comm_.barrier(); }
+
108inline auto use_sycl() { return __detail::gcontext()->use_sycl_; }
+
109
+
110inline void fence() {
+
111 dr::drlog.debug("fence\n");
+
112 for (auto win : __detail::gcontext()->wins_) {
+
113 MPI_Win_fence(0, win);
+
114 }
+
115}
+
116
+
117inline void init() {
+
118 __detail::initialize_mpi();
+
119 assert(__detail::global_context_ == nullptr &&
+
120 "Do not call mhp::init() more than once");
+
121 __detail::global_context_ = new __detail::global_context;
+
122}
+
123
+
124inline void finalize() {
+
125 assert(__detail::global_context_ != nullptr);
+
126 delete __detail::global_context_;
+
127 __detail::global_context_ = nullptr;
+
128 __detail::finalize_mpi();
+
129 __detail::finalized_ = true;
+
130}
+
131
+
132inline std::string hostname() {
+
133 constexpr std::size_t MH = 2048;
+
134 char buf[MH + 1];
+
135 gethostname(buf, MH);
+
136 return std::string(buf);
+
137}
+
138
+
139#ifdef SYCL_LANGUAGE_VERSION
+
140inline sycl::queue &sycl_queue() { return __detail::gcontext()->sycl_queue_; }
+
141inline auto sycl_mem_kind() { return __detail::gcontext()->sycl_mem_kind_; }
+
142inline auto dpl_policy() { return __detail::gcontext()->dpl_policy_; }
+
143
+
144inline sycl::queue select_queue(bool check_different_devices = false) {
+
145 std::vector<sycl::device> devices;
+
146
+
147 auto root_devices = sycl::platform().get_devices();
+
148
+
149 for (auto &&root_device : root_devices) {
+
150 dr::drlog.debug("Root device: {}\n",
+
151 root_device.get_info<sycl::info::device::name>());
+
152 if (dr::__detail::partitionable(root_device)) {
+
153 auto subdevices = root_device.create_sub_devices<
+
154 sycl::info::partition_property::partition_by_affinity_domain>(
+
155 sycl::info::partition_affinity_domain::numa);
+
156 assert(rng::size(subdevices) > 0);
+
157
+
158 for (auto &&subdevice : subdevices) {
+
159 dr::drlog.debug(" add subdevice: {}\n",
+
160 subdevice.get_info<sycl::info::device::name>());
+
161 devices.push_back(subdevice);
+
162 }
+
163 } else {
+
164 dr::drlog.debug(" add root device: {}\n",
+
165 root_device.get_info<sycl::info::device::name>());
+
166 devices.push_back(root_device);
+
167 }
+
168 }
+
169
+
170 assert(rng::size(devices) > 0);
+
171 const auto my_rank = dr::communicator(MPI_COMM_WORLD).rank();
+
172 assert(!check_different_devices || my_rank < rng::size(devices));
+
173
+
174 // Round robin assignment of devices to ranks
+
175 return sycl::queue(devices[my_rank % rng::size(devices)]);
+
176}
+
177
+
178inline void init(sycl::queue q,
+
179 sycl::usm::alloc kind = sycl::usm::alloc::shared) {
+
180 __detail::initialize_mpi();
+
181 assert(__detail::global_context_ == nullptr &&
+
182 "Do not call mhp::init() more than once");
+
183 __detail::global_context_ = new __detail::global_context(q, kind);
+
184}
+
185
+
186template <typename Selector = decltype(sycl::default_selector_v)>
+
187inline void init(Selector &&selector = sycl::default_selector_v) {
+
188 __detail::initialize_mpi();
+
189 sycl::queue q = mhp::select_queue();
+
190 init(q);
+
191}
+
192
+
193#else // SYCL_LANGUAGE_VERSION
+
194inline auto sycl_queue() {
+
195 assert(false);
+
196 return 0;
+
197}
+
198inline const auto &dpl_policy() {
+
199 assert(false);
+
200 return std::execution::seq;
+
201}
+
202
+
203#endif // SYCL_LANGUAGE_VERSION
+
204
+
205} // namespace dr::mhp
+
206
+
207namespace dr::mhp::__detail {
+
208
+
209template <typename T> class allocator {
+
210
+
211public:
+
212 T *allocate(std::size_t sz) {
+
213 if (sz == 0) {
+
214 return nullptr;
+
215 }
+
216#ifdef SYCL_LANGUAGE_VERSION
+
217 if (mhp::use_sycl()) {
+
218 return sycl::malloc<T>(sz, sycl_queue(), sycl_mem_kind());
+
219 }
+
220#endif
+
221
+
222 return std_allocator_.allocate(sz);
+
223 }
+
224
+
225 void deallocate(T *ptr, std::size_t sz) {
+
226 if (sz == 0) {
+
227 assert(ptr == nullptr);
+
228 return;
+
229 }
+
230 assert(ptr != nullptr);
+
231#ifdef SYCL_LANGUAGE_VERSION
+
232 if (mhp::use_sycl()) {
+
233 sycl::free(ptr, sycl_queue());
+
234 return;
+
235 }
+
236#endif
+
237
+
238 std_allocator_.deallocate(ptr, sz);
+
239 }
+
240
+
241private:
+
242 std::allocator<T> std_allocator_;
+
243};
+
244
+
245} // namespace dr::mhp::__detail
+
Definition: communicator.hpp:9
+
Definition: global.hpp:209
+
Definition: communicator.hpp:185
+
Definition: global.hpp:18
+
+ + + + diff --git a/doxygen/graph_legend.html b/doxygen/graph_legend.html new file mode 100644 index 0000000000..e0d50dc038 --- /dev/null +++ b/doxygen/graph_legend.html @@ -0,0 +1,141 @@ + + + + + + + +Distributed Ranges: Graph Legend + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Graph Legend
+
+
+

This page explains how to interpret the graphs that are generated by doxygen.

+

Consider the following example:

/*! Invisible class because of truncation */
+
class Invisible { };
+
+
/*! Truncated class, inheritance relation is hidden */
+
class Truncated : public Invisible { };
+
+
/* Class not documented with doxygen comments */
+
class Undocumented { };
+
+
/*! Class that is inherited using public inheritance */
+
class PublicBase : public Truncated { };
+
+
/*! A template class */
+
template<class T> class Templ { };
+
+
/*! Class that is inherited using protected inheritance */
+
class ProtectedBase { };
+
+
/*! Class that is inherited using private inheritance */
+
class PrivateBase { };
+
+
/*! Class that is used by the Inherited class */
+
class Used { };
+
+
/*! Super class that inherits a number of other classes */
+
class Inherited : public PublicBase,
+
protected ProtectedBase,
+
private PrivateBase,
+
public Undocumented,
+
public Templ<int>
+
{
+
private:
+
Used *m_usedClass;
+
};
+

This will result in the following graph:

+

The boxes in the above graph have the following meaning:

+
    +
  • +A filled gray box represents the struct or class for which the graph is generated.
  • +
  • +A box with a black border denotes a documented struct or class.
  • +
  • +A box with a gray border denotes an undocumented struct or class.
  • +
  • +A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
  • +
+

The arrows have the following meaning:

+
    +
  • +A blue arrow is used to visualize a public inheritance relation between two classes.
  • +
  • +A dark green arrow is used for protected inheritance.
  • +
  • +A dark red arrow is used for private inheritance.
  • +
  • +A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible.
  • +
  • +A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance.
  • +
+
+ + + + diff --git a/doxygen/graph_legend.md5 b/doxygen/graph_legend.md5 new file mode 100644 index 0000000000..76a6899d6e --- /dev/null +++ b/doxygen/graph_legend.md5 @@ -0,0 +1 @@ +68a0ee42d4e53d2fb70be66ebb5b1abe \ No newline at end of file diff --git a/doxygen/graph_legend.png b/doxygen/graph_legend.png new file mode 100644 index 0000000000000000000000000000000000000000..8c1424706c4849a1e0c951a6170a47be9345e358 GIT binary patch literal 20093 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 + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/halo.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
halo.hpp
+
+
+
1// SPDX-FileCopyrightText: Intel Corporation
+
2//
+
3// SPDX-License-Identifier: BSD-3-Clause
+
4
+
5#pragma once
+
6
+
7#include <dr/mhp/global.hpp>
+
8#include <dr/mhp/sycl_support.hpp>
+
9
+
10namespace dr::mhp {
+
11
+
12template <typename Group> class halo_impl {
+
13 using T = typename Group::element_type;
+
14 using Memory = typename Group::memory_type;
+
15
+
16public:
+
17 using group_type = Group;
+
18
+
19 // Destructor frees buffer_, so cannot copy
+
20 halo_impl(const halo_impl &) = delete;
+
21 halo_impl operator=(const halo_impl &) = delete;
+
22
+
24 halo_impl(communicator comm, const std::vector<Group> &owned_groups,
+
25 const std::vector<Group> &halo_groups,
+
26 const Memory &memory = Memory())
+
27 : comm_(comm), halo_groups_(halo_groups), owned_groups_(owned_groups),
+
28 memory_(memory) {
+
29 drlog.debug(nostd::source_location::current(),
+
30 "Halo constructed with {}/{} owned/halo\n",
+
31 rng::size(owned_groups), rng::size(halo_groups));
+
32 buffer_size_ = 0;
+
33 std::size_t i = 0;
+
34 std::vector<std::size_t> buffer_index;
+
35 for (auto &g : owned_groups_) {
+
36 buffer_index.push_back(buffer_size_);
+
37 g.request_index = i++;
+
38 buffer_size_ += g.buffer_size();
+
39 map_.push_back(&g);
+
40 }
+
41 for (auto &g : halo_groups_) {
+
42 buffer_index.push_back(buffer_size_);
+
43 g.request_index = i++;
+
44 buffer_size_ += g.buffer_size();
+
45 map_.push_back(&g);
+
46 }
+
47 buffer_ = memory_.allocate(buffer_size_);
+
48 assert(buffer_ != nullptr);
+
49 i = 0;
+
50 for (auto &g : owned_groups_) {
+
51 g.buffer = &buffer_[buffer_index[i++]];
+
52 }
+
53 for (auto &g : halo_groups_) {
+
54 g.buffer = &buffer_[buffer_index[i++]];
+
55 }
+
56 requests_.resize(i);
+
57 }
+
58
+ +
61 drlog.debug("Halo exchange begin\n");
+
62 receive(halo_groups_);
+
63 send(owned_groups_);
+
64 }
+
65
+ + +
69 drlog.debug("Halo exchange finalize\n");
+
70 }
+
71
+
72 void exchange() {
+ + +
75 }
+
76
+
78 void reduce_begin() {
+
79 receive(owned_groups_);
+
80 send(halo_groups_);
+
81 }
+
82
+
84 void reduce_finalize(const auto &op) {
+
85 for (int pending = rng::size(requests_); pending > 0; pending--) {
+
86 int completed;
+
87 MPI_Waitany(rng::size(requests_), requests_.data(), &completed,
+
88 MPI_STATUS_IGNORE);
+
89 drlog.debug("Completed: {}\n", completed);
+
90 auto &g = *map_[completed];
+
91 if (g.receive && g.buffered) {
+
92 g.unpack(op);
+
93 }
+
94 }
+
95 }
+
96
+ +
99 for (int pending = rng::size(requests_); pending > 0; pending--) {
+
100 int completed;
+
101 MPI_Waitany(rng::size(requests_), requests_.data(), &completed,
+
102 MPI_STATUS_IGNORE);
+
103 drlog.debug("Completed: {}\n", completed);
+
104 auto &g = *map_[completed];
+
105 if (g.receive && g.buffered) {
+
106 g.unpack();
+
107 }
+
108 }
+
109 }
+
110
+
111 struct second_op {
+
112 T operator()(T &a, T &b) const { return b; }
+
113 } second;
+
114
+
115 struct plus_op {
+
116 T operator()(T &a, T &b) const { return a + b; }
+
117 } plus;
+
118
+
119 struct max_op {
+
120 T operator()(T &a, T &b) const { return std::max(a, b); }
+
121 } max;
+
122
+
123 struct min_op {
+
124 T operator()(T &a, T &b) const { return std::min(a, b); }
+
125 } min;
+
126
+ +
128 T operator()(T &a, T &b) const { return a * b; }
+
129 } multiplies;
+
130
+
131 ~halo_impl() {
+
132 if (buffer_) {
+
133 memory_.deallocate(buffer_, buffer_size_);
+
134 buffer_ = nullptr;
+
135 }
+
136 }
+
137
+
138private:
+
139 void send(std::vector<Group> &sends) {
+
140 for (auto &g : sends) {
+
141 g.pack();
+
142 g.receive = false;
+
143 drlog.debug("Sending: {}\n", g.request_index);
+
144 comm_.isend(g.data_pointer(), g.data_size(), g.rank(), g.tag(),
+
145 &requests_[g.request_index]);
+
146 }
+
147 }
+
148
+
149 void receive(std::vector<Group> &receives) {
+
150 for (auto &g : receives) {
+
151 g.receive = true;
+
152 drlog.debug("Receiving: {}\n", g.request_index);
+
153 comm_.irecv(g.data_pointer(), g.data_size(), g.rank(), g.tag(),
+
154 &requests_[g.request_index]);
+
155 }
+
156 }
+
157
+
158 communicator comm_;
+
159 std::vector<Group> halo_groups_, owned_groups_;
+
160 T *buffer_ = nullptr;
+
161 std::size_t buffer_size_;
+
162 std::vector<MPI_Request> requests_;
+
163 std::vector<Group *> map_;
+
164 Memory memory_;
+
165};
+
166
+
167template <typename T, typename Memory = default_memory<T>> class index_group {
+
168public:
+
169 using element_type = T;
+
170 using memory_type = Memory;
+
171 T *buffer = nullptr;
+
172 std::size_t request_index;
+
173 bool receive;
+
174 bool buffered;
+
175
+
177 index_group(T *data, std::size_t rank,
+
178 const std::vector<std::size_t> &indices, const Memory &memory)
+
179 : memory_(memory), data_(data), rank_(rank) {
+
180 buffered = false;
+
181 for (std::size_t i = 0; i < rng::size(indices) - 1; i++) {
+
182 buffered = buffered || (indices[i + 1] - indices[i] != 1);
+
183 }
+
184 indices_size_ = rng::size(indices);
+
185 indices_ = memory_.template allocate<std::size_t>(indices_size_);
+
186 assert(indices_ != nullptr);
+
187 memory_.memcpy(indices_, indices.data(),
+
188 indices_size_ * sizeof(std::size_t));
+
189 }
+
190
+
191 index_group(const index_group &o)
+
192 : buffer(o.buffer), request_index(o.request_index), receive(o.receive),
+
193 buffered(o.buffered), memory_(o.memory_), data_(o.data_),
+
194 rank_(o.rank_), indices_size_(o.indices_size_), tag_(o.tag_) {
+
195 indices_ = memory_.template allocate<std::size_t>(indices_size_);
+
196 assert(indices_ != nullptr);
+
197 memory_.memcpy(indices_, o.indices_, indices_size_ * sizeof(std::size_t));
+
198 }
+
199
+
200 void unpack(const auto &op) {
+
201 T *dpt = data_;
+
202 auto n = indices_size_;
+
203 auto *ipt = indices_;
+
204 auto *b = buffer;
+
205 memory_.offload([=]() {
+
206 for (std::size_t i = 0; i < n; i++) {
+
207 dpt[ipt[i]] = op(dpt[ipt[i]], b[i]);
+
208 }
+
209 });
+
210 }
+
211
+
212 void pack() {
+
213 T *dpt = data_;
+
214 auto n = indices_size_;
+
215 auto *ipt = indices_;
+
216 auto *b = buffer;
+
217 memory_.offload([=]() {
+
218 for (std::size_t i = 0; i < n; i++) {
+
219 b[i] = dpt[ipt[i]];
+
220 }
+
221 });
+
222 }
+
223
+
224 std::size_t buffer_size() {
+
225 if (buffered) {
+
226 return indices_size_;
+
227 }
+
228 return 0;
+
229 }
+
230
+
231 T *data_pointer() {
+
232 if (buffered) {
+
233 return buffer;
+
234 } else {
+
235 return &data_[indices_[0]];
+
236 }
+
237 }
+
238
+
239 std::size_t data_size() { return indices_size_; }
+
240
+
241 std::size_t rank() { return rank_; }
+
242 auto tag() { return tag_; }
+
243
+
244 ~index_group() {
+
245 if (indices_) {
+
246 memory_.template deallocate<std::size_t>(indices_, indices_size_);
+
247 indices_ = nullptr;
+
248 }
+
249 }
+
250
+
251private:
+
252 Memory memory_;
+
253 T *data_ = nullptr;
+
254 std::size_t rank_;
+
255 std::size_t indices_size_;
+
256 std::size_t *indices_;
+
257 communicator::tag tag_ = communicator::tag::halo_index;
+
258};
+
259
+
260template <typename T, typename Memory>
+
261using unstructured_halo_impl = halo_impl<index_group<T, Memory>>;
+
262
+
263template <typename T, typename Memory = default_memory<T>>
+
264class unstructured_halo : public unstructured_halo_impl<T, Memory> {
+
265public:
+ +
267 using index_map = std::pair<std::size_t, std::vector<std::size_t>>;
+
268
+ +
273 const std::vector<index_map> &owned,
+
274 const std::vector<index_map> &halo,
+
275 const Memory &memory = Memory())
+
276 : unstructured_halo_impl<T, Memory>(
+
277 comm, make_groups(comm, data, owned, memory),
+
278 make_groups(comm, data, halo, memory), memory) {}
+
279
+
280private:
+
281 static std::vector<group_type> make_groups(communicator comm, T *data,
+
282 const std::vector<index_map> &map,
+
283 const Memory &memory) {
+
284 std::vector<group_type> groups;
+
285 for (auto const &[rank, indices] : map) {
+
286 groups.emplace_back(data, rank, indices, memory);
+
287 }
+
288 return groups;
+
289 }
+
290};
+
291
+
292template <typename T, typename Memory = default_memory<T>> class span_group {
+
293public:
+
294 using element_type = T;
+
295 using memory_type = Memory;
+
296 T *buffer = nullptr;
+
297 std::size_t request_index = 0;
+
298 bool receive = false;
+
299 bool buffered = false;
+
300
+
301 span_group(std::span<T> data, std::size_t rank, communicator::tag tag)
+
302 : data_(data), rank_(rank), tag_(tag) {
+
303#ifdef SYCL_LANGUAGE_VERSION
+
304 if (use_sycl() && sycl_mem_kind() == sycl::usm::alloc::shared) {
+
305 buffered = true;
+
306 }
+
307#endif
+
308 }
+
309
+
310 void unpack() {
+
311 if (buffered) {
+
312 if (mhp::use_sycl()) {
+
313 __detail::sycl_copy(buffer, buffer + rng::size(data_), data_.data());
+
314 } else {
+
315 std::copy(buffer, buffer + rng::size(data_), data_.data());
+
316 }
+
317 }
+
318 }
+
319
+
320 void pack() {
+
321 if (buffered) {
+
322 if (mhp::use_sycl()) {
+
323 __detail::sycl_copy(data_.data(), data_.data() + rng::size(data_),
+
324 buffer);
+
325 } else {
+
326 std::copy(data_.begin(), data_.end(), buffer);
+
327 }
+
328 }
+
329 }
+
330 std::size_t buffer_size() { return rng::size(data_); }
+
331
+
332 std::size_t data_size() { return rng::size(data_); }
+
333
+
334 T *data_pointer() {
+
335 if (buffered) {
+
336 return buffer;
+
337 } else {
+
338 return data_.data();
+
339 }
+
340 }
+
341
+
342 std::size_t rank() { return rank_; }
+
343
+
344 auto tag() { return tag_; }
+
345
+
346private:
+
347 Memory memory_;
+
348 std::span<T> data_;
+
349 std::size_t rank_;
+
350 communicator::tag tag_ = communicator::tag::invalid;
+
351 ;
+
352};
+
353
+ +
355 std::size_t prev = 0, next = 0;
+
356 bool periodic = false;
+
357};
+
358
+
359template <typename T, typename Memory>
+ +
361
+
362template <typename T, typename Memory = default_memory<T>>
+
363class span_halo : public span_halo_impl<T, Memory> {
+
364public:
+ +
366
+ +
368
+
369 span_halo(communicator comm, T *data, std::size_t size, halo_bounds hb)
+
370 : span_halo_impl<T, Memory>(comm, owned_groups(comm, {data, size}, hb),
+
371 halo_groups(comm, {data, size}, hb)) {
+
372 check(size, hb);
+
373 }
+
374
+
375 span_halo(communicator comm, std::span<T> span, halo_bounds hb)
+
376 : span_halo_impl<T, Memory>(comm, owned_groups(comm, span, hb),
+
377 halo_groups(comm, span, hb)) {}
+
378
+
379private:
+
380 void check(auto size, auto hb) {
+
381 assert(size >= hb.prev + hb.next + std::max(hb.prev, hb.next));
+
382 }
+
383
+
384 static std::vector<group_type>
+
385 owned_groups(communicator comm, std::span<T> span, halo_bounds hb) {
+
386 std::vector<group_type> owned;
+
387 drlog.debug(nostd::source_location::current(),
+
388 "owned groups {}/{} first/last\n", comm.first(), comm.last());
+
389 if (hb.next > 0 && (hb.periodic || !comm.first())) {
+
390 owned.emplace_back(span.subspan(hb.prev, hb.next), comm.prev(),
+
391 communicator::tag::halo_reverse);
+
392 }
+
393 if (hb.prev > 0 && (hb.periodic || !comm.last())) {
+
394 owned.emplace_back(
+
395 span.subspan(rng::size(span) - (hb.prev + hb.next), hb.prev),
+
396 comm.next(), communicator::tag::halo_forward);
+
397 }
+
398 return owned;
+
399 }
+
400
+
401 static std::vector<group_type>
+
402 halo_groups(communicator comm, std::span<T> span, halo_bounds hb) {
+
403 std::vector<group_type> halo;
+
404 if (hb.prev > 0 && (hb.periodic || !comm.first())) {
+
405 halo.emplace_back(span.first(hb.prev), comm.prev(),
+
406 communicator::tag::halo_forward);
+
407 }
+
408 if (hb.next > 0 && (hb.periodic || !comm.last())) {
+
409 halo.emplace_back(span.last(hb.next), comm.next(),
+
410 communicator::tag::halo_reverse);
+
411 }
+
412 return halo;
+
413 }
+
414};
+
415
+
416} // namespace dr::mhp
+
417
+
418#ifdef DR_FORMAT
+
419
+
420template <>
+
421struct fmt::formatter<dr::mhp::halo_bounds> : formatter<string_view> {
+
422 template <typename FmtContext>
+
423 auto format(dr::mhp::halo_bounds hb, FmtContext &ctx) {
+
424 return format_to(ctx.out(), "prev: {} next: {}", hb.prev, hb.next);
+
425 }
+
426};
+
427
+
428#endif
+
Definition: communicator.hpp:9
+
Definition: halo.hpp:12
+
halo_impl(communicator comm, const std::vector< Group > &owned_groups, const std::vector< Group > &halo_groups, const Memory &memory=Memory())
halo constructor
Definition: halo.hpp:24
+
void reduce_begin()
Begin a halo reduction.
Definition: halo.hpp:78
+
void exchange_finalize()
Complete a halo exchange.
Definition: halo.hpp:67
+
void exchange_begin()
Begin a halo exchange.
Definition: halo.hpp:60
+
void reduce_finalize(const auto &op)
Complete a halo reduction.
Definition: halo.hpp:84
+
void reduce_finalize()
Complete a halo reduction.
Definition: halo.hpp:98
+
Definition: halo.hpp:167
+
index_group(T *data, std::size_t rank, const std::vector< std::size_t > &indices, const Memory &memory)
Constructor.
Definition: halo.hpp:177
+
Definition: halo.hpp:292
+
Definition: halo.hpp:363
+
Definition: halo.hpp:264
+
unstructured_halo(communicator comm, T *data, const std::vector< index_map > &owned, const std::vector< index_map > &halo, const Memory &memory=Memory())
Definition: halo.hpp:272
+
Definition: halo.hpp:354
+
Definition: halo.hpp:119
+
Definition: halo.hpp:123
+
Definition: halo.hpp:127
+
Definition: halo.hpp:115
+
Definition: halo.hpp:111
+
+ + + + diff --git a/doxygen/hierarchy.html b/doxygen/hierarchy.html new file mode 100644 index 0000000000..8af81e99ee --- /dev/null +++ b/doxygen/hierarchy.html @@ -0,0 +1,229 @@ + + + + + + + +Distributed Ranges: Class Hierarchy + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class Hierarchy
+
+
+
+

Go to the graphical class hierarchy

+This inheritance list is sorted roughly, but not completely, alphabetically:
+
[detail level 123]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 Cdr::mhp::__detail::allocator< T >
 Cdr::mhp::__detail::any
 CBaseSegment
 Cdr::shp::buffered_allocator< Allocator >
 Cdr::communicator
 Cdr::shp::__detail::coo_matrix< T, I, Allocator >
 Cdr::shp::csr_matrix_view_accessor< T, I, TIter, IIter >
 Cdr::default_memory< T >
 Cdr::shp::dense_matrix< T, Allocator >
 Cdr::shp::dense_matrix_accessor< T, Iter >
 Cdr::shp::dense_matrix_column_accessor< T, Iter >
 Cdr::shp::dense_matrix_column_view< T, Iter >
 Cdr::shp::dense_matrix_row_accessor< T, Iter >
 Cdr::shp::dense_matrix_row_view< T, Iter >
 Cdr::shp::device_allocator< T, Alignment >
 Cdr::mhp::device_policy
 Cdr::shp::device_policy
 Cdr::shp::device_ptr< T >
 Cdr::shp::device_ref< T >
 Cdr::__detail::direct_iterator< Iter >
 Cdr::shp::distributed_dense_matrix< T >
 Cdr::shp::distributed_dense_matrix_accessor< T, L >
 Cdr::mhp::distributed_mdarray< T, Rank >
 Cdr::shp::distributed_range_accessor< Segments >
 Cdr::shp::distributed_span_accessor< T, L >
 Cdr::mhp::distributed_vector< T >Distributed vector
 Cdr::shp::distributed_vector< T, Allocator >Distributed vector
 Cdr::shp::distributed_vector_accessor< T, L >
 Cdr::mhp::distribution
 Cdr::shp::duplicated_vector< T, Allocator >
 Cdr::mhp::dv_segment< DV >
 Cdr::mhp::dv_segment_iterator< DV >
 Cdr::mhp::dv_segment_reference< DV >
 Cdr::__detail::enumerate_adapter_closure
 Cdr::mhp::views::enumerate_adapter_closure
 Cdr::shp::views::enumerate_adapter_closure
 Cdr::__detail::enumerate_fn_
 Cdr::mhp::views::enumerate_fn_
 Cdr::shp::views::enumerate_fn_
 Cstd::false_type
 Cformatter
 Cdr::shp::future< T, Event >
 Cdr::mhp::__detail::global_context
 Cdr::mhp::halo_bounds
 Cdr::mhp::halo_impl< Group >
 Cdr::shp::id< dimensions >
 Cdr::index< T >
 Cdr::index< I >
 Cdr::index< std::int64_t >
 Cdr::index< std::size_t >
 Cdr::mhp::index_group< T, Memory >
 Cintegral_constant
 Cdr::views::iota_fn_
 Cdr::mhp::distributed_vector< T >::iterator
 Cdr::iterator_adaptor< Accessor >
 Cdr::ranges::__detail::local_fn_
 Cdr::logger
 Cdr::shp::matrix_entry< T, I >
 Cdr::shp::matrix_partition
 Cdr::shp::matrix_ref< T, I, TRef >
 Cdr::mhp::halo_impl< Group >::max_op
 CMdspan
 Cdr::mhp::views::mdspan_adapter_closure< Rank >
 Cdr::mhp::views::mdspan_fn_
 Cdr::__detail::mdspan_iter_accessor< Iter >
 Cdr::mhp::halo_impl< Group >::min_op
 Cdr::mhp::halo_impl< Group >::multiplies_op
 Cdr::normal_distributed_iterator_accessor< V >
 Cdr::mhp::halo_impl< Group >::plus_op
 Cdr::mhp::views::__detail::range_size< R >
 Cdr::mhp::views::__detail::range_size< R >
 Cdr::shp::device_allocator< T, Alignment >::rebind< U >
 Cdr::rma_window
 Cdr::mhp::halo_impl< Group >::second_op
 Cdr::shp::segment_range< dimensions >
 Cdr::shp::segment_range_accessor
 Cdr::mhp::segmented_view_iterator< BaseIter, SegTplIter, SegTplSentinel >
 Cdr::shp::views::slice_adaptor_closure
 Cdr::mhp::views::__detail::sliding_fn
 Cnostd::source_location
 Cdr::mhp::span_group< T, Memory >
 Cdr::shp::sparse_matrix< T, I >
 Cdr::mhp::views::submdspan_adapter_closure< Extents >
 Cdr::mhp::views::submdspan_fn_
 Cranges::subrange
 Cdr::mhp::subrange_iterator< DM >
 Cdr::views::transform_adapter_closure< F >
 Cdr::views::transform_fn_
 Cdr::transform_iterator< Iter, F >
 Cstd::true_type
 Ctuple_element
 Cdr::shp::__detail::tuple_or_pair< Args >
 Cdr::shp::__detail::tuple_or_pair< T, U >
 Cdr::shp::vector< T, Allocator >
 Cdr::shp::vector< T, Allocator >
 Cranges::view_interface
 Cdr::shp::zip_accessor< Iters >
 Cdr::mhp::zip_iterator< RngIter, BaseIters >
+
+
+ + + + diff --git a/doxygen/inclusive__exclusive__scan__impl_8hpp_source.html b/doxygen/inclusive__exclusive__scan__impl_8hpp_source.html new file mode 100644 index 0000000000..83fedb00fa --- /dev/null +++ b/doxygen/inclusive__exclusive__scan__impl_8hpp_source.html @@ -0,0 +1,278 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/algorithms/inclusive_exclusive_scan_impl.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
inclusive_exclusive_scan_impl.hpp
+
+
+
1// SPDX-FileCopyrightText: Intel Corporation
+
2//
+
3// SPDX-License-Identifier: BSD-3-Clause
+
4
+
5#pragma once
+
6
+
7#ifdef SYCL_LANGUAGE_VERSION
+
8#include <oneapi/dpl/async>
+
9#endif
+
10
+
11#include <dr/detail/sycl_utils.hpp>
+
12
+
13namespace dr::mhp::__detail {
+
14
+
15namespace detail = dr::__detail;
+
16
+
17}
+
18
+
19namespace dr::mhp::__detail {
+
20
+
21void local_inclusive_scan(auto policy, auto in, auto out, auto binary_op,
+
22 auto init, std::size_t seg_index) {
+
23 auto in_begin_direct = detail::direct_iterator(in.begin());
+
24 auto in_end_direct = detail::direct_iterator(in.end());
+
25 auto out_begin_direct = detail::direct_iterator(out.begin());
+
26 if (init && seg_index == 0) {
+
27 std::inclusive_scan(policy, in_begin_direct, in_end_direct,
+
28 out_begin_direct, binary_op, init.value());
+
29 } else {
+
30 std::inclusive_scan(policy, in_begin_direct, in_end_direct,
+
31 out_begin_direct, binary_op);
+
32 }
+
33}
+
34
+
35void local_exclusive_scan(auto policy, auto in, auto out, auto binary_op,
+
36 auto init, std::size_t seg_index) {
+
37 auto in_begin_direct = detail::direct_iterator(in.begin());
+
38 auto in_end_direct = detail::direct_iterator(in.end());
+
39 auto out_begin_direct = detail::direct_iterator(out.begin());
+
40
+
41 if (seg_index != 0) {
+
42 init = *in_begin_direct;
+
43 in_begin_direct++;
+
44 out_begin_direct++;
+
45 }
+
46 assert(init.has_value());
+
47
+
48 std::exclusive_scan(policy, in_begin_direct, in_end_direct, out_begin_direct,
+
49 init.value(), binary_op);
+
50}
+
51
+
52template <bool is_exclusive, dr::distributed_contiguous_range R,
+
53 dr::distributed_iterator O, typename BinaryOp,
+
54 typename U = rng::range_value_t<R>>
+
55auto inclusive_exclusive_scan_impl_(R &&r, O &&d_first, BinaryOp &&binary_op,
+
56 std::optional<U> init = {}) {
+
57 using value_type = U;
+
58 assert(aligned(r, d_first));
+
59
+
60 bool use_sycl = mhp::use_sycl();
+
61 auto comm = default_comm();
+
62 auto rank = comm.rank();
+
63 auto local_segs = rng::views::zip(local_segments(r), local_segments(d_first));
+
64 auto global_segs =
+
65 rng::views::zip(dr::ranges::segments(r), dr::ranges::segments(d_first));
+
66 std::size_t num_segs = std::size_t(rng::size(dr::ranges::segments(r)));
+
67
+
68 // Pass 1 local inclusive scan
+
69 std::size_t seg_index = 0;
+
70 for (auto global_seg : global_segs) {
+
71 auto [global_in, global_out] = global_seg;
+
72
+
73 if (dr::ranges::rank(global_in) == rank) {
+
74 auto local_in = dr::ranges::__detail::local(global_in);
+
75 auto local_out = dr::ranges::__detail::local(global_out);
+
76 if (use_sycl) {
+
77#ifdef SYCL_LANGUAGE_VERSION
+
78 if constexpr (is_exclusive) {
+
79 local_exclusive_scan(dpl_policy(), local_in, local_out, binary_op,
+
80 init, seg_index);
+
81 } else {
+
82 local_inclusive_scan(dpl_policy(), local_in, local_out, binary_op,
+
83 init, seg_index);
+
84 }
+
85#else
+
86 assert(false);
+
87#endif
+
88 } else {
+
89 if constexpr (is_exclusive) {
+
90 local_exclusive_scan(std::execution::par_unseq, local_in, local_out,
+
91 binary_op, init, seg_index);
+
92 } else {
+
93 local_inclusive_scan(std::execution::par_unseq, local_in, local_out,
+
94 binary_op, init, seg_index);
+
95 }
+
96 }
+
97 }
+
98
+
99 seg_index++;
+
100 }
+
101 // Pass 2 put partial sums on root
+
102 seg_index = 0;
+
103 auto win = root_win();
+
104 for (auto global_seg : global_segs) {
+
105 // Do not need last segment
+
106 if (seg_index == num_segs - 1) {
+
107 break;
+
108 }
+
109
+
110 auto [global_in, global_out] = global_seg;
+
111 if (dr::ranges::rank(global_in) == rank) {
+
112 auto local_out = dr::ranges::__detail::local(global_out);
+
113 auto local_in = dr::ranges::__detail::local(global_in);
+
114 rng::range_value_t<R> back;
+
115 if constexpr (is_exclusive) {
+
116 // TODO: both sycl_get are executed sequetially, add method similar to
+
117 // sycl_get to read two (N) values in parallel
+
118 back = use_sycl ? binary_op(sycl_get(local_out.back()),
+
119 sycl_get(local_in.back()))
+
120 : binary_op(local_out.back(), local_in.back());
+
121 } else {
+
122 back = use_sycl ? sycl_get(local_out.back()) : local_out.back();
+
123 }
+
124
+
125 win.put(back, 0, seg_index);
+
126 }
+
127
+
128 seg_index++;
+
129 }
+
130 win.fence();
+
131
+
132 // Pass 3: scan of partial sums on root
+
133 if (rank == 0) {
+
134 value_type *partials = win.local_data<value_type>();
+
135 std::inclusive_scan(partials, partials + num_segs, partials, binary_op);
+
136 }
+
137 barrier();
+
138
+
139 // Pass 4: rebase
+
140 seg_index = 0;
+
141 for (auto global_seg : global_segs) {
+
142 if (seg_index > 0) {
+
143 auto [global_in, global_out] = global_seg;
+
144
+
145 auto offset = win.get<value_type>(0, seg_index - 1);
+
146 auto rebase = [offset, binary_op](auto &v) { v = binary_op(v, offset); };
+
147 if (dr::ranges::rank(global_in) == rank) {
+
148 auto local_in = dr::ranges::__detail::local(global_in);
+
149 auto local_out = rng::views::take(
+
150 dr::ranges::__detail::local(global_out), rng::size(local_in));
+
151 auto local_out_adj = [](auto local_out, auto offset) {
+
152 if constexpr (is_exclusive) {
+
153 // FIXME: this may probably not work with device allocator, add a
+
154 // test and check it, see:
+
155 // https://github.com/oneapi-src/distributed-ranges/issues/589
+
156 auto local_out_begin_direct =
+
157 detail::direct_iterator(local_out.begin());
+
158 *local_out_begin_direct = offset;
+
159 return local_out | rng::views::drop(1);
+
160 } else {
+
161 return local_out;
+
162 }
+
163 }(local_out, offset);
+
164 // dr::drlog.debug("rebase before: {}\n", local_out_adj);
+
165 if (use_sycl) {
+
166#ifdef SYCL_LANGUAGE_VERSION
+
167 auto wrap_rebase = [rebase, base = rng::begin(local_out_adj)](
+
168 auto idx) { rebase(base[idx]); };
+
169 detail::parallel_for(dr::mhp::sycl_queue(),
+
170 sycl::range<>(rng::distance(local_out_adj)),
+
171 wrap_rebase)
+
172 .wait();
+
173#else
+
174 assert(false);
+
175#endif
+
176 } else {
+
177 std::for_each(std::execution::par_unseq, local_out_adj.begin(),
+
178 local_out_adj.end(), rebase);
+
179 }
+
180 // dr::drlog.debug("rebase after: {}\n", local_out_adj);
+
181 }
+
182 }
+
183
+
184 seg_index++;
+
185 }
+
186
+
187 barrier();
+
188 return d_first + rng::size(r);
+
189}
+
190} // namespace dr::mhp::__detail
+
Definition: onedpl_direct_iterator.hpp:15
+
Definition: concepts.hpp:42
+
Definition: concepts.hpp:31
+
+ + + + diff --git a/doxygen/index.html b/doxygen/index.html new file mode 100644 index 0000000000..31021a1728 --- /dev/null +++ b/doxygen/index.html @@ -0,0 +1,81 @@ + + + + + + + +Distributed Ranges: Main Page + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Distributed Ranges Documentation
+
+
+
+ + + + diff --git a/doxygen/index_8hpp_source.html b/doxygen/index_8hpp_source.html new file mode 100644 index 0000000000..3c23230ee4 --- /dev/null +++ b/doxygen/index_8hpp_source.html @@ -0,0 +1,210 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail/index.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
index.hpp
+
+
+
1// SPDX-FileCopyrightText: Intel Corporation
+
2//
+
3// SPDX-License-Identifier: BSD-3-Clause
+
4
+
5#pragma once
+
6
+
7#include <any>
+
8#include <concepts>
+
9#include <limits>
+
10#include <tuple>
+
11
+
12namespace dr {
+
13
+
14namespace {
+
15template <typename T, std::size_t I, typename U = std::any>
+
16concept TupleElementGettable = requires(T tuple) {
+
17 { std::get<I>(tuple) } -> std::convertible_to<U>;
+
18};
+
19} // namespace
+
20
+
21template <typename T, typename... Args>
+
22concept TupleLike =
+
23 requires {
+
24 typename std::tuple_size<std::remove_cvref_t<T>>::type;
+
25 requires std::same_as<
+
26 std::remove_cvref_t<
+
27 decltype(std::tuple_size_v<std::remove_cvref_t<T>>)>,
+
28 std::size_t>;
+
29 } && sizeof...(Args) == std::tuple_size_v<std::remove_cvref_t<T>> &&
+
30 []<std::size_t... I>(std::index_sequence<I...>) {
+
31 return (TupleElementGettable<T, I, Args> && ...);
+
32 }(std::make_index_sequence<std::tuple_size_v<std::remove_cvref_t<T>>>());
+
33
+
34template <std::integral T = std::size_t> class index {
+
35public:
+
36 using index_type = T;
+
37
+
38 using first_type = T;
+
39 using second_type = T;
+
40
+
41 constexpr index_type operator[](index_type dim) const noexcept {
+
42 if (dim == 0) {
+
43 return first;
+
44 } else {
+
45 return second;
+
46 }
+
47 }
+
48
+
49 template <std::integral U>
+
50 requires(std::numeric_limits<U>::max() >= std::numeric_limits<T>::max())
+
51 constexpr operator index<U>() const noexcept {
+
52 return index<U>(first, second);
+
53 }
+
54
+
55 template <std::integral U>
+
56 requires(std::numeric_limits<U>::max() < std::numeric_limits<T>::max())
+
57 constexpr explicit operator index<U>() const noexcept {
+
58 return index<U>(first, second);
+
59 }
+
60
+
61 constexpr index(index_type first, index_type second)
+
62 : first(first), second(second) {}
+
63
+
64 template <TupleLike<T, T> Tuple>
+
65 constexpr index(Tuple tuple)
+
66 : first(std::get<0>(tuple)), second(std::get<1>(tuple)) {}
+
67
+
68 template <std::integral U> constexpr index(std::initializer_list<U> tuple) {
+
69 assert(tuple.size() == 2);
+
70 first = *tuple.begin();
+
71 second = *(tuple.begin() + 1);
+
72 }
+
73
+
74 constexpr bool operator==(const index &) const noexcept = default;
+
75
+
76 template <std::size_t Index>
+
77 constexpr T get() const noexcept
+
78 requires(Index <= 1)
+
79 {
+
80 if constexpr (Index == 0) {
+
81 return first;
+
82 }
+
83 if constexpr (Index == 1) {
+
84 return second;
+
85 }
+
86 }
+
87
+
88 index() = default;
+
89 ~index() = default;
+
90 index(const index &) = default;
+
91 index &operator=(const index &) = default;
+
92 index(index &&) = default;
+
93 index &operator=(index &&) = default;
+
94
+
95 index_type first;
+
96 index_type second;
+
97};
+
98
+
99} // namespace dr
+
100
+
101namespace std {
+
102
+
103template <std::size_t Index, std::integral I>
+
104struct tuple_element<Index, dr::index<I>>
+
105 : tuple_element<Index, std::tuple<I, I>> {};
+
106
+
107template <std::integral I>
+
108struct tuple_size<dr::index<I>> : integral_constant<std::size_t, 2> {};
+
109
+
110template <std::size_t Index, std::integral I>
+
111inline constexpr I get(dr::index<I> index)
+
112 requires(Index <= 1)
+
113{
+
114 if constexpr (Index == 0) {
+
115 return index.first;
+
116 }
+
117 if constexpr (Index == 1) {
+
118 return index.second;
+
119 }
+
120}
+
121
+
122} // namespace std
+
Definition: index.hpp:34
+
Definition: index.hpp:22
+
Definition: index.hpp:16
+
+ + + + diff --git a/doxygen/inherit_graph_0.map b/doxygen/inherit_graph_0.map new file mode 100644 index 0000000000..81e7753efa --- /dev/null +++ b/doxygen/inherit_graph_0.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/inherit_graph_0.md5 b/doxygen/inherit_graph_0.md5 new file mode 100644 index 0000000000..b7b475009d --- /dev/null +++ b/doxygen/inherit_graph_0.md5 @@ -0,0 +1 @@ +93edc5ecfaa4fce735b3f8a84a0b7636 \ No newline at end of file diff --git a/doxygen/inherit_graph_0.png b/doxygen/inherit_graph_0.png new file mode 100644 index 0000000000000000000000000000000000000000..d85fa7e8536dfdb2a5a20e7df52c1b59e2838ddc GIT binary patch literal 6211 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 + + diff --git a/doxygen/inherit_graph_1.md5 b/doxygen/inherit_graph_1.md5 new file mode 100644 index 0000000000..4d75664209 --- /dev/null +++ b/doxygen/inherit_graph_1.md5 @@ -0,0 +1 @@ +1df1fe8a6ef63b686cc776d2264b0f7e \ No newline at end of file diff --git a/doxygen/inherit_graph_1.png b/doxygen/inherit_graph_1.png new file mode 100644 index 0000000000000000000000000000000000000000..f19c2b165bccdf0c5ef9b53c2db2d3f9ede7d557 GIT binary patch literal 2162 zcmV-&2#xoNP)r~H(#WDH2#FL*>P?PSrW854EhwXiq7);cG!ZOFo4P6UAEu&7wC#Fc-1j~7c=ktk zHs|wPAMnMw&NCun%GwW;eqyI`7G%EN84%>t6u=Gka`aQ~irZqw%;P%JN2|(V(@pb>6sO3A9lD z$DvI{;T_sk6yEVjQw#XzrAJm78-r=RGOePZ)3I#+W5jJn$jQaZe zIs3P7-;N6xE+8Qx0RaI4sH>~PwQJW99UW~uhP~}6EmKodP^;Ati^T{G41_|VKwn=U z03ba*9j&dcIC}Ib7=}T7d^`X^p-_Nf7zhLcL`FuUtgH-#5Zj#2Zcomv+1c6X>gvM#_wQja7!VT^gOrpMSglsn)zv{JlcBo08iWwEw6p*K z8X6iv2*IB}fAHkV6V%ky;L)Q;UenA4dp#Zb0)VWnEVQ+?;l+y==;`T!OeVv-ckk?a z=9T>X{3FMX9V4#N-Q7(9kfEU=+t`~oZwLS~GBQF4A!OUOZKSNM%;h;3i!&`oqmck0 z0|NuL{T7Rbh(sdN(a}K&Aw(vVk?QJdhjnh=yh+m1(rnwicI_fst=8_gJDR!XW3Q(( zUwwUj1OVyk>f+Skif1mWs;WqSe*R;254nA%>hJHznl)<>92{&Li;9YxcU(k7guA8O z*3#3{0{{pM3j@P2U>F8Mp%9aklj!a3wL98MIJZu}&>-F=FW0-k?2;Om~MJyIWAP``5bQFY; zIX{OE9RdId1ap^UXlMu-85y{A=@LvP6RcJ%Dl02tHk-Yo*&egk)0r=cL;{P&f*(JA zaL&c{>@IH478MnRJ$v?`u&@v#BO}o3^*De2ywmeM@u2QZOGHEj4j(=YrBaFS-@oJ6 zuV47|=@U{?QtcL1ks-f^<3Zy4dxb zjWb^n5fM-*6v)lZ#kX(YFflO!tyYVMh6Ya0?!rrp>U26xO-&&xDhdjP0@>Nwd`#;R zEw#0^h>3|oQc@CvgM(32R0O3`2|qtS0KnO^XYumoORQeK8u9V*kVqt`sHi|jMg~M8 z5sHh8k(!$7Rn4y8%-4el4-gw03%OhlsZ@&A)>b4YCUSaqmwET3{QUeQ48!PX^o8P# zf1)pcX|>upc`EwylfpYb*Hpc|y|&+A*gpvg33m4>mCB`-PWcDB$viw<+rdn=M4$8tP_wc_pD zw@@mTC@(KxYB?w=DZz;oC-Cv(N9PCg%#z>!>_sn}MLD?QAC4j__Ua4|4O1hnN4SBC(fNa2eDX;yu3Vwg@xhBks~gx1E1d6(;F!DwT>fH8l~d)#}u{TrMYSwc2Ce*_h2{^6J$ql9iQ30s;ca z-o1N?Mx!A=fBtl;)fx6u3O@Hr0r>mN{nMvUF)%QI4I4H904gdf5EK-I&dyH6#>N5w z3JVLdd-wdm&=(4Yh>MFuQBe_|J$r`C%uLQYdc7Wvjg9E(>9N(hb?X*lV`E`5nGhNp z%2}thv=lWpHBc&*XliPLzrVlFcxNLN3L%%vA(zWBIy#En++3(sDi{m~l$Dk7rh7I% z`Ap?%M1>uvS!hJXXf$HQiWQJZB(|}CKlB=nM!R*&%gb@&#tpQ$w?ixzC^b~Teoh7OeRBE zSQu(+YZvT6AQ0fdfdi`fh%WytvWIOn+CrqXJ) o9uq^MP$(1%g+ifFC=@UAU+vwV*;5Ami~s-t07*qoM6N<$f + + diff --git a/doxygen/inherit_graph_10.md5 b/doxygen/inherit_graph_10.md5 new file mode 100644 index 0000000000..74a5210c95 --- /dev/null +++ b/doxygen/inherit_graph_10.md5 @@ -0,0 +1 @@ +27559c7f6d62fbe4061030ba991c97fa \ No newline at end of file diff --git a/doxygen/inherit_graph_10.png b/doxygen/inherit_graph_10.png new file mode 100644 index 0000000000000000000000000000000000000000..506e80a86b2aa049a66cc8528f36dc36a486a939 GIT binary patch literal 1431 zcmV;I1!($-P)rA@$l+*9iV|Gi6h&d;O)vwK)SKLB z&XooIB@zokEF5HY(M2_r7-j7Ruc8}CDv*o{lIRb#vC^$_O=R@Xg68R>x8a<=nm%f| z^MPHQ-#O3ueb1gR=Q%s)8Av1&i9{kvMU=6D>gsB}qA2U5QUUxsI*??5UtG9wVb;}1<_@RRIc_{{j&(@>Fr)!e9BF_QXI2a_ zFff3kC=3n`&PMltjfTI0KXwLKw{9J+t*!GdW5F}wuYmdH{{8#&En&ud{rZ(fixy2- zuhD4u{{8zLDoW;$odNy^Mn*>H>gvK~v*B{NlIk-uG7v(6z^zsAGV4@7`gtSkUQotX#R0j*gCmdb8O~eSJNJg@t5hW^(=db())-S+;Ch zyv^A1*hhfbZ07j!;}jJYq0{MDzI-{Iot;zG@afYh_U+q;!C)XOD+`OoLSJ7W0B_&E zB|AHtD_5?>+uQASHgDccEEY=|@3UvmIC}Ib27`g>>S}Uwawsn^pXRrh%+8%VNl#B_ z+qP}w<>k@X*hnA{P_6&bsA7PMiV89^GVuHT+_-Ur%a<=FwP|Z>pbLS5I{r#+1v4YalQbtBbSh8dZSFc{B zwzifRFJ9pBc({4gr0+W3^fZAZ#|9`1tYTZ;j;_ zWo2c;ZnsbC+DIfKN=ixuAnNPufBX8Hni}D7IFhER8P5QrPzbG7%i_h0<1v%Tl+-Ra zH+QC~5_0@nTn!HoPpaY7t5*QzJT~6*N>P#y9#vy94F-dOw6rt^2L}@tWkLu_N=ksA3p%USip65V z=kw9l)|QYXJ3E^L2M+M~@ni1Zy^Bt#qq4FRqtVE*W5*JVG*g~Gf6l>!2hr>G?Afyi zqtQrjZ!g{5-8h|2va+&N%Qa&Im`o-%Y}mlwy?cp7A_M{f>gwtyy>7Bapqd(Tb933c zbt^WTjh8Q9^5x4H9zJ|XX=y3nzI_9rsi}!zFo?(Fp}oDG{rmUx^y$-a^X2E~<8ry^ z@9)R$b`uN+@p{!eK)rP762rs8baZs!^Z96KXuxPRs@DH#RM`jcdc8Ot4ooIf+_euL zJW!)+)iiiK9vT}P*|KE|;c%Gz{Cw)_>PSyd=l1Q}oH})io}M1GS}lczg&a9@gzek6 z^XSndv|8=BIn&b8C@wChxVTu=v9z?bsM_EEku)zm9FB5DQM~dvcwymmIuSxtxZUoA z_W|TaP>LfBkm5)Kq&U(5DULKiiX#n>;z$FeIMM(q&V)OG6TL?+Sy&_)KnQVo{002ovPDHLkV1kg*(0Kp= literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_11.map b/doxygen/inherit_graph_11.map new file mode 100644 index 0000000000..8030d7e11f --- /dev/null +++ b/doxygen/inherit_graph_11.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_11.md5 b/doxygen/inherit_graph_11.md5 new file mode 100644 index 0000000000..8f35efcff4 --- /dev/null +++ b/doxygen/inherit_graph_11.md5 @@ -0,0 +1 @@ +d580d680ffa76c492b545ca4c5e06323 \ No newline at end of file diff --git a/doxygen/inherit_graph_11.png b/doxygen/inherit_graph_11.png new file mode 100644 index 0000000000000000000000000000000000000000..178848322439edaca1bf5bc4ce77de94be0d2b1e GIT binary patch literal 2358 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 literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_12.map b/doxygen/inherit_graph_12.map new file mode 100644 index 0000000000..2faefe6215 --- /dev/null +++ b/doxygen/inherit_graph_12.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_12.md5 b/doxygen/inherit_graph_12.md5 new file mode 100644 index 0000000000..ed2d2ee5cf --- /dev/null +++ b/doxygen/inherit_graph_12.md5 @@ -0,0 +1 @@ +a8476a03c3fbf9fb6cae7ddd3fc18c5a \ No newline at end of file diff --git a/doxygen/inherit_graph_12.png b/doxygen/inherit_graph_12.png new file mode 100644 index 0000000000000000000000000000000000000000..d335208caea5e6d9b7609ff2fa763f77ceb6e9fc GIT binary patch literal 1077 zcmV-51j_q~P)OP(XsDpUdV+|Ez`6wv{e{$_ zY$$7tXp07yrlv3&obnAvw}Pg3(IILp|5P`#R3g%%AUW^!TprW1KR(@FyB`qr_dWNV z@A-1L=NthM5fKrQp91x~FgZC{M^V%-A#a=}IKn!0%#P9{=uY`Yjc?pW5kW3~&+(%nm8#XpJisSHLpjbQS|lo@gCOJ*0T1ULV7x##{B#|bUGa> zD=WdWEKW~PU!B8edGV6<9!5q+K+`mW!5~tp6h=o!bJ}cfZo=#J!e}%?DwV?NbiQkh z;o)J(<#O!r?<14Rz-qN(VqyY5pO5#T(P$6~g^)_6Fg7-p7Rhlhs*0J*rhAjikYS>q8x$nNegUn`_@97h0< zXf(>}nM{T#l}d7OaPZ+d5JHIG?DTC@SX<)HkEiXz=v(gtN0Vz7`Ayc}=ZWBb`oX z-7Eg|P)OJ5bdX3SNG6jYgk*gN1_p{UhkSfGe1>7r(b0j~*;ynK353I8EG{kzz@pzCwL}xw!$uFzD~^$I#Fa0HCa_>`l7c?M6dG1573pXqtw@;egF%LwR|5(dY6a@7-{} zD?Xo(R8>`dST7c@ZMa1_YJLYi9uH(P8G3tr5e|p3u&|JIc zP6w7{(cRsR)z#HE>q1a6D_^Bjy?W~`qzggGto;8YV)z0ghA$vu_yQt^FCZ_TcBZGN vztYE#Bqw}A$iDza1n?pvA|fIpQnLI9z4f(#t$lSl00000NkvXXu0mjfB + + diff --git a/doxygen/inherit_graph_13.md5 b/doxygen/inherit_graph_13.md5 new file mode 100644 index 0000000000..4dd5fd3759 --- /dev/null +++ b/doxygen/inherit_graph_13.md5 @@ -0,0 +1 @@ +354b5e2b077b754c16ea84538025ef3f \ No newline at end of file diff --git a/doxygen/inherit_graph_13.png b/doxygen/inherit_graph_13.png new file mode 100644 index 0000000000000000000000000000000000000000..8645aa4ec509858e07b6cf37c3af78b9b5cf35ef GIT binary patch literal 2303 zcmZuzc{J4BAO4aUW6zR(Da#~e%hD?{jkVHXWKgymLqjPB*?X*9}sk*4?SkKcd4bI-k>d(J)Q-sicW<@sbFo$N%Q@=yQ(L>%l9E}$(0 zrxAo7Tq_uk-Js$3KVydg{_Ks1FRSkY0HoCcVU3Eq&$=IDe|JG;aAEx3bZbz;z!{&P9ffPkvYdf4H8eb|_Lh;t)v-;qd{q zt*x!2wOC!a-n|}0ZSBnAM?_+YA}PJDr$>C(3q)5h5#>d50R#s%PgM_nMEMqNI zo?rX)%w8wDdgn~b<8Vxw&F>b#>Dpe(&z)m6vBPF8Vg0TX?0VrH97GC?DEzZtnt%_RjM2|L*NQWoBm9 zJ2)uN?9*c#A8%=VE;!LrOjzT1e?Q;k)YQ__5|5Ua7KD#?V`BpVh?SLZCMT0_3y3B8$+EX& zfkY4@S>Lw>&ED8RI5~+z)anfIzjq0^ro;>c2ywrcmzVt$7nHmEcuf7PFovj}&#OE6 z`4R{_JLd7VyISXwC{!|+8xP*~?LA2#BqSs-B*Z2x%&4xuo)K$}!C*j=HVFwl&Y#KprN6mn*6Y~RuDkCy6%HR;<>vSgSje|t*ugGDwf7fi#wX;=H`YP8Yy41 zP}&;6P;YNy-P(H+mJe`-NhOQJW8>l+oSbszFVi-Uz+lKiCX*>h*1zKK4|j`P?ByvS z5Nc<%tgL+8l$Dh=f%J=d?rm5Mrk3*lsoy?{3()A#?xd!NLk(7d^^7?RVKE&fV%SZ z`SUaqiBw0UQgJl=+S(d_?#ruhwcjqZx3{BT#hQO(vEHs$RaH&z?3SjLmn#7^m&nWO z(@l)^s66TlKcnhc=S+2dy%4bYr*RZUHP2Ce+GkB`bdM-8Zukip55A?>$h`;u(HBuP>F zD`Igd|1g-KU%!1rT)0p~i~lkQH|}zOk{2?#*XO&f(P-KD-7Ov<6py#T;p!cYU0q#~+J&Lv;r-7r)QRco9JU>y-*a-rEf``5qUE8E*Iu&^_VUp*f@ zduA9F6LVNyosUMNnMH5FlHqE>!NCAf?Nr`3RejzMixseZAf{KGb=19Sk7}@qf}ETj zL`=+-sVI~DNP+Vtxw-k+3ozOJtJmN8wr8J6Aqq+tDu+i#)^m-fcKHMZa3PY=l&ta{ z;={Mw+op%|?eDA(uH1YpiagT8$nA0svh+reR_q-$@2ClCJB&e?>ON z7^V98hP(`q&_py8IoF|TWr7X zXwKF7O-e7FIEi^bL0Mc>-Tb~FhQ(q#IyzJ>EtSb+a@}T2i^1dSYVy>SBuET#^{Td} zmKJ_sCcxm0^mR+G@#feqHV=V7V6)k$TwD&!&CQ9+$pvlf1Qq1v0SXEV$!TeqKXu|e zLYMlwbBA>@C^l_Ks_m64>b7=vYWemPb92Ikv#GPQXt$W)V4e9_aakWec!uNgYGA^0 zIGhugaio&3nF6D29ARPMhcz{OkqLo9`-X-f$`(0idmWaZ=xJaj5sHZnTZin4QZM0pdzS86{j^dy`I^1xzQ zP*I`Go7npNxq`IUlt1yPvf9s&(e&kILEw-Sba-p4!}~?x0SO7~1Co;2tMy2jePAGr z=hQP2DO>)u3b#a(lY%z6Vkp9lW{okF>+I_C!(fg#a|TLgJLzM@Am%WY zdfM8WNBw}Hg@r}v*9kRa6O&R-11=zdACJeU=jICJ4wBhy{miVa8$UifkSNosHhW(- zPC4RnP;ov+2{*C^K_&f=1nO;=YWE-o%__=;J?H(59wzPP#yjf{*0wLo26eGv?LStX?uw2tk$bJ^Z4 z$8|M3>Hmy}ZJ%LTj%=~|w))PIYWo5bq0gNDVjOURX%D-hcc=&%^1K2!J`gX;(Ugp+6 TUU41)I~u^j#tG2`_f7f_gU??D literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_14.map b/doxygen/inherit_graph_14.map new file mode 100644 index 0000000000..1d9791b4dc --- /dev/null +++ b/doxygen/inherit_graph_14.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_14.md5 b/doxygen/inherit_graph_14.md5 new file mode 100644 index 0000000000..26fc5e2d9a --- /dev/null +++ b/doxygen/inherit_graph_14.md5 @@ -0,0 +1 @@ +6e4c382bb34c6af2a01dc05a1409c323 \ No newline at end of file diff --git a/doxygen/inherit_graph_14.png b/doxygen/inherit_graph_14.png new file mode 100644 index 0000000000000000000000000000000000000000..0d057994542ea5448387e8759af8ed54ff759f80 GIT binary patch literal 1647 zcmV-#29WuQP)N! z$;JX*&>sXJL?-nl39-z25Zqy;S)roV1B)Pn>_Pq(CB&YYvP>_W%_3^0QQi0V;D<-I zHMix>v3}nd47~5%_w)VSXCH36Qvrry7=~dOhDmKCbfBuL%0LL&mW*T=CKShU6QU^o z^YfT4^dLgWHbO}E;-$qfk;$^$3*fJx$HJO+jwp%=Pl#dWBZ?x1hK9n%xg_MmFbl$( zmPt9RX_=Ihkf!zf{UC&3dU`q$;UltGEVy~|=Ay3oJCac!tJR9DSFbMGdWpoYw122S zsYyezrcD7`w{AsydwX1SJRT3Ks;Ux`P?E8xWm1kNO*=U`37gFZp66jUo6*94;lYCks+gxvokB@T33#4IVPPSjJb4l^htTar z)h8GXqNb(>MxzlcSFVK3X2a{(uK@t%<>eR}8p5GNhd>B{)oKL**lacsLcnnxHf-2{ zhK2@EN|l(=z8*w7*J$xA77I?FKK;vD3xa?xTehgy8yOjaPN!4OYaujgT8G1dw6rvg zj*gEeHb6o;?dmlHhPSuzUAz1OkBtoqsgZ>f>}e zF)}iOfq?;xkB=iiKOc6x9kMK=tE&q|MMY?9YXhYe9*+kAaQE(AP)hOb+c(_4eH+)W zUq@$Wr)D|F5f%7cVN?j~+dugb*4G29>b`2M*AaCr_&8G&eUZ z+wb4MrvRuVNy`4Zx;oW5n>TN!qA13dTRfuGXJTT40-$f+yixZ5`0<1CJWst|FQt^y zqM{<&*48%fI+rhBrVfWg*)A?Frmd~55x3(N8b4aCj~+crD=RB0rIgOj&eGMZSJS?} zzPQ#D1c6ppSNDYW=z_1bk|ZG`BLmsl*~*y7WC}YjCnqQF*lX6TQGQNKOGA2kIx;dc zRAVzUGpad1=b_i@0YG(3US6K+_`JM4NRkwHZn271pI5J50RYyoUk^eE2q9RqWC=cg z{D`r!v50YddU{Y;ScuHbOb|j)Q&XeqdBhTbzFHqSas<7-y?FQT9eR3tpwsEFXU`r@ za$9iI8Vm+}{`?tl-@aAGd_G^;afF2ZL0MAFHOU;G&j*9Skg)Zl)yHTwg5x+$PfvqV zs(Q`6$sDJCo2I6wP*G8VGiT0Va&i)~ETg5R1>e7a*Cb~x;+xH86c-nxy}ccRAi(8v zVd>JPn&h|OrZt&N*uH%`jvYIOKp+60&xg9Yx~TIKb<-1#AP9K;_%S|x`h*J?E#eSJOFty_m%w{GFyy?d&!A&C&JJ{=t$$j{Hmu3fv3ot=&2$B)D1a$))M z+$G z*0eDg8yi#Z>_cCrrKJ(~xm>Pfr=B$F>FGFs{ybV+TQ$1@n-lRr7yd*qUcC6NdAYf{ zs$Wnr(S<&W)DpYWGAV~OEt7Is(=sWCH7%2JSkp2oC*sqC!-o$qW*!U^v#_S6lnw%L tBq0}u3Bz&RM6z>W7=~dOhG7`3{R`;O=*0T)kdpua002ovPDHLkV1nX|6tVyS literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_15.map b/doxygen/inherit_graph_15.map new file mode 100644 index 0000000000..e42334ed48 --- /dev/null +++ b/doxygen/inherit_graph_15.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_15.md5 b/doxygen/inherit_graph_15.md5 new file mode 100644 index 0000000000..13f966d177 --- /dev/null +++ b/doxygen/inherit_graph_15.md5 @@ -0,0 +1 @@ +268672f92723082a4d2d711aab626b02 \ No newline at end of file diff --git a/doxygen/inherit_graph_15.png b/doxygen/inherit_graph_15.png new file mode 100644 index 0000000000000000000000000000000000000000..2217175e13516eeeaa7980e6ad9bfc167ef35fd4 GIT binary patch literal 2374 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 literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_16.map b/doxygen/inherit_graph_16.map new file mode 100644 index 0000000000..beb87bd0bc --- /dev/null +++ b/doxygen/inherit_graph_16.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_16.md5 b/doxygen/inherit_graph_16.md5 new file mode 100644 index 0000000000..17e688459b --- /dev/null +++ b/doxygen/inherit_graph_16.md5 @@ -0,0 +1 @@ +70080e8fc9d5735dbc4be9110f39b371 \ No newline at end of file diff --git a/doxygen/inherit_graph_16.png b/doxygen/inherit_graph_16.png new file mode 100644 index 0000000000000000000000000000000000000000..c2896a88ae2477d9a707535575525245b92a8f24 GIT binary patch literal 1868 zcmV-S2ebHzP)KS3?gc+s;YAS z*(ROaiQ~9~9LLrDy|fr+$T8_!$w^tObA1XNX3c{`1Hu`~1InC(V(}t7XWbQ&K>OAx6h@&&1Qq2pC9aYI{^2W?(y+)6c-mG zA|e8tH*ZFMem*8ACk4k6BD4;JgM&D8<_v;^gRy=4cAPzX79%4g3&skQ3rD1Gr4DIdhXlrYO z!{LBVrxO*|Q{GuwS?KHQb9wSqR8$}(B?U^QQgr-9$;-=2Ga8K~mepz{0QBX{7ryQJ z^XCMBhK7cSh$to|hOS(>B0A>mF*k4CEgwUF2|IYm-E{r zBO?TWoK7ddzoewZWt=^G_E1Gd#j@w=a5xA6efso?-#()MIyyRth$t;Bjf#qj zh=^!rW`>kXCDqi_@crZCrWo2a%5z*At6m8wQmFny31#_OuXf#q@US8VV`d#)J+Uay6 zFfb6o!NGi+TCH~L7Zw(_=-At~ZR7uz$z%u!2tZ(9piA42A3t1<`7;lHe}4dQ>7!Dq zT>7h2Dma}k-*1_h&^&E68vr0ABm^ACf#W#%`T1dde4Kwvk)555+S*$D`t=JhUcA8Q z=qOH|IyLWjcDo&Zetz?=rI@jVEVK>|hXYcn)a6xU_HCEL;Sh}LDQ^HMC@8?=$B*&# z>sLH_^axU^6emuc5S6nS%PwezLV?N2Nem7S@@+jmJ#PIt&h3kRUNKt?vwC`Zpin3T zj}w}wQmKSQBEj(RFo?+IG5ZfYdh{q{G8q~h8(}t^k&%(XKk4QQ4-d!m^fbD=yWRGQ z8EdKQ5E>ea-@kvOudk2aXSG@Z0HL9wf^j|N4FFM5QHYO^huLg~$z+1TV8FU{>qO-& z#79&rBdPW;ln5_EJS~QKO7DRii(Pmnwp9o zJ9Y@h^_2Ilf`S5EyLJt&t*yw-%@vieSSxZ-SXWnviHQlQ)oN%o8tC=pt$CqnbAuC7L8WF%5kQxO~-jPvKu!(cFA{rdHMpX}^xw6wG! zA|e6@4jk|}UQJC6qNAg6?AS4=R4TlC_YTR)$)d+v>N?cb)gdS-2z&SLMO<7QLPA1N zU0p3Iu29|ppw((2kw}o7oV@xcvBh2#{x6A%iJ|-V?|VB9uk-dgOifMEmMvT8!Gi}& zjpnZ(pZs+fO%zYRP25+Z_fPes8zkVH+m6a=c zF*xi0>bo3&eyHKA!o$N|K1iC6H`ihAZPt~>&d`icVFk_j6jsoTPhkbk_!L&qj89qc zF2_Q@d%!SjnOi{ + + diff --git a/doxygen/inherit_graph_17.md5 b/doxygen/inherit_graph_17.md5 new file mode 100644 index 0000000000..2527d53c76 --- /dev/null +++ b/doxygen/inherit_graph_17.md5 @@ -0,0 +1 @@ +abaed896f59408d296e4613f31c5870a \ No newline at end of file diff --git a/doxygen/inherit_graph_17.png b/doxygen/inherit_graph_17.png new file mode 100644 index 0000000000000000000000000000000000000000..0cef7bba583281bf385198d3d7410733548202fc GIT binary patch literal 2857 zcmXYz2{=@38^=e=mZ79*Op={MS;ipQ1~c}pvS&+5Vj^0EcbLp1%UE7yDf`&cyteGd znzig?9l{$XjIodLoxbn8&UMan&UKyZIrsVBzx#jRcndQ_Fc*Xi1OkCkNQ4!zmI9{| z2ODr*Y{mHj3!9s90(zmxVf;3VtPe>kFg`fs?Z> z@m#X_HgJJ~l0qq4m$`D9t<)Ubd(W@+BxBgb3E6DP4%qEY0}H}lBqX}_u{<2DXE-i? zR*^Zl{7~)~@xx*x$P$@sjDgw5bEXgT~h%ti#AI*9E!R!pR#x@U1r$ z70NQ5=+h0Z+~KYrxuj=f!+(O6m5`Ex>x{k3 z3W7Zz4>ODvcJ2B5+8msRlamv+;NkPa!ok6Nh`rF}ZC%hhZA?9b2ilocT-=jClbI<@ zw2?(15F+B@C!f|p`}+DYM?1>$s2_=m{CoTRSy@>uW1pPL4>tV|=nsPrsnx+75q{e% zx1nlJPXZDkk;rD+V$UZ1m-X=Q@W-Meu0L;c%+>fW$9?z^TU7+0-$Ape`h$tSRtD>TU zVFU_1s(cRw+|%nnymaG}MS%JxV8^o%NO!fqp`pXO)4aSv_B%hj684*p7>qM#&V)5L zYbR7OnIQ>kt<;U(U3O5y4aL-6k9rfyaI*q`uP6(xXoS9gRz(H>hmZpq`b*8F-c;5k zBkcINZQaX=wuia5Y!|+19iIe6V6k>|AP5~%0(`MrN^qN|Et`~GT@4^xKQ{>x61vub zPS@8-y?eb8WdJ;0Niw?Be{N;jkDu$*lj&OQhfwB4fYSDC{iyF_W9*xFxWcu3v z-1@pN&0KxT+54rKsHg}Z{^QuH4nk4^t9wJVX}XV?08>|o_%VzVBE@8|H^sKDn_0rO}xB4?Q#;biV14-Qg;&<`#;y5}w zVyJKSsm>xyO~GvJ>`p6sj*if`QBeaUBiN-S&$XF`Nsmu8GaDOzC3fX(MtOYCo;~|_ zb+uKYiGj(@6=!UZ-4hE5oyHr(+>+&;bj{6qvvYE;B=->BzhB`ZJ-H$###&QT^L(|m z+QP~TBc%EyMNV&x^6tZWrL3=i zTc3BL=;`RN06A!BX%R{8Aw8K^PpBECXKDoTD0%iacPCv1GX3_FMxb_~jT>Wc)9jFX zK7AUu&j&ynz+}AeO(UPdl|~C{IJ)dXi1zTNFtFCNpY|ZHOzGPdu$L&>a?OY*d+S(uhgYfuxK2--Tm*<;vaPgF}$kw)B?l3KbJpZY=B3CIW{QTpfNVyewkyQ`b!qn_q5_N5(b z6XmA#(XlZ-xeIBD)Qc}@KRI{SCc<$zj@-PwD{^w&t7BzB_oaRK0K7{|MRToc5%y8&q|7xY#zqfjXH4T|0hm6}&yf0GLgUZkoDcT`kWSp^5*d`%xP zyg(}Nn41%su6-5-^Z9`Qeu&<$u^wlTL%G@);kN2W7DKI?;3-HWN{q0kk&KLtqy)YaOfZ|_(_W~O2X=CWtQs2q2L?el3K|zyAK2ZbW*Fa2_CsXj+ zkfYjZwb6O;+(ac=*|)TGv_pDHRTp%=T)2LuLYmy~e3kp#K0m~{nd>1M!kEuEaAfz$^x zHam$#;`M!wK&cKDYLtM&M+@nVk-PU?y}Xd0L&FxV`iBb4w|aQ9xWQn`4s~+8{)Li< z;zj4iU{1gz($mukwU1g-CUI)ASZ`n7&W>oI&31u%A1f=*vxTz&C3!(e&|4y;bu!{B z9*+ks`?Md>y@?}_0Oad;es~8T3;EXnWqxb_WE1n?>hI|~c02+D7J_L@CQ!=1-O{tR zPPnQ&AJ>&2wE)=f-a@RF-^#EInaO!YOY3s^gKr&w8s5st)jD@?Z*M|I1{mn80K8v4 z6ama~va?SBBruGIHR?nLzTO-nJlDta&TC+eBIba{F~j>)D#vgmSmI{WkMHb zVPSzk-w>&=FYRJ`M{zQERuKK}9esREW2Tvby4Nx8V)CR-ko(o=-24BtMfN|_n5)0o zo!hq;Q5u5Wr)z6#OR6SK>`U*g!rcEmRQ`XqblE#|d + + diff --git a/doxygen/inherit_graph_18.md5 b/doxygen/inherit_graph_18.md5 new file mode 100644 index 0000000000..bc9f2c98e0 --- /dev/null +++ b/doxygen/inherit_graph_18.md5 @@ -0,0 +1 @@ +14c9137432a2aa336ded03c3974fd9e4 \ No newline at end of file diff --git a/doxygen/inherit_graph_18.png b/doxygen/inherit_graph_18.png new file mode 100644 index 0000000000000000000000000000000000000000..21378d3b33ec8fd17503b3b32ef3472603f9d780 GIT binary patch literal 2565 zcmV+g3i|blP){*<{yS(O2^ME%HPDmz`(x%{xei&5QKx|=jV^PL6pCX{QP`WS63Uztt?;*g`xuu zLW;$qK}fMUV-kdIZEau}2A!RqV==r*#9}dui;KripC$YpZy$}pwcqqg$RWYO!8mi~ z%!D6vqCta@LnQr31bP0zJ9m4F{v)MNKWwBU{%*;%LgoMDs!2!O$zIgid zDUKdJ3V}d?Y15`5H8m9j0|Pp`UcY{gWy_X<&*x+A+_|`O=Z?;p+1c3$2?+t8&qqK& z03JVnY|;k(@^F6Y-#Sm8JP9u^FYtIggoK2krltk}5EB!F>gsAFBqV@g7z76go17B?`AQTGW=;#QEM1tn#X0!eNT{sEC z=;&zJ+1Wv%P~iIY>qam4=gytO!Gj0c$uNhjSFhs4i4$mRYeR5wFqSW0j@PeWqqepd zRaI5Ee*L<^gcKDO;n1N&XlrXjTwEMtV`D)GVe9kq^005;K4>%=L`O$s<;s=l=;+|g z&p{d*8jzKhh2r93eE9GIhYugd#fujK0GBRZLSSGZ3JMB92tj3K<%s5Kv_6>98y6Rc z#>PfGdh`e_EiLfz@j*mH1p5UaiQk-%l9CdYnwmv?CwxAi)YjIT<+r)y<>ir-l$8JK z$DGMyJ9E)!G~n@gaCUZPW!~Q22JJjNJVrdWlamwsx1F6Grc9Xv9*?IZ>+S8;=`++0 zdwY8T&}kzQiFDeFL?UQ3nqh4**Uv$`yu5Jn;zexRwhf(~omjA70WvZ&;P3DMOFiby z(`bD#MpIK00Km=7&7e-DQi0FskI3)Q@Y}azfk1#SU%ue|`}eF&sZ<)YV;F;k9g8qH z>4PYhN(cmkVf&fu=TO4K!*ToeZ9IGS49k`+LuhCyzJC1*0I;$$KK16z)31E6x3|~% z(harOm|me!2rDZqbar-v5Tf%54-X%e-y`L>gV5XC8;ch&#->f1(9zKWrBaDqyLJuR zZ@5jsSdo{Phw}1reE$3yM~)nUMx#MQM8vQ*jnvP(ckd!QI~xjx0zZHLM1OxjdV71> zb(X8ED{5g)CJ@W857t00w1(a_L+k?3j?6nu?s99L$@JlH zA98bZ(b?GvH#av(BoahMM(Xr6rnji52tGbO2n!2?v$HccZ{7^4R0>;L+Y$TC2_xN@ zOeXyO{mJ?B=PhlWK#7I5IFWfcy9FLn@UbH#gUy-peWa}N@B~V z9&B&jx)mEXY`~KzPmI=2bS7O8o;r033l}cbku^0n!P?pyDwPVr@Tp1N-QCE@$bgrZ z7p702j_$tyUv8 zHdeVB_I8{&aRLDW0SFBZg;uM@g$oy;R4Q@czyWx9d2u!;etv#9e*8Ez8VydJ zIt7J70kK$&kdP3ZK7ATmt(G%gwC?v(j#e|UIQA*G*Q27MLMOqNYx?{9ap%q*#K*@&Bod*ks|$H~dC1Dj8Z(_-Fe!s@#flZMv$MmE z8#ho`ScsUI7&dosxYQ(1Pfzss_v6i*H%7!^x8;aplStBqk=Zb;G45d3bn0B9S05F%k9k_4xGZ z6J#*ZbWNqE7WQ=($mus78V9qS68#_oj-p*a&vRh($WH% zOa`@DjnY!?-Z^#l>{;~o_M)t;42_MA*t2JkLE`JAVlu1=2_dARp@9G(etv!ib=}?F zBr7Y6h(sd7a;et@5Qkguql1inPHjgp}Ot`~HPfyP=eT+ewcucq} zA?5Fb1|h}b&>*B(92$fai(_(QQdLzoo_0|F0!(G|m<&RhOg3i5P$(1%g+ifFC=?2X bGNJe%-BoRps`q0)00000NkvXXu0mjfkOI?R literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_19.map b/doxygen/inherit_graph_19.map new file mode 100644 index 0000000000..b2238697fc --- /dev/null +++ b/doxygen/inherit_graph_19.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_19.md5 b/doxygen/inherit_graph_19.md5 new file mode 100644 index 0000000000..b7de5e0d2a --- /dev/null +++ b/doxygen/inherit_graph_19.md5 @@ -0,0 +1 @@ +9f4a6bd39e8c3b5a27b56a4350d212ea \ No newline at end of file diff --git a/doxygen/inherit_graph_19.png b/doxygen/inherit_graph_19.png new file mode 100644 index 0000000000000000000000000000000000000000..9fc8d84ce09e4b9a9a489a11bfbced7389353ef0 GIT binary patch literal 2822 zcmX|D2{e@b7anUhwrpcbVn`@U*2XqyvJFCr2%#8cjFd2%8|JKZd5^|dqr?q|tfUU<}2qZb*Jy^()OUCZ{ENfP08 zzoI<1t!>B`12Q@MA{y<|$k9CcTUIvj&MIOq?D=j`gms^`NHoPmRg{}EhQh?QJ3GEA zF1A1rbB9k+RYmJ<%7=WEmN=apgCw+*7>$3mo=>C%iSBm#!;#3zx?)vPUK?9mmbz=V z>#V-g>QzMvl)o~k>Z@mNHYzEbPf)2QK@#z^v$w8tW1pp@92XK6-lpUCr+nOZeUlDI z);~Db(<+gs)J>wK0fg_t%=KmzT`P z_V)8Wy%KsLZ3hR3($Z2xfF#op27`I_J=gaQ2tavy!ZXe}v%;spZEbE=d(n93x5NLY z(PVUV#I3BX2){AY3xg$2&G(cZKYqO4hdlf@)BOPjd}4w4^yV2kIf+7{P(zfwib|-W zwf;6`_(Ni1VrgY1wI^5G*4;fB$Dm4UX=OyIUSNch-v!X$HNJnZ5uBEjBhG55;@ z1Q1(5O3TU;6A}n9F_^jDeBNZtVl8&kpcT)c@=RYKj*gBpNgYo_2B}FWdUj@JX4b!F zWWZPr!&{zXC*Nb9(e)U# zWH@+ecB8rol!eJ;woOhJRB=I}i^10o4WkFW_)Zz*9gc%O#BlNul9Q92uSY~QI~Vlc zyB`t37ERZL#(rE5k2Pj#al?+lO!qaUGrMs+KQM1y8hCqpda^Fy;A(1W$0a1jR`iH} zmz5Ye71h_nARt51draLmFj6IZtLX5SfE0_@_YV*B-CDvsMlc#V$|E>e5f&G+2gzAZ zL!9T8UD@~p;toAKD@)Xs6ml%;a9B zwcM+6&x~XRUN$v}p}c&*4v(4Q9H957i(zCV`yDqJ(djj+z z#Y`52%|b@CI=lOC{UOF!BQD|bV*;6se6X`{rqo{Xet5XfN+@}HIj$%FC@*jEl@jai z1~Kk4^MUPDUIo!WF0@}Y|(tbtm zG5IBE^gS`vw(YZO=q7LX4hA~afpmA1Bv3Sv;6GAn^x6(2)r@Y=%*>=?z7jaNszVm+ zS_78WZ}jA7I@Ne`9PDjfzS_KAKzrR8G2bu!C@wB%XlQsCu$=8$1uQxeG4ZVd3-pPl z$(8sAzP|p+wMlY=!dk@kqA*P98hcb!)Kk&(tmfwCz8K6DtyWHV`Ez?bUk#37^2u8b zNV+jRRZ3aex;pFCt55CSBd@O(y{1gnF(Ovh>jK4E}>8+MXBCuV#310{Hc)$x9itW zvbSQgv*hoEfX#cw zK>9pAJ&!_e-n@wz>vP*2eWH@;6+Fatgx3a-|IiZ_E*@$+KO$HU979M%gfSU)*s;Ad zGB7&YRnQQc!N}Iqk(89Yzxz|^{k1>0o}QjW#=i?8I^3eFkcST+;`0~097_f_?qko}Ql4>Fv~tM+AAN*^{2*aOUL)l-F7}?8_+)y6}P_=1<$0Uq_iystaNU$ zva#Jz6^qrvP~1sb*$o z(Z(;^GL&3C2Zmt7e$4Z$sjEw;Ths)9w~!Zt+B-T<4_CODUA`P&P~e_SyXUy-TX;v$ ztredb%O&EuG+g29>l;1biwX>^q;uMrHvWQTo~bgEH3lBXE2)?quk8m?I zgrr%VwzIQaXKr|X2;1WHs}lzp*!vwON^Im+fpWfeZ4v-mME^pFQ=OkM7+zJsuk!KB z`?I;&l>Gc8Fp#A~e)AzZX=z7)O;EgO#Fs5CC+GSKOz+;+tiSzj_>ybjM`wCzZLq0- zmUr&OIBrVYLpEDCH{#gXSl}E#d{zJDuHnEMq@455 zM9Q;gF@VutqZ(6_@Na@mMW?|KFn`Y#)C5f#14Hq?bxTLKTu5=XxBok$6&UgbBE#Yz z7r2-^YjFcg5)u3gUHR@J6bM@R%#dH5R*?WszNQ9ALT z@O}LMCa0wx0Jso|ITCXteRZPOOFiuN{;m|*7ynxu!SOWk_o*(+8y~k{n3RLX7Gi$M K8dYiRLHHjomTGYT literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_2.map b/doxygen/inherit_graph_2.map new file mode 100644 index 0000000000..35492d6f7f --- /dev/null +++ b/doxygen/inherit_graph_2.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_2.md5 b/doxygen/inherit_graph_2.md5 new file mode 100644 index 0000000000..6d138cbfaa --- /dev/null +++ b/doxygen/inherit_graph_2.md5 @@ -0,0 +1 @@ +b27ebe6cc0fc18459866e0967e18077b \ No newline at end of file diff --git a/doxygen/inherit_graph_2.png b/doxygen/inherit_graph_2.png new file mode 100644 index 0000000000000000000000000000000000000000..3c8e282d2991a5f53a9c94faf0da29059e0725dc GIT binary patch literal 2426 zcmV-=35E8FP)zlkXeHzmIk@*Hj`qY?+6k1C&dJ;EEr(CPL((`Rei z{egk^`FmgYwc9=JE5Kkd7z_r3!C)}l31?feYu7F%$8rDt4KWPHNFbvBUA%bF)W2?= zZ6}W7{^K~V)P1rT49Q3WaJ_%UpakzDKR@5)Y8VWuNJ~o_vfj(hIv5PM!V;V@reO)r z7}K~U!5bSJ!Eqc~T3TE&y~k^bj*iB~ix=It9>YHD2A2Sq(4GrRa2ukcqHy{0Wv9ke zR8(Nsu3fGXG=>;XY)1-9aK@NMk_2yPXn;nefm|-f!i5WQ>(;FS?JAWDSy@?FxpF0@ zOqqg`k`m6MEsmWA5nz%>PQptCw|9{9Yb7P9OQC2=FOXj z2M-?b?MkH*j~+eZ%O;Zv9LJ%(y`3MQk&ywlS`C>@hJ_0k;^oVi$j!}#QmKTWpC5EO z9jsQXQ<`kg)KQ%5#a3vYks?WgCnY6e(xgey>-8urD;x6H(4|Y4aN@)Xw70ioWGJb8k;x;o6CKOb7H7FMejB_$<@jEqEKVIhbJ6%`c#fb#Nk5D|X= z{*BwWZ{y09E4X&;nq-s0cYZIcRKbL~?R6wr$%s;7umPojZ4M_Uu_SHZ~$U zIvT52ug2%kpHWp+g*R{BpscKHz-1stlkJ&0ij%$AidjceQd3hm=yW;~i(aoM0Myjf z#MeD~^oRgZb8|Bh5rv0`Q+9T?=sAarkQSrSNC2q5zMgNlSS%!$%c-iWiin6JBO|G> zu+ZT;=gys@q@*OiymaYODkvzhTXuvPP2u6;l$)E&x3{*o5&$xpOhiPaP$=l(!-s?B zY-?-d$DcWKhHroT_%U%DM_pZAeBG8UTj=oN!%k@uI#b&?*~V7PI%3i3bd;K!y1_P| zM|^{uOeXmH`XVqekgp313meogC@5&8OO04db#*lWK%r28<2Y~}2XAk0bar;4rl!X3 zyf<##Ktx0YWHK2zjzfBSI!q>$-TuxXR#X2y`S|z%0D5|QM6WY#+BE*>Ns}gF^5n_z z_4OT4*EgS7O}1z1Y@CLB9?oFbiy{`KQi<;FZkWwx{tyfX!=Qc~H^{gsIYL_I%$Wl( zFE5zQW=x$rb;voqyavAKo0^)iY11a$ym=F=R;_|eCd0XN=TK5oB8g@(nuPH2@fncp zX0zEXn);uqm^j(SR*Jm~G2$CMEG!JmmMz1cJ$umH+zf-kfFnna2##~bL#B|Hpr9Zm zCMF^!B?Vu;e8JD3Kk@qYYiPAv{QC6^05EgrOjK1>p|`gez@J;vYPG`8&kqwOOh83N z1@iLpoYLiJuVOR_p;D<(SXhYm_IA|P*5c5iLr&?lWjLC|#K|_cQtVv_NggswOH0w! z)rGLIFlaOyBqt|JF|A9q6crU={`~ofkB>)SU?BGH-HViz6il2r5dd)T;6dEGcMm>3 zK8TKvMsRR2PMtc1O`A4BE|()CBLnN!t&>!_I6oMq7GhSb#54IIanGP^8eG?A8;1|mu-C@2`<2WMaOFvc_l6qQ(s^(7>@9`8(eBU$+{~A%(>_sV?Mzd|28bao#by= zJ{iM@B{*YDGwKpt$hsC%3A7(&dyGx zr>7$%Bm@Bg0Z2H^XJbre*AcP_Usw;^z_h+7cVF?Gm{@H#)W9BTWGI; z3wv(DQJdg>^tWV+vFZTxOSbH;ycsVywGj zES;gDp@YiyY@frmmfEAHrUu^L-a}fBZ7~{+7&mSlf`fzkx;_(^(P%_SNC>W7yM_Y? z4j?Kj3Ojf1#QXQ}Md=tyw>#{uQZuR&yw8$({P=M+G&I0!wIVMsk9Vi_x6Ag?-!3aO zzK_0x>_3N6sRUr(^4ZeT0wNmlN=QiH`-!y+2L}hkVzJ=cw{L=dXV0FE-rio+)z$HJ zdcB@+1Av5t1l+%WAFp1$LR?%NR;*ZopFe*B5NEUPuUqV1J&943;6j#6A-k+t>+6LJ z7x47yQ~dbx1E)`)hRI}tR;vZzddp`}P!Kd44R-F_iBF$Cp`)V%1qB5tFE1a|H#9U9 zD^{$)?%li5(9i&*(TIKf_8~q#9y4do#KVUVarEd>==FO1{{0&ki-nH?;JnS&9rjkK z8C3}`#**pCE-Tjhs?+I^m6e5Avu2^VxEOcu-sS%z#vPW=t5>gL(V|6Ivt|uKLqqZQ z?OVjg#tzxHw6qj5nGA~;FGgf!Boqn-ii(N=05LH!@b~vee0)3t0s@eimxt@uuR|u2 z0T`am*46e_sbO|m8&oP4GBY!=b?er@ErsC(%r49LC-JBRcVv|vD|Xm_VUM1KN7-dP z!7BUi-8+}g?+JVSm++_?oWYP9mf(yr4NGvwn1&@dV@zZBA@j|fH}2HIV7LUk30_c8 s;7%P327|$1Fc=I5gTY`h7@p1l0l%7eV@;zopa1{>07*qoM6N<$f@}eo4gdfE literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_20.map b/doxygen/inherit_graph_20.map new file mode 100644 index 0000000000..7f5d20793a --- /dev/null +++ b/doxygen/inherit_graph_20.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_20.md5 b/doxygen/inherit_graph_20.md5 new file mode 100644 index 0000000000..dd59579941 --- /dev/null +++ b/doxygen/inherit_graph_20.md5 @@ -0,0 +1 @@ +007d543bbf1649554db3c21f4f5dfe15 \ No newline at end of file diff --git a/doxygen/inherit_graph_20.png b/doxygen/inherit_graph_20.png new file mode 100644 index 0000000000000000000000000000000000000000..7e603b7895c1ee671ccfa04ba79b37eddd67a46c GIT binary patch literal 1552 zcmV+r2JiWaP)q3eC43y~s)=%V+nm|+V7V@>KDayc_2%L~oty?H(C zY|WjyquYzW&z0vn&v|~o-@}iyJxqWQLI@#*ko0h|1ILaX<2jDonTce`%A?U}1dqq_ zPxM$$>?Drkc5)o&TfVf&N;Wq)_ZNUaqQ~Nza-PTIS@ML)%I5KSFgQ3EH?GM*E`%(I znv!H4YD$uImZT}e;V?Lk!}$34QY@d4#bQBMSJ$$|%S4^aU1KKDn^HwKn+-Q_-pu+n zGZ7;d2~Xc7bR~yVy`V03r?Ln1-so2ygv%jLq{+?*`d@bEAyDk@+w7_eo_7Ce6ZShi+UQxoiVI}8Q`wr}5# zXV0D`%pvwVS)H*TgV(QLM^RA`bUGdEb~|3ZdIbQesj0!>;2@41IRcL3V6)j0?$hr+ zTHn5Xo3I9+=P@uaAYF^12#(`0IXRgyZfuOPu`wJtZ~*!F`B=YxJq{f@go%j>**;#l za3SG7r%RQlbUK~L&CNwH7({PxFK*wy9XIFJty^eqZIw1hi3blJ;M%oo2#3S4*=(q+ zti~UtjHVxtLPHV2}Y|pFe+=#s&rk7yuTD zL>Oa?m6VjQmX;R9YtBD&<;oT5`pJ_gjN>>qH8mxT9XxoDoj-qG_Dn}dhjcwLF~I;Z zQ52>7jg5`6I9s=FWgd@5l{$Cq*uiexxWO1>EEEbcoleIBfxvIqvs$gp>-EOf9J^1^ zYbvS1Xf(3^{(kA6AP5Wq`}*~3!nn~f-oJm(0I-pf5$XP$H*XjK_UY3nDTjsjSt+;M z&Fbsx|BUUywBMAXC_<;xAwNG~8Z(>Caq|ib3sYWu-MV$s-?_QDShZ>ubUK}EYR~SJMq_JfCoQ|}clIMB+`0)c{V`I`-C=`mD$8mB0kdzT4 zBO|iwP$&eR=aW9Cw9aUI_wL1`N00FGzu$T#`?OFETCG;r z9MSnM6nEanjT(^!K|R5 z0D(XNv$M0R)?l$%;PrYjIXQ_BA3osRxpT5-lf^ZeOeiZW!-*3oFgiL4K@f2AF>gwv$SawOcTrM;>H)F$w4Y+&vF8ccVWM2~& zl1iPsckjlUHEU2+RfV-{*W&8ctGIXX9`t%W0O0J|vv~OMA+%bpbP86ZhW7S$jE|4Q zXf(p%aA5!b{jz73#P#`n(ChWswrv}%Rx6A~BRV@fQ_4|QsUCFxPfAKk*qu9fGMxtb z&ypQ<2vHj~CCNG~>bLKqp`lEtKop=iCCNI}lqBm=Q&0Zvf5=;jYcCRpG62Egb+eVYW@Y7VUs$W5**L~0000 + + diff --git a/doxygen/inherit_graph_21.md5 b/doxygen/inherit_graph_21.md5 new file mode 100644 index 0000000000..c6bd26f243 --- /dev/null +++ b/doxygen/inherit_graph_21.md5 @@ -0,0 +1 @@ +f8239ef6f007ff12f322f081c1743e9c \ No newline at end of file diff --git a/doxygen/inherit_graph_21.png b/doxygen/inherit_graph_21.png new file mode 100644 index 0000000000000000000000000000000000000000..980a81520fc474815b45e0e2f70b10210fd22646 GIT binary patch literal 2565 zcmY+G2{hF09>=F{mdF~BJ)*4H6S9uX=#8;9lx>u()w~$wol(ZvLVB5F>=b#0EM6dFxGi3BN;--62{!8d+)jD-1A?a=lsue{^xmq-_Q5=`z0c5t@(H)cpwl69~=gC z0Ao3LbhtUedx^ex84R4L>()>R``1<2Qko8doNR(a&7C50SLuN;5qEK}@9YXK1iO z>-Q3=Ht*DwLkf1u*DY6qX}9VladHMa_wu)L8RQ5I#^qR?xA?F7=Uen@I1~zn8KfTE z)BMw$RG_V+vo*OcNyBkb(Cmj&nFmo0D3ZoWu@yTellhMv9&+f5cke{9va<4IPO}zo zi@zE})@b|UMOA(DIg61qEm2&ljPG;g_$S;miX{$-TVDs*^+%k6xt5~Mwf|nHBX`@~ z9li5y0+-UAMAVXGIaEBDX|*ylgLI;_eEYHqVPL)}tSOx0^yw z!r^d|_FbNtSFC!6vd*2=sUn9mFCQPg>s#NV;^Gs^%F1c5^Wr+br*tLwPI2PxJ&8o( z_sz{1q*~Vx<}mtTC-@~PYIlubQ}XN6;m@s&*>=1}h+i9>ZeW*ZNQm58Jo{yHc~ljN zL>4wRxjp1}bab4XpFbWL82FcyiZSkxWJ;T!P9~AWVI>aZlaumta*!&|w#8>-G#YB6 z_U<1Z7wqzN-LCKYY7q9FREXnk(b1(Ll`iEQOG65=1i}-BL1S|>Z))33c?AW$o&?`^ ztWC)a=W-W&cXw(3I=A1$!W1Dtj#yFh@(ve87G`J71Z0d0WleE{LPH>+aE;6@t;q+f zB0RriFt4aohyBB!Is^h?XldxBvbOf0Cb&b`C65nsTwGi|y}deyl<3R24)@} z9x+=tU0vbic!AOvFXRLK{fp-3QIqdOE<_t^YNj0?9>Pk8?HwIYua4K?7yELogM)*i z&;=$F9#EGJ{>uE)o4K&KNb^35GR(BV^7L)TaPTgD&eDnTd9V%+R6OM8XO`q#J}L}( zU0%-ErME;iknboeDeYYJCs>$MQl%LUygWP!41<9C_ZN37UEjvd&(A0K0}$pKBqb!c zA#|;1?7GMIh3=g2cqcZhwdnYR0U_l$Wb^ zkjWbh-KQb!ONtOLYB7A)fM1Hz-qCTqzyxa%7N!>v80ZaD#@u3Rg;7ot4!)y^V> zKGXDv{zoU_#1o#af0$#jR|`JamaYt@G7ODp^)BL$26$0I7p3+uWy4iG1$PKqo=vV`F3G^z=l>-nd&vL^Q&$(BFq}{qm?wxm94G zD$r+;N186~{`77m$_L)D)a)#ga3W9cSm}o-8db$@E2s z$L{MAUcOXNQBnEMpgc4AvRRH(W=~Jw*1de$QX^9Vc=p`6b1Wf@nV+siCxzlO-FZl)WRhoQWI-2$5|wP{-hAwHf=r3#yyo0AN~RQP3#$GF%F0S5_d0bowdzo&!=1Z#%}a;d z`}_Ir?d=Uf$*bDZ2?twGPftgG8`sLn%mmt^7+onBRaBOTS%cZx5|G&fT($vP{*c9b z{`~o|S+?TGrmz*wfRT&sNRWyfu?PCJDo=r|-{RupIEzb4yubG6we$~6^G%@gG`)}4 z2T#S-)@qBKIb)%A#VrFSDdJW@e{0BX0>X!VpxmO6;XQ9yt06_~AU7hobSD=QIf zcwsSnr-A8q>z2K%Ya(!h0x(cnS=qJgi6z%FQPYiRWLlUZxf7+M-^)df9 zdD(kV(Pjestl4%w{Fx=jwZfehCHCL$=~oZ+c{*Bn%E@SjS>+D;Itbj#7W&4*E9PIb Cq6g^! literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_22.map b/doxygen/inherit_graph_22.map new file mode 100644 index 0000000000..f1aeafeb28 --- /dev/null +++ b/doxygen/inherit_graph_22.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_22.md5 b/doxygen/inherit_graph_22.md5 new file mode 100644 index 0000000000..eb7dbaa044 --- /dev/null +++ b/doxygen/inherit_graph_22.md5 @@ -0,0 +1 @@ +86555569b6770bae7ab22f02859c54f3 \ No newline at end of file diff --git a/doxygen/inherit_graph_22.png b/doxygen/inherit_graph_22.png new file mode 100644 index 0000000000000000000000000000000000000000..d20cfd30cb386bb9f2a17d3d8f7fbea672660f71 GIT binary patch literal 3003 zcmX|DcQjmk7ab*tJ|gOb(MyP4qKz_)E__6^Q4@94Fgl4A%pgiclo2%;QQp&@P6W|{ zC=o4@C>f055#4wF@qO#Ad(XP-uDgEc?6c3_C;5RXf`OKc76bw@80f<-fLH_Eax_%H zb93of2?$g!MhH0Q>iR0~tjq#|===@fT9%;&JB2aE*};&(6(*J!)FOf~cygSoVGx^> zF;pi@0j%b;S#tL_Bh{ecOAFbY#<2z=IXCkdnlFLkH(r0`y`TRW6JiPxgx63Nhy>V+ zP=jecjIL>1Oz!5P{b9!et22L^mOdU_kWM1IaA$jaQAHb3)ICnp9Q0Iiy-sTL{;wGB z-@nfX8B|y2?Um*buCA{BE%9wpl3O_~;>}v?Lfg&c-ujda7X@>3^Y4ofI4}ktzP@@^ zRx@Q$zCjSWI2qKV23dQmhj{wjUa^7jvm=y0B-BO?Rk=jVsFZK9p4b3}N0ifLVjvL_eh5zUzOo|5z?RiHTQFTbn#yn{O6x6IWwhXN&FKpPyBM zo$u+u5s3VOK*Fq~#G`tUgM&jz&?6)=ZEw$?hLT)RP;m7lmOFA~Xo!ZEmKMsAyhJGJ1rt(O~%6gOtAAFDS@-JX|Wp-m{8Biuifyq8gf> z&a$<&JtiU2Aa6f>fVZD``}tKS@r1v~HWb2Qv6D^SbMNZwGl*tJMx{T0x>?lB$ji&a z&;AfAH#a@FczH$mOM(frFO7u-I+12de#>RR52iy`mO-8qm7Vsm!!Q5&cUS~B@6aw} zVq#MEKy*lKpxUB}26T9Iw2uP7+=+L)&CYHnwmCGUuM+TsGR7WA6*4#p;J(uAI>@LJ zx>x+QU~08+BC^-?)m4?#M5RD$+t_8(8Aj4jkOgno!WeP1t>x&*`^8Iv@s5fc zx~Mai(>-ASrvbnbr_fLiV&@;8@bK`ASFfHZ2_t5=*4Gm;82aqo+_hAxF3pgTW*wQR zgE1xL$YW_s@!Pvg?MXm`Fj#D_hdjT$JgZ%cZ-V_j1Oh>Qc}kFyS5V-Slw?2?mv!NA z${%ZMFL5|n`T4iLA~OUHBcq<39XCByKgOjEXCrpCuwaY9U^Mw(YKrIZ3kbL>j;h>9 z(0*1@!Y^UhOg}R-(;7-D`HIuGQ*Imw1{KH`s-_0#p^CcwnF`zzyJdrZ#&G1A@u&ky($jZ)0@hZb6;1buM8sn(A_^c$R|oyB-GO3If*u$ z2WBXgq|U9Hei_}%otVE2nov&)+876# zrUld}BLglkFPCFFCtHgNeu6@w3fa2>(SQbSYy5fosL}1FmzP(;lPj%fg*Ke`;*40m z?d>5Nr<e&exr**M{aw=XizLEeG z3UVJWkl}W;u}KEBTJ7X#R@TDE_;_Mvr3f&ui3r{(Rzx~aA*poX{x7XaQD$y#BP%Pb zbCO#M4?+<2N>=w4RopY*#a1ma7;Nd_fSR5F_#-MLlmHBFFd97#xQH0=M#POy?0jpf z!s9U|rKMZnlXxpSI@C@t&xm373neo%Gv5^#J88EY*c=k-x>>-Jlck8QWRarPGeFpk z$jHbT#c=dg6j2w4bANl!-Pj=cYi2Ur+f@}569e!o159^hlhveUS8s4#U&*rVq=921>)dHW`E1; z7OA0kA%MeD0R9Y^-t*_=`GHzkJqk1$9iNauLJ7Z3)hliIU0GH}DPmfn>Fs?N&JRY0 z{kkoh^NDjQLg7SCtoD_pU81C2b8%xMOHa35tV4T<^JIx`2nw5?zPA5sWN36W{*lDT zo*s~Cky>(JU!UjT2EBdbBgtRx!UlFRF|Zdy+c|IEd`fS3teF4yEj1SzeiJaYXQq{L zlOAvzo4h>3p{WUhbT#t0-q_t;-!7AK3sO|p30Z7$F|-2^7!OZREgc;SU{!FF<^13x zvm8#4Owu@VF#uE?un`2;#>PNx)IUEJV@X$T z%c(P8_wRp*LHgTU;Zem7XSbN literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_23.map b/doxygen/inherit_graph_23.map new file mode 100644 index 0000000000..d225fc248a --- /dev/null +++ b/doxygen/inherit_graph_23.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_23.md5 b/doxygen/inherit_graph_23.md5 new file mode 100644 index 0000000000..7b90396709 --- /dev/null +++ b/doxygen/inherit_graph_23.md5 @@ -0,0 +1 @@ +e4fb5064762318d230843d8b9cbf6be6 \ No newline at end of file diff --git a/doxygen/inherit_graph_23.png b/doxygen/inherit_graph_23.png new file mode 100644 index 0000000000000000000000000000000000000000..a22a1d0124d0b73c5c8cbb9b0ba24cd029940ac7 GIT binary patch literal 2894 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 + + diff --git a/doxygen/inherit_graph_24.md5 b/doxygen/inherit_graph_24.md5 new file mode 100644 index 0000000000..a89b397d04 --- /dev/null +++ b/doxygen/inherit_graph_24.md5 @@ -0,0 +1 @@ +48584fa7144b3e628d3d5f892637c96c \ No newline at end of file diff --git a/doxygen/inherit_graph_24.png b/doxygen/inherit_graph_24.png new file mode 100644 index 0000000000000000000000000000000000000000..85bc4e33a024e92a7168f3cb84e4e0f2d79171ff GIT binary patch literal 1610 zcmV-Q2DSN#P) zp+)4nC<>$~mAXm7{@ALkjiNth*z&C|EQl1Mi{4km!VCgq&FUQ5bY_bzFSI@HRR_0q zc24i6Yw!E}fZ+3-=lss^cb=bPM<+lCA%qY@NOoiK6T5fsHZsQ6WFi?t;%PJ*!Rz(@ zJ#{W8ei37A4P(qVb7>JGFB*;h3E+>Za|uoRgV*bw_JjyY#_RRs*|TQ}^O_9gLP$!e zX-U?hrX^WtTADT#3V|_(k&%(<2rtWKv!S)M^|y^*Qc{9TmoEJlxun}n?m4~ElB`2b zOR^3%Ey+4*Y1&{g2#3P~yeLLp3&1OSGLj%^YUynI+=HTYdn`mlk!qTNn zr8V(mo6UyW+FID{cIb3E6c!eur>6(a&CM_xjmXc>hs)(cG#ZV$*1*63%F4>1*Xyxt z*)lwQ_%J4BeSJObc02TXJ&KEq@#M)9*&O1>O7R^I2N+|}Xf!aJ&1h_F1m|4#z6}o# zW81cEC@3hvf&~k(W5*7Rj*cqbZpo`xuViacifuF+(bd%@jYUxeV+@f_=3D%H6pt0mRgO0_22^VhFmS+%?c2BWBS((JoYUOgER9D;M>zm4ilTJ9uC6ZTI?IC-30T9x)Z5D0LsR?GYQ`xWa*#^dqunwpyS_#RF9l~xo*Xti1t6ck8vR;x8( z-I66semVC1`SYdkb8~Ysd-iN-wc41u@$vDPbEf8zmzM_sF>5RqOU!zU#R5?jRp*o} zetUa6ii?Y()9Jt%!+`?_WMd10fSjBhm`o;V?#EjZK@e2sB3DZ~VgvHED($)1Y(`sK z8x9>hgjK6nVb`u*c=6(e>gy^=xoM3?Bfft9is9j5X)X{5B&=gB;R9tEF*rCFGY$j- zFdB_1#~m6PLS=e;`=>hdYHMq;Wy_YN=lFa+=yW=) zSg`^tSFVJ?U_eVti|T78t3@gH$&)8BGBN^#!2pNDp_uE>a+lllb?eq)?%cU3FE7Wu zdGp|QyK(E*E$DQ*U%G~Bzxp7SO^S+&`1R}8Go1!eY1$sd2$^Zrw7;RZZ{LD3_S3JO zJ9lO}y^NFn&xQY@zP`Rpr=W_-WJ>y%wEsJLr6pO1nwDf8YFd(YsA);op{6BSNA|Y| zd-m*^$vg;AEum>S=YIikW*`?r5@<9U^&d+kgb+dqAtX!u1A6}kPrSn~IsgCw07*qo IM6N<$f~OWIFaQ7m literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_25.map b/doxygen/inherit_graph_25.map new file mode 100644 index 0000000000..e02b999187 --- /dev/null +++ b/doxygen/inherit_graph_25.map @@ -0,0 +1,5 @@ + + + + + diff --git a/doxygen/inherit_graph_25.md5 b/doxygen/inherit_graph_25.md5 new file mode 100644 index 0000000000..6e4f2976de --- /dev/null +++ b/doxygen/inherit_graph_25.md5 @@ -0,0 +1 @@ +6a8c8a087c7e797be86bc5d6ca4383f8 \ No newline at end of file diff --git a/doxygen/inherit_graph_25.png b/doxygen/inherit_graph_25.png new file mode 100644 index 0000000000000000000000000000000000000000..81930a5c8abf3007fb56037ff04fd432d7495225 GIT binary patch literal 9033 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 + + diff --git a/doxygen/inherit_graph_26.md5 b/doxygen/inherit_graph_26.md5 new file mode 100644 index 0000000000..5db3f3195e --- /dev/null +++ b/doxygen/inherit_graph_26.md5 @@ -0,0 +1 @@ +08c245bcb98a74e4a02640f891bcfe40 \ No newline at end of file diff --git a/doxygen/inherit_graph_26.png b/doxygen/inherit_graph_26.png new file mode 100644 index 0000000000000000000000000000000000000000..22f4647cb0c3fd3cfb669078ff0fc0ac01987f6b GIT binary patch literal 2516 zcmV;_2`l!AP)<;#~%n2~uIt$f*)@Gs?W zYv`fSyE|r#ZC<^4W$6@52D=h6ERIQ>4-dr0$7AKn zl@N(UxO3+Y5)%{Q;^M;l=#D)+JP;cj3m+dJ*xA{^&CLz3U%y65N(v+r3GD6d5fv2$ zjYgxjRz*bx{QUeN7K`EP>WXL2o@vEAdh{rKe0(4li{a_%iQ?j7y*cQP4aHX|6yP`x zR#sM+GiMGG5)wc}dh6EQ+>DJIH^RZe0gjH22n`KIYip~aaswFnbv%-K8LG!H@_RUF6 zP36b=`T4|g9R2$Bi??msw29*4;OA85tQwMD+FRR{}saH8uS4j~_o00IILAH<(NRSbe#Tq+UbS zLw5~hNl#Cw$jHcC-JUc0N~l(=VQXs(2L}h+bH>n$tfI8ygz{(DISVWLo|*nG9;RT5wK7#m~*ng{P+{?Ck8oaUAyS*`qhM zN~OYt2@@cdN_kt~SHDW75}Z$eMp7?h>tPCvZbFGfg08MEG&eW%w(9EY0e&1eK(J#G zYHDh<#?{r;kVqs($8BnA!iEhSaQygjG&D3oqtPHOEe$tZ1 zRaN}4(ZXEy7!F1^pi%a<=lOiTeX!U|`^ob8>QWU}tBCg$oyA@#4jBa&kg; zcDB*E3g@uJ# zIz5v!uAUv2m6cgK1wlxq(jlL;n2NDd4|XMFSRB@b42v@+n()n=HwX+2goA?vtgWr# z>gtN9s3`vCE#u$DY)z=qXz=323xtJ*At@Kcb_fQBqQ3*qI?1lQ&^`c{$?Z;^6G;jEIN`I5{~XC@5%9Um`+u zbTq=l!;zYrih1+q!N$f0E-o$z4-d!Ht5+9j@=&1GcgKgWk!PnOp zy}iA9bXwH#I1*GO(wH#Rm>T3Q+{TC|9!PMu2Iw{NGy!a~w$G(*lSFE1wmR8mr6 za1D2NcbYzZIu#ceQ%_G15fQCev4R2u0;sO8j%sUb$=BDH0s;c~IZjSal$V#sk5wua z0id?FHa_N*DN`svKc6}}Iw&zQk;Gy#H8(d8nM+Sk4?TVQltMy6NF)-`vSrIisZ{cD ziHOdgJxg-AT<_T3-JPUTDV3I%QfFr;ZQZ(+L?RJIMn=-lpFgRxvXZ7xpH6r0-W_!P zckkYji;D~0ym^zi=jG**NF<`qpFdMpRu(xrI#NSJgTdMgspUv()gOH~t4-2`p`oD! zfWpGUsI#+E@Vu8VUlIVSt*zy4*RNkE0Q{>DT{)N#DU^^VG)CG*MAXvKLTlEnApjH~ zA1`>`NTgS~=t{+ih)$e1L38KMC6P!(FJ8P5l#7sBnxa-_ePWW7l!VmORFsvK!P(gv zJ9q9xQBje>dtH6cDC_F#c-!X9n?Xd#%gYqm6e%G_GR*o$$|w7kd%~!+S*!VWMn|4QXwa2@c&ohI1U#tUc{9vS8(v) zK~z>&;`i_0XliOgK|#Tg>j;rTd3bo>>eZ`gZ*Rx<@85Cw@ZkY*h9hOVa^(uTySs7k z-aUNz@&zYOoEUI*=)=@fH6c>5goFgBR4Qa=XXDnbTiCmIFFt+xWH7c+S(&+HUuL^S zV`XK9RjXDZD=TZz55Et8e}5Df7NV-E3QLzRg;*?xx3@PcD=Q8DtkIAZDk&)mKYsjx zlamt^3dNw(s^LhPQc_ZI>Cz>5dyoD<=NXcU<>%)kIXM}*xw){lwZ+PnD{<)1A*@@s z4qaVc2IC8nm5rM0>tB{~>B6L4!ZAgyn3Rh#W?@Y@4jAjwuyG~j(q*hjnaqtTq+#Z) z6}u8LEDmczhQ(n`$gnu92^khg@5ZFGv~)D{V2lI$By_syZNiL<46`M}U@#aA27|$1 eFc=KRnBxEa!!XRlRy&RW0000 + + diff --git a/doxygen/inherit_graph_27.md5 b/doxygen/inherit_graph_27.md5 new file mode 100644 index 0000000000..bc2e7b5168 --- /dev/null +++ b/doxygen/inherit_graph_27.md5 @@ -0,0 +1 @@ +243760a1d48cd18d0d0005d7b61140a2 \ No newline at end of file diff --git a/doxygen/inherit_graph_27.png b/doxygen/inherit_graph_27.png new file mode 100644 index 0000000000000000000000000000000000000000..5995598985d4f79cb9fcf625bef725908cae554e GIT binary patch literal 2263 zcmV;|2q^c7P)!$DM36kfi3X*CD)v90)Gu^0@) zz{|@E!NI{ODk=gY#A@A!hK8_r?_LB11RyXl5b5dZ7#SI{Rc-(?Z?BHj%T_(yg-e<) zDJcow-ri6um1t~i#O>R+XZYN@bqg0SUW8t+M{;s9tGJIJKSo7G1qKHP5gi?kojZ4; zySp3j-@iv!R~H%^8)r0lZEY<|N=h&|IEb{gG^D1cnw)r`^5h8!A^7v>4<0>wgqoTf+`oU{YOKV>MEv~u6AFa_U0q#JtJO$NO=X>n zIgZrJ*?PEy?Ck7Bi9|x!qEspg0HW1ujkea-Rsw+NbUH!^A(4@hq^PKfbnNwO?Y8;P@j1T}sqtO_*7Zenj>?b@toXF*J);Y}< z-<&H~u8^dpB;$DN)~%$nvXT%&$k(r52>{aD+iTqZ;ll?4fc*IJ!)7kiV@>7eNWEsO zhxtD2MJAJx?Ck7^<~`>0l}@A4z}MFo0RaIOy*3_!^g)508D%Y0)dIYKp=odqhX!XZ1EpHe2A#1DERsLfngXNIda5m zY_(dAB}~Q@E=hv*C2pg@lA4HZ~TA4jqC{r-MqRLP0@+&3SD8X?F)QnG9`hZ5SIH!{y7D zq0wltXU`s|bDEf#fWcsZzrR10E?tVw&Q6qebF2q#evw4|m~`2Z{RndW?^cBP1jQVzC%$X=$zq>lP#u2?`4fv1ZL0+`W4j zO-)TEw>Qo!MGke8Q-goK1y=hWBN!_UtTn>TO9mMvSr<#JJ5TkCW# z_Ta91*oD0h5(|mQ$VgIGS2x#b%p2TY54Sx?P$>37n{FP`*VhMzVJyBfGBV~mJ*WAn z)?O6~#aySr3O=7d>q>^Jn5%lwD;>q-(572JEMz&;bmm3Vy?OHn2?+@Z2nc|;w>QGV z!XS}Ij31U#{!eFTC$h4#<~j|haa+?F30pfuQ$fDN7|E_nTch~mLVY_0qfVV$NBT;EiU;1wpTYCks?`=Go3ke#;Vk6Hf+_- zow6sFG@VwfMMXsgqN1V@7Z(S;UXOeC?m?wep}4ph!NI{6=Y9VC8GU_ytXDA12d%FD~4(P(h>>QyL}N(hBQh(sdXxN*bS%xrN)ie!#0DVH_a)XrnFCr4H! z($muk0FsfBLB__$SkHU$;spUf`uqEhwz|4H0>Jp1!dxE3MjFKBa!E@|i*dVJttJ4- z=;)|1rZZ9}LI~06bY%DL-2?zBEG%R_&k-q-B{`ElQmZN0)Xo*PaqEhNR4PSTSs4@x z1%iTtaPZ(kbaZsse8)|#@qPdP-Dumte?JHzXlZGg;Xhp-xey2hP$(4W=;*+K0|&5jMi4!N#)6;|Bzkfrk)uOGfZPxv;kp>BcLR42*L$BB4+qZ8x zdGh3pIQB?;s;a6mF)@LLh6a53@&)J4ottqrm}0J^TWnw}t8$m@$!#B*czJnY$BrGS zsj0DevZsiTk4JlZJCsT#Vq;^$;cyTW6N8?f9-CjYvn36ZN~IVc9tM}og;*@MC^fQ2 z+EZFuitE>}BPM3y|B@OTS(V3RPm5XFWDb=&S;rN%q0%PGyn!~|B4oZxqy8yrlQ|1T z>SQmjkVd()HuOqI@i?^UC?1D49mV6&rlWWqs}B-gU0t5cgR%&*rn<4(bd{BrZcBzj lp-?Ck3WY+UP$(3;_#c3nHEjAS#-IQI002ovPDHLkV1nOUJuv_P literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_28.map b/doxygen/inherit_graph_28.map new file mode 100644 index 0000000000..d1c1a52404 --- /dev/null +++ b/doxygen/inherit_graph_28.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_28.md5 b/doxygen/inherit_graph_28.md5 new file mode 100644 index 0000000000..9ab5ee01f4 --- /dev/null +++ b/doxygen/inherit_graph_28.md5 @@ -0,0 +1 @@ +239620059f617c556546f8a46c31c0f0 \ No newline at end of file diff --git a/doxygen/inherit_graph_28.png b/doxygen/inherit_graph_28.png new file mode 100644 index 0000000000000000000000000000000000000000..ad7d603a930c696db336dbccaaec89697358f906 GIT binary patch literal 2723 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 KGp|A1P5LiS!6|kC literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_29.map b/doxygen/inherit_graph_29.map new file mode 100644 index 0000000000..af6467694a --- /dev/null +++ b/doxygen/inherit_graph_29.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_29.md5 b/doxygen/inherit_graph_29.md5 new file mode 100644 index 0000000000..7a90a31815 --- /dev/null +++ b/doxygen/inherit_graph_29.md5 @@ -0,0 +1 @@ +dc377fbabd3e4e8a95e0b187acc09528 \ No newline at end of file diff --git a/doxygen/inherit_graph_29.png b/doxygen/inherit_graph_29.png new file mode 100644 index 0000000000000000000000000000000000000000..273c7dd31747f011aabe819ff1d9c3b888163fe2 GIT binary patch literal 2396 zcmV-i38VIjP)001)x1^@s65IqCH00006VoOIv0RI60 z0RN!9r;`8x2@y#|K~#90?VM{!)88M*-(QK+v}q4g%9V2(rbP}55@i-r4-9>f54==f z5S^q^WJ+G5pft4dQbcKL{=Ae~SPx7JHA=C6R#IkEXlt5Vc})#12`}gW$S=;z_MO|D z>3PAxbH3+%KA-dP!`Z&y^WFdog+ifFC=|+agPGnD9v;qT7{<*I!BCbqgpmK`<>e`+ z_N|ych+!BvhGEJUE-cD2!XLoBsU0&4aFU#y9KAH@`pqx&u-SicSi!v$GT4-rnHxcyMxZLV0<)(shwYgruY-?AfyiYu2p6 z-Me>@nwkoGdwX`w^tMPOLQG5y#9}eb%*^2A)v+0A{`g&nI8%^05%;qyYW>{b6iu z45?I#ii!&S_uqdr#@xDf3l}b2z~JB@0s;a!*?su%A+oZv(ACuiS65f;+qVxbEiGtn zZboBcBPuE?W)yo-Q4vy8Q_|1O){t6+w1(HqM_v4~0Sje}8}M-@hNdy}g{* zs>=SOM~^@V!RY8H9z1w}!oot7mX^+G%g@gbzkdBfQ&STf8yg{)%Mlb5#5tDf%qL&k z=0oR1L`3*WBoe|EsZ>e;knZkowy&n9h5#VFy}g7GLY$qQNpf;BXPc9AGBPsQ_OoZt z2*WUBczBrYJ9Ov}iI0z0nvi29Y>EIMQ?8}WHK2N5)#zTaj~JpSTrnTKJ<1ILZN5_Ex<)cdwV+=hMDyh8X9Wo@N~+u zIty-UYBF>PoDc{EDo;>!#bU?@-2oRVOGWLX4qAW|gR&?J@Xeby@b&eDrKKf|jg8^p z-~fq4!akU#EM4?gfD;oFc>44yLPJB5mXxW|tlLo60UAP}Igt_}kO1E{R5gsZD7 zQc_a%72do!dGaKpqN4Ef}--Qb#f*?pO2cF8n&%aD8Mib1_uXO zo0`ax!otF^YSk+E`ubw?=FK>F?%b@$j)3}86-|AsTg%m}S7B>w3sX~5h{a;OefxG! zTT@Y&Lw!rObW(ub-QCE_%7TlF3p_kLFgQ4fJ9q9tCX*p0B?Y#&wzJOr{P{E5+uJ#x zoJ^N==|aw=i5zL`)~(3Q%!ERrz_n}FAeBlX5{V!di*fVjO|}^H;ae50t*wZSjYUaG z34Z?kiA$F*sg!|Dg-Z?>RI)XnlaP>*5CVXNhK7=%p&`!mogsCtx?CaYG#@$A`1m-gs;UqY5(1%6i2nY5WM^k1Ha3>C-}(BU z4O?4Vl$MqvE-nr`ckV=3SQy^Ff3J2P*Bt6ovZa#(w6e0oi4!OA?%g}o*4Bc@;~^j* z079VGE3$;8A&N&hxgGB$}Oa->h6J|QM127Epr z(b3Tm3WaEDYC?T|Jt89`VPRpxX&v+Nt!^zoK0bKzRYNu%n3_DL+3SBO@ayFE7WJFJEx>?AaN+ z!z5g!U7Gk-wU+AYY9uBmLMoMFbaWKsneRUV~@94S3L z9XD>=fSa3ce!Wf;->TNKd-rZwSXjWz%L{AQu0>{MChpz42QxD>wJ~s!ge|CKYbndI zrejEX*1sYR(^Z^Qjzw9N&;ne-{0p+KWhKX&jv?hp3*lQAvMzncNq0bsL7@dmF(|YE zDF%fWAjP1}c@xsu*tn2!P?jlk7GQ2}?n1^vp-?Ck3WY+UP$(3N{`o%;HlpGLeObo< O0000 + + diff --git a/doxygen/inherit_graph_3.md5 b/doxygen/inherit_graph_3.md5 new file mode 100644 index 0000000000..226160964e --- /dev/null +++ b/doxygen/inherit_graph_3.md5 @@ -0,0 +1 @@ +6e2e767c5c479bbb9177af957ef24ea3 \ No newline at end of file diff --git a/doxygen/inherit_graph_3.png b/doxygen/inherit_graph_3.png new file mode 100644 index 0000000000000000000000000000000000000000..ac5df4074763f0edfc7bd5feca9af59e45988370 GIT binary patch literal 1595 zcmV-B2E_S^P)EO{ zXf4p~!b0$(KU8-kEU*%~u|+Fyns5IIg`kAGdRfdMMmLq1)`{knTCs|-_PiJ2p`E#% zv+bFiy}u6#o^y7d=X-uu((kOS%${P$Km(;7u{x9;w*&xv8b5{5rmqF5J8I4 zOwni*j4{m3%@t$#vd`jhIB@04l_i_+|7w1I9tRH|L{(K4HgDcs>Ns>|5`mhhH16HI zhj2IyS(fqq`SVi8p=MIsx^*kAUAvakKA}(uot>S<3G@far?%NVd-e=1EiJHEEW*Yt z1T_;`wmyCOgjK6nl{$t(NHe{E{~nSg!E838p`ih{Z{JSY-qh5DlP6E2wY3#hRaFQE zgXrt)!^VvpmB*-;iu2eq}eShHpgBuT>b^fUmVy}cbzpFYK*Lx;c^gTvtf z07#Mq#uy9+12$~f0H4nX&bczC*4sR-W6hQc_*K8tr%z+&&Yduu&DgYQ6CONxplr9< zY#19GQ{ClNk}s}olaC#RA6Fa0wW_Mi(bmFUcHJl zXU-rVkE6Z4UBt9`WpTM&c=hTP9zTAJH*emczP=u9ZEZ*q9geh0Eo_fddCp8d}TUyLWN% z;zdNGQ8*k9?B2Z_FJ8PrBoe{+_&7#JMp9mQ^kh<>(`_)OSQ|MF$XLHam$!IhJ0KR?urhA@s>((j%S5#DB_3G8AtgK8~w=kaGOzLx*Yn}2v zA6g2nRlYKQH%~8{&4w>uz91HhDF-n*Ihpo2#?ro^E}T}D+S*ze3ty|c&YZpu=69xtb5DW%|WY&{Oi_vIId9uV}u_ej$`#IH9Cv|N_ z9D6w__{wCr+p&H7b{sx@7_+mpn4Fx%i4!L@_bbK?2(2tNH8t3~cQ4#-H(tJciLYP3 zA{-8*t*s5;zkde+tY5z#kw^qTe*6IN>lH1TOu}NZVCBk{2!%qpaN$Buxw0Lro=jSr znwk&@1Q3tMF+DwvW5g(&VXU`r~S6Ac6kt1-s-O4T2qeqY8{{8zf8jWx`9H^_S!?|w^$vY#ONbz4*GyAWQ_7tk^+q;JbOE z)z#IN<^wiTRzyD!mg0F;c2_1smMdx|LIj~^B18~sCPD + + diff --git a/doxygen/inherit_graph_30.md5 b/doxygen/inherit_graph_30.md5 new file mode 100644 index 0000000000..f75fb6e710 --- /dev/null +++ b/doxygen/inherit_graph_30.md5 @@ -0,0 +1 @@ +8a0581ec2287ceeb2bc81ecaa4a2de48 \ No newline at end of file diff --git a/doxygen/inherit_graph_30.png b/doxygen/inherit_graph_30.png new file mode 100644 index 0000000000000000000000000000000000000000..85548b490ba2280f85eb0196e4f23a6979847a15 GIT binary patch literal 2885 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 + + diff --git a/doxygen/inherit_graph_31.md5 b/doxygen/inherit_graph_31.md5 new file mode 100644 index 0000000000..1663f651c4 --- /dev/null +++ b/doxygen/inherit_graph_31.md5 @@ -0,0 +1 @@ +c41e727f68df3a088480ab21960ddf9a \ No newline at end of file diff --git a/doxygen/inherit_graph_31.png b/doxygen/inherit_graph_31.png new file mode 100644 index 0000000000000000000000000000000000000000..8b234f5b4b740a2fef88a6bd6c98c00566fbe4c2 GIT binary patch literal 2782 zcmXX|c{r5o8~zYY!XP1Lq)f78Jx(0ijj^vWj1*%}ax9TOJA=WLHDjwLCTog9I+ZO; zq!_YmiWqyy!EoNL-|zaa?|ZNJkMDi%_kQl@ejb9Ag&{Ym2qy$V+{Q*|8?aV__YW8c z`2LvOQ3VT!tEnLxI{f{VwwB+6AkKTnXkFV-@^TT*?DAEir0MuAHcDKo-t%D@7uzAn zE!KUrWBdXnpE$H4&qo-xTEfQ`)!8on;DMxtc&p8{a z>6hKQTU5j>!Jq1?i^1pLIh7>6uPJXWHR-B_yVTv&Q(r49kb11Ax0h5@bhEyHS#?jZ zY+qRgCoRurj!o@#$#bu!Qd!y*y}iBby4EJo@)P`L-z84_d=^2R%+qFXu6NWmGJ^FN zYcjl54;-7LM0AwqX4{f8LS}1|YN`bC-b!}wuG0;TQ2e1`VP~YIU>zMD;ag`(u?8#>V=Jw%s5ZC72gp)V&}W-~0V6_#snFQxAjT*ooA7)!KUI zUiZhr!7?w#7GnekhbQOd33X;5(-2#&rD^5crBZnKUzuX6$ocQ_qOKoKW_O@@@+S%bJUIwHP2)c%bN0Z>E zGtz_<^yKsC!^;!ovPi5#i32yW(l5;ftIW!##C1Ae%`_egGV8G(Va;HR~C^q2D@*qP|h{nvuJk z1mrW-^>YbX=PiqQ3(PQP-#u&XvDMh)mX?+~ySw!sEG#UTWlRR*`qrp^GLOfd?X@+X z!vp5*!UENvHa7NTq`dMpb9ajkYQ1=Ha1g%CWHQT!eX6%VkOAzlUn@u`ri&hn7gpqo z*NWPm>CICJJv`7H_ZxmQQt>oQQEFUA-ID8>Frl!P z47_MU1_kiJj`#-!>FevW!On!2g#Dajfz;L2v-0y{1T-tfhCn7G(tLl0YN)8HGBgMN zR6Q?&Nq>`hTHDIbt|QkDi>(iSGoau$q7Xe2!DugDUkOeAH>*SriJqZ;R zfg7}{w_Ta1%LcvcqM6}n0|WeM9Uh7nEA21Q2Gw-5!I5}#yzvzA^X15hG;{f)^ZIR61AFYln|suy@_~){Rn77#Q?Z zOZfE3M%nwLc*|IwL1cuw%b=>m9Vq~Q#$PR8GvcDH%*n=^|H!IPYZ2M^v2%8w=h{VcTpP)y9sgv(!T z-YnGECA88_?SZZ9+{^i@ywBG?Mx)V|#WL{1{%X0)A#;5NY)SZZmCAu)O|~}0nZTxP z{}R_T@}w#x5-BAs8*eLP5FXxa-I|=7JSAE>I_iKrckbzkcJzMTXs(r1`@-k)tsaXK zE$%X_QO2IX;KjeExSE_Yj>5&%#!goHFS>TQAq{j$#sStTX#9FxSTy>0yF zkHL_J)wwy20<)ycR%YV468+K=|FAVAtxtLH>ek_SdI@M_Sw2QOZR>^z^)| z!aV~#n@!OZj-Bw|{9*0g;7C>rV9m+N;U%DX(>m0G=C~>?gToO_4p}875+rUz&5i`d zkk^?)B%U)iHpc!+OHW6EmiMT!F&7x^z0OX|Spm-Oh8rVB#>U6iH#gnK9nY>m!_IjV z%m%V20zcgU(|zF+C4pCOY-}tABv4vjzHxDi!C-X13i}Cz?&jut+BsiwwI`HT8(Ug- zkt7VQtgTr9u>d%IWwOPyM0Skd+1VM?imv3nG75#AL?U5sUdY+ONd!H&eeCtJr}ulH z)9c7nL?Tg2Mus)H4WDyG6Lh`|(1IkCl=y(7dHeY2d3s7V`hIb3td;O@&SQ;^js}2r zO-wk8weMuSdZlr}@i`3e+Hv=sDHuAcR13C2hxuKy$vjA9>A#nfYS+{pWUUS=jiwo-axVuF{CFE%A5{VI-#JJ`3kA^dxC|G4J^<#dM + + diff --git a/doxygen/inherit_graph_32.md5 b/doxygen/inherit_graph_32.md5 new file mode 100644 index 0000000000..f53ff7dc36 --- /dev/null +++ b/doxygen/inherit_graph_32.md5 @@ -0,0 +1 @@ +fca9eb8c1e380a2c5920a50b98f2b617 \ No newline at end of file diff --git a/doxygen/inherit_graph_32.png b/doxygen/inherit_graph_32.png new file mode 100644 index 0000000000000000000000000000000000000000..c9608e48a2ff61796fdc24a077da663c60fae003 GIT binary patch literal 3997 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 literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_33.map b/doxygen/inherit_graph_33.map new file mode 100644 index 0000000000..83fa1cb3d0 --- /dev/null +++ b/doxygen/inherit_graph_33.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_33.md5 b/doxygen/inherit_graph_33.md5 new file mode 100644 index 0000000000..81ff2b98cf --- /dev/null +++ b/doxygen/inherit_graph_33.md5 @@ -0,0 +1 @@ +bc7fe7b5c4714911e504008e1371f759 \ No newline at end of file diff --git a/doxygen/inherit_graph_33.png b/doxygen/inherit_graph_33.png new file mode 100644 index 0000000000000000000000000000000000000000..018cae67d99f8e23578dc9e9855d7af5ca43a533 GIT binary patch literal 2907 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 literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_34.map b/doxygen/inherit_graph_34.map new file mode 100644 index 0000000000..7f370f2e02 --- /dev/null +++ b/doxygen/inherit_graph_34.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_34.md5 b/doxygen/inherit_graph_34.md5 new file mode 100644 index 0000000000..d9b8789310 --- /dev/null +++ b/doxygen/inherit_graph_34.md5 @@ -0,0 +1 @@ +8b9fcc6e8a643640c5a9b6d41e5736ed \ No newline at end of file diff --git a/doxygen/inherit_graph_34.png b/doxygen/inherit_graph_34.png new file mode 100644 index 0000000000000000000000000000000000000000..a28425d0ad8942cafdff0bf95a4747239b12886e GIT binary patch literal 2853 zcmXw52{=^k`yNY_ZKCWWA7yDWN==MCjI9PG`@WPd`)(|gedn`%C<;UP6v>u7VJJ(4 z7|K|(8$)(Y{9f1p|6S*t_gvRG*Lj}jy`THO&l7)NSCf^Aj|l>Suxe|e^}&4rT({0L zfE9Tq39JwXyL*~w$jRwZ&{~=SfiO*Kqg4z7^T`Wa$CS}Oh_|Yf03#aK26OUp$Tn%}P2;n}t5h!Mk6SMmD?#D6FZtfQv z-bWGr_}$b^VrM?b@$MY{srKwdAX*z*l1YPNLPW*=@7oGX(@M@1vNOXCmd^h>G1hq= zYAPz>3G?r}AEvQ%es_L!GZ+8r)vL#W<~bf>Df3)DFvt9sTAszhgQJ-hm? z;#aR6K3=fPkvG-RVI9nqy;Wo>eWvk7e=Q*)#`cPxdgl!e9j#&NpMBB{ip{+tSU3i% zRXQ@;Olf;Qnq&9lQ=`<^w*h>jSD3jayT+|?iet{0b4EyvmTn#@JR*WNOdf$?C53Dc zMD^sqM&WHw<0ao4_VxAs;Dl5yyl-<%J#=z$;aDGE@ttV$yY?bzk+(lj_JT5Xldj%_ zlu}%Lr7e|GuUo3-?0j_xtN7DfcJa&0)C@7bqM{;NcotKQ!$1VlHD-K`v&-el6Ez11 z(ThxH76+ckMlwQ~2;bj5W(Hq@NBR#RdQlIyp2{A$OyB`XGg}-_q6O!2h%LAc{l!@ zkd+#=N-qgzK5JW9gi z{r%Ac{Uw;VuCXz3ni+g^g{QAf_7+VsDYK0Zgq9_&t2@{ zA1Ns*-<{+9IIm6a6$pQfdyrSHmD5$tMtDgC&J zj7&BQ109jet(;H`^5_Lr$pMdL6g_5|;D+ zd6p!d`Lb_eZXe3VmabZO7S%Hw!I_-1rIuUck#{d!k{!|%a(I*Ee@qRcy@UI+o4t%W zriVY1!YTO3<;Nu?sJgmJkY0_sXznDYre-VbMM9N&Pkv7aQ@TU}K*b<*2Ru%NxM6%Ivcd<}q}PY%`DxRcORgIL=wdiRclj*hO#+Yp|$8K@9J`5a@-U1!Fci(zP(Vio3~BFyVC21&Dz zZqDA*UI(ID=UJ_Gm{KC*&#cXuDkV-t{z0tr4i)XaW+W6lGEp>a6nlfP6; zM{K{mP+VSF=@_dpeqdxIdbPf)u-b9pS@hI2k>vO=L4tB?_)1E(11Q6@_<_URud7%O}U?;TD$01Tad&&4=r@zzE z!gtrk@pwEPTP&SN+o33s%G})Cl`m>ZUO`xgIQE+LDrzupU_Qn2Wle9<?>qkWe1sLSMxp|_d zVCY4LNE+ZA;*ydvpB|~A(NV=H$mXCt#pdMrPh3*c&zCOR0@nR`f4Zy9-hixHy1Imj zGt31B@CWAR*MiuDm={)vzG>;{s(yZc5Az9`#0C$+?yfG3AK!>Z0V53!POlS#GpgXU zwY3f0Xk4;sm;#W;w6wI8>pq#ZzeanU`uOqV!s=>vmpVQmh1}fSva+(X*zZ}_j1R=D z+Hj&7&T|*qJAW8bkZ<0+d6@sPxCvmccC;riB&728*Hd;o3XFf42tj7XedPo&Z{pi;Mg4YoTwe_j2kCu#L^;miV+3PMx!I^730N zr7wkV-{$1yQ;;JDg0cYcY+&4C6 zY_+=XvUOTQ%ID8_QTe(dTix7miLOH{zC&xf2dfoT^zGZW#f=r0WK*->y}KFmo7`|C z7jv+XZB1A>wsZ2D1spy@j*gDbkq?jr|F;L0maK{0!q{O^$f?B;iNxN)!I&wsMp&3q zLPEmO^mNLvU%#Z5LS;Z>gx;D+OjO%5nwgsy8dYo^tySS08-p+;Hx`7wU|Xi(`_>(j z&5aMP()g+>CBXW`X7aiiVpTf{%}n$`x%@l}(kb58ij*+26;5REgX*C-im-)kVBwH*;A`O-*}0 ze`cC&`1fBXLqkK*+B+5&u&*N{!(YEf)YjH|^=bC=-4aE + + diff --git a/doxygen/inherit_graph_35.md5 b/doxygen/inherit_graph_35.md5 new file mode 100644 index 0000000000..ea8c91befc --- /dev/null +++ b/doxygen/inherit_graph_35.md5 @@ -0,0 +1 @@ +1db6d44cfc8f2a00d676127606e9bdef \ No newline at end of file diff --git a/doxygen/inherit_graph_35.png b/doxygen/inherit_graph_35.png new file mode 100644 index 0000000000000000000000000000000000000000..bbf54625ef2e6907ab87cd3e3be35ab9c60354f4 GIT binary patch literal 3036 zcmY*bc{r478yAtKY}uy{!yw`4jO-3sqCuAFe3iW{S;i73hU{eQLO2-vGPVp&62?;Y zY^A1bk$uZH_F?#*&Uansy1wVV-uLe0g*@*qA;%6jZElQK)#mVHTwC~I1k`4~(m+Rg4pzE(IpO$UyRt{v5vkuJ2o zvsr-=6zO1QNoQI->h_!P3hQg;KP;dGyKN-+46fp~RToL?)1;|=|0xl%f0vIY^ul0t zOpI4D%w^O;Sxihmof&$Pk)2%$`CBQdCK-n4gCVYFD%U$WbS0Sn=xK|Go|zg7V>s9K z9U_>yC90tjJQ7&RvZtf>2${@a^T+^tj@19c&WgUJp+OLl;*3H;k`@vQ?^a65$lyL| z;JH(4t0yNX=N1+c&7V@(HKXEpXN+!kJ!MbOC`qoxt*or{`cCJ*@9T>j$X2>2DCpvw zvz4pkkIl$L#v|I46ch?RIh$VLk+C8DJv@wz@UFAC?dp29rKLrE=c5h}KR@y5zQ@8) z9-&?kcej!Z6BnPJosEcyV2Iw=rk$OrK?%2{q~vv>3*QK~=ki~_e({Wrf5pAtb1D&raIUkU``zkoDDZkp+ZU!Y zH#aZ)>*~+7wXLnKX?$KVyln$}k*Mg6?^a~3MpTk%@Jw54w!4%j-N5^Ld zC3cI0In2-<_r(3=M@IA-*RS(fT3W8GuBv#=oMmKW)NyM$m|@d6-qcZ5Rb^&lldt?f z+ntn}nThc6kp~$+d-m*Oa8*|nssXblDrt-pc*TrmzihX^{{6a=(nT(=chUrs-L-gvqw?4<+(ho+_`2+hUWnJ&MuFr1N%&(zGUz~qQZg$Gg5zuUGLd3(d3 zJ$rV%`_1;}C=uI^<;YgR`bCsKx$F|y+1V*${wnhLI53ivT4Z2uE~w4CKGD!#Yu~Mm z+58b1-+86BwiXHs_}&UQVHB~ju-NhE<>jU4eEIUFHZwFgnCepNvuI2l|4AVFZP)}+ zfe-Bz*e5c%WN5tRVZ_KQ$2hH=ogH*gV{@}Loi_gSa$mj2ch`?Yg*W3m0J!@pQZSe< z>4drp%u%V-NMtz=2$xD(%zbJ+H#f%&jeP4h8%3vUZ(r0xs;|Fyg@@J5(o#B-6Cl@c zZhk(d_4LG2SyeTbL{hKy_^t|#qiImUk4x+siWzU;Dsw>~5V&&7MgaEPGJ0fuT>j~vTTpIO(-CKr|Mr6U z#9oy-aVKPaY|PHd3ESM}FHZIc577jgz~*gCu@E4vaK z8~ZlsNHHxf4UI3cZY^ zXJ9C=sw%FmjN4uun%&so2sJ2~*_>`C?S8ey`1^BRzC0k;dTf_IRMh#UF-yK>S~+0n zN^Wkhva+%Wf;%QA=F!mU{m0+VY|PBO*E~IL2jt%Mr!9UAyEV-DaH05Pt0@hz#LCL5 zzoN;NeAUg}T}oQIC_g_GFoK44y$0wdEiFAZHpZzfV5Oy{)pmL=(9uyGZ;~e=A`+_N zvvAFC-3l%*pQ+*_5yvMxT+h$L(@}m0e{gcNv9-NzKmQ>O?dO-|&1YoqYCRyBmzMSr zQ}_CHO)xEBGHBmAD=TYhbrm#4osc{@*Tj>yrluxh;Gwso=cEw|C2jFC{iS7nR+W;C zl0|9H;9zM*MXY7L$JSQ2aM9;w0C~keNf4f>sA$iJ4>KdR_PYA|kTs`Cl0Ru@*ictb z&-;+#*x1x`IE@tsrx&I|P8lC`#`2R!ejo*A+eg!^dpY*4myZcLx{G%XWG`eGKENf-O6%L25e=so=OwIn9 zlEU5C*!bAbPrv9BCl}Wrd;^JWfGL2uaF8KT{R8SM;X@FCVMPUNnn5RVNJFh~ ztw0C6xw-jZAWNY?_s{Ie$g`qiVt{66+Pb=;c%|yX|-`v~lB9qgSG^o+L ztKW)DuiP>)fCs=X$wlGh?dFJ7v?x3e@GXuayCnSiAiiS@G9}SezvOQaRQH18M!|lcHu{E#xTsDl4LwiI?S1Ak+ zVqY7thooIlQdHy?5Gc!d7ffBoGif?P5KO4pWQS&kr0aO&9HG4!L~Fn>w{Y+&&F_ud zXgIPQCLzJ(al=$(8pYOJ=@5N5b%U zyp6uc2W)yeAE3$B&W^(`N}$o3+1^u5IQL^5{VQ)_UFmL ztb>C?{^#Y9dQaiq-Q6;>YhYmD0Vw|R($clcRzx?_e^b{!@e8JA4hb*D>pZ-0ltZYK_(|uqe0$Dx>?m0iv;PXfmyP?@WMeq+S;0l zkX!Q?lNxt=PXNl*m6?MB|N1o#2M0%7AZF*2zW;23(!t?kUU@}@c7Z7;A74~vX7JhzyMfb5ta8N-(0jK7dcyNHh;c)#c zo`nsI^pnW))$azzi$i%s!zG4@Tek%2{+CvUhG3eiP(l>#X#ZEMihvsiVP;|^Zy6dE z6%>TwaF;wL-fAIY4mY}=czcVgsAO6<`Fb7gtvz(7P$)~w%LQOaX>3%Te7eyL)vRvd z|HoICwzmZmsjaVnZhd{7bTAV~I;Ql|-M6%4D0Qsqs?q)W^!UI_2m&z&a#>^IqBk3n zmd1N>a&k!>^Bm+pZUF{`hOMuAP`0rVD50|RDNHVV4l2*!0f#7$$}YV8N%{{`Ii2~Yq4 literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_36.map b/doxygen/inherit_graph_36.map new file mode 100644 index 0000000000..8e38b1f063 --- /dev/null +++ b/doxygen/inherit_graph_36.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_36.md5 b/doxygen/inherit_graph_36.md5 new file mode 100644 index 0000000000..d2b1d8eabd --- /dev/null +++ b/doxygen/inherit_graph_36.md5 @@ -0,0 +1 @@ +ed2b92e7a91528978785960e43c55a00 \ No newline at end of file diff --git a/doxygen/inherit_graph_36.png b/doxygen/inherit_graph_36.png new file mode 100644 index 0000000000000000000000000000000000000000..bbf54625ef2e6907ab87cd3e3be35ab9c60354f4 GIT binary patch literal 3036 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 literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_37.map b/doxygen/inherit_graph_37.map new file mode 100644 index 0000000000..4199cf2ebe --- /dev/null +++ b/doxygen/inherit_graph_37.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_37.md5 b/doxygen/inherit_graph_37.md5 new file mode 100644 index 0000000000..be1605721f --- /dev/null +++ b/doxygen/inherit_graph_37.md5 @@ -0,0 +1 @@ +0d8d19b27d9e91c577bd7f82772fb059 \ No newline at end of file diff --git a/doxygen/inherit_graph_37.png b/doxygen/inherit_graph_37.png new file mode 100644 index 0000000000000000000000000000000000000000..f835c8c474890214c5c58146657e1ce20f66fd5c GIT binary patch literal 2595 zcmXArcRbtqAIC!<#idl0Yl{=Dnx#omsVU|dlfYk9Dmx&UjJX|;woMnheSWEZ>4gi2_Pe?| zrSG`3QfC`d%!%({myQO%VV=3tl9WRl2aIZD&e?{;3F=u81J{ghH8J~LYt8NKM9GQ_ zcZumKZ+xBCXki>frf8c(=zGt2iSwdvQ4!goB<%Qb=g-1UF{!(Eb2~eA0)v872)`U? zW+K83k(?K|FT)(W(FC{KA~r<-Yux;h{d<13)-w&hqN@2Rs0plvlM^B!Krv{2HX=2N6e31t*VWY>E+>h99vsxQ5c>F79u(Rvrf0!(?%Z`PtwJ&N z(5vz0N4y8w(pNdQ{MBw<;Z=KUc3xb|BqW6K>7MwreE~nxi7JIcarf{*Z7?Sg+8*m8 zZ-YZaUGcVt2*mn6b)ud?2-=vG1A;Vs1iZbyWuZ_k4wq3-@Y{5?11&^X{>F`PS{1>+ znWFaFc_k&K?;9Jt>N!)D$h|=rX>58LoBarhbi>WQeD$i?Hy;R#Ibk5%Sl>jU_QdvM z)?WY6P$`L2G&%XOz)a>c)E@M%u`yR45)uFHnvl`kln(uOrnqtRx#||_M_c6l+}sTzJpo9n{!P2q zNc>Do1P+-`CR;KNH>N5%FQ5r_nk0|GOEm$P6s)h_ke62(Mom>b`kIAw6wu)rUtEN_ zy1D83`c_58^ruT)NcW`$u z`a(%yFm{q%%NQ6saR27 zF09#GBX{>wixy zu&_I$n#_4$TA_N_`M6n}7vR%m%q2pTWlV!0^0BmvH8#4ewl=N18xHI|bD;zb zMq-$$eW6!uTTxN*nDNEQzAf73rsz!4d8};LMP-@pb{#(dM*HsW?kC>O(X2pTt}~{l zrVo+GjI6BpraRu&c=<0bl3I(@B` zxzI%q&B)FDfHHG&aamnmHFtCzDb`K0CZOMr27DXJ?ZS;}8KcoquaSafHiK565s^ML zWO90XtMEs~0W^3Ok|ts)#9A^NEhDS#_IuP&!r6R_AsfM__^9x&jt*-tKK z8XFr;3N?h|`ZHv3KC?F`n_Abi%*9x34-b#u)coVh z%gYt#Iq1h#l_Xje9slKUcMz7VfouV>$~PNXaE?(HGv zlF9xsEVrG)B~{gv{Z6#Zmztt^17m;g;i8i z*Ztt&+h%1M3k!~>a$_ngDz{Zt>z<5D0426=4y|I>(frlIfgW);>Oi5jwbk9r>uH`o z0Lg@eg!z_;jO1kS@Cr4dx^O%Hj$bb|c;Vo%?P&A5gal{F_{$FGc5l3;r6uOWBF<}c zmrhvR1)9x8F|m|cA1skLgaH8wd{?|KyACiBQce6;{D;4{&=hb|C)SOV@b&$<>j)F@Ffn$@mT%0+U=ZsRoqHT z+`>=6)zd<#D$mivl)janxti26ZK_if_%O}U_T>H28~2ZLN)R?bLw2W665w| zPK=Qp+UYykC9ZpVO~u8}H#gBkp30*dd%UogZBCGYfWXQIaw|9s5`E|B>noTw&XW&W zat literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_38.map b/doxygen/inherit_graph_38.map new file mode 100644 index 0000000000..b99ad6d2ce --- /dev/null +++ b/doxygen/inherit_graph_38.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_38.md5 b/doxygen/inherit_graph_38.md5 new file mode 100644 index 0000000000..7ac5062fe4 --- /dev/null +++ b/doxygen/inherit_graph_38.md5 @@ -0,0 +1 @@ +b1d7c75440b641c1d853f21f340b64b0 \ No newline at end of file diff --git a/doxygen/inherit_graph_38.png b/doxygen/inherit_graph_38.png new file mode 100644 index 0000000000000000000000000000000000000000..d9b45506bfcf5737a0f83aa897f0662b4d8d0439 GIT binary patch literal 2896 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 literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_39.map b/doxygen/inherit_graph_39.map new file mode 100644 index 0000000000..d0d1288c7a --- /dev/null +++ b/doxygen/inherit_graph_39.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_39.md5 b/doxygen/inherit_graph_39.md5 new file mode 100644 index 0000000000..482e5485a2 --- /dev/null +++ b/doxygen/inherit_graph_39.md5 @@ -0,0 +1 @@ +c76c2f9e951cfd17068629bacaee1fb8 \ No newline at end of file diff --git a/doxygen/inherit_graph_39.png b/doxygen/inherit_graph_39.png new file mode 100644 index 0000000000000000000000000000000000000000..4530d2c4f45331ea5af26d5961c1d63a6a33adfc GIT binary patch literal 2226 zcmX|@2{=@38^=eMhF4?Xrl~Q55~&%JEw6~NFM}6Z8%zyZvTsR>5I!W0j3tpZV-Lwz z_I+u=n?$74NP~FEEbr5Ieb;xL=bYy{%X6Lk{@?%KeNM8qmGL0~xBvtKIb>>rw*@mD z?D9}PaP)pU_7qHfp614Q2i%PrAqRcJovPK%Q$mHwQPBy@zQF+Mj&v>~3llr&nRsM2^c4sBv{`?~!Z+}Bie z)vLtT+$amPc{+=+G+C46_Sav9U)Z-6bwVa|IIUi%$cPB8L=Wlz4W~TKdESkU4H#m8 z)dUBZ_qvLUi-YGcbEe#01idFB26WiCOzA{w65F%D#?kRvgAF(-ZEck?G&BsU5o3Nl zDcHk2=0Fo{w5s#GoD=40n6f?c;Pj#$;ncnn_0P7y-y0<;B-ArI8`(r+WS2TdM@OR`jG#o57gtsi zQc?t}w?&hAWMpKZ0s?Uf3B1F@!*>e`4n;&nbY@(2L1)S;DDc`=it85%U%YtH+s_Yg zWd%bZ5VDe~nK?PoG^58&wL3fEJO>XN$cw)0>ERCe&^`sn>F68*i_n?S&d$z?s;WGV zp4#tmaR+vHcfG$?RaO0AWMs6uzRri)$42`32@VYn1qKJlm6j@e3f8)I?HU9kAtAwF zFc$a8WOCfHrXs}*qDLah^?G8<%E};+y}iA_prBi=ty(3vC!C#~1&6Co4~({7B9q6p z17I*%#givXb4nBe#DIsl_iD=o1w{?5m1%W_r7z10Ll>8p;%Ky!!Xgk^RaH@-S-gG` zWFQC%g<`yQw=zdo6crWqJUmdE={==vc|c7I6F?;+#ul_W;T z#ym)*p3@;AA$e~nrlx|XNPq?^XTGQ%=jn!&dSXy%FRb>Dc9AYnA zxKLrI6u+q`E^t3Pd+EzWVMR?%|Ky}F?C77GUJErfryw_h^qT4113?&7)$YMTC};L$ z){wQmeFBha?L)`mgD`|%SeP1+%bG|OqFV4l03a_P8)pRWtU2xO?V(Pcf+5dc$0#>dlvWfqu6k1C?PI&lYW=0C&jTk^_X+^yZ@mjqh>024H-S(N~S62j3$DBI{YjPe# z_Kq&NbuB$}A~KvLaK{4^Z7cDSk$4q@);Md?brBa66LTjerTcX`p+1Dc@!X=SB| zM*GhXIbrXG=6tH2fL@@!5X)EY_fL30au6C)YuI^i1 zRjeU)!6;@4ckV#rRRJEoy}h!!y2y!#ItH$;@7wnQmLN?{PZ9~(@YauoE&w>ch=>U2 z!3QC-7>ux-oLnShktgM-_7A+vy$@i$Bm6*Sy@>*4+@~WaJW8!AT(a68!#DePCe{~8&H-^tq)o@I&Vnsmr26`G?xpLxS$FOK){D&aAh+J$&w<~Q}YW7 zg0{ce;|&eZ%Zs8E6fQfYhkP0TxJ{qIsHv?i@SWZUHF26KcDe`T4Of)HEwOEzNCv<8#BOmX~x> zUthY9vHLXC%gc-Xn&2DM-dd-v+(Q$iIm(a=-1~+xbRK1gM5p79^{S(1u|MV(OG-*~ wsqr4tI%ElD5th`8Df_{0j9}0I2hD)PjkAXH;j@@~ literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_4.map b/doxygen/inherit_graph_4.map new file mode 100644 index 0000000000..7f68b87c5a --- /dev/null +++ b/doxygen/inherit_graph_4.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_4.md5 b/doxygen/inherit_graph_4.md5 new file mode 100644 index 0000000000..65a67aacd7 --- /dev/null +++ b/doxygen/inherit_graph_4.md5 @@ -0,0 +1 @@ +1fa2988ea38cc7d14cca1e2441170cf1 \ No newline at end of file diff --git a/doxygen/inherit_graph_4.png b/doxygen/inherit_graph_4.png new file mode 100644 index 0000000000000000000000000000000000000000..0a47ae1335a9566806a8bb5bc1516ef8bf5cec02 GIT binary patch literal 2696 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 literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_40.map b/doxygen/inherit_graph_40.map new file mode 100644 index 0000000000..2a42c0c0ff --- /dev/null +++ b/doxygen/inherit_graph_40.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_40.md5 b/doxygen/inherit_graph_40.md5 new file mode 100644 index 0000000000..b4897a7f17 --- /dev/null +++ b/doxygen/inherit_graph_40.md5 @@ -0,0 +1 @@ +345f9cce7abeac9ff5e0c88d066755fd \ No newline at end of file diff --git a/doxygen/inherit_graph_40.png b/doxygen/inherit_graph_40.png new file mode 100644 index 0000000000000000000000000000000000000000..384072ada57b0e07781233faf1592fef7f9dc9a6 GIT binary patch literal 3423 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 PCJ5a42CTyHZq$DPa + + diff --git a/doxygen/inherit_graph_41.md5 b/doxygen/inherit_graph_41.md5 new file mode 100644 index 0000000000..ca9a274c9c --- /dev/null +++ b/doxygen/inherit_graph_41.md5 @@ -0,0 +1 @@ +ba2574de643bfb458e938d4246ef5f38 \ No newline at end of file diff --git a/doxygen/inherit_graph_41.png b/doxygen/inherit_graph_41.png new file mode 100644 index 0000000000000000000000000000000000000000..040928d41b5f901f0fe5c0e384112b93d283b621 GIT binary patch literal 2025 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 Hu0mjfhh*LX literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_42.map b/doxygen/inherit_graph_42.map new file mode 100644 index 0000000000..2bbbc4f489 --- /dev/null +++ b/doxygen/inherit_graph_42.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_42.md5 b/doxygen/inherit_graph_42.md5 new file mode 100644 index 0000000000..93d2d34d65 --- /dev/null +++ b/doxygen/inherit_graph_42.md5 @@ -0,0 +1 @@ +f6ce7e438a18c0f64e4ff3bf5b3c58c1 \ No newline at end of file diff --git a/doxygen/inherit_graph_42.png b/doxygen/inherit_graph_42.png new file mode 100644 index 0000000000000000000000000000000000000000..b9b0a7b8f11b9557a75a685d6d888bfbaf66ea01 GIT binary patch literal 3481 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 XKRg&BtMmozwIId@X#Lkn$H@Nx_eZgD literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_43.map b/doxygen/inherit_graph_43.map new file mode 100644 index 0000000000..1dcbe68049 --- /dev/null +++ b/doxygen/inherit_graph_43.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_43.md5 b/doxygen/inherit_graph_43.md5 new file mode 100644 index 0000000000..70d3f9b863 --- /dev/null +++ b/doxygen/inherit_graph_43.md5 @@ -0,0 +1 @@ +df1f6d689a6a519417402e2c06bfe630 \ No newline at end of file diff --git a/doxygen/inherit_graph_43.png b/doxygen/inherit_graph_43.png new file mode 100644 index 0000000000000000000000000000000000000000..f17d0631b4486c7d753043e9db2504f4ea999bed GIT binary patch literal 2153 zcmV-v2$uJWP)|00006VoOIv0RI60 z0RN!9r;`8x2p&m9K~#90?c04wQ*9py@b8&Vx7u`5A`u>ol5!gd;WOv;MDDG zzO={g>jQ$c(}+RRw5rKQEz5tt3s z+1ZJ(urNraQd>s>z+QP7#$tNC9`^S3wvNGDm*O257=T)>hD0JkP*4zRYHEy*E0s#* z69G&MDu%&@p!Qc{B8 z;9#R`_4f9{&dv^feSH9yzil=c49LjHfVa0dTwGkBR;$t9-wyz&si{FgKmdPkZf-6( zj)PXK1pu_Rwn8eEVs>^G08m_947pqmu~-b1N`;P&4vTUNjg`q{sH>~v+d7>N9LHg7 zY>e;w{Q0xVd$yW&65223@(Qh?TCE1haS(|_kjv%B&(8-D8I8})%{944Oi`=VC@CpH zX=y1qj>FZfSJyP(hDb|GJEqZS$Qmk@ijEvPLW6^Y)YH>Lp`oD!fQE;MiHJy{P>{R3 zJ2f>m(d_Ij5fNRxc8&b}{P;PRwiOBm`S|!ydwV-gOiWNpN(wnUJ5yR(8h!u%ow~cb z$=%(Zs;jGw#&~&oQEO`}O-@cyettf=xw+B&{5*f$)zy_68X8Ei*Hb}30ZAkh8X6iB z%rrVWO7`~l^#1*O{&-$q9z{h(@$Im%Fe)o6q zZjMGrM@b|SQGb6w5fO!lhtrN7JE*j@l!%D(^YbY_KAwn(y1Ke(%a$$l_U&7mo}Q-W z=4QHh@uJClx411d*3;9IYHMrx_LnbT2mt-~@x!8fwwiS^w_k+v3guZaJ3C7q9UbKF z?@v`#RTl3NbIzPOL+R=1Mty6U&k}8IZKTm?NT6(2SG+wvJp_OT2M77Sy1Ke$#hag> zZ&hf8LP580-{#v54GqL`92pD-zVGD8lXT_E6{9hQg@t^3baa#ekWQ!Lk7s3N8C@qZ zFpw`8A;*p#qx0v_6A{t;{5*MkdsAg)C4YQz@h%j>*RNms<8yO!B#}ty;uwckkY%G9mHZW+}zywK0iOdW#@T$d09R8 z_U+sG?;RW*uyyNJh{a-~zUk>{qcMwfI6684fYCX=zP?81`}+Dqr_))KCnY5XRaI5^ z_3Ibv>+3N#HipB853hJ`Z*MOEz|+$c9LIsg(%aFc{F>+>GexXaIm*F301?k8$bJC4`2CA~iJ?A3l7rDDzszE)cqB)~u7z zez7F4xjfIFJwr%H2%Mapz;PThGBTE}uh1T`)_TupsWlg`OeVwRL(v0TCH} z#l^(|_+RnX*Vm)AwiYolF>rTxhlhs;?%cV9ZQHgXFffpxFD@<)uV25$yLayp6%~d3 z`}bpNYRaPA=EgcYIvQ=X#p}3WE%$6GOZJP<&uS{q;NTz<6BCh_mxqCY0nE?Oqo}Be ze{S%nS#$CF`T1erzI`}*_AG{nhoRMKk(HGtI8Nvx%SO3(?;aW(8!<64fm^q3L8sFp zAtAw{Od^p8Nl8g4E-uFN=g*OvnriYoUS3{^kB>)kax%KRyD>F2g|@afBqSu@=g*%2 zfQX0)jE|3_qN0L-m5q*$#?6~I`8EL5*483BI~zScJ(!u9!Q9*&rl+U*hd}0X3yoDO zm3Z*r0mjD0(BI#W%a<=(bVHuUw{3DmX;P26&0;2=Vq`jPn(}U zeF}rY06#xJsMTsDB_*xLv>QUB(I6)$2Ob_CsH&>Mt5>g#-u4MeNl8ItVaF{Yp+ww)uQ3`B(jIb7yC#ts^jNv{7s52 literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_44.map b/doxygen/inherit_graph_44.map new file mode 100644 index 0000000000..8dbde7b20d --- /dev/null +++ b/doxygen/inherit_graph_44.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_44.md5 b/doxygen/inherit_graph_44.md5 new file mode 100644 index 0000000000..2f8c278c5d --- /dev/null +++ b/doxygen/inherit_graph_44.md5 @@ -0,0 +1 @@ +6cd8881d3268a2ea2320ed731cd47147 \ No newline at end of file diff --git a/doxygen/inherit_graph_44.png b/doxygen/inherit_graph_44.png new file mode 100644 index 0000000000000000000000000000000000000000..c7b4f6e114da0fd86737f2163e42d0221af3462a GIT binary patch literal 2947 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 literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_45.map b/doxygen/inherit_graph_45.map new file mode 100644 index 0000000000..344c908d90 --- /dev/null +++ b/doxygen/inherit_graph_45.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_45.md5 b/doxygen/inherit_graph_45.md5 new file mode 100644 index 0000000000..312658193e --- /dev/null +++ b/doxygen/inherit_graph_45.md5 @@ -0,0 +1 @@ +5f3c346a4a2c9e3595de01096b4352a9 \ No newline at end of file diff --git a/doxygen/inherit_graph_45.png b/doxygen/inherit_graph_45.png new file mode 100644 index 0000000000000000000000000000000000000000..9f7ffd60f451cdfc8ec2682b4427132b343e0ce1 GIT binary patch literal 2926 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 literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_46.map b/doxygen/inherit_graph_46.map new file mode 100644 index 0000000000..816a7eadbf --- /dev/null +++ b/doxygen/inherit_graph_46.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_46.md5 b/doxygen/inherit_graph_46.md5 new file mode 100644 index 0000000000..8059afa36f --- /dev/null +++ b/doxygen/inherit_graph_46.md5 @@ -0,0 +1 @@ +ecf7b142f3d4cd8c66eeed52aa34d31c \ No newline at end of file diff --git a/doxygen/inherit_graph_46.png b/doxygen/inherit_graph_46.png new file mode 100644 index 0000000000000000000000000000000000000000..8191aa9c63324a42bdecf9b487b38e8bc43b6adb GIT binary patch literal 2053 zcmV+g2>SPlP)A`M+rE7G2Otx02qeB$jFF4hF{mLMs71QGVtWd6Q7MoS31f9d~GsUsOdtS zw6ruld-lw$nC9kYl$DkFM-Zs#D64=^OxNGv50+&i5D2hi#}2%F`O>L>@7}$*apMNE zva%2z9SyBki>j(Bq@<*9=eQm(7Q?bE7={6l$AefbhDxOZA;c->)~#E}&d!EFAi(zR z+wuPWd#=B)uMfwMALn#FeE87m_tC_}1S%^lk(88#*w|RGEQ_9=9xndDg9i|c#fXZE z!ohh^{P}YMP6PW91aIM zJ3Ddd(k0Z_*W=f(U$}Sg-h#RPfxFx;r&+7jLMoM_wzd|85HvS81As?)3@8ePBLCdE zbHr0jCKCZb1_uYZwvQh_5&&d)c$g4E$eulWh)SjMcuY@Y?%%&p3JMCGVydgFx#Q8% zQ38P2Y&K#v8l5x|Ldd62pSU)w)k*-6zP>)Le{OD$2m}Js(a}LH77K}riXt5y9bR3> zN^qB3cbW+yL@Je%+S=M>=W)$rdU`t1Xf#V6d&=X-kBLH|Xms`1idQCWf)dc`ZNJs#~Fkl!4VPRnyA0J0|cQ?dhF&Y{gaQX6Oq@|^yw6ql8 zzJ2rhn!LeXZry2K3QzLrPgZQYty{NZa&i(wLqlAf#bQ}-9>XjsXmQK@n8Cq86crWW z_U+r~@9&4h;XqAI4Q6L&JsK+^ApsK;6HfQH=IcyKN&=6^!^p@82q8|N+}vCMKyGd> z-o1N=uV23+J3AYhnVFcHn)3R(JjGpZJ<-hLIsc1Snnz!-V$(?^5*#>i0O!x2$MEnl zEEWr{UAyKs&f6c})6>&%I2?$Hi9tj}1e%+hQBzanvCfo~6zt!>9~Bi9i|R~FOvK5P zCn1;1(b?IFsi`Tnw6q{EFAu+e|Hg+8A8`Hpb(l;h%*@PSZf=g#^e5Nj3GQ<1PBQ?+ z$H$|iqk}WmO7rLoe6o?y>2#Qwn1Dng0n4(G$z;A5)(MeFgu8d|qNu0{0)YS*FJ8o{ zQ>VPvIW{&1i9~`ECr;q>>3=J3A|fIH{JRNBO-)5kP7dPY;!sgh0l8d`4I4J#(4j+! zjg3W4P7Z`ZA!=%B@Z!Y_@cDe7U#qL;<#M~6W&pTyoW zFw@l3M1(@&YRd>&mfA=xSx*;==yW=Shlk_n(W9_fEVz30s>io)D86G|J&`zaT18v+1=gE?JQkCSy@?2_Q~aPzv@~|*40Y4Y11ZXwc3ErDH4gC z?)Fncc%}3AqntmTYi4E!B_$<@j*iC8ojd)kY;CfxR=Tyo>({T*($WH(&4!qmnAMiE zDunDxw^nIyZ%2B1`nok7Kus5L>~=eM4{f~?w5Id+3Bb_M5YC)AgSfajY}v8}B_$;o z9UbNR$H&J}Sy>6OSPY?1i1PAsOioS$a9;}KDJ;w4(W6IDtJPo_1~+fs1mM0TE7S;D z(|JpNem?AWJKEdZ(c0PytJR9);$p79xVRW?ZEa|3YC>067o<`tK7alUz;~rUdc7V> zr4r@kJfZSLVtzS}*=!~NNLN=E*Z=+dcLIR?{P~mg^z;w_#Aq~n zG`71^pyg01m8879+^KE3lB{6HZ>3GafYoY6cz8HOA`#d2-&e8KYDIT7C+#Jki^Mcs5Pzn@k1g+`3*+?WO zCnGa66H28L{r&y0TCKQn;R14Uau6RMkHo}8uq=zx(o+2R@dI|d9U6@WdcA&4lmdks zL2Ej1(dl&H^ZD4ldpD#~DH0MAP*+#S_1D+eW7n=-ICkt9l9Q8RFc@(7@Zq&t3KZll zDCbou6!{Fp=;&LUC@bavZ*BTpqtQ6MDs0`Xbd + + diff --git a/doxygen/inherit_graph_47.md5 b/doxygen/inherit_graph_47.md5 new file mode 100644 index 0000000000..8803d20040 --- /dev/null +++ b/doxygen/inherit_graph_47.md5 @@ -0,0 +1 @@ +7f1da4fc5ce43fe3c4a08fc30e05abd9 \ No newline at end of file diff --git a/doxygen/inherit_graph_47.png b/doxygen/inherit_graph_47.png new file mode 100644 index 0000000000000000000000000000000000000000..c7f72e3874ef58a7221da6a444e17b7bc5bf0af1 GIT binary patch literal 1394 zcmV-&1&#WNP)FK~#90?V4XmlU*FgKW9j-T-!xt|5mJ4NJ2R($jV~Kc2VpqdNm8J zi)I%^fmcP?m4phnM`civW4d6W~7vc zzp1CEhtkqgz1`H*gb;#}kr4ofhK8`&Y)ns21F6f6%jKe}sfntpDy&v3rKP33eEBlt znvIQ(aq{FzN=iytyLK(7PoHLDV&b>7WlK&>Qd3id*=!~p4%6G)%Yz3GQu^G#f1m5u zuk-EOH%^>5k|XiVD15FYn*K=k43K3=a>}+uJ*<;4fahKuXDv zA3u2Z>=_RqKIHM^$A5ZkwJClm_lZMWM^QPKP>c2`#yEiEm? zVlnFL>#3`&(+z4=v+C+ z^;jqrl7Ji^AD2=}SzcZ)o12?69&^5&^73+d>((v3-QV9Yg%C0xkL$5hr%uVsmoLvd z?(N&RWlc>@MjH0+-77mgJLTl$q_o*=va_>O9zT9uN-3q=?Ur}$+|m2)+qX}4bac$p z+S=NxweE1*%`SIgNefzt2?<63ycZ zB4JoFP17hUD#GD#=&@f*v8HJ`(Y6q>Hi_MC=ll2XjE#-yv0rQBOoT{z;B3h62FnM~5w)|T;F?eTc%>+9pyt5K!$A%3XXm4+4_3G8^*sG62DdGlsgN2*cHwr<_Z;lqbH zfBrntXcSG;xOnj*M~)m}{rdHJ)s~K&oVW&qLE`Z^PNx%}&qsZIeJ+O08i&KdjT<+p zt*ymswbIzw$gyL`GR|MVd^wesm6*+DcJAB>fY<9~YHBL$KfTZzLG`M@(&L|31)g?vbj*66MBPkN7_wwd^6Aqjgb-;z zXU?1{w7f;dl6`jLa5yr$^Qu_FGl?Q|lt~nZD3d4*Q6^CsqD-PNWZtWrbLY + + diff --git a/doxygen/inherit_graph_48.md5 b/doxygen/inherit_graph_48.md5 new file mode 100644 index 0000000000..ac57c104c1 --- /dev/null +++ b/doxygen/inherit_graph_48.md5 @@ -0,0 +1 @@ +80b4c4ff49575110405c27a85e721cf9 \ No newline at end of file diff --git a/doxygen/inherit_graph_48.png b/doxygen/inherit_graph_48.png new file mode 100644 index 0000000000000000000000000000000000000000..8f2e878b740202eccd8fb5ab1dd513d7a673f3e9 GIT binary patch literal 3060 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 s$2R2pSyoSYMBDv;I{x2~Y<+eiK?U-{faA} + + diff --git a/doxygen/inherit_graph_49.md5 b/doxygen/inherit_graph_49.md5 new file mode 100644 index 0000000000..d8d400274b --- /dev/null +++ b/doxygen/inherit_graph_49.md5 @@ -0,0 +1 @@ +a84a19f2a690f9a90c888b0c1cde425e \ No newline at end of file diff --git a/doxygen/inherit_graph_49.png b/doxygen/inherit_graph_49.png new file mode 100644 index 0000000000000000000000000000000000000000..fd1907076aee2ca6cb5b17d79ac7ccde78b53bb8 GIT binary patch literal 2813 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 + + diff --git a/doxygen/inherit_graph_5.md5 b/doxygen/inherit_graph_5.md5 new file mode 100644 index 0000000000..cb834cd101 --- /dev/null +++ b/doxygen/inherit_graph_5.md5 @@ -0,0 +1 @@ +2eed3c5045260177521923355bc7728e \ No newline at end of file diff --git a/doxygen/inherit_graph_5.png b/doxygen/inherit_graph_5.png new file mode 100644 index 0000000000000000000000000000000000000000..cf313bc081fd2c1c4685422594de74d38bf577d0 GIT binary patch literal 1446 zcmV;X1zGxuP)Po@_vo2%ON`mx_>OvzZ!Mj+X5q1&L)a)5;{=sG_USvD(#ryW)oPRd= zly5KRbLI0p=lq`Mob%(^CeH(kq9}@@C`z`({6Jk@olOX_XEiQH`LjqVU$wTjM(4)z z=XVl9>=8nA{JzUl{$L*9uepJ=g8J#sojbq$YLq`$AP`tEp7)!tL;0Um1*I5D6_jGA zUs6!mtiPXP^%~$4pUcGXGpGHyLNH!-aSKd z*Lg^QwSk&xm+2q z)BJtOl_3S?@pvdGC?FDv(An9!;H~%W-Md`7c8x?LL3MTYvN^q8FK^zw;n}li3=Iw8 zbUNwj=>edss*1_UN#4GFOK)#4nx^6PdQ-+fefpGJw{8)S$8ot_96o%Q42wkbg^*Gb4u>;dr)>8nYd)W^%J28fOhqCQ3CNL=5k1!3-7Nt*HZ~@ulyb+8 z9kQ{pG2@)W!^0AgA3uIfYa19CkboQ-8q#C$-o2B6{PN|Ce!iPGZ|dzmJv~wgA*ZIM z^w^0LC*;M87xm+njImm+^5x5y`mv^I5|CfNe${g}H#h6;6B82>kkM#VN-5>;-MeKl z7+iMF3%Py!w)A*B`mxjLl%Y^4>vhUzU*_`r{nF?2Rn4!TobOQ4Xq3XjLW+xv^_auq zNb6TxTAFdrPoF-qX3d%f^Jtnzettf7yIqg{{HWA4O^()_NSeO!< znVCt+y^=A@nY%6~lL=tK981j^;L)Q;?A*B%v)POgg8KS;qS5GreIfI8%4T0Ok#j-W zY&NE+rx_g`)nkK$gK7PQNPDnhQFgnXA3uIDFffqTwt4erW@l&l{Q0vUi$o%N+wWvD znNo^l?iyrksX32~j8Ick!_})-iN#_hlSx`yT9}=k)%)b-rEX=W>y*vDWFqH+ayT69 z-Mg2wXU{S=HpbxKAeSy(T6Wx0U&>2MOL4p1oIZV;_wU~`IXOu%7^JJKi}Lbv_V3@% znKNgI#bRih#<_FnIC}IbB_$=fPA4msm6e1-ArgrM!^6W|xNu>`xt5yq%*+hQWRjwy zBG#^5OE?^+rKKfhd`U?O{r&xVk*(G`8S+9p-!Grqw%w{v&w{OSkbYityX=`iC`JCChe*HS*A&(;W1Z6OcRru5N(j-R9$!(G z5(os4QhI{HV9N7Q>K~hmp;SRBhEfHk7)lkCVklKmilJ0NDTY!7r5H*Tlwznw-^*L< zy(>joN?JilDPQr=8=;D_q + + diff --git a/doxygen/inherit_graph_50.md5 b/doxygen/inherit_graph_50.md5 new file mode 100644 index 0000000000..e4435d8b11 --- /dev/null +++ b/doxygen/inherit_graph_50.md5 @@ -0,0 +1 @@ +464bbf2c5de1010e34c56fc047fabd5d \ No newline at end of file diff --git a/doxygen/inherit_graph_50.png b/doxygen/inherit_graph_50.png new file mode 100644 index 0000000000000000000000000000000000000000..d84c7ade1a8912d83b6e220d76210518e6af511c GIT binary patch literal 2591 zcmV+)3gGpLP)?@00006VoOIv0RI60 z0RN!9r;`8x3DikMK~#90?VNv1)b$_7AD;t%4Z83TLAg`7!8Vy>;x&Ng%b zwuvODsi>1IQk!jMO-!R4ts^uNEhWF|W@XK2i_Io8Epn4BIZux}2M7`V#6s@#{lj_V z?zrD~z~%d~-5;O#kJtP8e&6f!zR%}A&pQwZ1OkCTAP@+`8_BVttgK8eNmABWh!F@J zQ79DV+S=OF!^96@(ojN!qTiE+k2!x3@PG;YmqJ;lP0dA&DJKLcI4yq^GCz#TQ@r)TgDTg|f1;&hk|Rfs*wv?`q_Abn7IJfQdE}8tICSU`+qZ9L_UzfVHjc-;ckf1{(GV3C zMRs;Jzy0=`UCclK{FC|f=c80AdHnImIeGG=-FTZfZzelC8>Lc7YHBLK{PK&-u^f*> zwGOv#-D3Uv^&})D5EB!FPN&0UG67IjRK&S+=Xm9nSCAx$%*;#xbUGc9B%x3!&}cMl z+qMl^mTfUTT^@vLu4741lD4q0kjaxLV=x%_=9_Ou{D}Mf^Urzz{rBnb@29A!$Zfof z7ca7L<3rh-=OnZAfKmYtQ9UUFanKOs{{CuodD~AppA}uYA`ucig zS*E3>1%PkA{T5l485|ts=+UF>+qchYEgpK7FJE4;V#NyCTMPz+49MNx-L|r(rY0GX zdwP0gS(fGGywj{`6%|EnY^<#;DJjXR-K<%&ypE~SXgGNA zAg{mvI_c@@EL*mWKmPc`uFdfArc9Xvz`($OtxT)c+O^kewOA|`uQm9Jr**h|`7!`1 zl?q9ckR*wShzM@nxWSbxS6s$DeE2Y_si{OqM({Rj={&-LfRk3OR&)FIZLVFr zW-BuqjZW<($;nXWmIVtI@WT&3aOTVz=Fgu`PEHPY?%eUZ|AQnMu1T#{`=r4aJgq}Q zLIMhfg5KUA`3;vT4&MkNw=;ApH2_k8Iw&8H2&V;NT!bLqiM<3}Cfdz1F4I z>uGLo=H|_t?A*B%i^W2Ie!j=C{l(Kd%$hZe7himll9CcGUcAViJ9qf?*I&uc&*z_i z{sCadj2WCif8Lgq59a*nqmMFi;zU|nTBxqB_DPqx5pzLfVeQ)JS6B1(*IyGI9qo0D6)RS-Wy==gNZL}_WM?Ksp=(q4P*HCC@)&FRypJvR=3fRomhrB1C@)6~>t zYiF@okR*xz{(iu-eb5niwmwf>yLOG2Uw)a`*jVD?;#j(LDSdr?w)&B*lkV`O-B&xI zr|~abxWJolzDYtt0%c`os8lKn3JScM`)IOk*)k?gn#96|3wi9Z$9U(RcSd}qA1DDQ ztt(5NH~3;7bZ6`HL_t9T*RNlvwY8PAXU}3bn_04CiCr6CtdpL!`(r0`9KXA}n~y&F zh}6_na&mI$@9*cUufD=)H1ghi@1fCXJZc6eU;qYT$D;Bm6esKR4R@gJLc5RVzF@S*fI9(*@H%-L8(--W5*6I zUAn}D3m4puVKf?PZf@q2Pd*_&KAxE~XR>?uZcdyyL1$;DtzCI}Iayg*L_|acO?yN{ z1W!NxG;7zc<@oXAZsR$QUs+knh7B7?PEN*TGNIS&$|NqD>CvvK3bpy&%q(mGn|;J(LoxW9F{W$yvr+6TR{^|@l^%$eM~caM&a z4qKVQV6fFaz}Fqjm3DvagpT9K#l^8?>weLemC{g_N9Dl03U`nj_Y4#yi?pDVOlEjc+ktXZ>$&dyHEW;5&7ts^fl zj~O#&_&sM=+Jj*ybY$MVc~n(Z(b3UCU0oe!vzf+5|NkS zDF0LJXjv1(**+M~+GY9v@8wJ;(^$*!h%0O2f6_1`a8FxX+gM8oh_HVm=FU#&k7Y2} z@dUwV%ywFT?Sqa4+fL|BykKb;_($09w1S5Zk+g!aLnN&r><~#S2s>Qfh@Cxqb~JSe z1Wveeg}F@Hy1KfMi4h0{0)apv5C{YUfj|&O{2xdaq=M^$6&C;i002ovPDHLkV1hls BE!zM9 literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_51.map b/doxygen/inherit_graph_51.map new file mode 100644 index 0000000000..3693f3c564 --- /dev/null +++ b/doxygen/inherit_graph_51.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_51.md5 b/doxygen/inherit_graph_51.md5 new file mode 100644 index 0000000000..4b3b4e64d3 --- /dev/null +++ b/doxygen/inherit_graph_51.md5 @@ -0,0 +1 @@ +a20b94e8bd7d463519503b8ca6c0f23a \ No newline at end of file diff --git a/doxygen/inherit_graph_51.png b/doxygen/inherit_graph_51.png new file mode 100644 index 0000000000000000000000000000000000000000..604ab3fe800a42542e0751f0fa754674ddef7e47 GIT binary patch literal 2804 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 literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_52.map b/doxygen/inherit_graph_52.map new file mode 100644 index 0000000000..47a44d59de --- /dev/null +++ b/doxygen/inherit_graph_52.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_52.md5 b/doxygen/inherit_graph_52.md5 new file mode 100644 index 0000000000..e1fa1c5a38 --- /dev/null +++ b/doxygen/inherit_graph_52.md5 @@ -0,0 +1 @@ +5b63a490de1201ba2c17314788f70601 \ No newline at end of file diff --git a/doxygen/inherit_graph_52.png b/doxygen/inherit_graph_52.png new file mode 100644 index 0000000000000000000000000000000000000000..4e5c408906b4f90109da96dc2e585c59a2154b81 GIT binary patch literal 3477 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 literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_53.map b/doxygen/inherit_graph_53.map new file mode 100644 index 0000000000..474628a0d2 --- /dev/null +++ b/doxygen/inherit_graph_53.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_53.md5 b/doxygen/inherit_graph_53.md5 new file mode 100644 index 0000000000..44a0e51107 --- /dev/null +++ b/doxygen/inherit_graph_53.md5 @@ -0,0 +1 @@ +5e067ff9d5d643860865234d1d3d12da \ No newline at end of file diff --git a/doxygen/inherit_graph_53.png b/doxygen/inherit_graph_53.png new file mode 100644 index 0000000000000000000000000000000000000000..f78c57d766c849134939ad04809d4a524c493bcd GIT binary patch literal 2909 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 literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_54.map b/doxygen/inherit_graph_54.map new file mode 100644 index 0000000000..10769b548b --- /dev/null +++ b/doxygen/inherit_graph_54.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_54.md5 b/doxygen/inherit_graph_54.md5 new file mode 100644 index 0000000000..96e92fd895 --- /dev/null +++ b/doxygen/inherit_graph_54.md5 @@ -0,0 +1 @@ +0841a25408965ef5a3e515247a1afc73 \ No newline at end of file diff --git a/doxygen/inherit_graph_54.png b/doxygen/inherit_graph_54.png new file mode 100644 index 0000000000000000000000000000000000000000..7cc6e3be532d3d5cf6dd44026bbc5a1577aef62f GIT binary patch literal 2806 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 literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_55.map b/doxygen/inherit_graph_55.map new file mode 100644 index 0000000000..de223ad7b9 --- /dev/null +++ b/doxygen/inherit_graph_55.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_55.md5 b/doxygen/inherit_graph_55.md5 new file mode 100644 index 0000000000..753508f73f --- /dev/null +++ b/doxygen/inherit_graph_55.md5 @@ -0,0 +1 @@ +4cd3e0c930d2e9f20369e1353dde421e \ No newline at end of file diff --git a/doxygen/inherit_graph_55.png b/doxygen/inherit_graph_55.png new file mode 100644 index 0000000000000000000000000000000000000000..acb90a1a62c022053bc5bc4afdb4cfc29af5053d GIT binary patch literal 3172 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 a1MZ?7C)mv{JO=n}0NI{*gf-fD-}*0G>>`W+ literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_56.map b/doxygen/inherit_graph_56.map new file mode 100644 index 0000000000..353b6015de --- /dev/null +++ b/doxygen/inherit_graph_56.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_56.md5 b/doxygen/inherit_graph_56.md5 new file mode 100644 index 0000000000..c1b1784d21 --- /dev/null +++ b/doxygen/inherit_graph_56.md5 @@ -0,0 +1 @@ +35133f1791f7f7788c7a4c10247858a9 \ No newline at end of file diff --git a/doxygen/inherit_graph_56.png b/doxygen/inherit_graph_56.png new file mode 100644 index 0000000000000000000000000000000000000000..af259394e1a3ca651e398c7ac0ee41421c2e4a50 GIT binary patch literal 3348 zcmY+HcQhQ|`^VSnAzIXs)k{cr38JhJtlnY?f`nBg+Ui|`=pj)Pz2(E|eOWcgM^CJ< zqD90?5WR-gev{uH-|zX}IWu?8nLGD9_nG(m_1uYnV5oKV%JnNC5a_CoHUbIsJ-{hV zLj_!+oNmcLM`fp{g#catJqkO^(m){kAsvLOX<+VVo~u5qGsnPXu{u6u zm)j%4x80)!A}q82p+(+g$JqpPz$Pm`X3I21o4sU7Q)4!!sD&M>%gRO~uU*B1ize;f zWXyT|v>bjIjQZ2TyYQB_edGx`K*J%NmUc{fMPW<<9^#arb;1bZ`EN_)(!>cWD9ogw z-f^r5axyU3_Yrr6qNAf_rB5@(xTWa#1^OhNA=VZ=Jd6xD>kD2`j`LADYmW>tM3XTt zil~aTu!xI^p~?tfQ2N;0v-_ZjjclMeRsx)?@!B|{u%(5AzRwno#&d4*vtBVaGjn47 z-iX==mH)-DrT+oNbar-zULH(2VIX!bCcID=?CR>0_uqJD);>FHDI_Y&t->ex;qQb4 zd>Z(P3Gx(e3grSupqZMQin(!Ii5?sryl-pES5;MoCLOpqI69&T6%VVDyx}S;yx<5B zJ3IT%pFdjm_9c;HQ&VOXl#~%;EB1%K39X?g4ZWeKN1IXI-73eS${n4ZUc~;Z%|16< zntw_wDaiIm` znIsVSMMbHTlauSPSj}h8#FxDl;F>}#5h%``KqVRqu!ECRWE==&Y;64W>C^jaYGBTo zh=KxM`0KrkTpUkZ$RFs&#s+K6Txx1+9jcFN(BV#=ca}L4i4-s~F>!$&pPrf^5EO@p zhbb1fL~Lwq!1u|?$q|UY<_e1$$gQusF^H}~vF1W0$Mp9Bz(=&p&I1J`|8WtLg zdH){a2>E$_a<)HaVrjN{RQ#@+n;N&x!GIG7uV#2K7nWa#D$ih;ZJxq2cUYHgzoX zv$WFFKO<$fF6eI-u1(A_5QJ5U0?6Zylu5J zBwA2dRz~fOyB%B-PU*48`-0p{7+S@glGaa6yD_5lIRMb0Zx<|UVS+Atz=OaIO>IJd{uHI^IDA1_j+b@bmTk@bTkI!ig9xR%YnEgt&NJ@Zqy5 ze*p8goG}@00MdJAXM?9;zdgIpV*vYqn3>@k8X5wuc;CU{{S*&h0sGfV~qR zA1^5@`){d1&f?ZqvXRQUubEDA7iT98U@iRgbX+0_thl6vTv=HeQ&U3)LTGB*IXF-l z7#IK)i$w^i>g&IHvY)5&91;{1w7R(&4U`5oH8uR~Yyu#}$**6Dr`z4;K`Mn!O{@TD zfDsyQZnuEBn-=2Zlau>_PszH4xB>U4kBEpsdwFH~=>yLJYwZ98E^cqgdqM(KI(VTl(bvS{*Mr2JkHfynw-ov3&>DF9SG< zKSTF#w&VV_qls1nDj0Fjv)hp|oN6U}LG*!^xj6?}Ar^Z#!#!YYo*y(hKHhV5PFk;} zc(Jw6sfVc8v!S?}D4btv@`z@;*w6wHhFxUVPZ&amutzBTCg+_>U67h4zi_7drE zo$=pBipRn~+J@I1?{GnFx?Z)m%D1+)**$$qLrF=gZDb^;-Juy~@oQ-boTVQF57-jJ z+$CEqFU#+poMdflZ=YdQzs24-=hQbpZ~bFL!DLH`w_|TuLQ-0~FPe@6eQ_3q(9o#Y zct6^t-`3sDJMtD*KoF6a=Num&4_t~DWny6ghlGSwS>sp$WmklbCV*$05QruqBjt-@d;6GLHpuJP>1m7Ql@((9c9*)H zU9qLrV}~#6Uuy?eSH%o-<$EB9QBhI51aq64xs>Tazp|X)u(J+dN=r*Ey2I~{j*ixOd{YG7*Vd-d)Y6h=?~zf0F!uEH$cLY`KB11QseuAH zS#?v%nV)4!-O0`63ElrB7r3iIyeNC2h1C62#0!ByT7B2PmO%7-uIu4JEJ)TPa>q5qaWCAGTvceU??du s^sB(qBqSufVy6dO`9Ezyz4tlU_T>2M-CJ=8;5P@PqhW}sQL~NwKe^>ns{jB1 literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_57.map b/doxygen/inherit_graph_57.map new file mode 100644 index 0000000000..1edcd19e54 --- /dev/null +++ b/doxygen/inherit_graph_57.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_57.md5 b/doxygen/inherit_graph_57.md5 new file mode 100644 index 0000000000..2516928e81 --- /dev/null +++ b/doxygen/inherit_graph_57.md5 @@ -0,0 +1 @@ +9b969aeeac7fa919527627b8607143eb \ No newline at end of file diff --git a/doxygen/inherit_graph_57.png b/doxygen/inherit_graph_57.png new file mode 100644 index 0000000000000000000000000000000000000000..b8937a16c6d573e7a633633679680b92472cce38 GIT binary patch literal 3076 zcmX|@c|4SD7suzxmL+2y#!ecHbskH$#x`O^_I(>INQj8B%Q9pyTMSteN!hYIB$9O! zl7tycOhh%-4AWTNyXW)1@8|m5_xbC-uKW7^&iS5m&+4+t88#s{5D0VzZHlr1Vn6Vx zo@NH#!-$%9Kw!Rd$pi&D`LoJj*W`jg>>X&7fgQGlQW|4rHzhpO6W;o!z`Y!%FX;q< z<`N)zMZ=)Gy@-d&(5mS5%>4Ej&sC&t2_-keU~>0&%C0%U(egnDb;W|#P+<-^_2w#T zE@z1Gn;>j%ao9fXXaegK?zQ>4U#Yxjw`dkR76Gi?k`dMYh1ZMhpu}E`iXaCw5KL1- zHipN?!AqKfEB=gqnD^4CU*z6ImZ+cfRUPoMX5hJ@V0BdiNFw6qa~7+ci--z|4J&8o z^=)6lj9J5mX-lFqeo0d>L+gzEY34po2QChrsF+-;@cF=avgTY@#3b(qx2R}lUkW&? zfBza*TYPZtZmFbTprn!#Ckt4tgrZUne2J52YHB(-+#NR_D%A>MrqO7Rz{7ow2^f{1 zL6;1EQK^P?Q--y6QgAriojZ3pscUP#c?AVha&oL}$)`Nyj?}3?XA=j~1$M8Nkm&oH zCRnWI*V|e=JUl_ihY>7gg-Y&*W@c=8X6FhNoD;4NWobQc5BYXkT3TAa*6s>zXGJsS zcgsj?3F!(gBP*-&>C@9*US3P`OU+v*Y|!ct_8+u8~Ogy!M~Vft`qG{ZMU zGy;f>S!6B&fuRO+v@S)tsNS&+Ye6na-zm#(yoOrKw?*}LmwR#sMx^^J`=)rP=P z*L{3!Jw3(mgoaxA`z!oae)sNQQc@p%)%f`MP&Jliu=D{#6l$~Q1Zj*yZ6SY>fD2dB zH(q5I7Z>|RN0$`i@wHV|N#b=AzOrg+c`hz4zW)9h9Lx+%jEp(J?^2GBk3Y@Km>L-w zwfKyS*}(HZEiNi|w&g`PH#f^FDrRcy=-lx2O>GODH$xy0*IHeS$-E}adHnI=u4QL5?QbR~ChLFzN>T?TJ$bB5&oW&=x%#Y0*4B}{ z!}IcSB;Eh5_Sn$wJ())mk0*w+fionM4GjVU0z%h5NV0KoR4pucOo(`=y?tv4mz8z; zMom~-Tay5Nnw}oo7uAc6HZ%alB_MTlbkItLlgaD?u-2PuLU3i}Z=}S;M8^2Y$VeRl&V84=yiXQ<^>N4+Di#i0TW0tuE+VyPa*e0hv5J-=d+fnh>%5miS_zzrS=A z**7#aZ!_wc_U#6pN>Pf5KHMH^i9L$!raY4<$*u`8;Nqq%yv9qNJ&Ufe`f!g|21PDI zyYct8C>H^TN)(Q8b8)@d2kbBx6c7@E&-wr<+5P*weAnJ**VN2Rw-GmHa__DSej&u4eYFpERo3!S!63aJLwx`RU+esp0Q9^ zE-T=kDH?sB@5En~l5m=pwRdJl@Hd@K>mC~$V5 ze1b$`$B*LD(%767Ah8+d8nlMgneCQY|6u~*u0x%1RFn?#=$CE#;D%haI~O-MH}-pN z%@*-ygBJz^DlILYX}X%SrduIQ!r_>I&UNsLii#e5D~rRlx*(9qjUZLo!MhABLEk^g zWn^SvHWyy6t*;w6I25cAuh5ckI4M8fa-Yft@^C4ZhNKB^U6qp;=$4W z;ykq5Bxt1FTwPsVP*fCfm$Ah~(IayG$qkxos~`X2;bBfe0drhjoSmIrd0QITiQNJ>b68hVbkL$yT#3RIVp zLZdDD^UadM$O907(j=Q&RB$ljbG`cy6>m~oz`-$nvkB9C>ev;A5E2${3g7e)xe&>B zyF&zxM$fbb2tSIUI%i~Nc3c35|Gm`Z2%sd3{7>;K=VL&_%m)v6y0+f3zZ7M=npHXd z!vOUo^Wx(^I@ix$kwh;R`P5fQ_4P`}c$sh6muv8ptqrJKHzNG}B$231lKe+B-)un7 zz#GdMh6CV?Vd}-q^s+6V9$7g$Jrw*<&y$${Ytm9LQ_;0;E1=e9yMseMHHr(! z1YViT`Zbdk&!77z%#%o@B{^(Zn8wb|&H>d<{B1<>3)lALDMwG^kdT){(>quLa~S`| z=H^hy_=S}Ccn~8qvy_Ys3sBae_|8sk1?T3ZvYwmMNL!OXib%Yts0o&@V1 zzPYsYB&W30A|fKfmS`(gsebdbm9;hZ;v;jYyfJ*UBv)Pm!ag-UJ(;fDZOWFMuuLY` z0{aKfcdD<EARME={q)ftk7fWl=G+bryD$Fq$+1-oSr>TL~${>w`->Tmp7 zmjROeVUEj-!7pDVI7Kw$ff8sR&^^oKrOY4u^}Y$F$?3!V{OCT=U$->AEGB41>_`g< z2{lIU`7tsvc}-LrAFMsj-uhq!_FDh=r1EAO8gCEhf9@b(@7D3RSAC8}8sJ~&#yi+` z&ysx}&?yFn?N$7(Wq`T8wYD|ocJL;zKIW%WeqFm`Iu8~f2eFLV1lQgUL&!zAx(cVI zr*rf0B#h$E8@+IN4BW!P!s5e^Jz)F@@#GBLmF8}B$?We(`7d-qU%!5>f*-|_GtUE< z!2#{=6bP^xp{tvr+9e$m6)fZ5A93hfx#SrnE1n z5tIJ!A2+#aNX*FD844t^mzt252Hx6sckv{!^`*H7hfnQ4ufG1Yx3?D*7dLTt7bTKN zO;P(Btjh5n>CQA_Yjrg?&o3hP)!ZlM1i-8KG zlr1XhmSx1Ts5y)m=t1YQ%go^$oLa#4T1eVg-sf)Xw3ClPmhXC?8gkVD7GKt(X@ z-!b!Fk}d62|Nc4qQWeUQh>!_#=DPSe7)Jizr2OB3d2aL&yne^sRm+=l9T@9DXyePM JdP7XYe*otW&#?di literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_58.map b/doxygen/inherit_graph_58.map new file mode 100644 index 0000000000..9c84ca90a6 --- /dev/null +++ b/doxygen/inherit_graph_58.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_58.md5 b/doxygen/inherit_graph_58.md5 new file mode 100644 index 0000000000..72beb4917e --- /dev/null +++ b/doxygen/inherit_graph_58.md5 @@ -0,0 +1 @@ +ee02bb4ab04bafb0c260d8d30e26a29c \ No newline at end of file diff --git a/doxygen/inherit_graph_58.png b/doxygen/inherit_graph_58.png new file mode 100644 index 0000000000000000000000000000000000000000..b61e96e62669b85549672cbb6c5658578c97845d GIT binary patch literal 3061 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 literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_59.map b/doxygen/inherit_graph_59.map new file mode 100644 index 0000000000..8d912eb972 --- /dev/null +++ b/doxygen/inherit_graph_59.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_59.md5 b/doxygen/inherit_graph_59.md5 new file mode 100644 index 0000000000..31bffb619c --- /dev/null +++ b/doxygen/inherit_graph_59.md5 @@ -0,0 +1 @@ +c7f42470493cb1320f68b70373969506 \ No newline at end of file diff --git a/doxygen/inherit_graph_59.png b/doxygen/inherit_graph_59.png new file mode 100644 index 0000000000000000000000000000000000000000..5df3c521d7aeb08d6dcf0fc6a49f779ebd59267a GIT binary patch literal 3072 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 A{r~^~ literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_6.map b/doxygen/inherit_graph_6.map new file mode 100644 index 0000000000..266f84ad22 --- /dev/null +++ b/doxygen/inherit_graph_6.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_6.md5 b/doxygen/inherit_graph_6.md5 new file mode 100644 index 0000000000..493a4bedbf --- /dev/null +++ b/doxygen/inherit_graph_6.md5 @@ -0,0 +1 @@ +b8b5b2fd047f3dd0af6a866e0a19c190 \ No newline at end of file diff --git a/doxygen/inherit_graph_6.png b/doxygen/inherit_graph_6.png new file mode 100644 index 0000000000000000000000000000000000000000..958c4399b51829598a23290bb19b30feb2fe11d3 GIT binary patch literal 2137 zcmV-f2&VUmP)wQX*m$r0GgAhwiL8&Z-{z#dD4obUi z=4GUnq)~=a5JG9F1WAg976h63M}HM%L}54VB1Zk8=4~_YrfI1(_xb+u`+0EcHno}G z?0JFUb2*>$Jm=Zxc+T-Cz%UHMFbu;m4D4Z5+oeQZC#4NFw9aSq8Fv5rP`@= z!s(qjj@!y{T*dDj7Q_5!>;rITYQ>BMnN(a{yy&B0nEwj3T0LvM;5UzhVg4vAK^Vpa zmLLpc!lEQdS63G}jzeEx-;%}r`ST}~N+lc|9N^>QW05fg2M43HwA3Q8m_LKjoAf{3 zy?ggiTU!gQRtrZ*$E6+)^M_itmsoXmbqERyTGZqS3=BkhdHJHnU+%`n#=vo$(J!HJ z>CfNGHbI7lhG1o7wbaA-tLgQ6JbwHbDwPU3IXN@ht*xy=MEsXRp+J0mJYUx7bhE}y zPftg3axz}Ne7V?DuuOt&nFK`xi0t*s3JAeYN=_3Bj=7Z-!$IAmpI@%0?X zK_C!d{rdID&dvrA@i8S53975B`Lb541;=q192}f6=a`rnynXu?adC0rI1a(V!Df$> zpPwJn($WwT5(0aBdw6?$Ol}Zc@3>aOn(9lq9+O)}FE{%aae2nR3b1|c$q9{B(oSK`PX=rGO z($mw)-`}4mCMJl8C?zF@)N1vtOH!$n-n@B3!^6WA7Z*nk4i1!Z*XeZh;K2hr zbm$N{I5^Pu?c1rixR_tB`AAAiqQt~R^I1IK1Ziq&A^_Cg-OblkS69zSknHSii^ZJ$ z;C6I$@a+>56C@IesJ_0Qh)gHQq$^jh(7t{9`10>ako^37zWn6L6XH0IMn*>Xx&sFe zP)0_E!TwFnbG|V@fBsAWsHLTaZ~yS&0|B5fU%v1$r>|E^N(vo3c#w#Q#>U2I_3G7B zRaM2eE0szDKq{4rhKGmed`zaAZ-PwK+uKW#k&y&|GBY#hy}hvn`Q=M2tyT*=J3BZ# zJM(p(o}M%Mxx2etEM`kf3jjbY7V|fBD^{$)w{PFj+S+O~Ze?X9wrtq~dwY9u9Ea4@ zRA{wYqx~1dnl)?q@2#z^VQXs(J3Bjry3x^50CS(`d}3-e8VH3#NTpJ~ee%*)qtWnn z)7L9GIT?5F-bH_ZKPoFLAruM`85zm9=j7xdKR+LJb#?IY@W9cdM^RH#V{i#;X%iC@ zc=+%klu9LJG8qO222fN~gj1(ZS!^G_oFEd31mC}ZM^8@=UpL$JAji#kad^QoJv=-h z5D3uM*Jp5(M??mTHdS|bH)3OBaqiqXbar+^uh*lXpupfp(8k7w{~!S{*#B$mzSfcs0b>R3M*Hxg-9eqOiT=9G8wY6vP_=1=Ihg^Pe@BkgG3@hN=gc3G8yXX>QGZt1GQQW zCnqP1?dz9U*wfP!+qP}Pv17;3+uMug=4PBdd)DlBrf$;B#dLRf$DTcVpi-&O(9nP% zKYpOLwiZ!QQ5YW|pLKtuqodI4^>B1_#6SQ1gIBL!p`f6^ppT!QAIi$gFgQ4fwzf8$ zIdjJ39NgU8P+wnf^l8hlTF5-jk;!D(v112PQc}>_*$ItCgA*rCAUr%AZfx_V#v^l$1cD(V(KjaxaKqzkVH~qob&*szPI9BhH^c z51CA6vG`M25qNrfLN1r%@ZrOY9`okSo7lKx+MrKPP7eC|`XCmIA(zW%v`=^X^l99`e;+nBHgkH4 zwGi{2=Uh}&RKVWe9-B9BMnFIS#9}dS-n?mcyQrur2m}Izg@qZM+>8+j1lYA}7jE3R zVfJJ*A9;CsxOVLtwr*YgKUL&3ii4?Gu`<3IM%LRi^9S}#Kgob^>8do ztyY7G_LY>B82mlRvi(INV_8Im!oot>*w{d!P%QOuejAn`7Sh_-3Vwk_lj07Q~7x>?Qm}8i~%Ktz648t%C!!QiPFiYlNdd)xoXu`d| P00000NkvXXu0mjfqTV5v literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_60.map b/doxygen/inherit_graph_60.map new file mode 100644 index 0000000000..00ad05f24d --- /dev/null +++ b/doxygen/inherit_graph_60.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_60.md5 b/doxygen/inherit_graph_60.md5 new file mode 100644 index 0000000000..be4f047884 --- /dev/null +++ b/doxygen/inherit_graph_60.md5 @@ -0,0 +1 @@ +63d7dc238fa93e1e68e01ee344aa559a \ No newline at end of file diff --git a/doxygen/inherit_graph_60.png b/doxygen/inherit_graph_60.png new file mode 100644 index 0000000000000000000000000000000000000000..020211a6d1444e1f1db9d2cad2f8168bfa0737a1 GIT binary patch literal 3432 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 literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_61.map b/doxygen/inherit_graph_61.map new file mode 100644 index 0000000000..c3a1123b32 --- /dev/null +++ b/doxygen/inherit_graph_61.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_61.md5 b/doxygen/inherit_graph_61.md5 new file mode 100644 index 0000000000..2e8db83e06 --- /dev/null +++ b/doxygen/inherit_graph_61.md5 @@ -0,0 +1 @@ +67a94236cd8efe72bb2dfd40f0ffe4ac \ No newline at end of file diff --git a/doxygen/inherit_graph_61.png b/doxygen/inherit_graph_61.png new file mode 100644 index 0000000000000000000000000000000000000000..6cb821b4505d9739c4cbf88c784fb1669e81b117 GIT binary patch literal 1905 zcmV-%2afoOP)!lU*3c|M#{?n++{8%9pt<$OM~ZWIUm%P+`nq#iLSg z&EX4Z>6iMTek?+=2&7JeDk?wJ6P051LDIRYTWP+b=36iBJRcq$>&^ z@#UF&I6v5j`<&}s*Z*9*cJBL}-2jC`p-?Ck3WXBbF!LMo^YbGahWW!EVkngP@OV6j zUa$XaZku4f5yLQlFbq@o-^rp-7RTjsJpl0M+%~VGokg$Lueu-##TR*qmJ)ERNYVE8_CldhKqL|&E-nuB z_4OY82?+_PtgJ+8YAQBv+=#n(@1m-z3Ojb}aNEqkuBoYkL?VGuC`58{GFn<%JbZrs z{2A%#=@5xT*tv5jo;-Qt5wD`60?EnA5Q#+CyLT^My?V81tohe$^BEr>M_E}J#9}c* zLqnlZDA3*A4FI@t;|BKZ+2dhvx7)$z^U>AS1;G0@J2p0kva&KrBoc&$g`udZ2on<% ztg+Z&%R_&EKTe%Gh4AojY~8vQXU?3#@bK`W{2!#XkM|hc(a`~cK)_kMFIJ>z zv$L}i6chxj)rv=t9>HiddfD8*eH)iAU&hGD2y$|AeEMr|Z^!xb=V3ORF*G!U>gsA( zEEW$NlgWgtsw(vL^+ByxL#0xI5aRCF>2$bw@gkf~C$h7%aqQSJ3=9mc$b8glH99&v z@bcwL^z`%~HZ~SYr4lZe3#U(?Mq67OT3cJ)_C})-si~=miHTV-o=T-cOG^tH8yjJ_ z+mV=n%A91aImDitTczI5m2=Ax&k$Kwa0*Xwck z@L`C>V$S|KQ&3QlRajU^xMH

|l#+c$UHvuDo;05UKzKnNj3E|-%_mo9PkX|vgg zP$(oHKYm=WUoMxEYuB#1uZM?+2>{}BI^F%{<>ek@cJ10l^m_fW=i_iV2mtcs%NKY5 z%*+fCi9~L_Sy@@6w6v5ELWs-dB4V+an9XLleNs{qF&GSl5JI}Uy9of&(b3_hg-a}7 z_{u|PXD0zb>~_1m@6)GG1OWN^^{bc8f1{faLP|1ncg^JY?CU(c#} zE;^l#6ciNPpI@WPUTK|9Cxk*F!o$PeZ8Dk6%Pu-PnzK)dL;{P&f(sWeVBfxd&}y~# z@Zp1p&D?mw!NCB4si`Se*XN4=g*&GWMl*(kE-uD{2M;hbG=%&2??WIEATu+QlV&!SU9^#rk(ij6K!1O~yUk{^dD$_H z*9&Dn$;`~e7$&B?Xg{lbpxTe&KU9MMg%lj$@mTSS$vQ$HU;@AP6BI zpV=?v$dMxm3JO9)Lj#OPBXV+b+&`@O#Kgp4W@ZMRot<8NTw*OX4^dH3`2G7gdU|@? zeO9X#01y=w#p>6WZUBgji$hXU5{yP8bUGb08V%O1TgOQ=8_Oo{MVp{GxuqN1V#R;v}ie*MDC%nYWcrZ_*x0slP9H8nNi`}gm-di5%t zPA8N~C2MT9`9w!YMn^|Op-@1p)uOGf4Wpx@Fc=JIXlURRYpHpVN~K6iNkK_T33_{b;cz%mT3U*X zj0|kswvE-VFWs{g7Z>Bol`DAt`Zegwt+K0XeaOa_HQ0kvAaEPsa% z9YSbmC^9lK5Ed4O>({U2-o1MW2?^osqp+|Lm6es)zI{7tYirTi*oZA#ws0EDHXoD8 zgxJ_vWMpI@JUkrd&Ygosqrv+1>)kead3k7RYJx-}!T$aGea17J&4`bW$I+ulA(cwe z+}w<`v^37KmYRpUx;lh}gkbmX-AGJKL_|acOePa2zihezK&e!M$KxR_EzM(*SaJUC zMrqA>rX(P;cF4;waYKy`IB3 + + diff --git a/doxygen/inherit_graph_62.md5 b/doxygen/inherit_graph_62.md5 new file mode 100644 index 0000000000..b489746b34 --- /dev/null +++ b/doxygen/inherit_graph_62.md5 @@ -0,0 +1 @@ +34dc31fcb6cec13274c4dff4605de844 \ No newline at end of file diff --git a/doxygen/inherit_graph_62.png b/doxygen/inherit_graph_62.png new file mode 100644 index 0000000000000000000000000000000000000000..fcd298f1dfc7e81203c568f76f91168f6d6a04b2 GIT binary patch literal 2013 zcmV<32O{{1P)zlkFeJzqb}D=FlKJD4W}g4iwXplF|+mg)jvbe0-D6 zX^xIk+Chzi5K_nl339B+N+|<-labg7Lmw+MO|UR+YA*7G=5Za|e$R_P&yCK*?$WuZ zzt;!$;yV3K*LU~s`{EwJU@#aA27|$1F#ez6EISes61+K%+iH(s7z|sX)9LP7_ARjN z;5cq8$8kk-6B2_lXIK~izi72u+lInm%mJ@ozlKhyn{>=!j$>gk{xdM~Gv+N!{ET^v zO~l{P(E*O*(9_dn3-j>x^+iEJflX{rhOP5q*avpyw*vtI0l0egs=dRQ_b~C>ffp}c zAR!^a-eJJs-yiw;`8Kir?b|nS95>}>!Gb9d8s`iqe#UQMHk+_@8OZf>}9=MFM6GqG~zN`8)IJ2y8MQmGWKuC53Q3c{N=Z^qedY-~hu za4MXze&go1w6ws{(Gjh!tpFz8_6!URASo#cQmGUk9v;wWG#DNpw(83o z)72q5IvO=KHHeFg1IKX)2ngWUSnkzW8X6jK`t)f?BoZVfB*4qd3sF%~g5nW^TCIkY zlM^B$BCu-JDx5!m9(uig*6dHq{{8!-5)%{YR|pCUqR7Zd>g?>K=H_Pd_xC3N)ZN`p zL_`XOf|e~?MwOM7G&(v;L_`-ZTp+nz&f6HVhld9}d-ja_`}-*~Gm}Ij5p{KSS@kU>pYZT- z3JD1zy!UUM@I+cV=4Jvwot>S0-{Z%RCx|~IBSWxFy}+uKV3$Y3z= z90bmE`!ZI8iVfUB!3JUu=6KDk^zVV+nl7Hm^0mE!j8+c!20PbQO%n=g~eU@#c0`nHx&OG^s?z{|^ve|U3rbi}~G0DoH( z7Z-=Z!b1G`@dHnvKE>CsUl9=zF{!`S)>b$=I!;{5WAuh_9K{ z!NFnj?YG>krAwFM*s)`%t*u3Qc{xNP5u&4`A(P2)=FAzvUqm6id-o2J(Q zIs}!y3?eDvrM z($dn<+}w%O59Q_M7#tkL#fukVFc=UX9&XjQwS2^4F~Y*a zpi-&u;ll@vjEtbVx*Fl(;rRajJAnU*Dkdfdxw*Nxckdq5YW0+Hip63ml}f19YP^5{ z9{v6O(CKt2DJc=;YbJGAzI-|A>+7dHd6|s$>(?VID+`}KeS%J>LwkEWii&3MCE#n< zuEA(DqPVyiO-)TWckbMTU$5C>R!)10ii$8aGz7U^4y96wn3$Lu+1s&W2i)D=5fTyt z4-XII{(!^x8;@$lh8xVX6Rr#(V(aB#rx-Mew)#toc0b?TSaPDgfjHm+Q`f~{Na@RyR` zIqmtcp-?F3)~#Fi4#V!SI@tJum%;c`VdDQoX>Dzt^3?&AN@efx{s`> + + diff --git a/doxygen/inherit_graph_63.md5 b/doxygen/inherit_graph_63.md5 new file mode 100644 index 0000000000..282a5778f0 --- /dev/null +++ b/doxygen/inherit_graph_63.md5 @@ -0,0 +1 @@ +d7b6599aad2f9e4b6d4a74874cbc7e31 \ No newline at end of file diff --git a/doxygen/inherit_graph_63.png b/doxygen/inherit_graph_63.png new file mode 100644 index 0000000000000000000000000000000000000000..19486d2fe43839c0294b919ed5428f7bf644bf7d GIT binary patch literal 2030 zcmV@&+~ka4~Mf46JQvIVHk#C80No>8-F4pAz?Mgaogsj7>2PIwOW01{JDR| zpWrxd8^>{Fb5jz-%o*#=|BFhcvTrF2GY4M0cmcIqZE?(Dj%#6N*VoT?Id(PaZVzKW&z?P-?-C}Z(P$755P&61mdq&5 z_wV1aXwjlc$9X&+Mn*Z_NCbmKN}MJhZm90+{&P)8F5Zq@*N>L?U>2ctELCVrXc{YA$Om-S?^D z$z(F*=jTJEQi0<*oH=u5Ld=GS2An>98bYBE2?+`C^72AdRFqBi*g~ODz{$x85fKqs zyLK(kpFa<+Ry%9)r*!Dhp{T^fMEV^;K|vH58A)ATUDVv%O#c4<1b}*adWeWfDwWd8 zl`E;HriMmFMu>>$!i5VYkx0xjMjtmeHj<;GBUM*dlfhu1+S*!5O-(h=l}e=~5D4h` z^XD`)G(?%1ndIr|NhXuYJnrG)K~J7MA-!HtSy@@c=kuw%yW47RThkM~@yQrBXR2PG@H)<>uy+pPwHsUAmN%N+msg`qX^C zZ4nt6N%8UVHqRd!8KL|4@6*A92g%LNjRFG$Nu^RzUtgciF^Guj>gp&lF_G-j{LRhH z1c17_y3FSuK72T#`7<*!ZH}qcYRSdLh2Fk>YjIpEl~PVlj`_H^x0e8rPNy@Er=_Kh zxn{$L4Wv@3X1t#E_I3h5pFe*#j~k6f;`90DdZVJE=){Q=L_}mVnMf!UQgLyydH(3; zZ)x-4aU@)H(i^XH+i^XE-bULfKt*xh}r3C=s<>dvA`0- zjHP!pj+^iU(kX?8h9WdH6eg1i*RNm4jvYJD(b0j$ix=B;{jWdtFIue@VPRobud}uu zp->112M2U_cVpSIWfo)X-Mbgg&d#W)sKD*pw-Fs3J?YMex3@QpMk79c{5a-&hpoA+ z8GYZU8*jym6-Z7_Msjj8>g(%KR8)lM=x8`PI%5C+{YXeifVa2zwCWr0-Me=vEG$H6 zX(?P?U2)*R0cbRu2@kW`Fykk`L?XfV?b~te*fI3<^gyfCA}uY=>UC3n>3s0u0n*dc z(cIjO;o)HzjYb#@2AE7Ho9iklC_q(J6$SY#!lqomV>aUX`1l|@I~$)qeS%u8MtgfZ%F1T%N5EIET!F!0KzVsNnwpw$ z?%X-MG(Ip(yFF!PWf&YBghV2NOeRB2Ow5ep?cBK&?(Xgg2?>FRhX-F%cOV8CbPy6-r7FJ5%$B#oUmyg*Z zjEjpyRaF&4A`!N1*)nCm;^Ja#+O!G#_U(gMEXK>1FR^>~Zku!cj@gRm;NXBgd-mY! z)vGvl>eRGqu_Pxa2bV8j#=t-X1+_XJ8y4qyKXfu1nkMrELg1hnFWhAKeJ%5=4Tcx z*8I$ZHR*1TQmLHFIv8foO=x~1`agjG%|k5=!!QiPFbu;m3^Qx~1&Y + + diff --git a/doxygen/inherit_graph_64.md5 b/doxygen/inherit_graph_64.md5 new file mode 100644 index 0000000000..c23bdd7813 --- /dev/null +++ b/doxygen/inherit_graph_64.md5 @@ -0,0 +1 @@ +4d834830200eac7c7d3f3da2f1fe2860 \ No newline at end of file diff --git a/doxygen/inherit_graph_64.png b/doxygen/inherit_graph_64.png new file mode 100644 index 0000000000000000000000000000000000000000..b5cb484a3fb7231263ab4683fb3a50ada59a362d GIT binary patch literal 2595 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 FV1glc5!wI% literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_65.map b/doxygen/inherit_graph_65.map new file mode 100644 index 0000000000..11d2ae2603 --- /dev/null +++ b/doxygen/inherit_graph_65.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_65.md5 b/doxygen/inherit_graph_65.md5 new file mode 100644 index 0000000000..948783cf0f --- /dev/null +++ b/doxygen/inherit_graph_65.md5 @@ -0,0 +1 @@ +ae7ec7dd2e679d97287a4a494aa2a71c \ No newline at end of file diff --git a/doxygen/inherit_graph_65.png b/doxygen/inherit_graph_65.png new file mode 100644 index 0000000000000000000000000000000000000000..dbeee1257cda429d8893935df611e6c9a0bc7e3a GIT binary patch literal 3209 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 Jt}yh7{tt?8A(H?A literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_66.map b/doxygen/inherit_graph_66.map new file mode 100644 index 0000000000..5c245dbc02 --- /dev/null +++ b/doxygen/inherit_graph_66.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_66.md5 b/doxygen/inherit_graph_66.md5 new file mode 100644 index 0000000000..ab05a7cb13 --- /dev/null +++ b/doxygen/inherit_graph_66.md5 @@ -0,0 +1 @@ +c22a683d6d841dbd93accbc2b4332a29 \ No newline at end of file diff --git a/doxygen/inherit_graph_66.png b/doxygen/inherit_graph_66.png new file mode 100644 index 0000000000000000000000000000000000000000..4a04bdc3271fd80c338cc101d51dda2aadc69b8a GIT binary patch literal 3320 zcmX|EcU05a){P^?7)of;L68wbl^!4v6hf7v0Rl+xpb6cPE>cASWl#h`5oszWh@nb{ zks#OZR@N_Pt^3Ehr|h%$xk=Z|3|Qd&a0mp#Vq}QL0lNY|B^VU^ zKdGHr0|x4P)c^}Q`TcuUUz`qsFq4e1S1dzvR$qjhSa_YMHlEpR31e4fbm$^|NzS@x zsUY3(z}H<)TGBJqWEA@*`Kovjp=mDO;qMd~wgmTQ+TQ+dLHv5UmDq`7<065&?{mCv z{d#a%VRFgWGKJGo>*v?68eF9XRnt&?5>t;bjoX@idwZJ4{Xwkrb`WT6v$H%e^M8%~ z>E23FNlByLfUk|*y3Dc7`)4j3?v=SwP10#!iHIL+YfggHr*b(m(AcSHUWk`C%0zPX z>`vHmU5Sf4@2-)lX$5VqvPpxNxlP8IvCFxd?Y%P}GmonyyfQ!kv>-LFxY!GmkZ4@k zlEf)7=RpYXzJuAdSrA+;;|*2HX~npBUAD2|O%+1#Ha+UtKZ!lJ!u*Cz*2m%ge&vQD zj>lbU{26FQ&FKo|BQr|dKwIN8(_@H!eu?;!cuT3zhxFy^c)aI1>$jHey}fM~=30zN z*qFg$b1@W($GC7HFnM*^9CN^M@7_JOBrFVpFfcVu8Op5k`=*b@G8Et>g~L}A>^}u} z+-wjtNEOl46vVyd5YhTrCi(Q=}HW@KLH*~uMI{D~ydV6Q*?^5~itvSrh&rg4OYk{W< zYDWpy)YL32EL@I=(A-^{V7l<}pN9_~Y&4%a-{h_+DlQI9OG{f=TYE`~i1XHpJXF@v z)xD0x{c%C(_HBCkuv?M3+H({JBMgl_WnJnR-|vm}_m_X2pRa(yU{>q+5U`Gpj#>*G z&JfAM!om=(fkw*`t;zPHkS`MxrdX_~sOXdQbg_``q9SpQB&?;iwHHd5gF}arkuhVW zzP_Fz+C)74V$}YIO9|$Y_Aj+X`k{J<0SRvr5KtyU%FD~M#Nib68dt+ige?qN6|<7% zoEiv86_u47kfr5i3VIz|M!D4!nI`zY>oh%Y%wYdbgy^!upx{cte6J7$#D1C@@Li4dYKBbn_wORlv$Km| zpxgp7Z#Q?&1|}ybzbYx|8W{fa1zeh%?aCZzY-!0Q=U8_?_wFw~c6RpBN}|BpM6E>i z$v*1OexIwRYG1AwEK;K!5Gb`4OjMM@dBsxVMFaj6VcTavL@1>P}=b7&?3BJ!)Jb2ps)3J(bhu~{4L)ng3}4Fz?$XCfYpFZoP%sC|Dp zp1rrfISpfFO#r^Ds!*(gYLFLZiL+hL%+Y>rKjdfYWB?ve)PO=Vq0|D5d}pVQz5Q3$ zt1j}M*qb+{?jwt;t4BK#UBWre^7b(N2j&E(sSN=M`>gTt@y{7e&fQEaoEgpjqBhNn zymAcEHf`l^N=prbgO%&*>!)UC8B_FQbE6J@$~=1D)*ml?jPZa#+Njj)j*hG#jJi6_ zM5>;?zK#rceo+xrKcAhCkFUL_$Ki4zLO3fcYqasM_PclQ<|4_Vmu$lEiX=Q!>h$-y zxrC;s%QG`GHtIx6sdJN|^FoQcHI5!r-nvGWnoJxer8_l5(aoICVbwVgOjr?;vjHkyn<=(gDisnx*H5Js}4BuGh1`veDnky6#rFji4fDX^4Uoaso%NB;cza{=6- ztf;7?uC6|_x@tN-J&nbddvtL>NJ%LqljUv_2n7Qc8WE8*OtLfR(>~F(va(7WBfJb`{x-h7>HzX&WMKF=MF8dP?R|fDm1e+^ z6!&*}`XZPfOD8AuTf^`3l)QRjFVokL-IobJ?1BuEQ&R^%KjiUQpRE5g&CnZEu3%(Y zmi67@_jVFRgt5zubhJPHNK#z9?cF1>qnu{vOxFXcOP8w3H^&8HTw0?2I_wWluY%n;RO6KneyIL2QPjIzJKV9atY9 zAJB#0l_?M1_5}Umd?N8}(sV&9Z0F6zU#$pjHfn&frY6CMM)5)jX#^Yoo5Sg*L2(=B zmdW+N!6qgqxXzu^gCNo9@bTmM9!CiVJL$18idR{{v_2Slf5F6^ogK+a1%v-W8l1ep zQPIhfOVFLBq-{=_*aZbCWysjNj{G$z(^lM(rPpWszM|sX+S(cn2K&&h;^OK}BvzD< zk?%S>3a1KdJs2Oq0Yr29skP%3J-zs$w~b=%ihP)(6(z8(fSa8AUTTF*#q;>nm#ii= z4|aWHI{G3?ZOZ;YXzj3JFQi$~;w+37qPE8rB$O<=W=2POYKd8 zf}pvT(b16Pl$5-(vH)WzF9p%(Ikr23pCck86*M&9`TgEmC4inG-&Nt`A+EQ>qEg}F)%Rj>KgKzogEN+ctKH7%iv%TUj2s83rZS;qKlSYP2feK8VO5F zH@UdE;cKOqQe~jef@=OvWR~PUeN_QsR8-WzH!BQHO#T6Km2~gkDJ~wK>7NJNbqZd; zbIAG31!t@z(h|zcmCLKD@>v#E;`B{d^4$|IQxgkH!&dkm>dn>=LuI43?NJ!a= zlg57mpR%1h7r(U?xI?GAI6Fha>V|4P?HG(G|930F{PwRGN$mW0eARh+Kj7WI&ikoUSiHu0m z7t`AN8UzLhsiu~>wY_~7!otkV#@-KP+QY*mO(#zz%@BLD;(5dIuHBWegL3-b-r%p} zqmGf0k-%2ZABUZ`-C0FPd+QbeUy@Iaw>CCjJ$}q~IG61g;)cbpuC8(k2wW|}lU@&% zSX;rDJ*R`?BtlY3vZ~W4B1&(>0L-`H*W2^ z)Mx_uI%a+*T-(ah@*3EwYHDlKZ;<93w&R=nRaQ>o>(^@68+3nr&Q;DT8@m@AB9|B5P_oTijyJTl)%iftI+zr;45H!l^RO-`= zrFiwV0FDPT43-Wg5*gx5SN!Et6i(g0L^+IOfx*~zilb}h(hP*Nw*E0- zJIN<4FE4ujPY#>m|F3^>t=VQM->)`?Ld;NI2rE-%b#;j7?f<R literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_67.map b/doxygen/inherit_graph_67.map new file mode 100644 index 0000000000..4750d3b288 --- /dev/null +++ b/doxygen/inherit_graph_67.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_67.md5 b/doxygen/inherit_graph_67.md5 new file mode 100644 index 0000000000..41e1a08c43 --- /dev/null +++ b/doxygen/inherit_graph_67.md5 @@ -0,0 +1 @@ +74ceff12e07d8239df75e17d386c888d \ No newline at end of file diff --git a/doxygen/inherit_graph_67.png b/doxygen/inherit_graph_67.png new file mode 100644 index 0000000000000000000000000000000000000000..d0556213da3d350259c417199bf8e6baeb1ae4c1 GIT binary patch literal 2769 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 U1W + + diff --git a/doxygen/inherit_graph_68.md5 b/doxygen/inherit_graph_68.md5 new file mode 100644 index 0000000000..7db09d7715 --- /dev/null +++ b/doxygen/inherit_graph_68.md5 @@ -0,0 +1 @@ +aaeb8b9dbaabad0e270549c3b552ead5 \ No newline at end of file diff --git a/doxygen/inherit_graph_68.png b/doxygen/inherit_graph_68.png new file mode 100644 index 0000000000000000000000000000000000000000..522b3c22e6e340c6c95e65b2f35ce40904b6c9b2 GIT binary patch literal 2924 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 SNdWR0bjiZr{JE*`z5fGu=Ar}u literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_69.map b/doxygen/inherit_graph_69.map new file mode 100644 index 0000000000..c9bc19153d --- /dev/null +++ b/doxygen/inherit_graph_69.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_69.md5 b/doxygen/inherit_graph_69.md5 new file mode 100644 index 0000000000..45ba800e06 --- /dev/null +++ b/doxygen/inherit_graph_69.md5 @@ -0,0 +1 @@ +76686831efc9a7c74376df86ae6cf282 \ No newline at end of file diff --git a/doxygen/inherit_graph_69.png b/doxygen/inherit_graph_69.png new file mode 100644 index 0000000000000000000000000000000000000000..7433ab6b8e834ee4d61a8ca8ed9b950a6aebee7f GIT binary patch literal 2871 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 K98st5`uIOmVVl + + diff --git a/doxygen/inherit_graph_7.md5 b/doxygen/inherit_graph_7.md5 new file mode 100644 index 0000000000..6fe03a5c86 --- /dev/null +++ b/doxygen/inherit_graph_7.md5 @@ -0,0 +1 @@ +8918162f5a3836aa5579ebb796bdadc5 \ No newline at end of file diff --git a/doxygen/inherit_graph_7.png b/doxygen/inherit_graph_7.png new file mode 100644 index 0000000000000000000000000000000000000000..9d8be7ea787c7ac617eae672073eba42d387a2f2 GIT binary patch literal 1408 zcmV-`1%LX9P)YSPF zd|(&n_nhgHj$VkIe3~6|Zu^@(z zj*g-z3S(nq3z2@wX!sNPV`uoLO`B+MZ(nQ~e;q%)OJ8grJ$kg*5|YM_9XrU&%cHHW zZLy{NxifqzFgZC%PfrgPiv@?nk#L^6x;koVYUu0hOQO2zNs8g`-o3+QGNI9ESi5#D zU0q!<$BjlK4Gj$x6%~<@k-@E7w`gf;VfE_O(LPh#QduXWO=IL?V&6^L_E+ z1t(9QM5ohHU0qFfb~feZ2 zEyL^ea{Kmeu3ftp*QcYSgR^JP5)Ox{tgK9^j?3kurKN?@(NU_Zs@S`CFG7e}X{f5I z!sGF9|NebOMn=fX%cHEUjLFGKR<2yhjT<+psi|Rba1fWv#hp8MxOwv?X=!Ny1cO1^ z+S=H#VFO#YZY3NJ)7jaH&*$UJnKP_fwJM==0$8_h9TzTKAP@*}@#00iUN1(Yku6)c zaOKJs!r^ejxo5;`wU*m#HZfbgUatT|Fc^%+?%usC01*m>gb+d$6cmW&=H^-F6herN z8#fB4(;00S6cmWo*4Aiye0*F0A`l47sKM{|3qZVi^Co&c5{U?nMkAg*dlro~Ha3df z++2~7ks*3|dSdjL&1L}zi^U>7e*8G6bJ@OqyQrSEMF9%>^Vq!)OuU@?ZAUiu7 zMNv=`g|xIZK79DV>({TN{SF*B!0_-e>({TRxVSi`w!`7z{Q2_?3=E*t={R`sAicf4 z(G?~cL?RKoySp))&FJ-d#>dCGbmfc)oS_t`7`g|zmLYI`}|RqxQ)4_ zF_Q+JPKQdRVr*;-Aw^ypFg`}=wD-~k$q zhRVuH^m;v~PMwOmaOTR(moGVX>=;_DmP3aQq1Wpf7#N_pw->wJPG)9i!nvn1Z^I1+ z1BHc!96o%QP$-1Y=cB&9e#UV#-LxfBLrzW(yLRouVzDqZG{l!LUwHE531wwveEs?r zfad0A{C+|Pr>&QtpO3@gU}R(jr_+hw@5k*S=4LR4PhJN+>BQnV0s~ z*4BBAp9^v8tkr5QR}{r9w?~&YcDo%RM1|AojM)#D4_;CXX?Thu4Nozo;VFhRJjIZP zrx?=k6hj)GV*K<;+s}U2ELqyb87_o)$oGFNNR~MNc`1=dBoc|_FW?&?%0O^=uXPmw O0000 + + diff --git a/doxygen/inherit_graph_70.md5 b/doxygen/inherit_graph_70.md5 new file mode 100644 index 0000000000..44a45e49b5 --- /dev/null +++ b/doxygen/inherit_graph_70.md5 @@ -0,0 +1 @@ +b00448e542ea6446746b16eacdc760d7 \ No newline at end of file diff --git a/doxygen/inherit_graph_70.png b/doxygen/inherit_graph_70.png new file mode 100644 index 0000000000000000000000000000000000000000..02ab2b21ba451b11dabe82d32ee701bdc655b930 GIT binary patch literal 2930 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 Tv1X+JO*BXcp%1UTZy)tP^LDmM literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_71.map b/doxygen/inherit_graph_71.map new file mode 100644 index 0000000000..187abc4b89 --- /dev/null +++ b/doxygen/inherit_graph_71.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_71.md5 b/doxygen/inherit_graph_71.md5 new file mode 100644 index 0000000000..3e0caea150 --- /dev/null +++ b/doxygen/inherit_graph_71.md5 @@ -0,0 +1 @@ +fb7f83d8ac87dd0b54dd8493136d0ed2 \ No newline at end of file diff --git a/doxygen/inherit_graph_71.png b/doxygen/inherit_graph_71.png new file mode 100644 index 0000000000000000000000000000000000000000..bc994af9d9915fd50afb5444618268c624fb47cc GIT binary patch literal 2285 zcmZXWX*gTk8h|(22#Ff1F|>}MIHo49A=08qV;(A|_LxdV%r(zr)p*dl#0^#RO;K}| z8je^}GB-TT>ltv_q;wZ8R!@A^{B&GflAg*gEL;4(D8S%57W ze3YRO@co?c`D3twJT%tF0p~yO;*Roc0DzVn;&iOSUTnSaGO#ig>^*nmvKk)}7?9~P zH67*qVx^>Hij#BUvguE-m@?LLH6#e2cnw7D2PJvOt5wEqU>ThT<3=Siqn?*7Ms@9G z`>ql_Jj3&jv)Mx(W+!Y>GvDWy-c zb#j*wjV6UcZNKyUEH`l>$vH#`ZrO%G;t!xhi_az0)b72lH9v??N`fpcFINsR6kel9 zu~0eW@ATru(lvNNN>x=A3{EYstGg>O@nm?ltfIo;*I>5JPoD(4s8nYn5#r|NR?t+o zJ=j)!P7Xg<Ux9T95KxMtZt7)VZ#>SPZAD+i=Wa zFmCN`)}?H2PSx>1FU$wDetPW+qtR%jy_2ZhSy@^03r*Zl8^RzI8ZU? zMkIDkP9mhGrFZuBy4pjxNgLk})-OjzM}JrjXb9gYT3K7mHj#64p(qr}uhqV#t!;66 zfZW)u`omF-M@(KG*4oO0GTo#r5e5n^|Yiqspy1K9$VLJewPVejM({^{4VT!W=H*emQL7|eXs^nicHa5hb z$Mg}DsvX)x=;`a8d;BONX6Eg>vF=0Dm-)7sB!LK$%KWM(D8KHuamQHd{ zGm*Xy7=(tZ<=a?V-T^Y_<{Yt5aU>GCM9Y!4otmDU)H5+LF>rAy`y3@8Adpp9NS`}C zKE4d#O3dp|I5;?r&}L?4k|3g0M|TS~44;aqza$Y|U3FhoRZTPLbTihtDCSWH4>lz~ z|7!p6a1l9Uqs3%7_GB;7G(R_2%pOS=N!!`+V~tC}Nho1371ps<9GsjIcsw5V+M4q2 zU14{3H&3wbDPyV>TN0O=%As)M#(A;?WlsxfEZQws}!LD$sO_~^Bsm`$^= zuvAo6cjv45&TnqQe0_c4+}vJ1T8G6inFJpnO_bznq>40Qp_zXjehV^4&ZbKjt5O)8Cu8WlKhnrJn4GsA90psipIW!uL@tX&561*V9 ziW(Z}r>7C%$nU3zUV7o6M^bto1_cF)p-|if1qCuU9Ky8I&f>6>g(&ZUilt>n^ja(OMd@e>x{XrMIaF7&wel!RaGb2p62EXN=ivNQ@!0e{X8?{?Bvw>OTIg2_`?24OVE1OXTPFptglsSdU`@hi8w18+rs>O9GJRI`b7DH zSR?ynZc)9!z{b%jf{qSLR8&;GKSK}DzJFiP*3J%ZXP5T$=_SmqTUZ%>IT6h(2!sTv zPzMJGC=7N76be*aMppJQm~DIe`#R7Mpn)e&8-h1&z}SOl&reG#<-wzFi#j?ww)it3 zSGOsl)dwP{9g)X;fO2i+PSO0lQ^4tg2dIJU?CgYI#=lETC9o+W;;83c(c_78?st5B zQ5;aH7+_#wF&cmRj(<&MiFmX0(NGg{NEpz@;V%51mbS}0_SJ|yg0r!)ea$OEi=*OJ z{6u~7a&xtb-IyVPfxF+qN0;#2`bbk9y2#llu$)0P+WkhlLVq46Q)AZ=t z^~k%tyu1}vRZnVaZZ!M;RZD2k%p|Y>94V!#DKb4h{i)UR{duL)wqsgOPLA*Z27?(C zMtBp6NpIe${Fg$h9J;6Z_QmP+B!6LHq5Gppg~`3AX&_OgWtJ-fx^CwF_#nvtb^feo z+H-MnrLD8OCMw;l_*lL8d~3T%_Gg9gzd~V;dq?Zrecr6x&oAGC^$TFAYlf@EI>rA3 D7j!f^ literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_72.map b/doxygen/inherit_graph_72.map new file mode 100644 index 0000000000..851a971b88 --- /dev/null +++ b/doxygen/inherit_graph_72.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_72.md5 b/doxygen/inherit_graph_72.md5 new file mode 100644 index 0000000000..ae60de1811 --- /dev/null +++ b/doxygen/inherit_graph_72.md5 @@ -0,0 +1 @@ +ffc282db75e48b230694d31bf325bfaa \ No newline at end of file diff --git a/doxygen/inherit_graph_72.png b/doxygen/inherit_graph_72.png new file mode 100644 index 0000000000000000000000000000000000000000..bb036c64c396fd26325124a4f1faba0aabadef68 GIT binary patch literal 1986 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 UO&dB=8vp(^b literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_73.map b/doxygen/inherit_graph_73.map new file mode 100644 index 0000000000..69ee4e4c9c --- /dev/null +++ b/doxygen/inherit_graph_73.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_73.md5 b/doxygen/inherit_graph_73.md5 new file mode 100644 index 0000000000..c1749251bc --- /dev/null +++ b/doxygen/inherit_graph_73.md5 @@ -0,0 +1 @@ +85fb402c567ebee222a79992ccc99052 \ No newline at end of file diff --git a/doxygen/inherit_graph_73.png b/doxygen/inherit_graph_73.png new file mode 100644 index 0000000000000000000000000000000000000000..53075356a493f3f5d0402b3eb5deeb9bd672f132 GIT binary patch literal 2468 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 + + + diff --git a/doxygen/inherit_graph_74.md5 b/doxygen/inherit_graph_74.md5 new file mode 100644 index 0000000000..a732c0d4ae --- /dev/null +++ b/doxygen/inherit_graph_74.md5 @@ -0,0 +1 @@ +0c67963a8f881beb9e71f865d3434c3e \ No newline at end of file diff --git a/doxygen/inherit_graph_74.png b/doxygen/inherit_graph_74.png new file mode 100644 index 0000000000000000000000000000000000000000..a68fef140d76ec5a0594e285d422ebc55ae8e275 GIT binary patch literal 2977 zcmZWrcTm&I77ijs=|uz#AVol$G?5!Rp^H(JChZbJzZB`c1tBy8h@cS&9mEjnJv1p1 zf}lbK3?S76L8>5#!u$E&%zJ;l*_qw5dv<5Pvvc-4U+Nv0G23~;^B@q2&D6x;E(k=2 z0&EFpMxb|DJV*luMwgq$2B6bFt+=Zy2LxiVHZ{<*3@`XL8)a^3Bh0kDC1ga;s*kTl z7PB_3|Rj zMgQAj)W_7|Tk~CgV4@Z^)tMRN!<{^jq zT0%n)4UCP&Ra7P>;8_AMtE$06Z5DGd|S(ywd|P z>g434`h~ECg@v@deBtAca~Mr zToj#n+h1S|`)nH*47&k z2;{-yYlZ@?sE-P_EiAa^<4$9KeV@2JU5`MKe!g<*N~33DFK%k$4cnaUt49#;I63*{ zR+X2ZwZrpub#LW1ed5Pu}yHCq!)EYP-3~sP{kT1ehq#ga)ZEL|T+s zR@+0r3DWm=bacoa_Z)9(FviajA|^hx;1F`juqwpb+L~4M(`jVa#rw&XdDlI?1$tWZ zwBAiBR#u1XhGqY*tcDAp+66{NM&`n*c;-H1AQv5T!>ELgfMrJd-cJ;YW6PDNB#brg z!UYk8dENZRhEK~sQwl@;i2nY5pFSkR#;>Ej(veSN_?<-rWr(>~m;c)AaVYfFK+=1+ z*QBSWa`_mKwrx;aIgHWZ1b`p)^^r7f&?};z`RFG2Mtz2nIPkCZp-_3RvQ}2hc6?+#LAV?#r+rA)x?is|I!q^?Y^%ifo_ zr6aKNxzy*|z7-1#&aCY0O9$U5c}-(uu+C_(ls@Exw-l9fa0H>l@;ICrq0U7 zma6cXOm=IYo0&-kPPMvlu7AYao4{a08e4=!ELM11GZTqClaY~OyK5qWM%j5fgky;S zMU`0N-p|jY0c5Q%L2B$SE}^_djj?SxQW6qp#l^*Go0~1=A;H162iZHA>L3fBh>|@S zRaIX1MuDkUjzORDtZ{~}t`gilJUh#oI%#RQU(5rv3#6o=$2c|#R@INyic<6#16#OB zeb_X(bvPobsR>q6QujDJ?B(K)kv#7j!m`j*b)s9{~wxfIx^lMei8a*fpOY*FLU!u{$;dfAHXrqPy|H zcc}DjTU-96rKPOG!bcNTw-K(cXKQ;-AZmWI($n3x-9hn&^rwblK{KCYZ$Y~JUkTU? zKn3Hiz|QXG3ttmTXrqi{Wj)#$EY>MW>PhL|_+&fnztwEf7l3=Aa= z4crL{33qU05UAQRt)W5L)!ki8TU$6JB*far2rXyd0(_mC8acwjr+;Yc>y44@5|tYU zp9)hfCytVlC>mmC4`1_5FnOX<@0LT=eyp|OggK~3oxA*pV9E|~b zVi$tAM!c|hbo33uc`7F*Coj?7mjQW^+|#2I7!xj*gb|-)63^ zttB#vM905;Df7lvxyG@RFCrphy2Ur2c7wa%QR1^_LR=FZN)a+LG7CVJy&!9?TW#sG z_Mt-h>QyeXR9Nn>)XsZtSdAEW`YNPAAR`!rIt78~WAh&yX}L;{8HSCp6xvi&RHS5N z4E)?*=i=i_{_@3rfJn3_i)NcREAq?Pn7a5SoFjL-k@!p`xB(BP>(Ld-%AFRC>e-mf zT0&QO&mRDCAsoV*ng4BB@u%*mwf2)^T+MU4k7dkKW}Q8l zA8~p%YbC*!850bMQra5-&`q)If`y3rwHt(U|C6x)wlJF~957MG5iH!G7SP-vQ$v`+ JD}86=zW`oly66A^ literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_75.map b/doxygen/inherit_graph_75.map new file mode 100644 index 0000000000..d49d736746 --- /dev/null +++ b/doxygen/inherit_graph_75.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_75.md5 b/doxygen/inherit_graph_75.md5 new file mode 100644 index 0000000000..27376ee330 --- /dev/null +++ b/doxygen/inherit_graph_75.md5 @@ -0,0 +1 @@ +201182335b7a209e92cd1ec5799ba107 \ No newline at end of file diff --git a/doxygen/inherit_graph_75.png b/doxygen/inherit_graph_75.png new file mode 100644 index 0000000000000000000000000000000000000000..971d24e89a6d8fbdd86195e92d23d7bfdc4d2e55 GIT binary patch literal 2627 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 literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_76.map b/doxygen/inherit_graph_76.map new file mode 100644 index 0000000000..9f8d6dd9a6 --- /dev/null +++ b/doxygen/inherit_graph_76.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_76.md5 b/doxygen/inherit_graph_76.md5 new file mode 100644 index 0000000000..f801d903dc --- /dev/null +++ b/doxygen/inherit_graph_76.md5 @@ -0,0 +1 @@ +0fa6d5d19da3cb8d8530c42c2eb4d11b \ No newline at end of file diff --git a/doxygen/inherit_graph_76.png b/doxygen/inherit_graph_76.png new file mode 100644 index 0000000000000000000000000000000000000000..47c85c6daa8574ca81ef4fa3dd00196e2b36c703 GIT binary patch literal 2605 zcmX|@2T)Vn7KTGHbV2D6K>{K~#1M+1h+c@HN;4uvy5N=GLoY*(1du8qotTSA6F~_e zAVMf23IZY$nshEn=)Jt-%$+x9&e^lio;|bXTkHSVdTMH{%fkub1c5+2`g$mHU~L3m zC3Z0I?Tat}4J=?sLtPZ;^v_e=QkDS%as1Xt{e=n2r{%jC@!JS@pWgF110zpslLmf6 zq+WH-o1r)c1qd7vK@|ftiPvB&N$X(1UgL3yo zE?LFrg}WV_h>|$OJ*@2Tq2Y`AMTJGGpNUM}kp?KH-5xH&4UTE|zLH<%Fwqo%NSQtH z(S>uz*Xc>0CmNSsb#>W%OY8KZ-V*CxZdQ;7cLZ3hFw*(B93|* z@{D9UySg?SkpU~2Bis5xK}hp^_x@a#kdQFSfiv++XrU}Dgq#qf;Im@*xj83Gd7(kA zj*gDn$kP+m&9v0is4|lxsGJ;!Shqu0lBo9h*g{14h^x04+f!6@YAT| z@9^+23WchB++P|S%lf*!yyWd$#0ymqY=t!|8`}^-{#9#hVS0Lc&**4&J@#7o{zlwn zYq()Y0&m&TQP`kX+=gPn3PwG2r*i4o-L36~VqX8&>X;HI4-d&OTjA*>f5`{-Dl=|1 zHMN%`u3Xl(b0iXpH3|R_JYMy%0qfz8M#nFy@qk%^LqqTB>+9#y92^`nv$80s)fE*| zAdHz=dqWwCWR)y>D?)SGU%f2sLNc29woJy;1{D>RGz^TCo_;=LmtHW^^c3$o)j9za z?tUh*IL@Fp>WFol>FBU{J$&aXNE@ru%`{QmU(!qCqK!V~zw%^%W8UJ?D&XPicS_q_$ik72U1A2a3dP0!AL}j*lhuC<}GUtwUZtgQB%3;hF6l$XXEu1B5vuG7YE$YvSHTa)<=vroznR)@+=*bq!+T5&($ zxd~U>G{*z>LuhJtH1zg{r-cd_Xp%6P9`=vgl|)`!;0n z_6Y~RbAuxl4|=DjrY0QxHPof9?eP&O^!0H8iA!j=|45%`1`KGL{)U>O zvH7Vms3|8WM?^qC;5LxnDhnxfb%>Rf75yw>5fJIoMegxuXyUSR8~qDGSG<=%AWSTT zu1&Z1^!54WMM_4;#8eexaDwzNeRhG;40lmD@o;@qu<@GG<1ZhVhsq`{#@jT7hTUX( zrfK673xFnT#Nw9e>)Wg$t7%ln+G)T>04zOUzW4_s#e0EWt#UFp3}r5hW*FK&2=13N5b%FJ#D zp4abxd=P+b2~pWUIQYIgR;OP!G&ovgccvS6xj^O}jq^M|KL^M~8S=WOM);<25;wUD z$}o_tOsyn4hdDbtvqnv}MSg2&3)@cz4FGK+f9G;Mpov5RK?;;vSU5QotR7>W@e6k* zH#ZjN#g{v=qs>q3SO3-eWv|@mtX>Kp@qCq^GAB zrCsu|HT-bZHHGpys-RsEVOIP0w;2)L?ygGw@FBk;>-qBykLs;6AV6CDZ| zi%n%st*w(jebTP9YZH%%h$szf$`d!6yOxXefg+TY%xrB_s8nkp$fa$MwxW6>!d}4X?I z-uL@gQt8IeT1*tu^!WJsV}KgQ9WHN&Jb8x&gmr=kvMrU}<$H1zET-d3silROE$HmpNl*WGj0_#d-fsCmo6TGwW}le+Oy) z|JS2khXJ4wHX+V}J6r&$KmM8UOj}%7z+vHkhO7T(EMO7uI0Z#3k*}tunBjo=52Sy` K7*(xpAN@Zl + + diff --git a/doxygen/inherit_graph_77.md5 b/doxygen/inherit_graph_77.md5 new file mode 100644 index 0000000000..8b5446f23c --- /dev/null +++ b/doxygen/inherit_graph_77.md5 @@ -0,0 +1 @@ +cb3bd2b41081c92540354e12507acd6e \ No newline at end of file diff --git a/doxygen/inherit_graph_77.png b/doxygen/inherit_graph_77.png new file mode 100644 index 0000000000000000000000000000000000000000..dc503640b8f9b25e4d0f370400cb6ae362e99aa8 GIT binary patch literal 2316 zcmYLL2{@GP8lH|4W6N&Pufd2c*(UoD$uO2#RAe_JS@K(xU59KTKMi39Su*w^A+F@e zGWHUt7-WmdK6bMFpL3n-oa?*Z@4epdd*ADNp69-w`@IvR6+ahaMJVS%{` z7;0>+z`HN5Y!;YUab^f3(COLpx`q4_1Y&D5H8QvpOj;$`ncVRfrk>gjs8TUyG6Tcn z&ycbfuq8Mg_PiET!?55$!d45-Yl@H#?53{RNzGtPR(gD6MS39%pY($=0`H86Zhuxt zx2{=n_4@4bgytV^J}8Uz?IY)Zx6tbH>+^OL8tV2=)Ic$9&dMU3tTAoMS0@776Zx-B zXubH|C*GqhlGNGTi=>QtI-%;v%q2SfCY;2nf~U>zM3Ud&akyCtP<+X_oBDyYZB@`1 zKTbK5uj*dX($W$nNM3FJlk*YQ=B1j#AGCSSq=)x&j+VbsrZu_s^z`~v^p1{>&}ejx zLV%hAPY~>(jc#SnDd-<8EPi`y4gqAB8)paeU>=(5`^!XngUK{_@BsF*i)rCX)%ItrN6zX?*bho>|e*(>YC>`}YkB&{x#d_>H8mT~v9@Yde>o zo|U!#1dHVxh@YNz)(+md@;E36i^oe{U}fb4Ev>D|NJ=_6Ir;nf6+C|q78Mhdk}RyS zrlcd^%r0hy+FM&Avm(Dgf z=I7`C@MCN&ySJ~ethF^CD4@x;46L>Fw?aIS$V=NQnOsZ6@$qrs?#lh~25+&H)Kq?6 z3>tl@v!erTZ7mE`c4&8%{&2)l>6O*pyMkQY+}QANT`f&bG!7>j@q0IAX?eM)vojWn zL>f^A$`Lnjf+m{+5ZjT14NfnUQ&KP%7F;1=VOB0K1q?mj@}w`KoqrLDW{HW3Z_K9V zQ&LjSKh@UJ388N-et!7qk(*lyL+i2j05@8IAR!Uj<5<5Hl{>DtqP*xdpWn~2fDk>`aU{Q8Q zG{yQ_2GC_m&nG7)I6=Mv0W4HMfEP3xO+-ZGrkNSXIGqknGpPw$9oO0dJ$<}PV@6SI z>%joVaV;$^Y2N;dhAN#j{73U2l&@d0`@etRl1u}rR9sx#U%F_o#Ws3-MO3)AkT@|p zdAYs4ow2ku>#d#pXP4#+A~aat)YVlwPd6mG(dUOG&=624R0IOyjW}_gDOs3bTl-l0 z9pHY=+qZ@&6i-4ogC7E6*U-@55QTZ2%Bo3gOm}6F|WL9fzrO@1S_nKgIbhPi`wnyNTC%4GMP(?+H4P7gZsLy$N zw?ad;0sb<#7E#HmsrbOa5r&(2!o-CAhwuZwn3$ONk;mGctSp5^MZ$vg;bDFZ29uDK zbSol4&)C>_V{KB$2!WWRrb=w=?sfqrPa~0ZDYjXLK!ElR4j4N-`DQt?T2mxICzl(^-s ztIu!vC>|ajzQ&f-M4d*8Yj0DQhH12*a~V%dvkdLu`<_dc(2vW_%`GL%52yA0d>^zb zio@ff8OXGpoaZbTx%<7i3z`*zQnqkVly#&=ctpgnsg|$>%b0|O-rnBsv9YlUkE0+3 zgu_BJlVpV&v=ISPsj01P19lY*|MF$d-UdV`OGmK|KiFKOk!RMQrx%8{wFO_lejSj} zXYuh;Iy&?T59Ygf?>11%B~i1pvzdz3TFbaJ>&?COA4J979Jm+y&K=i=eZ%gb{zV!Y zt>6G!tV0h(h{wx6uCqOdTG`o&#m2^BfYrJNj99OpY2oSh%RGb7 z(9pmK@^p94QW+$mOpu<)DX-pdBO^wj(x#^D#)zZ+G|-n<*PRmFPgECARr_S>>($Lo zk#@GW&fea76@>5qJ4F7r?1IO$G}#YQa|CjJ?SxLVBM>|ZdMe(G@e zfaW&>Dw!}sco(dcA0L0QtE=k^jn+l=eDvr%C^$HHqv4>Jq{u~^x4M*02n`K2EE>83 zg`UgTk1~#m(%;uR##WM zRnD(p@YSDksu&pR2;d4zC={Q2zeyH(uU<7i0&K#W hclfV`aJJz*WtrCK4k%xj!U6UMWP01usM^pu`fq2>X(a#v literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_78.map b/doxygen/inherit_graph_78.map new file mode 100644 index 0000000000..860cfb4736 --- /dev/null +++ b/doxygen/inherit_graph_78.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_78.md5 b/doxygen/inherit_graph_78.md5 new file mode 100644 index 0000000000..ef5fd1a6a8 --- /dev/null +++ b/doxygen/inherit_graph_78.md5 @@ -0,0 +1 @@ +9284b26c9223bda4899e86acf28b37ef \ No newline at end of file diff --git a/doxygen/inherit_graph_78.png b/doxygen/inherit_graph_78.png new file mode 100644 index 0000000000000000000000000000000000000000..49cfec2f4a9f6cee5fe9490b96632db05ab756c0 GIT binary patch literal 2321 zcmZ8jdpOf=A7433HHQ$QX^lb%Q6|h;IgH4u!=_MZIgc{oaa=-96FIafttphuSq!zb zJen5eI62H1>%oe7e?9MYy??ydef;OXukZaieD80DtFzs1NhL`T2(;V5-r5aV>wsY( zE(**{%C&^Yh24~a zImr?jw1ZGA4ts7vRJI%ljyc+}DkD;7-+jg=p=q(Y;OcOBt`{T~U07%%QKPM^RZ<*u z(UY|%5L^#gX!QRW!pB+6wa%K+d8HAmU%sAv0?K@(`KLb^BjgH6NJ#8VMF~nW(VFj7 z_oNL~dXj=a^ab24?a}*?Al03}NvYS&G$RgT_jcOy>X1&Gcpq}v&m_(3@Xyzc7T9dN ztcdCg`OI+5k)He^qSM)vZ4TF_=;h|gD8QJa~ zk?tkIAxe;}`?QRT%3b!C7o!i?7rz=nq0qB9%L=EnTS6*-_dI;~&{b1zg2(r2jy$q7 z-hrvR2+M;UIwXWbp(a+aO%bzujvE+AgTa>{7=-iRrtAV|SWkpga%eMH{%V!YhxO(0 zLvXmt?bB*_c^yP-EXAh%=g-LgnQ$)uwy=muWpne$_1YCyqk?ax>m8KhO%s)LYxSq+ zj)D;(s=IvoqN1WVCpveCry#I#afnLS3Nks15u5w&ioLUQs^77+mKM{(V;3?DEXLq-dgM)*fQr7c@@%pQ~0Bod{m3O70z%nxEsPYfG8mHrb31cuA{IdSa%8FM* zz-}o~AyWMQqMn`}C*b52I4k_**Ow@v!THF?RaGg%Vq&r&7OhD4FEHY<+Y#Ulgu!53 z!D0zuM1QeCAP}uSRqqmRTVPgvG6Gif?3sF8TiNH&pL6o_<%axf&N*&wZrX>2>g-oh zfgUZ$#Ky)-69l7iU%!6Y2L!+-dHlyD5)DELr3$VBm$%;L-xn4Z&hdS7 z!#f0n(_Wmx-@6AxB9Yd_!JPK?)8QLjl#HUHy_9J3cbs@|0+-ZliXSJiSvTt6!0)wod3>EjPn&aTlGCYp%V-u9J zQg2fHR(}kX=zlp=<#sO^-N}_V3q zDd-zAv#P2}Tv9R#P?utASE7)Z?TnGReB)~T26qQ&g3Si>)Tt-s=jX@ej2gdcY#jNn z03sM;%I4{{wY3C;z&%ZVwNwH>%-?<6i&;8;p(VPKOx~TCm?*w?Z=i>{vg{3XqQ#xA zF3ZTMsN!BjrGclhQU(htCrgIOzG?OK$KeSAmC4CT@!h+rpFV-voCKpgu}(V^J0TP@ zb$C9K*&L$28G2k(Sm+|luo&;rf^!fWlW5*I7Hr@JxunG*Jh&K z&C?8`X-v}&TcWgS^x_>vrA0)9LG8u1g_q45-+E*+gh`&{x9#!2xid6{AVVcU_+P(& z94;aOx`3FO9njIy+2Hdu0H^$nYojWFZ>{opNN?{9fdF?UFc1Ju{nV+EKfwu%=zswm z0tVhT1k!VgiUJ#)effX^UgEamGz%OJjf_x1LE^d>TP-3Z4RM1 zi7^qU&q3Clo12@nKq93x@%S+Agk@{|?_o%kDQn5v!9fB@2M2TQD_k{S#{XWEp!&AO z8NtoWr1$Mhp+wB8>+0@}SsqIPSYs;!R_^cb?@SWeb(1};1IKbZr(O(auo~q@$H&zI z>19*^>aJN{ZfWUV0)ZegqjmJ?+bJp@xJpDD26#lkzxZtr675#FlU7X> zO7W62(;bOSTwDyvFDwMarmn3m1>i*O%~IAkF`46TZID}J6O;kx-}u%v8CiE^6vn|H zuyHaP>2ZGc`ZXi656#MUt0`Sr6=;&S>${7M3=K`LF0OFb*WX}eOdbxppx@6A!m3ME zL#M{MTfbvSUx-rOmwTn6&tD7vQcLYh7So`NB&dZ>=>zP;V^@WNNWHziiNh_;%|39m zQ6PCuO;0<~rsKhv2PV7I>H_JiKtf`c!?OlqCwNQWO#we4H09JGkR9#q?aWu#hVmJ* zfGfT>1RjFHM0Y71>#1>n(tG={`FE$^FhFo7F-s~*Nl9QOrOdIhi*gDIR>Z-HpYuaN zu6Oqwt-neGs1_r8;_(W)kE*Ifju%UXQ&ftMT|i(k%lV8oW4;EaE~~H3zt7dnOT5Z0 z7ny1Dg;F~>Zkp}sz+qy(Ru zDhm7oi(_rd9v&VE3^T9ft~;x%;fu^VA#|OhnVDHXoo?so`2Jkc+Ihm7(;|nHWtFyP zl0iEE^!an)a(Z8(j_*NveAwnj*zhvPIkmUf7OJ6Pbr5`cd8`eLrv?QDS$KHti(dLB z;o?F+LgHYKb4r-sR%d9r1qCT2l~BJYvz|8Md&{$=siNZY l- + + + diff --git a/doxygen/inherit_graph_79.md5 b/doxygen/inherit_graph_79.md5 new file mode 100644 index 0000000000..c8960fa6b9 --- /dev/null +++ b/doxygen/inherit_graph_79.md5 @@ -0,0 +1 @@ +e98d7fb182d1fc2f5fd33fd189323476 \ No newline at end of file diff --git a/doxygen/inherit_graph_79.png b/doxygen/inherit_graph_79.png new file mode 100644 index 0000000000000000000000000000000000000000..f28032cf71e8db8825b7856733b3b7d4839d9022 GIT binary patch literal 3485 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 JYhd@I{|6&Z!0P}2 literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_8.map b/doxygen/inherit_graph_8.map new file mode 100644 index 0000000000..a3966637dd --- /dev/null +++ b/doxygen/inherit_graph_8.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_8.md5 b/doxygen/inherit_graph_8.md5 new file mode 100644 index 0000000000..c4c505abe4 --- /dev/null +++ b/doxygen/inherit_graph_8.md5 @@ -0,0 +1 @@ +91a2aaa6c2bfa410ce6e09fcc2c3b288 \ No newline at end of file diff --git a/doxygen/inherit_graph_8.png b/doxygen/inherit_graph_8.png new file mode 100644 index 0000000000000000000000000000000000000000..07c0f094f63bf209773dc8769d7375d8c2fdb034 GIT binary patch literal 2075 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 FV1l43=ZgRU literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_80.map b/doxygen/inherit_graph_80.map new file mode 100644 index 0000000000..30ce67d788 --- /dev/null +++ b/doxygen/inherit_graph_80.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_80.md5 b/doxygen/inherit_graph_80.md5 new file mode 100644 index 0000000000..51e5470038 --- /dev/null +++ b/doxygen/inherit_graph_80.md5 @@ -0,0 +1 @@ +9da27aacb4e3110f80ee4cd34f36c345 \ No newline at end of file diff --git a/doxygen/inherit_graph_80.png b/doxygen/inherit_graph_80.png new file mode 100644 index 0000000000000000000000000000000000000000..8235f861d47aeb16c51c59209d5474320ee2dcd4 GIT binary patch literal 2603 zcmY+Gc{H0@8^EJxP`jZ-=^&|f zS`pM&p|KOo*lQ~)k$GpnbG~!F^PckM5>AG7$$Krn95DH@a^OWOjazLPq3r5g;55tSMiz7|QD`FpA=4182!M)ZR zKWi52%eQj;)KHvW*<@XLW$N?KkEjYA7*DiQuC;?j4pDk7g*pc9=O{eCuJ9$mU(G3* zuS!8PP}`92T7tSX>VS6s?PC}?V67ay`1xRJL~L~Jj~8Ndk%ZCXQ^IKsR6GlQm^Li;5l9j;gtr4#Kw@ROAfagJqhZ#rw zc05QNh02_rrbt4npin6K652v2bs3T%P}om}XBp{a7(zqOX%Pajiu(Ft{$c*hmyLXU zY7M9I(sTkPa>Btf&Dx|b3Qk5rK@>$`oUVxpz%C!EyY-eQa<#_`P&9fMpM2}%fxId$ zMcli0@56Hl1QN%)@!Mi=yr-8}?YfA1K)9#lb@AraRiud|zkPk49S+&#Jt|s5`}7IE zzrSAqiPjC94f(Y*blZJeVkS2Wbs}yJ<;hbw$k-cFQkHghMg|5f zDHtX15im%>@qPEwK!5%e14_{$&2HqX~z;>G=kaciyP`@qg$DxmPy*z(#SvzbeSl05vgWjoDKh5ZKo!Z*ks;a81apni9DJkI$`f=0r_6-S%y_ulVv8kzz zeS7EUdoVdqhX!Hz^ujHUBx;qmX(y5l*GF^QE&NWdwcr= zZ)m5}unYcKt7S={iZ?rsvSrNxj@12he?^b&8kjrr^Lj9*rR5>pwYXs<|4WU??{Do1 zot+MkTJ0^IoaBW?M1H>N>*vSnudStJ?@wulnU-k=8GtYZf^#}~e4OoWv33{&UrIR0 z&&!hpWtEmHD7X-|CPI$9fMgZFd2=&wgBxmLk@ab0WNy~RvK^mI*$$=A=|JQkcq}e1 z(uwg22_3W5&W+w{BPCtuKQ>9FcZx_Plk*cQPt7g-S&^#GFCZr;Cts4Qk_Jj$i1X`q zX#0=RPoG@RzHd8rhNc5y&dSK(7L>CE&2)ua_=%MjD}odg6H{>Nfa>crb8&HpomBnB%F+=%^2ZK^&uIh0@OE;OmCuAZ}wJXjqD{PODkdksmmQWH0~YcA3B+e}PM0qsq}>kt01o!Vnz zzzE)qbNWo!d{n?BkR9b1%muvjC^ZwZlWPO;pLSU#DK+)Fv~&_+4bKX%h_w@7t?7qJ< zA*w3OWd@+uCS^vG5cPI!@Wk^xkfx z+N8)qAYw3!fOX~hoV4n6Z#im+c#sCzf3Bmgqse-u4-3a?(YZ2 z@j8BZQG$;=ZVuVBCda5|tCbRT4nOM)2nxElPgCBxFfs=NPR0HuOXTv4v_w8A_M|KI;9s_{LmjkYcnq{ZxOAj z#A;mRaR89_Y;0_IEd&CCf)ZPJX6w?ul{z{*HN(GM_3`l$;$)eco|ci7btl(Z1(3z$ zy9_+J6Jt$_)SfQ&UzCa*uFy}MA$WB(lR3S<0OQ@pFtDzJ5p7j#VsU0n)b6`Vii)&*wf*^cwEUO#B)LN^l#IgDNrP!~=g zA0Icjw4^q3*|ec6{I%{_R|3HkadC0U5WQpU=2l^OR{CzQd-zfp7Mpq}^1Hc%!w@iF zdNfxvZ%;U@a2UC?wDe;jDk>^DJw4=1qYqV&R4PK)+6sw99rC3L%Ijgt&4DY%WclgX z8h;(&YM>4&e(>CJ+@)b`K7;^hYg<_4HZzEqb3K<&7&cLaCR;f~S;jsZWwM0-x19N3 zUGsk*oEv+P(5 + + diff --git a/doxygen/inherit_graph_81.md5 b/doxygen/inherit_graph_81.md5 new file mode 100644 index 0000000000..866bc8eb73 --- /dev/null +++ b/doxygen/inherit_graph_81.md5 @@ -0,0 +1 @@ +d5b7b0b26dbd1e9ea23de3e13140b9f9 \ No newline at end of file diff --git a/doxygen/inherit_graph_81.png b/doxygen/inherit_graph_81.png new file mode 100644 index 0000000000000000000000000000000000000000..e48fee12f444719893dd973f9bdc880c3ea896e3 GIT binary patch literal 2889 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 n!C){L3 + + diff --git a/doxygen/inherit_graph_82.md5 b/doxygen/inherit_graph_82.md5 new file mode 100644 index 0000000000..fcc2cb3dc0 --- /dev/null +++ b/doxygen/inherit_graph_82.md5 @@ -0,0 +1 @@ +ee5d4a9988a49e7fed8c11748a53620d \ No newline at end of file diff --git a/doxygen/inherit_graph_82.png b/doxygen/inherit_graph_82.png new file mode 100644 index 0000000000000000000000000000000000000000..598b75d09399f83805aab8b3786f92993c983fd0 GIT binary patch literal 2235 zcmXw5c{o&GAD=|_J^P+@Bu4zol9>$Ig?Ut#?6UtF)7XWOX_zwEvL{(4Wo8H=vouY% zh>)>wscZ?^RlK+NdEa~Px#zF*z2DFCSf%vVh%n`u)6__eqCxCBM z!XHjxIpJ$-X%0I2JDyMpIUo>MxV5>db4Z;mb2D7xa<;}HGh2Gw)W6jl7{uZ;h zx3{vhyS@Tpoq@q%lhpX=;e${l@*bTId*{3He7jXd3tSlKK)lKv9gQI}XNfk5o!wnC zwH#9w5ysGv=#?v1+&ZaLYF1ue+U%^ii;K&Xr%%~hTU*1?==q6W9SL#qx9#m5-@bk0 z;^Be2yBA+AD=jVM;^t1aQb}oRGxnq>694fG2vAE&Nl_F@pIuqOVKA6Woki~2nwlwi zJf7uZVqyY0dlrsF>fA{qljrB>t?cd7a&knq&YV%o>Hat}!U=lz{Q2KvGv|zrWn?=| z%N;?WqT*sDah$G+2@yU0niW=K5HO-@Y#cuji4G6HXm8K&byYKO)<8g6S^4*VaBwit zU5cZ|T>?QJ*qD`{&j~!(c3%~Bb+d{At<%-}yBIsQ3S<%B>nE1-_6#BhMaR@qZg6W zl=ALw>yWUp%B`&k8Zkd#!qCVFfkx}u+u1n+{fv!{KD4Nq!@Ik>I(c}=)eMKc|L{RI z%gS6c&t_qi$z=M6h1so5Q|IwswA+PnIDGFVKyqGg?)ulRE-M~hUgb2nX-HF1-(wS7 zC={x%r)LIiQW4^MMkeF2SU^ZYD=eZ)eos19LtXvesZ*!6igppGl?=18$cE--!t!zm zjgD7 zK)e`M5y#auHs)r^8p6%Z84QNAi_5bSO8!#^+1D)lvPw$qrdkq(M9MVCtk~E<(X`dn zFxsA!mfC`dDH#q9j)?E0y0i;0@U~PS7^nIb0e}&=eJ@6*0pt`E7c)CLFytI772a`x z)8#1w4#z7Gy^TdL^fCJT1-ZGoV~!4~SBqQc0gtnR)YR4Yjjmn0M%*EhNRFC$aSs#} z6!1TP-uk__alEOiNm5FRQEqlGar_m5zzOn3A_X(&-=Jjg-@gwrGI~${VN-?p^y$+R z5=o#fdaZ+z%IW0pjsv>ZKX(qUnYV1R*1jmp`6PZSVvG{2ca$V5Dq2uj$e5hG{^I5< zSb|?s67oXgZ%G=BCd88lSg59^#@5p~q0^O=M;a!(Z8eh*ZiR=xdH0UpSyK#_K1R>~ z_PK>ap;8Nc;ezbk+}y_?{h0OHV>>^laEFJ9K@-nW4#eKW}f)z`#Jv&oA6NYcqo7j@XnGHfLw& z^?%vfRs*|3dZ!-N?pcGgtm*>$2zKN9)bJpfrcd3oXM>vbnvP{(bmM6$B7j5<#oMi2P;`8m0`UByG$t^7g5s{H|6V1q=;9ygKe-&ENkpPH`kMG^$qQ;LIdOu983IQg0(fjhZ3;%iy z05d&3-GW{au&}TI67L?bg!W?Ov<)kOHnyM9?i)7QA`B#XSAYLVNW+aD@ra0s^D0&K?ZW|frO zudUS@9UCjBP-JzyXrJP?2UVd^`R(m(Aov(0kG4l)@oUp2VH2gyRxLj++7 ziB4pLjEsyj1R|uSrZ!sd#|cu@*FRZNQQ>CYIv5MYME;9wWZ$45uAQBohu!`-+Do0z zTYk5qqB@#FM}*|$__M6;Ha0eLph{p#@?=kHN=*%z{_FK%t4ub>TJGNnHO!3PI{Llz zsJZ$4;Ls2XPS?RM(~HpdrKZ?W@qnPuB@(pjrLzS!r^f4n}>-3 z?QLYtGb%NKXy(m#7s#fgP(`!vYk{LV**<)Hwl)}Dh!$9?<4s+q|9=bk@bx}zBLiuZ zbXEZ4bNEUToW2MHWfD!b_!@q2v8Uie<&OXVxaZsK-|&(FsZW<2K_!9P2*~= + + diff --git a/doxygen/inherit_graph_83.md5 b/doxygen/inherit_graph_83.md5 new file mode 100644 index 0000000000..c13cddbb97 --- /dev/null +++ b/doxygen/inherit_graph_83.md5 @@ -0,0 +1 @@ +48c4b9a6711cf76b8a43e8191b03fbcd \ No newline at end of file diff --git a/doxygen/inherit_graph_83.png b/doxygen/inherit_graph_83.png new file mode 100644 index 0000000000000000000000000000000000000000..b79c17748ea2e700126775a531b17d18a3bf33c6 GIT binary patch literal 2618 zcmV-A3dQw_P)f<-hU3IZ(}(L_NZE}wu%Km%z>Q2&A& z5s1r$3yEvg=#9jnXi(w>4Q^o((NDclqfsJ~XmEqL#2B@frB!560YRcd&;P=7(iZ3p zmeQ*4FX_d+^PcydGkr3hxAOoD27|$1Fc^%#9nO4U&6+hn9LN1@k75{qJ`#yUt5T^d zjK`eKCvhD2FUN5ugI5;gZ$huv{|DfI#$!E1Xh5Y>*}Nde--Sx0LSW%LTW6aE5@ z{Dq3ek$UKJcg*OU`}gnLy9BFoq#oFvkYRTQM1=MA^-w4jkV>VPI&~^8Uc6{>J~%iS zd-m)>WMm{pj2MA)=guKBGZPahPUPp9ALr!cKqiyH)zuZ@;o+#Nsxn#g)vH&Cii(0% zD#hfDcu&krLSb?Znh zYPFgGP(wolKUP{=N&u*-sfmb)f`Wo5BO^ofni`FUTwPu1*|TT8o(~ENq9aF+@W-D% zeIfv))9Lv0yLRm|iJ3BG3aL~oQTdlGTSl8VZzdulye6( zkyfiE0QBzNJN|rkcQ;9;QojDs&`>&g@+7skwvxNMJDogvl9n!AN<>7Fk&%>>lOw8c zO9;gp*KB@VTU$#2=*^oqJ>talCzjmYTw1$!?FDnqS$!we>2z>)b%m#=CqEVt5YS_u zudlD@HDxjxii?Y}efxHVhK3?7Ee%hfJ~f$RoNw5$VE};6&Q5+zE|;6km&@hQ>2#v< zr>3T&sHh0vzkkQ=+qcou(t^c{7xy~1y1E(w;O*@Vj^n^_9Gsk-(AL(*|9nSBN29c~ z6lG;)m^*ha;^N|P`}S?Lx3{CBq5{#;(W3kA3u|I)YHHx*7EvmdP%4$s>-9K$_ADYIB2ZsnkKx0Ii;6c~JOdhy2J!Ln zqGA^=TnHBz7hJu16_+nxMp9A|FLZPK{QMx1NYL2Wh|!}*_c|v!IvOiiuEeNOqYx7l z11~Qxj2}N9M~@!G=+UDwWy+KR>HAk>{r&yX-QA71Z{M0cV~Xw1TCBbk1_T6P-n@C( zxN#$znwp@|Xs~P7F2OiU581bF-NNqOyP;OA@#Du2ba!{7v$L~b&mg(ExhO9$$Coc( zaQN_H=yW06DyM<%-7c!3WWk`X=!-*@+DeZ zTalNShpShwit5i=24rJWQc{BU_I3mW1VEusAUQeNs`cj2pO29vMY0RTgX4nG!L7A=BYE=Of$B^E4LAgaFsr@tE$M|F-K44Z9C7z}G+B4pT| zKl0tN@gL0$$LF`a6WZD;HrP0lqs1QlmLg>QSuha-2n`MG^?f&Ea9|>2*d2!up+cbm z$8nHIB#_Bu$jHbral{B&#f0K5S-X;wl2BP$iPY3oa2$s@bLId58XFt2V#Nx0dU|5) z*s)l>dNn?M`ed@ExjoGimaJ0d2<5h9+4Ax6;T<}_&v*MA$DyUArO&!;ZPn^G_WZND ztE-Eus;X$>#EDc?RK$;mhlkUWB}=HGp@GzDHHC(Tnz(d?;)8;M$iu^f%F4>9wY8Np zGc!pll~QA4BM}jWgoM!P)2B_=nm>O&#l^+ZyLa!XuC9(2ELcEsad9SVdU<)#y?ghl ztE)?}xA^#Y3JVLP7cXAW=g*%>rBczAD_4l9r^Cfk?pLo~(U2iS=S})M`Sa%lfZo4<&#x)go@U7^ zMPw>Mq1-~2EiocAu6rP@T0%JV8QXV`DLH+_--CXvr#Nj!$j{IJ + + diff --git a/doxygen/inherit_graph_84.md5 b/doxygen/inherit_graph_84.md5 new file mode 100644 index 0000000000..86b43d21b4 --- /dev/null +++ b/doxygen/inherit_graph_84.md5 @@ -0,0 +1 @@ +de580f231e032b93fb1d8ede890eb20e \ No newline at end of file diff --git a/doxygen/inherit_graph_84.png b/doxygen/inherit_graph_84.png new file mode 100644 index 0000000000000000000000000000000000000000..206096175b36a1fb90fd07e723a4f4cba4eef6d2 GIT binary patch literal 2597 zcmYLLc{r4N8=grfBl}o~8k`8nz9;+4$THcYh>$pzC_Bg6!7#QWhAbnFC0Qp*hRE&+ z3E9cM8?rCQ^8LE5@A|&?z25hEuiyL6^E~(c-1ie>Y

29!U>@Kp6FOF{U6Efk%!G z2HrHQXn7D|_6D~wkn>-6PW_u?2n0T+htV<%$f9Ps;O;y?bewZx%*gujHP1BTE|=R0 zBo#eFB1%Pti#%W4ZDzY??V*K8fN@QD7+j3w{hJVV*dzo~knFoP!HUiMPVfGXlT{0A zpHDhy;e8^KQcb6e-!V9z`I_bZ$41tQORrk;Wod2(SVWVZGmf?BZHHii`%vQMU&K;m0cj*FE^6`}_M-xvz$XhUyv_JxzMYQ%!57#j9s$$8UP) zj@5XAA3CBgAj-wd%j^C)-VglaQM_Gst>|tE-b@Uy$={eLfKDV59rF)%c3RpKcx9eU zDEm;yIF`PWTE3EQ_I(ZuYq&kR7IBGLTZFy2vlFhRr4_Khp5FKB=~P2oBpkudLMQF~ zjo-n^iFb6I{E#L*JRBVHbH;g|pPjTd`@{} zbW}@(T~I&(ifLW@9P)3}$cP0UUc08IhF@41MkEqBeKkT)G~L|9Rn^q`>Vy1s3ryKL zI4n7=ylY>+Wb00syHs9YzC2jM#VKy_tg=!z&*D32>5uDTVy-$qKJp4tIXV0pitfl2 z9~Dy(c6JsPO~~@jQZEKGzqV#jA9PUo@4@CBUta}QR_e&Rh)?zPM>4LqAdgf&KECB2 z^+9Il=2+&dsyQ_^$_-@|6;gi&1bl0WW`0{)`I3!|?VrIxA_I)3!r#*~*XrXF6D*dN zIzdUkcmYaGNwIkUAWg!mI?+PBaC7Q2g0-*6Bu`f|jrYj@YpR0Ty?X;yPQ688=Vv~P z-8?qxj$hc3H~qvHmX-#FD{MuDgz%CNY8_0tu3j}{i-}Cp7cw_9`?fk*;xhkFQvUE- zPy3MR1X^3$d3(Oo%-R|!MvQHLfig9^GZGW+_Fm~1yv)kV5|NVX&HphxoVLF)*=3tXB(g&Ko#j8NtE>Mg>YZ+i0BN+j zq6h@TY*jt&+{E|yC8XqtIXw^K2+NIs(a3u*;sgc7#KZ(4X2!iC>ec1W=lN^Z4H73NzGn86Z!Jtqmfk0@C+;-rn9aPk*R7I65|UbiBd30XVv|)p#=%-NV5UHrZ*Knz9v_lt3XiHa6eZ_5#k& zLh2h9eX_H&$yHTo7Z*{&Kg$SCPFQ2G8*l&K+A#Cr;GpqavriIuZ75`UxB?~hcwN=% z?@stCm6{;)sNHU*zu@rXNDlC3c5Y5$U+$v`CG=E9(QO2R*Zynja~Qf}IIp;v9te}` z=a3EE%(OD9h&AfN_2j>TdV^$V1}=IPqwc?KM;7)`u2K!4F4&#xpU zCr9MxU$fbqnSs7FizN`~KK;1^{_S^KB~k{rik9*PwxD=F?sXkdShS?mUj&0neb7Mo=5?)osG)cJCA zb6H|A0mr+dV3MAiq@||9P$-n{HMW}CTKmyT$HYzt4X<$XY(G zJLvr;+&c?sVKoWTO6z;eGS_SOyGTpnL--f6i$%C%W4>N8*}jebOog8xa@{D~O)Yv% zlq#vk2%~xO;}bj`7uDL@I^@?OUUILZ9Td6+#&yWAV9;3!p7Hwi3&4?cq0{KEQLNA><~I1Od)CRxYk+(DvY?ZQ45j zO&xGW_(d~ai3Ox`mPhib2XoWoF918Eqo;4~%e!S_WAo!ZV&Y#!U%oU!X(}IfIr;c+$$d895f0>7d1`5dZC5ZTgTK2qK=jXSznV6WCN8bGg zv{}V>HL|f$GgLt_y1rgb8;xc~B4hjeO)(hEFVhht(!=5K9zUaM-Ao%T1OoBy>6H5X z;$k!CXB?+QGjNTJg`@m}%4(!*+H1=@I?nX*URr zA(w&QohxkW$zBWkrPdTS@Y%dF@J8nGkhrq4vfai61&Ew{@l*L|5^2kyQdnA+pMOy; zaMzh^JGos&CQC=+fjmf0gPzkdF-6@i!KO(*SltUbJyrnL4&a44IXQJ_Dlt*TA4< zsLV + + diff --git a/doxygen/inherit_graph_85.md5 b/doxygen/inherit_graph_85.md5 new file mode 100644 index 0000000000..1bb3343620 --- /dev/null +++ b/doxygen/inherit_graph_85.md5 @@ -0,0 +1 @@ +d88756fb47c7942bd4b7868f0e11dfe2 \ No newline at end of file diff --git a/doxygen/inherit_graph_85.png b/doxygen/inherit_graph_85.png new file mode 100644 index 0000000000000000000000000000000000000000..bd111fa3ab11b3964029807875b9b344153a5afb GIT binary patch literal 2539 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 literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_86.map b/doxygen/inherit_graph_86.map new file mode 100644 index 0000000000..9bfc751359 --- /dev/null +++ b/doxygen/inherit_graph_86.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_86.md5 b/doxygen/inherit_graph_86.md5 new file mode 100644 index 0000000000..6bb8a63976 --- /dev/null +++ b/doxygen/inherit_graph_86.md5 @@ -0,0 +1 @@ +68470a99abca6eb73bc6ca9cc811f059 \ No newline at end of file diff --git a/doxygen/inherit_graph_86.png b/doxygen/inherit_graph_86.png new file mode 100644 index 0000000000000000000000000000000000000000..aad27b6ac4f0610d2fc07e731d001cb1f67c5438 GIT binary patch literal 1898 zcmV-w2bK7VP) zh13U4Au8x%PZE-ZCBBH7W`VVTFbe{k)SM}=iHa%ZWu1p}+;}Z5&Eq-y z2lKGkTKn7I?D<%0@0mTIP$(1%g+ihD-K5D4$BrFaD@oEHi;;|CX%j;HnVXwy9N%U( zd5|PYe@K#4`uoyS{D*`Bx5hV2DX=lw+1U%8jpDx}K0bchc9Y+nhvI)mDKN!?QVLA5 zpcbUS+S=NXB#ExBu7wD%_>Q5WAtECqv9YmX%a$#RozBvo!Mwe_$<57O>@=oW?7Z&W zxkGJjEk>h}H*el7S{`F&yo>y|tEs73>=dRo*StJEJxNSVBq}OuUXEW^SBICE7izV7 zUgG_#B|C#Drq|osi@CY^Vy7XSmjY{TZAGiqqEe~Yym>QaWn~lkw{PFhxpU{xXf)W^ z*iceZLRwlH8#Zi^$Bf_3%F1HLjvW(XG&MD0YHCVzb2Bh?DeCX44yYPFi-;b8zWGc$2^cE-xeioJXH^77@& zY4e)goTCi;>8Q1qoa`|32$$20JK^yk|beb zVuG`?GpVVm2qAv>IcT+7va+(s&dx@XB+j2dFQ5OElob5@{7|V>xVpOX;K73*#+wiG zQedH>p;%a0px5iUd-pB{1qD;aT)TFSix)4_)6+v(SlD;t9X)!Kw{PE4S63&u6%-Vp z(P(gTa+-D@oleKQckg)g=n*X~Ex5V45gZ)M=;$bZetzindRkgq0H~^}V&le*R8>{U z+Zv4qGcz+98X7ox@+3t?MSTAJne_B@ii?YX?!*8gAtChk_EJ|@$MfgUF&GR)L_`2k zQc{A4hX?uj`3NE8<+Y-s0wDxLLqn98mvjC4^;zXmQBgrcLIUye@dzPEO-+^i3JVKK zOG~4ztqq+{M?^%#tcrHt#m2^l#Kpyl+0yIv0ub%(?Q&aHRh0llXJ@AnLI`(vcafT! zI_sE12oVwzB9fAlgb+fEj*bdPM@LaqR3!I%d3lMPoE#y95C(%m0OI4vk8=OW$cRv> zRHDAVUI-zCr>CdL%gYnJy}d%MR*Ss6JaPE&VIhPN8jVI|W@ZW@glKGR6joMN@_utQ zKCk!h-wQxAH8siouV23wfcW(3lMq4(4-XHKpP&ETm{+e}6``S_vpRl4LV}2okDt)y z?(QxwU%o7FcXxLSKp2h2S;d@n$p+TCoie~{{B=| zRq^oQLw4`p&4B|4sIIQ2zrUX+PoCiK?+<{pvopoT#hf~I3Qtc@Vq#)=_3G7}avx(b z7%($4n=tE+EvE*9VaEM#-@eVxojb9%wnma9l9Q7$8jUlKpN;XKkENw00E2^rzZ7#e ze!0Nbu3gKQFJI{B=#bmSu5HGXq$v+>eAoW{`?0XFprWFJf`S6V!ouVeGnu2KBPJ#$ zbaizhgqZLO3JL=LF0ktAYAP!$2?z*a_3G8ES+j;KSFW&f{rfz7 z_6$EiKYV?C85kItQ~m(!)~#cBcvxPV0rYyk+y`J{GVvp5Z*M0&Je&&`F3{TA%IN4Q z85tS!_2E+U%LV4*;=-Oidq_-7q_eY=#>Pg@oH_Hu{eE<@Y+_=9PNyR?Gn4Z2a$;g) zW{llqpvVq|25!NEaBM@MIs_jv2qugBNdmxP1_T3cH&7z`vOB@q}Hh@G7s z0CskE)YsR`1vGXnwOY-xWy`3ksUagH+--)dei@=Hrg>F@8y#l;1!R*O!jn~$(W zM@RGc@nf8wo!PZ(*LTMj78c^>=0;#(Ahx!)96x@XsHiCUmfhUk93LMaEG#V8x^*i6 z0RaK@_4Q3CuzmaXv3&V*0s{kCv0?=o85!KVbqi~2>z{fLrKP1 + + diff --git a/doxygen/inherit_graph_87.md5 b/doxygen/inherit_graph_87.md5 new file mode 100644 index 0000000000..4e77cf4b89 --- /dev/null +++ b/doxygen/inherit_graph_87.md5 @@ -0,0 +1 @@ +8e48c99624f8c61964b5065e1bdefda9 \ No newline at end of file diff --git a/doxygen/inherit_graph_87.png b/doxygen/inherit_graph_87.png new file mode 100644 index 0000000000000000000000000000000000000000..fd85679d8b5c32026ab81a136a9431369a600f4e GIT binary patch literal 3212 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 literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_88.map b/doxygen/inherit_graph_88.map new file mode 100644 index 0000000000..81042861b1 --- /dev/null +++ b/doxygen/inherit_graph_88.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_88.md5 b/doxygen/inherit_graph_88.md5 new file mode 100644 index 0000000000..5d6b62e3f2 --- /dev/null +++ b/doxygen/inherit_graph_88.md5 @@ -0,0 +1 @@ +46571129c8bd16efbaaee6e76ef08409 \ No newline at end of file diff --git a/doxygen/inherit_graph_88.png b/doxygen/inherit_graph_88.png new file mode 100644 index 0000000000000000000000000000000000000000..eda96def5a275c793386c9f6cd511d55c66aa4c0 GIT binary patch literal 2058 zcmV+l2=(`gP)7LeXYgZ_FgIM6?Kkph8iCdbG67dXu>2nz@iWrQYxV#e+lYy)OUU%JYE% z&p9(^zGwI`bD4Vu1VIo4K@bE%_?tBNgqf0_o}M?lZ}I33Ns|7N zBq?`xA_>B*nYj3erKP3KY!pG51!ZMrNKa4KI;NQAEP^m^h~gI(EK&Tzf;A(>|Mlxv zNRouMwzip=UYNkZzyJ;%Is_9F6Rcmqey-!l=3A~m_RjC-=7!t1Z_jm%dFj!kM<^{V zMMFaaK7IN$*KuU?E!Q7g{3RtNh>VP!>lkCWxVRuQGjmQeynp{5uCA^yGc%jh9HY&* zTz_ow3%Yf7c0x~2Z?0pEF<*1ZqN1YqM@L6*_=&6@% zq)Me?e0)4TJw0h`Y|NaT9A3C^f%f+H@*KamZ``=SO`A52I7fALH5Cd4YiepplCG|< zOixdj$Gf|`85b8v8yg#%nVHew-=DR$wIs<04<69b(NW$vAt8YPSXEU;k}N4Hp{c1U z2L=X6k|`-ER4SD;G&H2UyF1^!d80Mw=yq^$FagM$tE;Qd_51t#696SiqEe~k`Sa(g z(P-p(RVoz|5)$a;FM#^yLa+L zxpQa4_0hKeVS|H%eEaq-9UL5(ot-`67#kZKzIyeFy}i9mN=l-Ig#|Sl&4d|aV`CW; z6EosGo}Qlc^Yde4VgeU=ML$2kaWkq^Dk_yqmX(#UyStm=;o&qfF=13x6x-X| zSy53zOG``U<>hfQwB;Iaozr1Pi@&n6k^tD!(jxa26cmgp{-mU&DTUs@e?Q~m;z*Jj zjfS?iw!C-mo;?0*@z>Ya695|<8|Cq#p&^=@nzFpSoFwVu;=+uK40d*Q(#*_^85tSe zw{IUwa_7#SOifKC`QH=9$jC@OZmM(@|3vFgNl9UFaPWv@u3o(=w>vsI2!IU@4HIS@ zU1U{NRRkbEHA(X0$BzWSrluyH8C5D3uU)$)w~LC3C`l4~dV1u(g9i`t%$YOeu1#02 ziPkwC#w-5c{>q8i*K2BEU;qH<@9&>-#`^ktEMB}AN~Kcnb8v8w$8==`0CRJ5`EPxFeHa=V z!pO*IL|=b@|9DHEkgj#kwBIiNRjXE^x3?GHzI~JXs;jHV>?cWMen2{|UAuNcUtb@O zA3sKBW+o0CI3Qn`(QIvPp-?E$*474+BesBm0093Le_>%E^7HfI>+1_kOG~U=xf0i} zU&o3SE8yhhB+nNR5P+vopW^lF*YNiChKGj-`uh4Nm0O|Eeo22_e@jaXLPA22n3#y> z=4NO#8YCwtV{mYAvX^H{8CS1fjlsb|)Ya9=eU+7!@|d=a3&C#}zrDRZwr}5#!-o%} zwY3%1)zvtA_UwemUA%ZvzWZovD-;TZhK3?FH5CsZK14)BgwDBaY-|u17>Ka2FjQ1j zps%kFrKP0^3JSuHA3p#9?(XjB>gvMXyLaWgypN9$E?>SZw*eqOKOgb&@u;k<#K6D+ zhK7dF-`@|7Ml-40R#sLhFE1arkca0pGc&`|rAtv#Qi9~<mzM`)W8+C>K7IN$o;-O10|NuNxw&cGN2yfe z(xpoX2?>FzsVR;hKd$p5oi_hZ#@yUo7#ka7hqw){QBClK%n- oo`WocAP9mW2!bF8f-r6V2Up}Zod`B^N&o-=07*qoM6N<$f*D-zApigX literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_89.map b/doxygen/inherit_graph_89.map new file mode 100644 index 0000000000..714b6fee82 --- /dev/null +++ b/doxygen/inherit_graph_89.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/inherit_graph_89.md5 b/doxygen/inherit_graph_89.md5 new file mode 100644 index 0000000000..89517066fb --- /dev/null +++ b/doxygen/inherit_graph_89.md5 @@ -0,0 +1 @@ +c99d8d73ff5766bfadd19cf5d600988d \ No newline at end of file diff --git a/doxygen/inherit_graph_89.png b/doxygen/inherit_graph_89.png new file mode 100644 index 0000000000000000000000000000000000000000..0599e644fa57eed62d0d03ad1c042821ec7346d6 GIT binary patch literal 4209 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 Z&gz^t$b4l31OFiqX{jMq%ayG{{s&YHQEvbM literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_9.map b/doxygen/inherit_graph_9.map new file mode 100644 index 0000000000..bda4e0642f --- /dev/null +++ b/doxygen/inherit_graph_9.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_9.md5 b/doxygen/inherit_graph_9.md5 new file mode 100644 index 0000000000..49fa64ec4c --- /dev/null +++ b/doxygen/inherit_graph_9.md5 @@ -0,0 +1 @@ +0a66abc111349754d2a41894abfbd82f \ No newline at end of file diff --git a/doxygen/inherit_graph_9.png b/doxygen/inherit_graph_9.png new file mode 100644 index 0000000000000000000000000000000000000000..ef2e83dbfb9ede2ce5af1b4ae8ee67a6d3326155 GIT binary patch literal 1877 zcmV-b2demqP)b9@bA6;A+k2C7t>I-+>#^$wS*+IZ1iR@13UQm zqH>wbj&#tpvXEj>LMHS^$2zD)Wj&*JH9Qc7J$Aq{DWM!oo2E7~Ds@C|*Z;-;-*D&2 zrmH=_5A4PLyMMc{>v!$i>E1nnVHk#C7=~e(aN=ACii(O7IF4Hrj${}nSUeujtkr5e zrjPx{brQ#MYdDT;n!B_ZCUop}``-YzO&@b>@?W%C?W`xnFrlQ?YSG!*={C*_LoN(6 zr&yCS5sx)F6Y*xH$%luB!Eqc$M@MJl@PAAWp%O`J35VbIl{_OO16QtG33nP1=igY@ z-?qu0K7ER!qM~r8G3(OP(@|evKWFjgs;+arE?<7zCjS%I?RK=awLzs)p{lAX-0A#r zN=izwfB$}TbaeQi9E6ZG`Owf1lu9LpLLrtfUk<%q@3cQPH5C;V70AxchCm>|?c29; z;lc$hUAojU$93EFZ8bGD6=%+zfm|+!P$0QmIj6JldyapT4f$Nb&9cVokb4Y1j4ZtH#f_AO4FI01=7f})}##K*@YFE7t) zeJ)?VjKsu5@cDdXWo6;z%a;Iv{QP`$c6MUdu3g|b4jCC40j+RC?zF@;^N}y$&)8EH8n*eZ`Br_(vM zQ&Lh$EEdzVXU}M2VuCap4T(e|vfJ$e<&c}3OA3X8OePb3{rZ(kN=hg#Esbn88xaw; zw6u^wAfTR}9%^W4pxD@08X6jM#2+3Wrka`>N=r+lMT-_uad9y{e*D-G-G1l7J z>el2Mjb=s(dusCP>T1XK*w`2Wpn-t_zd4xAW&%KigM*I!Hk*xvLLqf`cRR)^D=R4} zDTxFE0kyTYIptGOP(T1krBXSXAP^>#iTHfJQ=I8sn<0>T1{2R)lh@bRQ(|JG#fOy{DBVnjzr z0|2a6tKS?xeE0wWh>wqVyd}?@HxJ*weM4VgpJU$My?fE$-;cDkG|1(0r`T0hRk(EN z61uv&AdyJ0Z{I$&x3`0ceCC{(n21}qZsGXx<48|WM`2+hUcY|rb$+1r3{^Y;Xl`ys zd3ibR-@lKzxHtfT*DMrlHXE9on^90u0I5`pv9U4K)zzW2v@|5g54y<{5)v>mF@evY zKRd=eeXim-w+kLa#$OH+i3B_z52K@_AR?z*PEHPh|9y!pC@6qZsYGvYFRop?<`g3~ zHWo*Z9>uFyukh&6BM5~;C-+R_?(;^7z_qHfBqbDxg6`(t;6KxBmjWN zbAAW{t*0-(;<@VT>caNz+o9L%k(``7qni2Rx-L(8dU|l|*fAs|B;de-1CUCk=<4c1 zdwV;Ii;EEx6BGENedQAD0c0{6GBY!A@ZdpMEEbqdCY(HZ((nEJeR&FH4q~wwn>KBN zN~Oa4_wO+|If)l9ULZF&7e9Xd003w-8ko&yG&VNk=FOWpa^wi!ym{j>-ij3~P*qih zj~_omr_;e~HlwM@^M#u&EiE{8>J*GdBYyt;37gFZtJMm--3|a)ym&FXySp(pH5JfW z{MF81yy^P;`=L}SQCnM!%*;%ueSy@>7uR)pa`oy}Sgls*^?LO7_M)<~5>lzu@3Chp zBxhHenwl^^J`R~o2BlJoojZ4i;;_eAUb! zPwR43U0sdZ+FGnxGrNCZaQh6QR;%+kj%#9<+A@Ed|6gkRw@#;Xx}Kc<7{o+8*5u5L z_4W06{1J)cIH**raHr?S>pz1S#+xNemiRq&`a5B-x8^MD!1Uzrv6U!vu}T + + + + + diff --git a/doxygen/inherit_graph_90.md5 b/doxygen/inherit_graph_90.md5 new file mode 100644 index 0000000000..3434024030 --- /dev/null +++ b/doxygen/inherit_graph_90.md5 @@ -0,0 +1 @@ +863d871486465d814a9cb036cb5cbbc4 \ No newline at end of file diff --git a/doxygen/inherit_graph_90.png b/doxygen/inherit_graph_90.png new file mode 100644 index 0000000000000000000000000000000000000000..77018c909e5ed478f831707a6328b261bf97f317 GIT binary patch literal 13578 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 jeKhp1&xg{K{$4ePge+Kh#N@-rO( + + + diff --git a/doxygen/inherit_graph_91.md5 b/doxygen/inherit_graph_91.md5 new file mode 100644 index 0000000000..18a7f373ef --- /dev/null +++ b/doxygen/inherit_graph_91.md5 @@ -0,0 +1 @@ +8567a8a338256a3707a79e7509b1b758 \ No newline at end of file diff --git a/doxygen/inherit_graph_91.png b/doxygen/inherit_graph_91.png new file mode 100644 index 0000000000000000000000000000000000000000..4fc6d32b6c1f4f5c201fd35589483a1a296f1453 GIT binary patch literal 4179 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 E1I+qB5dZ)H literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_92.map b/doxygen/inherit_graph_92.map new file mode 100644 index 0000000000..a6d23d307d --- /dev/null +++ b/doxygen/inherit_graph_92.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen/inherit_graph_92.md5 b/doxygen/inherit_graph_92.md5 new file mode 100644 index 0000000000..6a47cd1242 --- /dev/null +++ b/doxygen/inherit_graph_92.md5 @@ -0,0 +1 @@ +eee26040db0a164c303812a7fe4730a0 \ No newline at end of file diff --git a/doxygen/inherit_graph_92.png b/doxygen/inherit_graph_92.png new file mode 100644 index 0000000000000000000000000000000000000000..6f44ffc39c7b7293b5c3fb19a81400d78d8ccd6a GIT binary patch literal 1718 zcmV;n21)seP)dGO%D%0`i-KhV_Fgw<+Yax7$(vq;j4kS;s+5!z9zA*#=oo88P&Bg?7;Ej9Y0Wota&j_Ho;(S3jQ_o*)}f)H zf&BdZzyw;tnr~)F^3}35^PW9>xPJXQX=!O_G#a*V-_E;t@6_>ufdNjOI6-uDG+VZ8 z;pEAa3=Ivb)loFA!ul5 z03bU%n~fVcVzb$J_3D*hZ$muQ^On_Dj~_qg=FOW74-b=*lY_}*qNSyU*RNmG)zyW; zVBr1x_W+p9X4>1^`S9TbJv}`nB_)xWnaS+ztY0;K$?hpfZEY<=2&Sf{c=_@rPoF;Z zx(@!<2hV-7>(a|9Q(bd(Zj(_>`MF8Ua z_wS;!vr~kJhl|$M)+L|YU@(aC@^W?CX0r)E^!N9x`|9iK1t10o2fb$XRL@&hA%xIs zwW6-BP91kR90CwOfBsbGqNJom9k<)<0ub%(?ThNo{p`1I-_(6GGc!V?(YT$Df7`cj zpRii3K4tfmV=4FU-4of_+3NPfb?~>o5T5(QSB;I0qOh=V$?jjaSLW#GX!U+rSQr44 zlan|c4%V$(hfb$c$LId!I~)%5dOcNDRb0Gyk>uoL^78Wd{Q0xnI!>pP@bK_?^%4^k zea`8rp0}*Nii?X=?{{~16B-)2WX7(pE&#MzEsCO`C<>vWp^T1>(%s$db3I?Od&&Xu z{P}bC?%hj7LVo6C(GH|Xu{ zWp;L!va&L!r>E7&EL;bF>#v3tZ{~!A1X5E|Ieq#xy}i9S91hN%J4bqYIx#UZ)Ya8- z_3Bk@HXBn@Q_RfFFgZD?zGsYyiJ`T%Rh`(x#6%7pIKY`RXBZqDq_eY=D_5?}tLfg9dOnG@Z!^6Ya?RG9-zU=Y%({TRp`n4Yva)&4zi=J=t-l&p z<)gWpni?V^BG|QS7Y2g?tyW7#MFjwd4jm#gGLrQ4bfTi7C@U-D*|TRvL_`2^>Cz?M zym>=dSeSYiT~kxT*w`3}iHR7EM$Bfj&sn_H^OP0f)~#E(TrRX)Ek>h}_`i4N{ze(R9cJXE&+Y`@ZqA~m0y}j zK|?n48r9w1t$xC>@Mf`C0v&Hna{HeqQef$Hx|RDfAxOzrW+`aMW|o46Y-TBF$Yz#; zhHPdjXt@0}qo}B8HFHSPf3~QZg%E!M*#XERNs=T + + + diff --git a/doxygen/inherit_graph_93.md5 b/doxygen/inherit_graph_93.md5 new file mode 100644 index 0000000000..409e4966fd --- /dev/null +++ b/doxygen/inherit_graph_93.md5 @@ -0,0 +1 @@ +956d176d21d07f335e35030bbc90364f \ No newline at end of file diff --git a/doxygen/inherit_graph_93.png b/doxygen/inherit_graph_93.png new file mode 100644 index 0000000000000000000000000000000000000000..1d3e270f1328ee5f9f9ea4fcd8ed41afdacda86e GIT binary patch literal 4079 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 literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_94.map b/doxygen/inherit_graph_94.map new file mode 100644 index 0000000000..698a8d14b7 --- /dev/null +++ b/doxygen/inherit_graph_94.map @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/doxygen/inherit_graph_94.md5 b/doxygen/inherit_graph_94.md5 new file mode 100644 index 0000000000..2c42d8db3b --- /dev/null +++ b/doxygen/inherit_graph_94.md5 @@ -0,0 +1 @@ +a962486d23a9a7ae4e05698b91db978a \ No newline at end of file diff --git a/doxygen/inherit_graph_94.png b/doxygen/inherit_graph_94.png new file mode 100644 index 0000000000000000000000000000000000000000..0e23f1eed80c968a9802a9486e1f2b4caa9556e0 GIT binary patch literal 85037 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 + + + + + + + + + + diff --git a/doxygen/inherit_graph_95.md5 b/doxygen/inherit_graph_95.md5 new file mode 100644 index 0000000000..5821a86cf6 --- /dev/null +++ b/doxygen/inherit_graph_95.md5 @@ -0,0 +1 @@ +fbd92c813463d156b599b4d3b90c94d1 \ No newline at end of file diff --git a/doxygen/inherit_graph_95.png b/doxygen/inherit_graph_95.png new file mode 100644 index 0000000000000000000000000000000000000000..a303c4fa62b711d4c0a8212f5e85fadbb50257b3 GIT binary patch literal 31696 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

=oB@1Mh6E%}mNPG~`%uPlku{Ci`)wc%eI z>l3YMsmLxJ960#e>Xz&W0fd1$_tT=>x3x1{doUg4jB4AA{Gd>`mpP*NQFh2$g90IWu(2P|9I7!LO`hs8;PmQP_+BJ)d zVXLHruN{!onDX#Y*N1@U7L3#Tp~(U;cmhia8(C(qsWOw^Uh>_$FQF^fz!Ji0?{bjF zMkqQt#<0-$?P@K6*fEul91VpIAMQc?kn7kZ{nrI4MYMMwI>o7qS>>e2?@>c`|R`@ z$5q0H^ew;qhiKpBu{gqLgFS_rgX1J-bs?xNW8c+t{Cs>`hK4Gts_T4yOb)^{%NuK2Df*&xt5(_d zl^s~mE@laJ58$MVs(io21`Bx2QvtlpeeHRG(6(7@le3uj1(5jV{nH9YXFG$ewt@&b z^h_A5As=aoWnSMjp&=n=FTmRa!}0(O_-&>Cu<@J)+zemScRw}}dnmeYfDi*kciR- zuv6c;!jE}aJ)0Jbg=gC*1P}pBt!niO1{szpQ5A@2f&*v@OVYY!HVo^R_r;s)BL7X4IGfR6A+_y(wC0<+pS^EXH|{>k zRxT^{7t7me`ud)TjW!=`f{d_LFVXiK)TY?Y2V#1Tn(`C1)8%n~v^Ab`Ok(SGj+77` zA=BLXZH=izH>q&~pKlG7SWTB6(m(MZ|0fPJnUowhd+DP0gRb)TVUyw*Z1^m-*3&~hn#4gIHOc#+ zM)ZNaSti!O7n^k@TBB~JhZx-MkRr-E>Ik~hEX#}++Sg_p=-M{@_2Y<OeDKya1x3>;{RNrJ0{nZ>TLsvgCLezcn$coVW}cC|@Tsr`7FR(*rKA z<6)L$K1*=2rWljd&Va@15znu|!2NdB5@Y6LmS(=C3CV1BWbE1~-TIoQFAdk*Bn%KIbbuHJWgcQAC=)3) z+Pp5F#!2z+nf#fF7OwfHRGZd!_^mAx-7dcODL!~x_e+iRUD3Y zd%*g>12&OE!q-0XI7kibe%+Ya>RfI=4~2m74V$8ngzJK|elX_RTJxAkKk|QeDA|s{wJ@QKzL+jw<4?nY1No1XF{486Y+^X0s<$r7+R*pt1oc5HE=#u@Y@)^ zl0XG0Ak4B2PW|GdvK~9VzK!RN9e>_>d>pP!h7h4#ztc}yR%zQOQeU-9JVv@Fm#oN9!K7E?cm3DY1FTcOow*}FGqT@Lx_RLSrrR04_^c7kq4 z0P1W2*hGdkIDJ*r=;XpwJ7c!c;NZJ39ft0Q-1L9ZVe7a+DFcmC|fErdmW4W1Ykub1zH`zX8y2(bp^ zoPYj3&&dyvEi-cAamHX);U_tDsTk$5hdp#8x_+0Or#d3Z>F+>9s$b@-t{w&fn?YY^ zsM}{bFAaAcTmr!1$tVEA9ibLA;Oqq3aKY&n9$7S3vu(Pk-{Y6RJ-fgE>aVQUkyg-0 z3Rh&I#Y`lgnO#0t72+C>fc7GFo%kD>HbGedQD2>ihA=#v=YE~i)vM2vchvs>71GRi z*9|`-{ckGib>0PGX@`i&tpBO5-t234B^QPB87c~AFi4igJ*dvSwo096M(aHUoxV_U zFDj+WpC8}4guZwjtb5>BQ}qgBJm`Mw>Y#NE8+R-0M0-z+(8Nra)Bjm<4gEHzQ^n{+ z%z!RgUYO~Hje7%f!@*h;lUgyoQU!>1$=9NuowXm`8uk#PeBv)L!-tr?o143DyNuIY zOmacfEb`PRJs+VeYhW=os`NepmF^hyuGXkl41Q~8X3fQwryZ*Mf2@V^V2u>z`Tey4pA^%#J~)Wac42@L5s>xYp_$Hb_rm<+f7VPd%HBtC zv6lul5?Wj>gf2%!Fo9FR@;9*iO+>B1?@jPA*oFz;E|@(#&{Cx%AN~GZAx3UuUsL7W zqZ{i8s6JUzBXlTwLyycEmg7>p&8P~$LE?+e>$P@9Oj g#((}ZyK+Rhz~<`r^3E?9(M@woSyL(dnC12V0b_qeKmY&$ literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_96.map b/doxygen/inherit_graph_96.map new file mode 100644 index 0000000000..155289a779 --- /dev/null +++ b/doxygen/inherit_graph_96.map @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/doxygen/inherit_graph_96.md5 b/doxygen/inherit_graph_96.md5 new file mode 100644 index 0000000000..c98c444558 --- /dev/null +++ b/doxygen/inherit_graph_96.md5 @@ -0,0 +1 @@ +570484ee268fed1ef427dab3ae9ceed5 \ No newline at end of file diff --git a/doxygen/inherit_graph_96.png b/doxygen/inherit_graph_96.png new file mode 100644 index 0000000000000000000000000000000000000000..00def2be5591303af50ceb2ea6758133d5597898 GIT binary patch literal 33776 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 P;U85ME#-nErvm>2W+onn literal 0 HcmV?d00001 diff --git a/doxygen/inherit_graph_97.map b/doxygen/inherit_graph_97.map new file mode 100644 index 0000000000..2c140a6b42 --- /dev/null +++ b/doxygen/inherit_graph_97.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/doxygen/inherit_graph_97.md5 b/doxygen/inherit_graph_97.md5 new file mode 100644 index 0000000000..9d449a639c --- /dev/null +++ b/doxygen/inherit_graph_97.md5 @@ -0,0 +1 @@ +06220aadb136d1fa7400f5ced28ae8c3 \ No newline at end of file diff --git a/doxygen/inherit_graph_97.png b/doxygen/inherit_graph_97.png new file mode 100644 index 0000000000000000000000000000000000000000..d7fff01a54af85ca8bfdf5fd7eb8a2c10292beb6 GIT binary patch literal 12915 zcmcJ$bzD_#xBd$TA}WfMAcBBMBS^QB($XD*bc=vA3J8)SAuLjG(J5WhA<~@^i|&+$ zGuE@uyMO!L=RNp+srciflqhzO@$8C2>VfTu>ia(b{uql1-{OdO{ zRF9P)CZz>F1;u8r`B+40qW_(c=jr{rT7`zq^*h}qKL%g>vihf)D_9^(M~8Orq_Ew) z`7z9UW71NN<3G|bGoqaid*wBlOWlxr~r=DjJtzP<$}oupNp$|?h2hBX3< z?}&`B(f6f{x@^`QEcGF8u&}WB`uW+fjj&-zgpf85>w9(jUdQj@2HPx5RSTf?{|ey{wGe?O=nmw0Cvi3?X4}&xY~*`SXqh{;vfE ztP_)y%Y)g(*Ko-)w%sc2QCQ09^3AQS*KXgwO+`)ptFx2SQjp2oa^)~N`C*zulDvk- zy}Z1lHA32vdVe5vW3|X zo-rq$-#Ijv-SmgeB%kN$w&Wj|#RptA6WDcWa&g$WxQ_(|A0P?*aUWbVm}?8?;pGia zNazfGz|VACQkf>y8UE!uJ@MD3KwIZF0H^?y~BSS+TuXBNugU!X+=AgHm ze-f6KmT>$E9!HmQE*`Frmle4mz1i8_y?*PKaZmE|ctN-52wH_VdrOK=Ya@y?{t3Ju zCa+%?nDtV@NuNG_dNomQPlsG7X%Pv)ivIkWm5Pl`F_w{*Rzm64|hHY;nWxf(5dmb;-A|sXF zzkhGh70*jJCUCrzYSA1>C{2%aJ=n-qQdVXxu5my5u|3k)r!>E@p@%xqbeR|%)8bPz zFi6%awTj(d)zs9K?&okswcJ8E7_|f|7MXUJW^}{lNozg#S5&Xk)#&9%W_gCh#YILE zM1B5TP_k2tIVu%o0;jN8O_Ya!)%T43{Q1u8>@1J{tXN3v>b|Rvj?UKJ9*5B4=H}Er z<>v10{C1-nJ^lIe&Dslcj3-Z?aL9@FbC8jdl{>AI60_)JINp>QN4TB(+!iuB^`fPv zg%z;3x6j*HUms|DZ_ zy~_+6GSxLT6)wAv{rvn|sKO&6jC$Wio%o)Jr@6nUXJX2EBdfX15D^j4_?c2Pi);~v z@{vzZEhzYm`+!e_gIi{N$Ta8UT2UpZ4ZYTeGYbMK==PV@c|+$%QBj540Sgj|jEs!D z*X<#6y44sj;PM56AM?Pu)8lyWReK~o#EoBkJlR4=tn#<+F%~klVcLn>JJE@W@~|^1 zDk`dX+8I?B5D;&RNnTz1tHYWAlc*O?;~2;BIDmgI=Z@; zF`Sk}@S*S4Vej8yg!@h^B6ml#~qvYyf_>b^~cTa zV_{Tj_J8h32BZ<>Ycd(=zk_ zD}|Xgu;`Q&I`zsgt^CDc680DYm#5cmlUogxMt_EUThgDd!0z_f%H7>PAS|r)_wOJ) zYKfT1pQYGxtPdQtw8a*03!gq~4Sk?lW|Ode_z9o3uhz>;T1KW5k(9aZ^Wj4bw=MbE z@qS}xXNX)JS8TPEtCA+G$yBc-=qCzVtqPDc|X>t>wN|XGL=KZE?>T^y4aO4IMe7q z*crz?*x+{~Dm^{DFdy2{nR$Uo&4GSyFpWOAu10K6)u%-(1$boU& z+T7E#vk(szPaPq`Zt|fzM82uq#$;9cQ+D>ja(h%{TwI*%N@n^%AR%LLrr)i>(rSd# zmT!TjBYhvLHB8+*FeF5EIA6ak!`e~2G7Vc!nJs-mBDgC_Sl@AVNDh4~@RDK$)g27g z;4#sU#;oPD5?IVU3}2Pbo2OHe0{;;tFLcHYn_1IjsTALX=w;F_4Tj63P^iY;ZsBgo zL7IyP_`?L>%o!F2CIY$^6Wu~5CUoGre|ckG?nwMv!IquC@61)zjTm`zE9cBrExoun z5+0J>^Yq>6>1ny^J_9{HeMdZR(erVHC~Pn%KBu)dnI|<(+*9t2uwg^1s`yhSLK?ce z!_@UX247jDk|2U-7tVVqka1H%kE-#k?X!ic8I=2 zKPgK}I@?e(rG7W8Jgdj?TS!zcGk(NdySu2vZIt`b{8w27$MxH{!?4UPuS0>>T*J-?sMDj}jwIpQc7HYwF>RT)lkeg|$^Fasc}M6h4Aet&U;()R&KBi}nt zvi}k==pW26ze|zgaox+1Yppdl3n|*jlUsa5wJaR@H(>c$h zF@@f~nL}MHfO^BRf_4Qc7YB zaeQiGT=60{_aKYa4T`AT(?(J_hH`O+e^?6$Qj+=- zn7$!?oahx>0w0`l}Z~E?EwVnGsvTw_C}>UVK}q+5T&WOHrCy!pCm z@Q4U}-bu=i9oJ|J$0Oo~TXz~Ce8fOXql|80xlz2HTFtk_LNC(73kW&2d3jS=48F_y zmZXd_(xb)an(K(%MOrZj(DW*73!CkeQmxnknz zyPpRf_bk8tt(K!<-!owUrc(4?GkSq8e=^?edWNd?ru=)D`52LQ7MGMnK~7E%CG!pu zzth@1ET31555=_xHuOhHP~Pv5OIhaem_&RN#)Iv2xotzc*`4g&0-`To1mvbu`Zhn7 zL%jZ5sPtVsnfM})%$9eH-+&A&<^8I3p{jDQ#(vJ<5V&RELwz{o^AEZnZC1SI%cQ5m z$ix1U)l=(L>~&)8ZUt<`D1zn3k8ILizenL(&l{|Jby(xaAqBL~8n6i>ZuZ>ZNv9Wj ziPhKdnLp1p{nqb}T5{3;6b5YKN(c34OT|L995Rfa@rZDwVUnV5XSf&)#8kU zl}jpnP>j94ud0;H{3R(VEX|yNaCC#i!_17%+}ym=hDnisREisOJJ#Y-fs#2-@;!<; zq@G^CewFS~xo`JCepINiZePG)o&QOhnSy2i$6FV@`c=J4_{1Uuacke#W0kZ{<@YN; z4B}{g>v>sTTq*ZDgHka8#|KlVK&~oE8N7UT2*6k7b|rbBKtFVz&MMP5t!gU1w+KOP4N1of9!@ zi4EuJW_#!;C;j>JXKk`-ctj$9IMtjKBn-xtt5?}T2RAe{*f~3=tLN*H@z^D|Y%aHi z+?P$@Bc!09Kugi!;78oU)iSrhAvwCge0c|i6)h9fO?7p3_!=JfLsoDM&Ew;7PU~ag zF);!41_c@2!+LHZn3u7pH#WMc!vq>YSy<|#7GUcp#FoqKvlh>ke=x8(mXk!WY$ch` zXl-TLt)HpRj15X8yvBFfnBX<(ivLyVxO%wVO5w7Y;5<@pPmK}BWlhDy6SKGXHd2X< z?=7}>IJM;L+?<$`6BopK!P4*w;+R8HS{lc;dK(J_IQ)2Lt*HCWy!8I3e2~cT!d{7I zCkGDOv*MM`oAPhpzV#E)zz2uoaQb(BT=S&eXbCQ#xua zqr0ZvJ*svWAAb;TB$5|&TVzmB5TDD=>k|FjxVUP|%gZgTqoboZFRxy`+Oqg}V=^1V zalW0fs3m72T}j%-#U&Gb$~_AG%C}OOE9ps|O49U%_wHry!Io%*@QH8yg#(o=H)yxw*MWqpKkQjDJUy)FwtnAvxrfxosv`g}6;R z?s0-T4mw6x@arU_-Cr6ndjgBd z!_S}EuR4+a&dtqXcR>#4#*GkhD%#c`Tea;T4QEu!KkEpHh}3w~a^6M#`t|Eo+hD3ZC zZBmsFgc*A3?bH_y%K7(%mDL#&>i1f&$s;&2n_K!eMvMG&a+pBH91iAtikq9$)6meg zI3$4!VWm|_ocmMbR%|hd11jx!Z@Dp&Uiom^=XSa08K1*KM`q7rig?fq85wGR{;IK7 zwDl!!=L_^It50r_~I=MXGMu%Q{^CFq{~Ck1Ol$bcehfq~9hg=5A^!3^Z*wjEXgNVm+BJ`Y3 zIXNAJGL5ubq#jWEnx%kB?d{Mhx2r!4{nYMdXk=t9DER8zf?KI>z~co__-f0o!^6bL zNY&%JrKV;4%fjc|VOC?snZWC`$hBMJx%Li0W9Mj>zyE%16FXmPPyJ|<+`qI^c*U2O^RVduv>GB~MngXU3V+_AZhgE> zA^+?d2H1}|SfcM~X?ICUE!>qok2sz&|5)u+>YHdZ$&o>9)nHW!Elt`L=SdQr* zqvG>AoVfH!b63IEyqw?uLIQc=+8XQi^nrL1~e<7={7(NURj5vOJ z9ugcZ*3a>l?}2XR+gCFUel0Bw;r}^GzV208-{x23M51(-o4s;QVfIcf8=I&d<+P^8> zcnPMVWV|BXiGuLqo4mZduT4yT7`5U;9r)dqz|Xwm04c8{Q7{hH>M6hgpq?LI*z7iusOM`MxM#bQ6Sc~_AEL$_@>aw8awdS03RQhZ~hBSIeB_D|D+1I z4iIEjORo~~8blGff#wxUN2ZYHXM6n$iqiH68@fX0hektrx|UB9hXyLqOLZgeT$&#W z3`(I8vQr`utMJ&^UrFbC={T+P^Yew4!z{QILbAYKFk{$FaTNr%uK)%~MKkCBssl-^ zuP%iNpYvdV2S!2s&Xx@8HI9yw0Axld$4uq)!?R56(Aa?D0_!2D2dBJ<<0%NEx6^Qrqp4=&mn^9!8T zwP0Hx%?3RQF7q8mlbNGVThGgNbH5^7_6OCEX8bA2Jx;hT4qJuc8|wP|@f8#lKvy-@ zy+62oW8YP9yv%lSXa4uwm4WNt%|XQdKRw*!lY}}^VZvQ??=Qy+c|dqJQnYnKgOAVq6XCg`98J+TZ=OQg6xgb}EU??b zPR8#PJk!W{?&xS|mu%XdSbaDfbUN&HrXDq>q&e@HnIn`hr#o8w!g*t&q8$Y}m!TEH zYg+ptK(C_s35Vx3iCr(k_ zah&71N)N8t9KHD_>gH{S6g5A%QLGth_>fe!-($^t_YD44cZ6u>p4#Sf z&8O-G1qQyG{X`qX=V;;QPN5v0vLI0~)b!<^ig&Jd+0Nf_TeOa}`BQ!US(1>4Y^YIJ z<-mSPCSx|i@(R`Eg!p&{f*1;~)53N(8(a#U`i45U8EaZ*xylHR(CG*_tf@&%-0Z_>tMl4O_*XsG zPv~F3Z?++Xo>~mhX_eV@#;_ToapdrD*`M8~gbo(+V(9?9PY<`nBqZK!O+Q!5*OSxH ziC1lTVzhiaZ7fBv^Oen&Y)%3K0#?^OGoj-p>O_|X5&*(32b0c>6E_t5YiX5Nm6C?j z@^W^F1Rykjp8eI{m^_)Xl*7ctw3@7pvK-E{KiV;dkX1oW9`CR6f@J5m{quUhJ!)=# z9*>+{Z@yeUfsf5@`WaewL()HD7lE ze=EEso;P#Y0G(T=s)_#Ju-B_jz+Ot@%~k(~>}{el)E&Nm|Gss!nB;JF>=@0YsYD5R z+)q>{sxw!&%Bk4A|09&h@c4M0nV226^k~-oF^((n>ZKwc7kXWIg8sL0U#wpnEjn6G zPggK9n%X zq)5k|-MY~rkU2AEKCK$*%Iry7a|<_kh(J|%N@`>RdU;lYS9=2x?%_kL`vUs|%7dQP zBL%ORbSsO)O$VCH5z;=Q6BpFJ1#EGI%RAhz1O8=YWxo_8i9|+1OQoF zLmQOe)W%R-6!NlDNYYM(0GbeY7vH7 zVl>OJCCm1-aY6ope>OjsMDuUv_=CxsA zZTHgI97$sL^1uwa@hvq{EwV4rZE4`_qBM;_E~;;=;Y#n03swUcByx0lfrex{L@bj= zfj5AD;H?(bg1jJdVVm@&O5Xkw5kbOjLk8Xx#O0^8H7h6{O7o(xq1Jao0~Z~^U?<+W zxY$qEVH!z5vykx~huIxaOm%1DNU(e_BqXo^-$LBP-@4DWHK438NMGB8Aa`41gKMK( zRuFr}5M96o@b2AfgB}1nLjz1wvmGZ;q3^@;nfW50ev*-#Tt~EPuBgR3VRbSo+AZXm z9_3bba&Sm*OcjHRAx9$3dGq5nn+5kpuYHGzgYRR<6b3RT@+%Kw3R z*lFswMY@%)i2;6P`Zt4_?yWQM?!k|kK*d>`sEAO@)q>We@o8mA1jc<4@Mb4}*NtE? ztfqb@&?dh70M<$(lx#HFdR;T3HWrzA5_UcoGNV0Ew6T837`T|Rpms*;{*^1{i5$ga zt6%Z(H4sEMu(6ZDo1>o(pgBG?tX79|L-cKP9@SOyI4s-*Xa$W{JoJKuKKKpEC0i_B ztIAsWAu;ZH-4LGEa#sD=>uDO~w@5X&pW#>s-nA*_%#_zMrPyiry9i|Njz3mN?0_cr z(dNbZrk3!t!7(ZCeYrgC5(`3z1*`GW5a?8}d!4%%1zCBFab5ipQA(ZNP~wbo&ipN1 zhYPIB010KxGBvI*X0=uoIg*zEU2wN|7B+7=aQ+}u#2O+b@#m>zO#LzY)QL;f#Y$}7~y@78=Z;y z`A?)rTVo$r*k`(YNhnS@u`6)e9pgMtCSde-BYmynJb^eLvmVvG(R=zL+~!hgXpgkI zq}dZQRx{Odr@?`3bDv^cbwA4@nFrevY--BI!yB7<^Aja^1% z8_L(t%wqkI#4G*6C*h2sQzL>V6M9zMi!Ja%eVaI{x`i9Qzf=x(un<4!xauWY7Pzp zZ|DhwNd*N!`|zPR>=@N0+ujuMw=j`2*2=lRyuRKE;y=WC&s7kSrl_NH^BFJ_hs7=$ z;JtvAUH4a--(S9Fahhl|QC<&DX?uISzOm7#t?k7d2Zv6r+W=Gfgy`r3z_8;J5q-?g zW(18uCgdIiJN&f0!W3nXA-r*5MgBu7E zBfy+MO+rDUhdcjq@dvSVsldGdF_;}G1qDg^W+=iK_juntl9!i%ZE9Ks&N;|4H!oA+ zA6?jT-!^%8l>~m=Ep)=9o~M#@nGhep@o0B(wAM=)%E@=M(vp-^r}O13EY9U^wS`1K z|NCo1Qj!9+6MV34&4M;W&w_ya23H=6BfQqJ%ntP!=A^>mBw5*;sFn~>dewYRA`y-c zAp9NY+VG4+VNhg#b~Z&mQ9yHj*vH35)z!6f+uq5k^peW+=kK>GYTOPOp6OP+Y0hC| zJjjex($mwk00hv|`jtgj$s06WQlyeJn%MF>EU1|6E~SQL!MGS5GIC|Isti49(eoFq zW{Z&wbp5NU+(M>I=j|;mEtfUW!$PA!j9c1;oHh)Ard6T6gza#i_gfxT9lYNwc&O^ro!>BCc88d_6(o&?fL{JE zYIgPm3?^*zdU;*6#8^Zz-4zxV-gEVcLjAlrcf+WzuI}NuCD#wNdwQ(I5@^}CAvPES z+t|J>beOz-0cOk2$*HBe8QI_fm5FFy^PJOcyp-9yFf3Z+2ftX*9YR8J6%_)Q>;P@j zQ)a6V18VRIiS+Dpbu=Udh60e5G)PQdK2#i~x`Dqz9J_Nht)QUbANM8;j6?L}&CECP zVPUtyzcn<7@V#9!=$-gyn1%F5HyQ?7kW3-XdjGDCHcnJH{OamjfSyETbhMI^lA*xC z(N^Pahn+boICgDfit}K(-=AJN%?@ZhV0&N`@_s^=RdyP>Np=?^8m_K<&^(!2Sb)Kw ze3e*BkTOYL=e#ftVfyO}&CHt}>BpNSA|T=+oYBsnjQ5Q%Xge_5%B%m* zT_Ja-jJo}A1>X_PtZnD$c+~*(K3b%J&Lf?oDR9{}f!+7MwpKViJRCX^8XP8$9*=2g z6jfAwzkVf#gJ@+hT?H`->n52lpP*6eDVXH(SJST_d*1l<>z*1nXW)A<$~6ZwDUX1- zLZy$`Eh@J5X!$Wj#*l3j;&;cX;mZwwIdPaLJBGEf7QEGqJ=gHF6M|WjS*!R(MO9TcY^4aJuO$cj`>Mcy z(Gx%F&~JPR%f>)S`TXn<6}AG~Y2}+gxsrCNRpt*ONaM-?_LRYdtAdN-7Sh+{QFdHa z5;AKi&6gvQ`9sSr7V+9VoLtzm`jU#3RZgYnS*7?zau#DBC$cD3x`&;+#^(I=C`-G{ zroFRM4wQ5ES_L9vniyJNfCVASzp1Tm8{A@=5J!-yvfG(n8vlJu2DM=6D=U*1$*u zVR&8VjcL;Td*Vth_>#EEbYA)oX?-glatGO;Xs)|qz%3!caFth9rkIlg*Wt7ja2P`7 z0YroP%q#+r?Xrygdbkj0dw9CrjkehX8H%6^wqfc95q!X*esrbg={){kd*4)GU?4;F zS510!+Oxa(fbJxG3J#tFw2-4$GiHJM+RM?IvdPH65ZKWn`}25(5%AZush=Jdj;qn5 z>)A2~yMOTv2eE&@V#&y6>cpO(E3&YxphnPreAD8G> zvqw>xg^u-|$?EbHtBg)Sj+caHEYI7eJJ2#C49&FskeE4~MhPQ)%+d1cM$>igb9Adp z$3}W8pGGCCYaeT?sS(LUGra=;Q(j))ldmrfZK39^nMU+XC&qtI6=}Dt1Saz`NgZVW zKWT;P-D|5~l1;lTseKQ>F2sB=&6A|?P?=v?7;_~xiFjL^#Z+NOm()Qeh7bKR5^aU& z98@rzffiRVffRt{2-An!3g4t65{mDH%t4wDrVu9Q=H>=q^=fr_ghn$p>or6s_0jm$ zc?0P9HPVLPOix*!IVO(Am-cwDOy1#;pUe7wA><;wPeJ!Io~dJjkX z?sLc%zODwOof4Unkr4o$F(3j=m7|UEoCr1}EEpkPfPq0GuP6KFmW+@$GkjJInJt4J zLcd}Tx~ZmM_0141&_dHfb{|V*jNyZ8(R(*@l|v2%J%;q{qvJfhXF57$K$4&?MA}SN z7J|*Qu=OZ&($)^AVitRl`){CM9Hb3k57UeDGxUraEEWEP2O;$a)BOs<^U$p`==&~3 zhtw#yqqGw?H3a{>w=x*?)8j-*N2de2u5G`5&2(~4eFyf(b6Rq^3QO zC!hvYxF0=*zQrYj?b+sH+o?n-0lSca)W=&H^Q#*mD$&gs0A~eDYL;$$8&#V-@as|! z0CjYy2F3}n20TJ6W~Zm?U`0s;-m!{{i#Ihlv%z#Gi(a*c(fcxq@s`Ihm%5VSo`bBw z`yQpqFETjP-X%p$M0A&suv!0nhZvO}J>VE(p`@kN4r@aq>?z>s>8VrW8U>61@F_5Y z`!G%7myx{|YBpKP2?U%{NQhite+nzc zqtO*s3M79cutuOxFifGb$eFbU6Sv=y$U=LR1Ylp7y=8)Imj6Z5dcCxi3Oz(y7mux^ zob%wDh54MR2ek;}?$(w8sORdVg*cFMPt-K2z2Rz#N=gl&Akf3_fCad#+J@3|bKB&# zuo-{-PvieAj9d@|PpGDC6=Ob=h$HOfeMDI1i~eJB+fZVC_iz{`2v1Dx`Ysib^FspO za_+ACO1~QRtM}1lsunCV)N*lJS1gntDYCyg4*M_)nvGneWp$qxBw>&K=ZQer)CeZGuo!{{QncZ-gcP_26=A6VzyDdr|M>?R dq(c|i5`3qT9gYS2@UKWPq{QXL@ + + + + + + +Distributed Ranges: Class Hierarchy + + + + + + + + + +

+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class Hierarchy
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + + +
+ + + + + + +
+ + + + +
+ + + +
+ + + + +
+ + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+ + + + + + + + + + +
+ + + + + + +
+
+ + + + diff --git a/doxygen/init_8hpp_source.html b/doxygen/init_8hpp_source.html new file mode 100644 index 0000000000..63d7cc86de --- /dev/null +++ b/doxygen/init_8hpp_source.html @@ -0,0 +1,191 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/init.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
init.hpp
+
+
+
1// SPDX-FileCopyrightText: Intel Corporation
+
2//
+
3// SPDX-License-Identifier: BSD-3-Clause
+
4
+
5#pragma once
+
6
+
7#include <cassert>
+
8#include <memory>
+
9#include <span>
+
10#include <sycl/sycl.hpp>
+
11#include <type_traits>
+
12#include <vector>
+
13
+
14#include <dr/shp/algorithms/execution_policy.hpp>
+
15#include <dr/shp/util.hpp>
+
16#include <oneapi/dpl/execution>
+
17
+
18namespace dr::shp {
+
19
+
20namespace __detail {
+
21
+
22inline sycl::context *global_context_;
+
23
+
24inline std::vector<sycl::device> devices_;
+
25
+
26inline std::vector<sycl::queue> queues_;
+
27
+
28inline std::vector<oneapi::dpl::execution::device_policy<>> dpl_policies_;
+
29
+
30inline std::size_t ngpus_;
+
31
+
32inline sycl::context &global_context() { return *global_context_; }
+
33
+
34inline std::size_t ngpus() { return ngpus_; }
+
35
+
36inline std::span<sycl::device> global_devices() { return devices_; }
+
37
+
38} // namespace __detail
+
39
+
40inline sycl::context &context() { return __detail::global_context(); }
+
41
+
42inline std::span<sycl::device> devices() { return __detail::global_devices(); }
+
43
+
44inline std::size_t nprocs() { return __detail::ngpus(); }
+
45
+
46inline device_policy par_unseq;
+
47
+
48template <rng::range R>
+
49inline void init(R &&devices)
+
50 requires(
+
51 std::is_same_v<sycl::device, std::remove_cvref_t<rng::range_value_t<R>>>)
+
52{
+
53 __detail::devices_.assign(rng::begin(devices), rng::end(devices));
+
54 __detail::global_context_ = new sycl::context(__detail::devices_);
+
55 __detail::ngpus_ = rng::size(__detail::devices_);
+
56
+
57 for (auto &&device : __detail::devices_) {
+
58 sycl::queue q(*__detail::global_context_, device);
+
59 __detail::queues_.push_back(q);
+
60
+
61 __detail::dpl_policies_.emplace_back(__detail::queues_.back());
+
62 }
+
63
+
64 par_unseq = device_policy(__detail::devices_);
+
65}
+
66
+
67template <__detail::sycl_device_selector Selector>
+
68inline void init(Selector &&selector) {
+
69 auto devices = get_numa_devices(selector);
+
70 init(devices);
+
71}
+
72
+
73inline void init() { init(sycl::default_selector_v); }
+
74
+
75inline void finalize() {
+
76 __detail::dpl_policies_.clear();
+
77 __detail::queues_.clear();
+
78 __detail::devices_.clear();
+
79 delete __detail::global_context_;
+
80}
+
81
+
82namespace __detail {
+
83
+
84inline sycl::queue &queue(std::size_t rank) { return queues_[rank]; }
+
85
+
86// Retrieve global queues because of CMPLRLLVM-47008
+
87inline sycl::queue &queue(const sycl::device &device) {
+
88 for (std::size_t rank = 0; rank < shp::nprocs(); rank++) {
+
89 if (shp::devices()[rank] == device) {
+
90 return queue(rank);
+
91 }
+
92 }
+
93 assert(false);
+
94 // Reaches here with -DNDEBUG
+
95 return queue(0);
+
96}
+
97
+
98inline sycl::queue &default_queue() { return queue(0); }
+
99
+
100inline auto &dpl_policy(std::size_t rank) {
+
101 return __detail::dpl_policies_[rank];
+
102}
+
103
+
104} // namespace __detail
+
105
+
106} // namespace dr::shp
+
+ + + + diff --git a/doxygen/iterator__adaptor_8hpp_source.html b/doxygen/iterator__adaptor_8hpp_source.html new file mode 100644 index 0000000000..de8f713dd1 --- /dev/null +++ b/doxygen/iterator__adaptor_8hpp_source.html @@ -0,0 +1,287 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail/iterator_adaptor.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
iterator_adaptor.hpp
+
+
+
1// SPDX-FileCopyrightText: Intel Corporation
+
2//
+
3// SPDX-License-Identifier: BSD-3-Clause
+
4
+
5#pragma once
+
6
+
7#include <iterator>
+
8#include <type_traits>
+
9
+
10#include <dr/detail/ranges_shim.hpp>
+
11
+
12namespace dr {
+
13
+
14namespace {
+
15
+
16template <typename R>
+
17concept has_segments_method = requires(R r) {
+
18 { r.segments() };
+
19};
+
20
+
21} // namespace
+
22
+
23template <typename Accessor> class iterator_adaptor {
+
24public:
+
25 using accessor_type = Accessor;
+
26 using const_accessor_type = typename Accessor::const_iterator_accessor;
+
27 using nonconst_accessor_type = typename Accessor::nonconst_iterator_accessor;
+
28
+
29 using difference_type = typename Accessor::difference_type;
+
30 using value_type = typename Accessor::value_type;
+ + +
33 using reference = typename Accessor::reference;
+
34 using iterator_category = typename Accessor::iterator_category;
+
35
+ +
37
+
38 static_assert(std::is_same_v<iterator, iterator_adaptor<Accessor>>);
+
39
+
40 iterator_adaptor() = default;
+
41 ~iterator_adaptor() = default;
+
42 iterator_adaptor(const iterator_adaptor &) = default;
+
43 iterator_adaptor &operator=(const iterator_adaptor &) = default;
+
44
+
45 template <typename... Args>
+
46 requires(
+
47 sizeof...(Args) >= 1 &&
+
48 !((sizeof...(Args) == 1 &&
+
49 (std::is_same_v<nonconst_iterator, std::decay_t<Args>> || ...)) ||
+
50 (std::is_same_v<const_iterator, std::decay_t<Args>> || ...) ||
+
51 (std::is_same_v<nonconst_accessor_type, std::decay_t<Args>> || ...) ||
+
52 (std::is_same_v<const_accessor_type, std::decay_t<Args>> || ...)) &&
+
53 std::is_constructible_v<accessor_type, Args...>)
+
54 iterator_adaptor(Args &&...args) : accessor_(std::forward<Args>(args)...) {}
+
55
+
56 iterator_adaptor(const accessor_type &accessor) : accessor_(accessor) {}
+
57 iterator_adaptor(const const_accessor_type &accessor)
+
58 requires(!std::is_same_v<accessor_type, const_accessor_type>)
+
59 : accessor_(accessor) {}
+
60
+
61 operator const_iterator() const
+
62 requires(!std::is_same_v<iterator, const_iterator>)
+
63 {
+
64 return const_iterator(accessor_);
+
65 }
+
66
+
67 bool operator==(const_iterator other) const {
+
68 return accessor_ == other.accessor_;
+
69 }
+
70
+
71 bool operator!=(const_iterator other) const { return !(*this == other); }
+
72
+
73 bool operator<(const_iterator other) const
+
74 requires(std::is_same_v<iterator_category, std::random_access_iterator_tag>)
+
75 {
+
76 return accessor_ < other.accessor_;
+
77 }
+
78
+
79 bool operator<=(const_iterator other) const
+
80 requires(std::is_same_v<iterator_category, std::random_access_iterator_tag>)
+
81 {
+
82 return *this < other || *this == other;
+
83 }
+
84
+
85 bool operator>(const_iterator other) const
+
86 requires(std::is_same_v<iterator_category, std::random_access_iterator_tag>)
+
87 {
+
88 return !(*this <= other);
+
89 }
+
90
+
91 bool operator>=(const_iterator other) const
+
92 requires(std::is_same_v<iterator_category, std::random_access_iterator_tag>)
+
93 {
+
94 return !(*this < other);
+
95 }
+
96
+
97 reference operator*() const { return *accessor_; }
+
98
+
99 reference operator[](difference_type offset) const
+
100 requires(std::is_same_v<iterator_category, std::random_access_iterator_tag>)
+
101 {
+
102 return *(*this + offset);
+
103 }
+
104
+
105 iterator &operator+=(difference_type offset) noexcept
+
106 requires(std::is_same_v<iterator_category, std::random_access_iterator_tag>)
+
107 {
+
108 accessor_ += offset;
+
109 return *this;
+
110 }
+
111
+
112 iterator &operator-=(difference_type offset) noexcept
+
113 requires(std::is_same_v<iterator_category, std::random_access_iterator_tag>)
+
114 {
+
115 accessor_ += -offset;
+
116 return *this;
+
117 }
+
118
+
119 iterator operator+(difference_type offset) const
+
120 requires(std::is_same_v<iterator_category, std::random_access_iterator_tag>)
+
121 {
+
122 iterator other = *this;
+
123 other += offset;
+
124 return other;
+
125 }
+
126
+
127 iterator operator-(difference_type offset) const
+
128 requires(std::is_same_v<iterator_category, std::random_access_iterator_tag>)
+
129 {
+
130 iterator other = *this;
+
131 other += -offset;
+
132 return other;
+
133 }
+
134
+
135 difference_type operator-(const_iterator other) const
+
136 requires(std::is_same_v<iterator_category, std::random_access_iterator_tag>)
+
137 {
+
138 return accessor_ - other.accessor_;
+
139 }
+
140
+
141 iterator &operator++() noexcept
+
142 requires(std::is_same_v<iterator_category, std::random_access_iterator_tag>)
+
143 {
+
144 *this += 1;
+
145 return *this;
+
146 }
+
147
+
148 iterator &operator++() noexcept
+
149 requires(
+
150 !std::is_same_v<iterator_category, std::random_access_iterator_tag>)
+
151 {
+
152 ++accessor_;
+
153 return *this;
+
154 }
+
155
+
156 iterator operator++(int) noexcept {
+
157 iterator other = *this;
+
158 ++(*this);
+
159 return other;
+
160 }
+
161
+
162 iterator &operator--() noexcept
+
163 requires(
+
164 std::is_same_v<iterator_category, std::random_access_iterator_tag> ||
+
165 std::is_same_v<iterator_category, std::bidirectional_iterator_tag>)
+
166 {
+
167 *this += -1;
+
168 return *this;
+
169 }
+
170
+
171 iterator operator--(int) noexcept
+
172 requires(
+
173 std::is_same_v<iterator_category, std::random_access_iterator_tag> ||
+
174 std::is_same_v<iterator_category, std::bidirectional_iterator_tag>)
+
175 {
+
176 iterator other = *this;
+
177 --(*this);
+
178 return other;
+
179 }
+
180
+
181 auto segments() const noexcept
+
182 requires(has_segments_method<accessor_type>)
+
183 {
+
184 return accessor_.segments();
+
185 }
+
186
+
187 friend iterator operator+(difference_type n, iterator iter)
+
188 requires(std::is_same_v<iterator_category, std::random_access_iterator_tag>)
+
189 {
+
190 return iter + n;
+
191 }
+
192
+
193private:
+
194 friend const_iterator;
+
195 friend nonconst_iterator;
+
196
+
197 accessor_type accessor_;
+
198};
+
199
+
200} // namespace dr
+
Definition: iterator_adaptor.hpp:23
+
Definition: iterator_adaptor.hpp:17
+
+ + + + diff --git a/doxygen/jquery.js b/doxygen/jquery.js new file mode 100644 index 0000000000..1dffb65b58 --- /dev/null +++ b/doxygen/jquery.js @@ -0,0 +1,34 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=y.widget.extend({},this.options[t]),n=0;n
"),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/doxygen/local__gemm_8hpp_source.html b/doxygen/local__gemm_8hpp_source.html new file mode 100644 index 0000000000..f9254fe6df --- /dev/null +++ b/doxygen/local__gemm_8hpp_source.html @@ -0,0 +1,169 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/algorithms/matrix/local_gemm.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
local_gemm.hpp
+
+
+
1// SPDX-FileCopyrightText: Intel Corporation
+
2//
+
3// SPDX-License-Identifier: BSD-3-Clause
+
4
+
5#pragma once
+
6
+
7#include <dr/shp/views/dense_matrix_view.hpp>
+
8
+
9#ifdef USE_MKL
+
10#include <oneapi/mkl.hpp>
+
11#endif
+
12
+
13namespace dr::shp {
+
14
+
15namespace __detail {
+
16
+
17template <typename T>
+
18auto custom_gemm(sycl::queue &q, shp::dense_matrix_view<T> a,
+
19 shp::dense_matrix_view<T> b, shp::dense_matrix_view<T> c,
+
20 const std::vector<sycl::event> &dependencies = {}) {
+
21 assert(c.shape()[0] == a.shape()[0]);
+
22 assert(c.shape()[1] == b.shape()[1]);
+
23 assert(a.shape()[1] == b.shape()[0]);
+
24
+
25 std::size_t M = c.shape()[0];
+
26 std::size_t N = c.shape()[1];
+
27 std::size_t K = a.shape()[1];
+
28
+
29 auto a_p = a.data();
+
30 auto b_p = b.data();
+
31 auto c_p = c.data();
+
32
+
33 auto e = q.parallel_for(sycl::range<3>{M, K, N}, [=](auto idx) {
+
34 auto i = idx[0];
+
35 auto k = idx[1];
+
36 auto j = idx[2];
+
37
+
38 sycl::atomic_ref<T, sycl::memory_order::relaxed, sycl::memory_scope::device>
+
39 c_ref(c_p[i * N + j]);
+
40
+
41 c_ref += a_p[i * K + k] * b_p[k * N + j];
+
42 });
+
43 return e;
+
44}
+
45
+
46#ifdef USE_MKL
+
47
+
48template <typename T>
+
49auto mkl_gemm(sycl::queue &q, shp::dense_matrix_view<T> a,
+
50 shp::dense_matrix_view<T> b, shp::dense_matrix_view<T> c,
+
51 const std::vector<sycl::event> &dependencies = {}) {
+
52 assert(c.shape()[0] == a.shape()[0]);
+
53 assert(c.shape()[1] == b.shape()[1]);
+
54 assert(a.shape()[1] == b.shape()[0]);
+
55
+
56 auto event = oneapi::mkl::blas::row_major::gemm(
+
57 q, oneapi::mkl::transpose::nontrans, oneapi::mkl::transpose::nontrans,
+
58 c.shape()[0], c.shape()[1], a.shape()[1], T(1), a.data(), a.ld(),
+
59 b.data(), b.ld(), T(1), c.data(), c.ld(), dependencies);
+
60
+
61 return event;
+
62}
+
63
+
64template <typename T>
+
65auto local_gemm(sycl::queue &q, shp::dense_matrix_view<T> a,
+
66 shp::dense_matrix_view<T> b, shp::dense_matrix_view<T> c,
+
67 const std::vector<sycl::event> &dependencies = {}) {
+
68 return mkl_gemm(q, a, b, c, dependencies);
+
69}
+
70
+
71#else
+
72
+
73template <typename T>
+
74auto local_gemm(sycl::queue &q, shp::dense_matrix_view<T> a,
+
75 shp::dense_matrix_view<T> b, shp::dense_matrix_view<T> c,
+
76 const std::vector<sycl::event> &dependencies = {}) {
+
77 return custom_gemm(q, a, b, c, dependencies);
+
78}
+
79
+
80#endif
+
81
+
82} // namespace __detail
+
83
+
84} // namespace dr::shp
+
+ + + + diff --git a/doxygen/local__gemv_8hpp_source.html b/doxygen/local__gemv_8hpp_source.html new file mode 100644 index 0000000000..eae85906fb --- /dev/null +++ b/doxygen/local__gemv_8hpp_source.html @@ -0,0 +1,185 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/algorithms/matrix/local_gemv.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
local_gemv.hpp
+
+
+
1// SPDX-FileCopyrightText: Intel Corporation
+
2//
+
3// SPDX-License-Identifier: BSD-3-Clause
+
4
+
5#pragma once
+
6
+
7#include <dr/detail/ranges_shim.hpp>
+
8#include <dr/shp/containers/sparse_matrix.hpp>
+
9#include <dr/shp/util.hpp>
+
10
+
11#ifdef USE_MKL
+
12#include <oneapi/mkl.hpp>
+
13#endif
+
14
+
15namespace dr::shp {
+
16
+
17namespace __detail {
+
18
+
19template <typename T, typename I, std::random_access_iterator Iter,
+
20 typename... Args>
+
21 requires(std::is_same_v<std::iter_value_t<Iter>, T>)
+
22auto custom_gemv(sycl::queue &q, csr_matrix_view<T, I, Args...> a, Iter b,
+
23 Iter c, const std::vector<sycl::event> &dependencies = {}) {
+
24 std::size_t wg = 32;
+
25
+
26 auto event = q.submit([&](auto &&h) {
+
27 h.depends_on(dependencies);
+
28 h.parallel_for(sycl::nd_range<1>(a.shape()[0] * wg, wg), [=](auto item) {
+
29 auto row_index = item.get_group(0);
+
30 auto local_id = item.get_local_id();
+
31 auto group_size = item.get_local_range(0);
+
32
+
33 auto row = a.row(row_index);
+
34
+
35 for (std::size_t idx = local_id; idx < row.size(); idx += group_size) {
+
36 auto &&[index, a_v] = row[idx];
+
37 auto &&[i, k] = index;
+
38
+
39 auto &&b_v = *(b + k);
+
40 auto &&c_v = *(c + i);
+
41
+
42 sycl::atomic_ref<T, sycl::memory_order::relaxed,
+
43 sycl::memory_scope::device>
+
44 c_ref(c_v);
+
45
+
46 c_ref += a_v * b_v;
+
47 }
+
48 });
+
49 });
+
50 return event;
+
51}
+
52
+
53#ifdef USE_MKL
+
54
+
55template <typename T, typename I, std::random_access_iterator Iter,
+
56 typename... Args>
+
57 requires(std::is_same_v<std::iter_value_t<Iter>, T>)
+
58auto mkl_gemv(sycl::queue &q, csr_matrix_view<T, I, Args...> a, Iter b, Iter c,
+
59 const std::vector<sycl::event> &dependencies = {}) {
+
60
+
61 oneapi::mkl::sparse::matrix_handle_t a_handle;
+
62 oneapi::mkl::sparse::init_matrix_handle(&a_handle);
+
63
+
64 auto rowptr = dr::shp::__detail::local(a.rowptr_data());
+
65 auto colind = dr::shp::__detail::local(a.colind_data());
+
66 auto values = dr::shp::__detail::local(a.values_data());
+
67
+
68 oneapi::mkl::sparse::set_csr_data(q, a_handle, a.shape()[0], a.shape()[1],
+
69 oneapi::mkl::index_base::zero, rowptr,
+
70 colind, values);
+
71
+
72 auto event =
+
73 oneapi::mkl::sparse::gemv(q, oneapi::mkl::transpose::nontrans, T(1),
+
74 a_handle, b, T(1), c, dependencies);
+
75 return event;
+
76}
+
77
+
78template <typename T, typename I, std::random_access_iterator Iter,
+
79 typename... Args>
+
80 requires(std::is_same_v<std::iter_value_t<Iter>, T>)
+
81auto local_gemv(sycl::queue &q, csr_matrix_view<T, I, Args...> a, Iter b,
+
82 Iter c, const std::vector<sycl::event> &dependencies = {}) {
+
83 return mkl_gemv(q, a, b, c, dependencies);
+
84}
+
85
+
86#else
+
87
+
88template <typename T, typename I, std::random_access_iterator Iter,
+
89 typename... Args>
+
90 requires(std::is_same_v<std::iter_value_t<Iter>, T>)
+
91auto local_gemv(sycl::queue &q, csr_matrix_view<T, I, Args...> a, Iter b,
+
92 Iter c, const std::vector<sycl::event> &dependencies = {}) {
+
93 return custom_gemv(q, a, b, c, dependencies);
+
94}
+
95
+
96#endif
+
97
+
98} // namespace __detail
+
99
+
100} // namespace dr::shp
+
+ + + + diff --git a/doxygen/logger_8hpp_source.html b/doxygen/logger_8hpp_source.html new file mode 100644 index 0000000000..7af1189778 --- /dev/null +++ b/doxygen/logger_8hpp_source.html @@ -0,0 +1,148 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail/logger.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
logger.hpp
+
+
+
1// SPDX-FileCopyrightText: Intel Corporation
+
2//
+
3// SPDX-License-Identifier: BSD-3-Clause
+
4
+
5#pragma once
+
6
+
7#include <fstream>
+
8
+
9#include <vendor/source_location/source_location.hpp>
+
10
+
11#include <dr/detail/format_shim.hpp>
+
12
+
13namespace dr {
+
14
+
15#if DR_FORMAT
+
16
+
17class logger {
+
18public:
+
19 void set_file(std::ofstream &fout) { fout_ = &fout; }
+
20
+
21 template <typename... Args>
+
22 void debug(const nostd::source_location &location,
+
23 fmt::format_string<Args...> format, Args &&...args) {
+
24 if (fout_) {
+
25 *fout_ << location.file_name() << ":" << location.line() << ": "
+
26 << fmt::format(format, std::forward<Args>(args)...);
+
27 fout_->flush();
+
28 }
+
29 }
+
30 template <typename... Args>
+
31 void debug(fmt::format_string<Args...> format, Args &&...args) {
+
32 if (fout_) {
+
33 *fout_ << fmt::format(format, std::forward<Args>(args)...);
+
34 fout_->flush();
+
35 }
+
36 }
+
37
+
38private:
+
39 std::ofstream *fout_ = nullptr;
+
40};
+
41
+
42#else
+
43
+
44class logger {
+
45public:
+
46 void set_file(std::ofstream &fout) { fout_ = &fout; }
+
47
+
48 template <typename... Args>
+
49 void debug(const nostd::source_location &location, std::string format,
+
50 Args &&...args) {}
+
51 template <typename... Args> void debug(std::string format, Args &&...args) {}
+
52
+
53private:
+
54 std::ofstream *fout_ = nullptr;
+
55};
+
56
+
57#endif
+
58
+
59inline logger drlog;
+
60
+
61} // namespace dr
+
Definition: logger.hpp:44
+
Definition: source_location.hpp:13
+
+ + + + diff --git a/doxygen/matrix__algorithms_8hpp_source.html b/doxygen/matrix__algorithms_8hpp_source.html new file mode 100644 index 0000000000..841959613f --- /dev/null +++ b/doxygen/matrix__algorithms_8hpp_source.html @@ -0,0 +1,93 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/algorithms/matrix/matrix_algorithms.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
matrix_algorithms.hpp
+
+
+
1// SPDX-FileCopyrightText: Intel Corporation
+
2//
+
3// SPDX-License-Identifier: BSD-3-Clause
+
4
+
5#pragma once
+
6
+
7#include <dr/shp/algorithms/matrix/gemm.hpp>
+
8#include <dr/shp/algorithms/matrix/gemv.hpp>
+
+ + + + diff --git a/doxygen/matrix__entry_8hpp_source.html b/doxygen/matrix__entry_8hpp_source.html new file mode 100644 index 0000000000..d069105081 --- /dev/null +++ b/doxygen/matrix__entry_8hpp_source.html @@ -0,0 +1,320 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/containers/matrix_entry.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
matrix_entry.hpp
+
+
+
1// SPDX-FileCopyrightText: Intel Corporation
+
2//
+
3// SPDX-License-Identifier: BSD-3-Clause
+
4
+
5#pragma once
+
6
+
7#include <concepts>
+
8#include <limits>
+
9#include <type_traits>
+
10
+
11#include <dr/detail/index.hpp>
+
12
+
13namespace dr::shp {
+
14
+
15template <typename T, typename I = std::size_t> class matrix_entry {
+
16public:
+
17 using index_type = I;
+
18 using map_type = T;
+
19
+
20 matrix_entry(dr::index<I> index, const map_type &value)
+
21 : index_(index), value_(value) {}
+
22 matrix_entry(dr::index<I> index, map_type &&value)
+
23 : index_(index), value_(std::move(value)) {}
+
24
+
25 template <typename U>
+
26 requires(std::is_constructible_v<T, U>)
+ +
28 : index_(index), value_(std::forward<U>(value)) {}
+
29
+
30 template <typename Entry>
+
31 matrix_entry(Entry &&entry)
+
32 : index_(std::get<0>(entry)), value_(std::get<1>(entry)) {}
+
33
+
34 template <std::size_t Index> auto get() const noexcept {
+
35 if constexpr (Index == 0) {
+
36 return index();
+
37 }
+
38 if constexpr (Index == 1) {
+
39 return value();
+
40 }
+
41 }
+
42
+
43 operator std::pair<std::pair<I, I>, T>() const noexcept {
+
44 return {{index_[0], index_[1]}, value_};
+
45 }
+
46
+
47 dr::index<I> index() const noexcept { return index_; }
+
48
+
49 map_type value() const noexcept { return value_; }
+
50
+
51 template <std::integral U>
+
52 requires(!std::is_same_v<I, U> &&
+
53 std::numeric_limits<U>::max() >= std::numeric_limits<I>::max())
+
54 operator matrix_entry<T, U>() const noexcept {
+
55 return matrix_entry<T, U>(index_, value_);
+
56 }
+
57
+
58 template <std::integral U>
+
59 requires(!std::is_const_v<T> && !std::is_same_v<I, U> &&
+
60 std::numeric_limits<U>::max() >= std::numeric_limits<I>::max())
+
61 operator matrix_entry<std::add_const_t<T>, U>() const noexcept {
+
62 return matrix_entry<std::add_const_t<T>, U>(index_, value_);
+
63 }
+
64
+
65 bool operator<(const matrix_entry &other) const noexcept {
+
66 if (index()[0] < other.index()[0]) {
+
67 return true;
+
68 } else if (index()[0] == other.index()[0] &&
+
69 index()[1] < other.index()[1]) {
+
70 return true;
+
71 }
+
72 return false;
+
73 }
+
74
+
75 matrix_entry() = default;
+
76 ~matrix_entry() = default;
+
77
+
78 matrix_entry(const matrix_entry &) = default;
+
79 matrix_entry(matrix_entry &&) = default;
+
80 matrix_entry &operator=(const matrix_entry &) = default;
+
81 matrix_entry &operator=(matrix_entry &&) = default;
+
82
+
83private:
+
84 dr::index<I> index_;
+
85 map_type value_;
+
86};
+
87
+
88} // namespace dr::shp
+
89
+
90namespace std {
+
91
+
92template <typename T, typename I>
+
93 requires(!std::is_const_v<T>)
+ + +
96 a = b;
+
97 b = other;
+
98}
+
99
+
100template <std::size_t Index, typename T, typename I>
+
101struct tuple_element<Index, dr::shp::matrix_entry<T, I>>
+
102 : tuple_element<Index, std::tuple<dr::index<I>, T>> {};
+
103
+
104template <typename T, typename I>
+
105struct tuple_size<dr::shp::matrix_entry<T, I>> : integral_constant<size_t, 2> {
+
106};
+
107
+
108} // namespace std
+
109
+
110namespace dr::shp {
+
111
+
112template <typename T, typename I = std::size_t, typename TRef = T &>
+ +
114public:
+
115 using scalar_type = T;
+
116 using index_type = I;
+
117
+
118 using key_type = dr::index<I>;
+
119 using map_type = T;
+
120
+
121 using scalar_reference = TRef;
+
122
+ +
124
+
125 matrix_ref(dr::index<I> index, scalar_reference value)
+
126 : index_(index), value_(value) {}
+
127
+
128 operator value_type() const noexcept { return value_type(index_, value_); }
+
129
+
130 operator std::pair<std::pair<I, I>, T>() const noexcept {
+
131 return {{index_[0], index_[1]}, value_};
+
132 }
+
133
+
134 template <std::size_t Index>
+
135 decltype(auto) get() const noexcept
+
136 requires(Index <= 1)
+
137 {
+
138 if constexpr (Index == 0) {
+
139 return index();
+
140 }
+
141 if constexpr (Index == 1) {
+
142 return value();
+
143 }
+
144 }
+
145
+
146 dr::index<I> index() const noexcept { return index_; }
+
147
+
148 scalar_reference value() const noexcept { return value_; }
+
149
+
150 template <std::integral U>
+
151 requires(!std::is_same_v<I, U> &&
+
152 std::numeric_limits<U>::max() >= std::numeric_limits<I>::max())
+
153 operator matrix_ref<T, U, TRef>() const noexcept {
+
154 return matrix_ref<T, U, TRef>(index_, value_);
+
155 }
+
156
+
157 template <std::integral U>
+
158 requires(!std::is_const_v<T> && !std::is_same_v<I, U> &&
+
159 std::numeric_limits<U>::max() >= std::numeric_limits<I>::max())
+
160 operator matrix_ref<std::add_const_t<T>, U, TRef>() const noexcept {
+
161 return matrix_ref<std::add_const_t<T>, U, TRef>(index_, value_);
+
162 }
+
163
+
164 bool operator<(matrix_entry<T, I> other) const noexcept {
+
165 if (index()[0] < other.index()[0]) {
+
166 return true;
+
167 } else if (index()[0] == other.index()[0] &&
+
168 index()[1] < other.index()[1]) {
+
169 return true;
+
170 }
+
171 return false;
+
172 }
+
173
+
174 matrix_ref() = delete;
+
175 ~matrix_ref() = default;
+
176
+
177 matrix_ref(const matrix_ref &) = default;
+
178 matrix_ref &operator=(const matrix_ref &) = delete;
+
179 matrix_ref(matrix_ref &&) = default;
+
180 matrix_ref &operator=(matrix_ref &&) = default;
+
181
+
182private:
+
183 dr::index<I> index_;
+
184 scalar_reference value_;
+
185};
+
186
+
187} // namespace dr::shp
+
188
+
189namespace std {
+
190
+
191template <typename T, typename I, typename TRef>
+
192 requires(!std::is_const_v<T>)
+ + + +
196 a = b;
+
197 b = other;
+
198}
+
199
+
200template <std::size_t Index, typename T, typename I, typename TRef>
+
201struct tuple_element<Index, dr::shp::matrix_ref<T, I, TRef>>
+
202 : tuple_element<Index, std::tuple<dr::index<I>, TRef>> {};
+
203
+
204template <typename T, typename I, typename TRef>
+
205struct tuple_size<dr::shp::matrix_ref<T, I, TRef>>
+
206 : integral_constant<std::size_t, 2> {};
+
207
+
208template <std::size_t Index, typename T, typename I, typename TRef>
+
209inline decltype(auto) get(dr::shp::matrix_ref<T, I, TRef> ref)
+
210 requires(Index <= 1)
+
211{
+
212 if constexpr (Index == 0) {
+
213 return ref.index();
+
214 }
+
215 if constexpr (Index == 1) {
+
216 return ref.value();
+
217 }
+
218}
+
219
+
220template <std::size_t Index, typename T, typename I, typename TRef>
+
221inline decltype(auto) get(dr::shp::matrix_entry<T, I> entry)
+
222 requires(Index <= 1)
+
223{
+
224 if constexpr (Index == 0) {
+
225 return entry.index();
+
226 }
+
227 if constexpr (Index == 1) {
+
228 return entry.value();
+
229 }
+
230}
+
231
+
232} // namespace std
+
Definition: index.hpp:34
+
Definition: matrix_entry.hpp:15
+
Definition: matrix_entry.hpp:113
+
+ + + + diff --git a/doxygen/matrix__io_8hpp_source.html b/doxygen/matrix__io_8hpp_source.html new file mode 100644 index 0000000000..6f4d2caf50 --- /dev/null +++ b/doxygen/matrix__io_8hpp_source.html @@ -0,0 +1,376 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/util/matrix_io.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
matrix_io.hpp
+
+
+
1// SPDX-FileCopyrightText: Intel Corporation
+
2//
+
3// SPDX-License-Identifier: BSD-3-Clause
+
4
+
5#pragma once
+
6
+
7#include <algorithm>
+
8#include <cassert>
+
9#include <fstream>
+
10#include <sstream>
+
11#include <string>
+
12#include <tuple>
+
13#include <vector>
+
14
+
15#include <dr/shp/util/coo_matrix.hpp>
+
16#include <dr/shp/views/csr_matrix_view.hpp>
+
17
+
18namespace dr::shp {
+
19
+
20namespace __detail {
+
21
+
22// Preconditions:
+
23// 1) `tuples` sorted by row, column
+
24// 2) `tuples` has shape `shape`
+
25// 3) `tuples` has `nnz` elements
+
26template <typename Tuples, typename Allocator>
+
27auto convert_to_csr(Tuples &&tuples, dr::index<> shape, std::size_t nnz,
+
28 Allocator &&allocator) {
+
29 auto &&[index, v] = *tuples.begin();
+
30 auto &&[i, j] = index;
+
31
+
32 using T = std::remove_reference_t<decltype(v)>;
+
33 using I = std::remove_reference_t<decltype(i)>;
+
34
+
35 typename std::allocator_traits<Allocator>::template rebind_alloc<I>
+
36 i_allocator(allocator);
+
37
+
38 T *values = allocator.allocate(nnz);
+
39 I *rowptr = i_allocator.allocate(shape[0] + 1);
+
40 I *colind = i_allocator.allocate(nnz);
+
41
+
42 rowptr[0] = 0;
+
43
+
44 std::size_t r = 0;
+
45 std::size_t c = 0;
+
46 for (auto iter = tuples.begin(); iter != tuples.end(); ++iter) {
+
47 auto &&[index, value] = *iter;
+
48 auto &&[i, j] = index;
+
49
+
50 values[c] = value;
+
51 colind[c] = j;
+
52
+
53 while (r < i) {
+
54 assert(r + 1 <= shape[0]);
+
55 // throw std::runtime_error("csr_matrix_impl_: given invalid matrix");
+
56 rowptr[r + 1] = c;
+
57 r++;
+
58 }
+
59 c++;
+
60
+
61 assert(c <= nnz);
+
62 // throw std::runtime_error("csr_matrix_impl_: given invalid matrix");
+
63 }
+
64
+
65 for (; r < shape[0]; r++) {
+
66 rowptr[r + 1] = nnz;
+
67 }
+
68
+
69 return csr_matrix_view(values, rowptr, colind,
+
70 dr::index<I>(shape[0], shape[1]), nnz, 0);
+
71}
+
72
+
75template <typename T, typename I = std::size_t>
+
76inline coo_matrix<T, I> mmread(std::string file_path, bool one_indexed = true) {
+
77 using size_type = std::size_t;
+
78
+
79 std::ifstream f;
+
80
+
81 f.open(file_path.c_str());
+
82
+
83 if (!f.is_open()) {
+
84 // TODO better choice of exception.
+
85 throw std::runtime_error("mmread: cannot open " + file_path);
+
86 }
+
87
+
88 std::string buf;
+
89
+
90 // Make sure the file is matrix market matrix, coordinate, and check whether
+
91 // it is symmetric. If the matrix is symmetric, non-diagonal elements will
+
92 // be inserted in both (i, j) and (j, i). Error out if skew-symmetric or
+
93 // Hermitian.
+
94 std::getline(f, buf);
+
95 std::istringstream ss(buf);
+
96 std::string item;
+
97 ss >> item;
+
98 if (item != "%%MatrixMarket") {
+
99 throw std::runtime_error(file_path +
+
100 " could not be parsed as a Matrix Market file.");
+
101 }
+
102 ss >> item;
+
103 if (item != "matrix") {
+
104 throw std::runtime_error(file_path +
+
105 " could not be parsed as a Matrix Market file.");
+
106 }
+
107 ss >> item;
+
108 if (item != "coordinate") {
+
109 throw std::runtime_error(file_path +
+
110 " could not be parsed as a Matrix Market file.");
+
111 }
+
112 bool pattern;
+
113 ss >> item;
+
114 if (item == "pattern") {
+
115 pattern = true;
+
116 } else {
+
117 pattern = false;
+
118 }
+
119 // TODO: do something with real vs. integer vs. pattern?
+
120 ss >> item;
+
121 bool symmetric;
+
122 if (item == "general") {
+
123 symmetric = false;
+
124 } else if (item == "symmetric") {
+
125 symmetric = true;
+
126 } else {
+
127 throw std::runtime_error(file_path + " has an unsupported matrix type");
+
128 }
+
129
+
130 bool outOfComments = false;
+
131 while (!outOfComments) {
+
132 std::getline(f, buf);
+
133
+
134 if (buf[0] != '%') {
+
135 outOfComments = true;
+
136 }
+
137 }
+
138
+
139 I m, n, nnz;
+
140 // std::istringstream ss(buf);
+
141 ss.clear();
+
142 ss.str(buf);
+
143 ss >> m >> n >> nnz;
+
144
+
145 // NOTE for symmetric matrices: `nnz` holds the number of stored values in
+
146 // the matrix market file, while `matrix.nnz_` will hold the total number of
+
147 // stored values (including "mirrored" symmetric values).
+
148 coo_matrix<T, I> matrix({m, n});
+
149 if (symmetric) {
+
150 matrix.reserve(2 * nnz);
+
151 } else {
+
152 matrix.reserve(nnz);
+
153 }
+
154
+
155 size_type c = 0;
+
156 while (std::getline(f, buf)) {
+
157 I i, j;
+
158 T v;
+
159 std::istringstream ss(buf);
+
160 if (!pattern) {
+
161 ss >> i >> j >> v;
+
162 } else {
+
163 ss >> i >> j;
+
164 v = T(1);
+
165 }
+
166 if (one_indexed) {
+
167 i--;
+
168 j--;
+
169 }
+
170
+
171 if (i >= m || j >= n) {
+
172 throw std::runtime_error(
+
173 "read_MatrixMarket: file has nonzero out of bounds.");
+
174 }
+
175
+
176 matrix.push_back({{i, j}, v});
+
177
+
178 if (symmetric && i != j) {
+
179 matrix.push_back({{j, i}, v});
+
180 }
+
181
+
182 c++;
+
183 if (c > nnz) {
+
184 throw std::runtime_error("read_MatrixMarket: error reading Matrix Market "
+
185 "file, file has more nonzeros than reported.");
+
186 }
+
187 }
+
188
+
189 auto sort_fn = [](const auto &a, const auto &b) {
+
190 auto &&[a_index, a_value] = a;
+
191 auto &&[b_index, b_value] = b;
+
192 auto &&[a_i, a_j] = a_index;
+
193 auto &&[b_i, b_j] = b_index;
+
194 if (a_i < b_i) {
+
195 return true;
+
196 } else if (a_i == b_i) {
+
197 if (a_j < b_j) {
+
198 return true;
+
199 }
+
200 }
+
201 return false;
+
202 };
+
203
+
204 std::sort(matrix.begin(), matrix.end(), sort_fn);
+
205
+
206 f.close();
+
207
+
208 return matrix;
+
209}
+
210
+
211template <typename T, typename I, typename Allocator, typename... Args>
+
212void destroy_csr_matrix_view(dr::shp::csr_matrix_view<T, I, Args...> view,
+
213 Allocator &&alloc) {
+
214 alloc.deallocate(view.values_data(), view.size());
+
215 typename std::allocator_traits<Allocator>::template rebind_alloc<I> i_alloc(
+
216 alloc);
+
217 i_alloc.deallocate(view.colind_data(), view.size());
+
218 i_alloc.deallocate(view.rowptr_data(), view.shape()[0] + 1);
+
219}
+
220
+
221} // namespace __detail
+
222
+
223template <typename T, typename I>
+
224auto create_distributed(dr::shp::csr_matrix_view<T, I> local_mat,
+
225 const matrix_partition &partition) {
+
226 dr::shp::sparse_matrix<T, I> a(local_mat.shape(), partition);
+
227
+
228 std::vector<dr::shp::csr_matrix_view<T, I>> views;
+
229 std::vector<sycl::event> events;
+
230 views.reserve(a.grid_shape()[0] * a.grid_shape()[1]);
+
231
+
232 for (I i = 0; i < a.grid_shape()[0]; i++) {
+
233 for (I j = 0; j < a.grid_shape()[1]; j++) {
+
234 auto &&tile = a.tile({i, j});
+
235 dr::index<I> row_bounds(i * a.tile_shape()[0],
+
236 i * a.tile_shape()[0] + tile.shape()[0]);
+
237 dr::index<I> column_bounds(j * a.tile_shape()[1],
+
238 j * a.tile_shape()[1] + tile.shape()[1]);
+
239
+
240 auto local_submat = local_mat.submatrix(row_bounds, column_bounds);
+
241
+
242 auto submatrix_shape = dr::index<I>(row_bounds[1] - row_bounds[0],
+
243 column_bounds[1] - column_bounds[0]);
+
244
+
245 auto copied_submat = __detail::convert_to_csr(
+
246 local_submat, submatrix_shape, rng::distance(local_submat),
+
247 std::allocator<T>{});
+
248
+
249 auto e = a.copy_tile_async({i, j}, copied_submat);
+
250
+
251 views.push_back(copied_submat);
+
252 events.push_back(e);
+
253 }
+
254 }
+
255 __detail::wait(events);
+
256
+
257 for (auto &&view : views) {
+
258 __detail::destroy_csr_matrix_view(view, std::allocator<T>{});
+
259 }
+
260
+
261 return a;
+
262}
+
263
+
264template <typename T, typename I = std::size_t>
+
265auto mmread(std::string file_path, const matrix_partition &partition,
+
266 bool one_indexed = true) {
+
267 auto m = __detail::mmread<T, I>(file_path, one_indexed);
+
268 auto shape = m.shape();
+
269 auto nnz = m.size();
+
270
+
271 auto local_mat = __detail::convert_to_csr(m, shape, nnz, std::allocator<T>{});
+
272
+
273 auto a = create_distributed(local_mat, partition);
+
274
+
275 __detail::destroy_csr_matrix_view(local_mat, std::allocator<T>{});
+
276
+
277 return a;
+
278}
+
279
+
280template <typename T, typename I = std::size_t>
+
281auto mmread(std::string file_path, bool one_indexed = true) {
+
282 return mmread<T, I>(
+
283 file_path,
+
284 dr::shp::block_cyclic({dr::shp::tile::div, dr::shp::tile::div},
+
285 {dr::shp::nprocs(), 1}),
+
286 one_indexed);
+
287}
+
288
+
289} // namespace dr::shp
+
Definition: index.hpp:34
+
Definition: matrix_partition.hpp:34
+
Definition: csr_matrix_view.hpp:126
+
Definition: sparse_matrix.hpp:126
+
+ + + + diff --git a/doxygen/matrix__partition_8hpp_source.html b/doxygen/matrix__partition_8hpp_source.html new file mode 100644 index 0000000000..35bdcae7fd --- /dev/null +++ b/doxygen/matrix__partition_8hpp_source.html @@ -0,0 +1,203 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/containers/matrix_partition.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
matrix_partition.hpp
+
+
+
1// SPDX-FileCopyrightText: Intel Corporation
+
2//
+
3// SPDX-License-Identifier: BSD-3-Clause
+
4
+
5#pragma once
+
6
+
7#include <dr/detail/index.hpp>
+
8#include <dr/shp/containers/detail.hpp>
+
9#include <dr/shp/init.hpp>
+
10
+
11namespace dr::shp {
+
12
+
13namespace tile {
+
14
+
15// Special constant to indicate tile dimensions of
+
16// {ceil(m / p_m), ceil(n / p_n)} should be chosen
+
17// in order to evenly divide a dimension amongst the
+
18// ranks in the processor grid.
+
19inline constexpr std::size_t div = std::numeric_limits<std::size_t>::max();
+
20
+
21} // namespace tile
+
22
+ +
24public:
+
25 virtual std::size_t tile_rank(dr::index<> matrix_shape,
+
26 dr::index<> tile_id) const = 0;
+
27 virtual dr::index<> grid_shape(dr::index<> matrix_shape) const = 0;
+
28 virtual dr::index<> tile_shape(dr::index<> matrix_shape) const = 0;
+
29
+
30 virtual std::unique_ptr<matrix_partition> clone() const = 0;
+
31 virtual ~matrix_partition(){};
+
32};
+
33
+
34class block_cyclic final : public matrix_partition {
+
35public:
+
36 block_cyclic(dr::index<> tile_shape = {dr::shp::tile::div,
+
37 dr::shp::tile::div},
+
38 dr::index<> grid_shape = detail::factor(dr::shp::nprocs()))
+
39 : tile_shape_(tile_shape), grid_shape_(grid_shape) {}
+
40
+
41 block_cyclic(const block_cyclic &) noexcept = default;
+
42
+
43 dr::index<> tile_shape() const { return tile_shape_; }
+
44
+
45 std::size_t tile_rank(dr::index<> matrix_shape, dr::index<> tile_id) const {
+
46 dr::index<> pgrid_idx = {tile_id[0] % grid_shape_[0],
+
47 tile_id[1] % grid_shape_[1]};
+
48
+
49 auto pgrid = processor_grid_();
+
50
+
51 return pgrid[pgrid_idx[0] * grid_shape_[1] + pgrid_idx[1]];
+
52 }
+
53
+
54 dr::index<> grid_shape(dr::index<> matrix_shape) const {
+
55 auto ts = this->tile_shape(matrix_shape);
+
56
+
57 return dr::index<>((matrix_shape[0] + ts[0] - 1) / ts[0],
+
58 (matrix_shape[1] + ts[1] - 1) / ts[1]);
+
59 }
+
60
+
61 dr::index<> tile_shape(dr::index<> matrix_shape) const {
+
62 std::array<std::size_t, 2> tshape = {tile_shape_[0], tile_shape_[1]};
+
63
+
64 constexpr std::size_t ndims = 2;
+
65 for (std::size_t i = 0; i < ndims; i++) {
+
66 if (tshape[i] == dr::shp::tile::div) {
+
67 tshape[i] = (matrix_shape[i] + grid_shape_[i] - 1) / grid_shape_[i];
+
68 }
+
69 }
+
70
+
71 return tshape;
+
72 }
+
73
+
74 std::unique_ptr<matrix_partition> clone() const noexcept {
+
75 return std::unique_ptr<matrix_partition>(new block_cyclic(*this));
+
76 }
+
77
+
78private:
+
79 std::vector<std::size_t> processor_grid_() const {
+
80 std::vector<std::size_t> grid(grid_shape_[0] * grid_shape_[1]);
+
81
+
82 for (std::size_t i = 0; i < grid.size(); i++) {
+
83 grid[i] = i;
+
84 }
+
85 return grid;
+
86 }
+
87
+
88 dr::index<> tile_shape_;
+
89 dr::index<> grid_shape_;
+
90}; // namespace dr::shp
+
91
+
92inline std::vector<block_cyclic> partition_matmul(std::size_t m, std::size_t n,
+
93 std::size_t k) {
+
94 dr::index<> c_pgrid = detail::factor(shp::nprocs());
+
95
+
96 block_cyclic c_block({dr::shp::tile::div, dr::shp::tile::div},
+
97 {c_pgrid[0], c_pgrid[1]});
+
98
+
99 std::size_t k_block;
+
100
+
101 if (m * k >= k * n) {
+
102 k_block = (shp::nprocs() + c_pgrid[0] - 1) / c_pgrid[0];
+
103 } else {
+
104 k_block = (shp::nprocs() + c_pgrid[1] - 1) / c_pgrid[1];
+
105 }
+
106
+
107 block_cyclic a_block({dr::shp::tile::div, dr::shp::tile::div},
+
108 {c_pgrid[0], k_block});
+
109 block_cyclic b_block({dr::shp::tile::div, dr::shp::tile::div},
+
110 {k_block, c_pgrid[1]});
+
111
+
112 return {a_block, b_block, c_block};
+
113}
+
114
+
115} // namespace dr::shp
+
Definition: index.hpp:34
+
Definition: matrix_partition.hpp:34
+
Definition: matrix_partition.hpp:23
+
+ + + + diff --git a/doxygen/md__for__each_8hpp_source.html b/doxygen/md__for__each_8hpp_source.html new file mode 100644 index 0000000000..212951c23c --- /dev/null +++ b/doxygen/md__for__each_8hpp_source.html @@ -0,0 +1,294 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/algorithms/md_for_each.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
md_for_each.hpp
+
+
+
1// SPDX-FileCopyrightText: Intel Corporation
+
2//
+
3// SPDX-License-Identifier: BSD-3-Clause
+
4
+
5#pragma once
+
6
+
7#include <algorithm>
+
8#include <execution>
+
9#include <type_traits>
+
10#include <utility>
+
11
+
12#include <dr/concepts/concepts.hpp>
+
13#include <dr/detail/logger.hpp>
+
14#include <dr/detail/onedpl_direct_iterator.hpp>
+
15#include <dr/detail/ranges_shim.hpp>
+
16#include <dr/detail/tuple_utils.hpp>
+
17#include <dr/mhp/global.hpp>
+
18
+
19namespace dr::mhp::__detail {
+
20
+
21struct any {
+
22 template <typename T> operator T() const noexcept {
+
23 return std::declval<T>();
+
24 }
+
25};
+
26
+
27template <typename F, typename Arg1>
+
28concept one_argument = requires(F &f) {
+
29 { f(Arg1{}) };
+
30};
+
31
+
32template <typename F, typename Arg1, typename Arg2>
+
33concept two_arguments = requires(F &f) {
+
34 { f(Arg1{}, Arg2{}) };
+
35};
+
36
+
37}; // namespace dr::mhp::__detail
+
38
+
39namespace dr::mhp {
+
40
+
41namespace detail = dr::__detail;
+
42
+
44template <typename... Ts>
+
45void stencil_for_each(auto op, is_mdspan_view auto &&...drs) {
+
46 auto ranges = std::tie(drs...);
+
47 auto &&dr0 = std::get<0>(ranges);
+
48 if (rng::empty(dr0)) {
+
49 return;
+
50 }
+
51
+
52 auto all_segments = rng::views::zip(dr::ranges::segments(drs)...);
+
53 for (auto segs : all_segments) {
+
54 auto seg0 = std::get<0>(segs);
+
55 auto mdspan0 = seg0.mdspan();
+
56
+
57 // If local
+
58 if (dr::ranges::rank(seg0) == default_comm().rank()) {
+
59 // Calculate loop invariant info about the operands. Use a tuple
+
60 // to hold the info for all operands.
+
61 auto operand_infos = detail::tuple_transform(segs, [](auto &&seg) {
+
62 // mdspan for tile. This could be a submdspan, so we need the
+
63 // extents of the root to get the memory strides
+
64 return std::make_pair(seg.mdspan(), seg.root_mdspan().extents());
+
65 });
+
66
+
67 if (mhp::use_sycl()) {
+
68#ifdef SYCL_LANGUAGE_VERSION
+
69 auto do_point = [=](auto index) {
+
70 // Transform operand_infos into stencils
+
71 auto stencils =
+
72 detail::tuple_transform(operand_infos, [=](auto info) {
+
73 return md::mdspan(
+
74 std::to_address(&info.first(index[0], index[1])),
+
75 info.second);
+
76 });
+
77 op(stencils);
+
78 };
+
79 // TODO: Extend sycl_utils.hpp to handle ranges > 1D. It uses
+
80 // ndrange and handles > 32 bits.
+
81 dr::__detail::parallel_for(
+
82 mhp::sycl_queue(),
+
83 sycl::range(mdspan0.extent(0), mdspan0.extent(1)), do_point)
+
84 .wait();
+
85#else
+
86 assert(false);
+
87#endif
+
88 } else {
+
89 // Given an index, invoke op on a tuple of stencils
+
90 auto invoke_index = [=](auto index) {
+
91 // Transform operand_infos into stencils
+
92 auto stencils =
+
93 detail::tuple_transform(operand_infos, [=](auto info) {
+
94 return md::mdspan(std::to_address(&info.first(index)),
+
95 info.second);
+
96 });
+
97 op(stencils);
+
98 };
+
99#if 0
+
100 // Does not vectorize. Something about loop index being forced into memory
+
101 detail::mdspan_foreach<mdspan0.rank(), decltype(invoke_index)>(
+
102 mdspan0.extents(), invoke_index);
+
103#else
+
104 for (std::size_t i = 0; i < mdspan0.extents().extent(0); i++) {
+
105 for (std::size_t j = 0; j < mdspan0.extents().extent(1); j++) {
+
106 invoke_index(std::array<std::size_t, 2>{i, j});
+
107 }
+
108 }
+
109#endif
+
110 }
+
111 }
+
112 }
+
113
+
114 barrier();
+
115}
+
116
+
118template <typename F, typename... Ts>
+
119void for_each(F op, is_mdspan_view auto &&...drs) {
+
120 auto ranges = std::tie(drs...);
+
121 auto &&dr0 = std::get<0>(ranges);
+
122 if (rng::empty(dr0)) {
+
123 return;
+
124 }
+
125
+
126 auto all_segments = rng::views::zip(dr::ranges::segments(drs)...);
+
127 for (auto segs : all_segments) {
+
128 auto seg0 = std::get<0>(segs);
+
129 auto mdspan0 = seg0.mdspan();
+
130
+
131 // If local
+
132 if (dr::ranges::rank(seg0) == default_comm().rank()) {
+
133 auto origin = seg0.origin();
+
134
+
135 // make a tuple of mdspans
+
136 auto operand_mdspans = detail::tuple_transform(
+
137 segs, [](auto &&seg) { return seg.mdspan(); });
+
138
+
139 if (mhp::use_sycl()) {
+
140#ifdef SYCL_LANGUAGE_VERSION
+
141 //
+
142 auto invoke_index = [=](auto index) {
+
143 // Transform mdspans into references
+
144 auto references = detail::tie_transform(
+
145 operand_mdspans, [index](auto mdspan) -> decltype(auto) {
+
146 return mdspan(index[0], index[1]);
+
147 });
+
148 static_assert(
+
149 std::invocable<F, decltype(references)> ||
+
150 std::invocable<F, decltype(index), decltype(references)>);
+
151 if constexpr (std::invocable<F, decltype(references)>) {
+
152 op(references);
+
153 } else {
+
154 auto global_index = index;
+
155 for (std::size_t i = 0; i < rng::size(global_index); i++) {
+
156 global_index[i] += origin[i];
+
157 }
+
158
+
159 op(global_index, references);
+
160 }
+
161 };
+
162
+
163 // TODO: Extend sycl_utils.hpp to handle ranges > 1D. It uses
+
164 // ndrange and handles > 32 bits.
+
165
+
166 dr::__detail::parallel_for(
+
167 mhp::sycl_queue(),
+
168 sycl::range(mdspan0.extent(0), mdspan0.extent(1)), invoke_index)
+
169 .wait();
+
170#else
+
171 assert(false);
+
172#endif
+
173 } else {
+
174 // invoke op on a tuple of references created by using the mdspan's and
+
175 // index
+
176 auto invoke_index = [=](auto index) {
+
177 // Transform operand_infos into references
+
178 auto references = detail::tie_transform(
+
179 operand_mdspans,
+
180 [index](auto mdspan) -> decltype(auto) { return mdspan(index); });
+
181 static_assert(
+
182 std::invocable<F, decltype(references)> ||
+
183 std::invocable<F, decltype(index), decltype(references)>);
+
184 if constexpr (std::invocable<F, decltype(references)>) {
+
185 op(references);
+
186 } else if constexpr (std::invocable<F, decltype(index),
+
187 decltype(references)>) {
+
188 auto global_index = index;
+
189 for (std::size_t i = 0; i < rng::size(global_index); i++) {
+
190 global_index[i] += origin[i];
+
191 }
+
192
+
193 op(global_index, references);
+
194 } else {
+
195 assert(false);
+
196 }
+
197 };
+
198 detail::mdspan_foreach<mdspan0.rank(), decltype(invoke_index)>(
+
199 mdspan0.extents(), invoke_index);
+
200 }
+
201 }
+
202 }
+
203
+
204 barrier();
+
205}
+
206
+
207} // namespace dr::mhp
+
Definition: md_for_each.hpp:28
+
Definition: md_for_each.hpp:33
+
Definition: mdspan_view.hpp:197
+
Definition: md_for_each.hpp:21
+
+ + + + diff --git a/doxygen/mdspan__shim_8hpp_source.html b/doxygen/mdspan__shim_8hpp_source.html new file mode 100644 index 0000000000..b4e29c26dd --- /dev/null +++ b/doxygen/mdspan__shim_8hpp_source.html @@ -0,0 +1,93 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail/mdspan_shim.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
mdspan_shim.hpp
+
+
+
1// SPDX-FileCopyrightText: Intel Corporation
+
2//
+
3// SPDX-License-Identifier: BSD-3-Clause
+
4
+
5#pragma once
+
6
+
7#include <experimental/mdspan>
+
8namespace md = std::experimental;
+
+ + + + diff --git a/doxygen/mdspan__utils_8hpp_source.html b/doxygen/mdspan__utils_8hpp_source.html new file mode 100644 index 0000000000..7c84f422d9 --- /dev/null +++ b/doxygen/mdspan__utils_8hpp_source.html @@ -0,0 +1,254 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail/mdspan_utils.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
mdspan_utils.hpp
+
+
+
1// SPDX-FileCopyrightText: Intel Corporation
+
2//
+
3// SPDX-License-Identifier: BSD-3-Clause
+
4
+
5#pragma once
+
6
+
7#include <dr/detail/mdspan_shim.hpp>
+
8
+
9namespace dr::__detail {
+
10
+
11template <typename Index> auto shape_to_strides(const Index &shape) {
+
12 const std::size_t rank = rng::size(shape);
+
13 Index strides;
+
14 strides[rank - 1] = 1;
+
15 for (std::size_t i = 1; i < rank; i++) {
+
16 strides[rank - i - 1] = strides[rank - i] * shape[rank - i];
+
17 }
+
18 return strides;
+
19}
+
20
+
21template <typename Index>
+
22auto linear_to_index(std::size_t linear, const Index &shape) {
+
23 Index index, strides(shape_to_strides(shape));
+
24
+
25 for (std::size_t i = 0; i < rng::size(shape); i++) {
+
26 index[i] = linear / strides[i];
+
27 linear = linear % strides[i];
+
28 }
+
29
+
30 return index;
+
31}
+
32
+
33template <typename Mdspan>
+
34concept mdspan_like = requires(Mdspan &mdspan) {
+
35 mdspan.rank();
+
36 mdspan.extents();
+
37};
+
38
+
39template <std::size_t Rank> using dr_extents = std::array<std::size_t, Rank>;
+
40template <std::size_t Rank> using md_extents = md::dextents<std::size_t, Rank>;
+
41
+
42//
+
43// Mdspan accessor using an iterator
+
44//
+
45template <std::random_access_iterator Iter> class mdspan_iter_accessor {
+
46public:
+
47 using data_handle_type = Iter;
+
48 using reference = std::iter_reference_t<Iter>;
+ +
50
+
51 constexpr mdspan_iter_accessor() noexcept = default;
+
52 constexpr auto access(Iter iter, std::size_t index) const {
+
53 return iter[index];
+
54 }
+
55
+
56 constexpr auto offset(Iter iter, std::size_t index) const noexcept {
+
57 return iter + index;
+
58 }
+
59};
+
60
+
61template <typename M, std::size_t Rank, std::size_t... indexes>
+
62auto make_submdspan_impl(M mdspan, const dr_extents<Rank> &starts,
+
63 const dr_extents<Rank> &ends,
+
64 std::index_sequence<indexes...>) {
+
65 return md::submdspan(mdspan, std::tuple(starts[indexes], ends[indexes])...);
+
66}
+
67
+
68// Mdspan accepts slices, but that is hard to work with because it
+
69// requires parameter packs. Work with starts/size vectors internally
+
70// and use slices at the interface
+
71template <std::size_t Rank>
+
72auto make_submdspan(auto mdspan, const std::array<std::size_t, Rank> &starts,
+
73 const std::array<std::size_t, Rank> &ends) {
+
74 return make_submdspan_impl(mdspan, starts, ends,
+
75 std::make_index_sequence<Rank>{});
+
76}
+
77
+
78template <std::size_t Rank, typename Op>
+
79void mdspan_foreach(md_extents<Rank> extents, Op op,
+
80 dr_extents<Rank> index = dr_extents<Rank>(),
+
81 std::size_t rank = 0) {
+
82 for (index[rank] = 0; index[rank] < extents.extent(rank); index[rank]++) {
+
83 if (rank == Rank - 1) {
+
84 op(index);
+
85 } else {
+
86 mdspan_foreach(extents, op, index, rank + 1);
+
87 }
+
88 }
+
89}
+
90
+
91// Pack mdspan into contiguous container
+
92void mdspan_copy(mdspan_like auto src, std::forward_iterator auto dst) {
+
93 auto pack = [src, &dst](auto index) { *dst++ = src(index); };
+
94 mdspan_foreach<src.rank(), decltype(pack)>(src.extents(), pack);
+
95}
+
96
+
97// unpack contiguous container into mdspan
+
98void mdspan_copy(std::forward_iterator auto src, mdspan_like auto dst) {
+
99 auto unpack = [&src, dst](auto index) { dst(index) = *src++; };
+
100 mdspan_foreach<dst.rank(), decltype(unpack)>(dst.extents(), unpack);
+
101}
+
102
+
103// copy mdspan to mdspan
+
104void mdspan_copy(mdspan_like auto src, mdspan_like auto dst) {
+
105 assert(src.extents() == dst.extents());
+
106 auto copy = [src, dst](auto index) { dst(index) = src(index); };
+
107 mdspan_foreach<src.rank(), decltype(copy)>(src.extents(), copy);
+
108}
+
109
+
110// For operator(), rearrange indices according to template arguments.
+
111//
+
112// For mdtranspose<mdspan2d, 1, 0> a(b);
+
113//
+
114// a(3, 4) will do b(4, 3)
+
115//
+
116template <typename Mdspan, std::size_t... Is>
+
117class mdtranspose : public Mdspan {
+
118public:
+
119 // Inherit constructors from base class
+
120 mdtranspose(Mdspan &mdspan) : Mdspan(mdspan) {}
+
121
+
122 // rearrange indices according to template arguments
+
123 template <std::integral... Indexes>
+
124 auto &operator()(Indexes... indexes) const {
+
125 std::tuple index(indexes...);
+
126 return Mdspan::operator()(std::get<Is>(index)...);
+
127 }
+
128 auto &operator()(std::array<std::size_t, Mdspan::rank()> index) const {
+
129 return Mdspan::operator()(index[Is]...);
+
130 }
+
131
+
132 auto extents() const {
+
133 return md_extents<Mdspan::rank()>(Mdspan::extent(Is)...);
+
134 }
+
135 auto extent(std::size_t d) const { return extents().extent(d); }
+
136};
+
137
+
138} // namespace dr::__detail
+
139
+
140template <dr::__detail::mdspan_like Mdspan>
+
141struct fmt::formatter<Mdspan, char> : public formatter<string_view> {
+
142 template <typename FmtContext>
+
143 auto format(Mdspan mdspan, FmtContext &ctx) const {
+
144 std::array<std::size_t, mdspan.rank()> index;
+
145 rng::fill(index, 0);
+
146 format_mdspan(ctx, mdspan, index, 0);
+
147 return ctx.out();
+
148 }
+
149
+
150 void format_mdspan(auto &ctx, auto mdspan, auto &index,
+
151 std::size_t dim) const {
+
152 for (std::size_t i = 0; i < mdspan.extent(dim); i++) {
+
153 index[dim] = i;
+
154 if (dim == mdspan.rank() - 1) {
+
155 if (i == 0) {
+
156 format_to(ctx.out(), "{}: ", index);
+
157 }
+
158 format_to(ctx.out(), "{:4} ", mdspan(index));
+
159 } else {
+
160 format_mdspan(ctx, mdspan, index, dim + 1);
+
161 }
+
162 }
+
163 format_to(ctx.out(), "\n");
+
164 }
+
165};
+
Definition: mdspan_utils.hpp:45
+
Definition: mdspan_utils.hpp:117
+
Definition: index.hpp:34
+
Definition: mdspan_utils.hpp:34
+
+ + + + diff --git a/doxygen/mdspan__view_8hpp_source.html b/doxygen/mdspan__view_8hpp_source.html new file mode 100644 index 0000000000..e4ec54d9ad --- /dev/null +++ b/doxygen/mdspan__view_8hpp_source.html @@ -0,0 +1,353 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/views/mdspan_view.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
mdspan_view.hpp
+
+
+
1// SPDX-FileCopyrightText: Intel Corporation
+
2//
+
3// SPDX-License-Identifier: BSD-3-Clause
+
4
+
5#pragma once
+
6
+
7#include <dr/detail/mdspan_shim.hpp>
+
8#include <dr/detail/mdspan_utils.hpp>
+
9#include <dr/detail/ranges_shim.hpp>
+
10#include <dr/detail/ranges_utils.hpp>
+
11#include <dr/mhp/containers/distributed_vector.hpp>
+
12
+
13namespace dr::mhp::decomp {
+
14
+
15inline constexpr std::size_t div = std::numeric_limits<std::size_t>::max();
+
16inline constexpr std::size_t all = div - 1;
+
17
+
18} // namespace dr::mhp::decomp
+
19
+
20namespace dr::mhp::__detail {
+
21
+
22//
+
23// Add a local mdspan to the underlying segment
+
24//
+
25template <typename BaseSegment, std::size_t Rank>
+
26class md_segment : public rng::view_interface<md_segment<BaseSegment, Rank>> {
+
27private:
+
28public:
+
29 using index_type = dr::__detail::dr_extents<Rank>;
+
30
+
31 md_segment() {}
+
32 md_segment(index_type origin, BaseSegment segment, index_type tile_shape)
+
33 : base_(segment), origin_(origin),
+
34 mdspan_(local_tile(segment, tile_shape)) {}
+
35
+
36 // view_interface uses below to define everything else
+
37 auto begin() const { return base_.begin(); }
+
38 auto end() const { return base_.end(); }
+
39
+
40 auto halo() const { return dr::mhp::halo(base_); }
+
41
+
42 // mdspan-specific methods
+
43 auto mdspan() const { return mdspan_; }
+
44 auto origin() const { return origin_; }
+
45 // for slices, this would be the underlying mdspan
+
46 auto root_mdspan() const { return mdspan(); }
+
47
+
48private:
+
49 using T = rng::range_value_t<BaseSegment>;
+
50
+
51 static auto local_tile(BaseSegment segment, const index_type &tile_shape) {
+
52 // Undefined behavior if the segments is not local
+
53 T *ptr = dr::ranges::rank(segment) == default_comm().rank()
+
54 ? std::to_address(dr::ranges::local(rng::begin(segment)))
+
55 : nullptr;
+
56 return md::mdspan(ptr, tile_shape);
+
57 }
+
58
+
59 BaseSegment base_;
+
60 index_type origin_;
+
61 md::mdspan<T, dr::__detail::md_extents<Rank>, md::layout_stride> mdspan_;
+
62};
+
63
+
64} // namespace dr::mhp::__detail
+
65
+
66namespace dr::mhp {
+
67
+
68//
+
69// Wrap a distributed range, adding an mdspan and adapting the
+
70// segments to also be mdspans for local access
+
71//
+
72template <distributed_contiguous_range R, std::size_t Rank,
+
73 typename Layout = md::layout_right>
+
74struct mdspan_view : public rng::view_interface<mdspan_view<R, Rank>> {
+
75private:
+
76 using base_type = rng::views::all_t<R>;
+
77 using iterator_type = rng::iterator_t<base_type>;
+
78 using extents_type = md::dextents<std::size_t, Rank>;
+
79 using mdspan_type =
+
80 md::mdspan<iterator_type, extents_type, Layout,
+ +
82 using difference_type = rng::iter_difference_t<iterator_type>;
+
83 using index_type = dr::__detail::dr_extents<Rank>;
+
84
+
85 base_type base_;
+
86 index_type full_shape_;
+
87 index_type tile_shape_;
+
88
+
89 static auto segment_index_to_global_origin(std::size_t linear,
+
90 index_type full_shape,
+
91 index_type tile_shape) {
+
92 index_type grid_shape;
+
93 for (std::size_t i = 0; i < Rank; i++) {
+
94 grid_shape[i] = dr::__detail::partition_up(full_shape[i], tile_shape[i]);
+
95 }
+
96 auto origin = dr::__detail::linear_to_index(linear, grid_shape);
+
97 for (std::size_t i = 0; i < Rank; i++) {
+
98 origin[i] *= tile_shape[i];
+
99 }
+
100
+
101 return origin;
+
102 }
+
103
+
104 static auto make_segments(auto base, auto full_shape, auto tile_shape) {
+
105 auto make_md = [=](auto v) {
+
106 auto clipped = tile_shape;
+
107 std::size_t segment_index = std::get<0>(v);
+
108 std::size_t end = (segment_index + 1) * tile_shape[0];
+
109 if (end > full_shape[0]) {
+
110 clipped[0] -= end - full_shape[0];
+
111 }
+ +
113 segment_index_to_global_origin(segment_index, full_shape, tile_shape),
+
114 std::get<1>(v), clipped);
+
115 };
+
116
+
117 // use bounded_enumerate so we get a std::ranges::common_range
+
118 return dr::__detail::bounded_enumerate(dr::ranges::segments(base)) |
+
119 rng::views::transform(make_md);
+
120 }
+
121 using segments_type = decltype(make_segments(std::declval<base_type>(),
+
122 full_shape_, tile_shape_));
+
123
+
124public:
+
125 mdspan_view(R r, dr::__detail::dr_extents<Rank> full_shape)
+
126 : base_(rng::views::all(std::forward<R>(r))) {
+
127 full_shape_ = full_shape;
+
128
+
129 // Default tile shape splits on leading dimension
+
130 tile_shape_ = full_shape;
+
131 tile_shape_[0] = decomp::div;
+
132
+
133 replace_decomp();
+
134 segments_ = make_segments(base_, full_shape_, tile_shape_);
+
135 }
+
136
+
137 mdspan_view(R r, dr::__detail::dr_extents<Rank> full_shape,
+
138 dr::__detail::dr_extents<Rank> tile_shape)
+
139 : base_(rng::views::all(std::forward<R>(r))), full_shape_(full_shape),
+
140 tile_shape_(tile_shape) {
+
141 replace_decomp();
+
142 segments_ = make_segments(base_, full_shape_, tile_shape_);
+
143 }
+
144
+
145 // Base implements random access range
+
146 auto begin() const { return base_.begin(); }
+
147 auto end() const { return base_.end(); }
+
148 auto operator[](difference_type n) { return base_[n]; }
+
149
+
150 // Add a local mdspan to the base segment
+
151 // Mdspan access to base
+
152 auto mdspan() const { return mdspan_type(rng::begin(base_), full_shape_); }
+
153 static constexpr auto rank() { return Rank; }
+
154
+
155 auto segments() const { return segments_; }
+
156
+
157 // Mdspan access to grid
+
158 auto grid() {
+
159 dr::__detail::dr_extents<Rank> grid_shape;
+
160 for (std::size_t i : rng::views::iota(0u, Rank)) {
+
161 grid_shape[i] =
+
162 dr::__detail::partition_up(full_shape_[i], tile_shape_[i]);
+
163 }
+
164 using grid_iterator_type = rng::iterator_t<segments_type>;
+
165 using grid_type =
+
166 md::mdspan<grid_iterator_type, extents_type, Layout,
+ +
168 return grid_type(rng::begin(segments_), grid_shape);
+
169 }
+
170
+
171private:
+
172 // Replace div with actual value
+
173 void replace_decomp() {
+
174 auto n = std::size_t(rng::size(dr::ranges::segments(base_)));
+
175 for (std::size_t i = 0; i < Rank; i++) {
+
176 if (tile_shape_[i] == decomp::div) {
+
177 tile_shape_[i] = dr::__detail::partition_up(full_shape_[i], n);
+
178 } else if (tile_shape_[i] == decomp::all) {
+
179 tile_shape_[i] = full_shape_[i];
+
180 }
+
181 }
+
182 }
+
183
+
184 segments_type segments_;
+
185};
+
186
+
187template <typename R, std::size_t Rank>
+
188mdspan_view(R &&r, dr::__detail::dr_extents<Rank> extents)
+ +
190
+
191template <typename R, std::size_t Rank>
+
192mdspan_view(R &&r, dr::__detail::dr_extents<Rank> full_shape,
+
193 dr::__detail::dr_extents<Rank> tile_shape)
+ +
195
+
196template <typename R>
+ +
198 dr::distributed_range<R> && requires(R &r) { r.mdspan(); };
+
199
+
200} // namespace dr::mhp
+
201
+
202namespace dr::mhp::views {
+
203
+
204template <std::size_t Rank> class mdspan_adapter_closure {
+
205public:
+
206 mdspan_adapter_closure(dr::__detail::dr_extents<Rank> full_shape,
+
207 dr::__detail::dr_extents<Rank> tile_shape)
+
208 : full_shape_(full_shape), tile_shape_(tile_shape), tile_valid_(true) {}
+
209
+
210 mdspan_adapter_closure(dr::__detail::dr_extents<Rank> full_shape)
+
211 : full_shape_(full_shape) {}
+
212
+
213 template <rng::viewable_range R> auto operator()(R &&r) const {
+
214 if (tile_valid_) {
+
215 return mdspan_view(std::forward<R>(r), full_shape_, tile_shape_);
+
216 } else {
+
217 return mdspan_view(std::forward<R>(r), full_shape_);
+
218 }
+
219 }
+
220
+
221 template <rng::viewable_range R>
+
222 friend auto operator|(R &&r, const mdspan_adapter_closure &closure) {
+
223 return closure(std::forward<R>(r));
+
224 }
+
225
+
226private:
+
227 dr::__detail::dr_extents<Rank> full_shape_;
+
228 dr::__detail::dr_extents<Rank> tile_shape_;
+
229 bool tile_valid_ = false;
+
230};
+
231
+ +
233public:
+
234 template <rng::viewable_range R, typename Shape>
+
235 auto operator()(R &&r, Shape &&full_shape, Shape &&tile_shape) const {
+
236 return mdspan_adapter_closure(std::forward<Shape>(full_shape),
+
237 std::forward<Shape>(tile_shape))(
+
238 std::forward<R>(r));
+
239 }
+
240
+
241 template <rng::viewable_range R, typename Shape>
+
242 auto operator()(R &&r, Shape &&full_shape) const {
+
243 return mdspan_adapter_closure(std::forward<Shape>(full_shape))(
+
244 std::forward<R>(r));
+
245 }
+
246
+
247 template <typename Shape>
+
248 auto operator()(Shape &&full_shape, Shape &&tile_shape) const {
+
249 return mdspan_adapter_closure(std::forward<Shape>(full_shape),
+
250 std::forward<Shape>(tile_shape));
+
251 }
+
252
+
253 template <typename Shape> auto operator()(Shape &&full_shape) const {
+
254 return mdspan_adapter_closure(std::forward<Shape>(full_shape));
+
255 }
+
256};
+
257
+
258inline constexpr auto mdspan = mdspan_fn_{};
+
259
+
260} // namespace dr::mhp::views
+
Definition: mdspan_utils.hpp:45
+
Definition: mdspan_view.hpp:26
+
Definition: mdspan_view.hpp:204
+
Definition: mdspan_view.hpp:232
+
Definition: concepts.hpp:42
+
Definition: concepts.hpp:20
+
Definition: mdspan_view.hpp:197
+
Definition: mdspan_view.hpp:74
+
+ + + + diff --git a/doxygen/memory_8hpp_source.html b/doxygen/memory_8hpp_source.html new file mode 100644 index 0000000000..c99739fab1 --- /dev/null +++ b/doxygen/memory_8hpp_source.html @@ -0,0 +1,190 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail/memory.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Distributed Ranges +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
memory.hpp
+
+
+
1// SPDX-FileCopyrightText: Intel Corporation
+
2//
+
3// SPDX-License-Identifier: BSD-3-Clause
+
4
+
5#pragma once
+
6
+
7#include <cstring>
+
8
+
9namespace dr {
+
10
+
11template <typename T> struct default_memory {
+
12 using value_type = T;
+
13 std::allocator<T> std_allocator;
+
14
+
15 T *allocate(std::size_t size) {
+
16 auto p = std_allocator.allocate(size);
+
17 assert(p != nullptr);
+
18 memset(p, 0, sizeof(T) * size);
+
19 return p;
+
20 }
+
21
+
22 template <typename F> F *allocate(std::size_t size) {
+
23 std::allocator<F> allocator;
+
24 auto p = allocator.allocate(size);
+
25 assert(p != nullptr);
+
26 memset(p, 0, sizeof(F) * size);
+
27 return p;
+
28 }
+
29
+
30 constexpr void deallocate(T *p, std::size_t n) {
+
31 std_allocator.deallocate(p, n);
+
32 }
+
33
+
34 template <typename F> void deallocate(F *p, std::size_t n) {
+
35 std::allocator<F> allocator;
+
36 allocator.deallocate(p, n);
+
37 p = nullptr;
+
38 }
+
39
+
40 void memcpy(void *dst, const void *src, std::size_t numBytes) {
+
41 std::memcpy(dst, src, numBytes);
+
42 }
+
43
+
44 template <typename F> void offload(F lambda) { lambda(); }
+
45};
+
46
+
47#ifdef SYCL_LANGUAGE_VERSION
+
48template <typename T> struct sycl_memory {
+
49 using value_type = T;
+
50 using device_type = sycl::device;
+
51
+
52 sycl::device device_;
+
53 sycl::context context_;
+
54 sycl::usm::alloc kind_;
+
55 std::size_t alignment_;
+
56 sycl::queue offload_queue_;
+
57
+
58 sycl_memory(sycl::queue queue,
+
59 sycl::usm::alloc kind = sycl::usm::alloc::shared,
+
60 std::size_t alignment = 1)
+
61 : device_(queue.get_device()), context_(queue.get_context()), kind_(kind),
+
62 alignment_(alignment), offload_queue_(queue) {}
+
63
+
64 T *allocate(std::size_t n) {
+
65 auto p = sycl::aligned_alloc<T>(alignment_, n, device_, context_, kind_);
+
66 assert(p != nullptr);
+
67 return p;
+
68 }
+
69
+
70 template <typename F> F *allocate(std::size_t n) {
+
71 auto p = sycl::aligned_alloc<F>(alignment_, n, device_, context_, kind_);
+
72 assert(p != nullptr);
+
73 return p;
+
74 }
+
75
+
76 void deallocate(T *p, std::size_t n) {
+
77 assert(p != nullptr);
+
78 sycl::free(p, context_);
+
79 p = nullptr;
+
80 }
+
81
+
82 template <typename F> void deallocate(F *p, std::size_t n) {
+
83 assert(p != nullptr);
+
84 sycl::free(p, context_);
+
85 p = nullptr;
+
86 }
+
87
+
88 void memcpy(void *dst, const void *src, std::size_t numBytes) {
+
89 assert(dst != nullptr);
+
90 assert(src != nullptr);
+
91 offload_queue_.memcpy(dst, src, numBytes).wait();
+
92 }
+
93
+
94 template <typename F> void offload(F lambda) {
+
95 if (kind_ == sycl::usm::alloc::device) {
+
96 offload_queue_.single_task(lambda).wait();
+
97 } else {
+
98 lambda();
+
99 }
+
100 }
+
101};
+
102#endif
+
103
+
104} // namespace dr
+
Definition: memory.hpp:11
+
+ + + + diff --git a/doxygen/menu.js b/doxygen/menu.js new file mode 100644 index 0000000000..b0b26936a0 --- /dev/null +++ b/doxygen/menu.js @@ -0,0 +1,136 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+='
    '; + for (var i in data.children) { + var url; + var link; + link = data.children[i].url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + } else { + url = relPath+link; + } + result+='
  • '+ + data.children[i].text+''+ + makeTree(data.children[i],relPath)+'
  • '; + } + result+='
'; + } + return result; + } + var searchBoxHtml; + if (searchEnabled) { + if (serverSide) { + searchBoxHtml='
'+ + '
'+ + '
 '+ + ''+ + '
'+ + '
'+ + '
'+ + '
'; + } else { + searchBoxHtml='
'+ + ''+ + ' '+ + ''+ + ''+ + ''+ + ''+ + ''+ + '
'; + } + } + + $('#main-nav').before('
'+ + ''+ + ''+ + '
'); + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchBoxHtml) { + $('#main-menu').append('
  • '); + } + var $mainMenuState = $('#main-menu-state'); + var prevWidth = 0; + if ($mainMenuState.length) { + function initResizableIfExists() { + if (typeof initResizable==='function') initResizable(); + } + // animate mobile menu + $mainMenuState.change(function(e) { + var $menu = $('#main-menu'); + var options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = function() { $menu.css('display', 'block') }; + $menu.hide().slideDown(options); + } else { + options['complete'] = function() { $menu.css('display', 'none') }; + $menu.show().slideUp(options); + } + }); + // set default menu visibility + function resetState() { + var $menu = $('#main-menu'); + var $mainMenuState = $('#main-menu-state'); + var newWidth = $(window).outerWidth(); + if (newWidth!=prevWidth) { + if ($(window).outerWidth()<768) { + $mainMenuState.prop('checked',false); $menu.hide(); + $('#searchBoxPos1').html(searchBoxHtml); + $('#searchBoxPos2').hide(); + } else { + $menu.show(); + $('#searchBoxPos1').empty(); + $('#searchBoxPos2').html(searchBoxHtml); + $('#searchBoxPos2').show(); + } + if (typeof searchBox!=='undefined') { + searchBox.CloseResultsWindow(); + } + prevWidth = newWidth; + } + } + $(window).ready(function() { resetState(); initResizableIfExists(); }); + $(window).resize(resetState); + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/doxygen/menudata.js b/doxygen/menudata.js new file mode 100644 index 0000000000..1b1c559b33 --- /dev/null +++ b/doxygen/menudata.js @@ -0,0 +1,36 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Concepts",url:"concepts.html"}, +{text:"Classes",url:"annotated.html",children:[ +{text:"Class List",url:"annotated.html"}, +{text:"Class Index",url:"classes.html"}, +{text:"Class Hierarchy",url:"inherits.html"}, +{text:"Class Members",url:"functions.html",children:[ +{text:"All",url:"functions.html"}, +{text:"Functions",url:"functions_func.html"}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}]}]} diff --git a/doxygen/mhp_2algorithms_2copy_8hpp_source.html b/doxygen/mhp_2algorithms_2copy_8hpp_source.html new file mode 100644 index 0000000000..aef9414c5c --- /dev/null +++ b/doxygen/mhp_2algorithms_2copy_8hpp_source.html @@ -0,0 +1,143 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/algorithms/copy.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    copy.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7#include <dr/detail/ranges_shim.hpp>
    +
    8
    +
    9namespace dr::mhp {
    +
    10
    +
    12void copy(rng::forward_range auto &&in, dr::distributed_iterator auto out) {
    +
    13 if (rng::empty(in)) {
    +
    14 return;
    +
    15 }
    +
    16
    +
    17 auto copy = [](auto &&v) { std::get<1>(v) = std::get<0>(v); };
    +
    18
    +
    19 for_each(views::zip(in, views::counted(out, rng::size(in))), copy);
    +
    20}
    +
    21
    +
    23template <dr::distributed_iterator DI_IN>
    +
    24void copy(DI_IN &&first, DI_IN &&last, dr::distributed_iterator auto &&out) {
    +
    25 copy(rng::subrange(first, last), out);
    +
    26}
    +
    27
    +
    29void copy(std::size_t root, dr::distributed_contiguous_range auto &&in,
    +
    30 std::contiguous_iterator auto out) {
    +
    31 if (default_comm().rank() == root) {
    +
    32 for (const auto &segment : dr::ranges::segments(in)) {
    +
    33 auto sz = rng::size(segment);
    +
    34 rng::begin(segment).get(std::to_address(out), sz);
    +
    35 out += sz;
    +
    36 }
    +
    37 }
    +
    38 barrier();
    +
    39}
    +
    40
    +
    42void copy(std::size_t root, rng::contiguous_range auto &&in,
    + +
    44 if (default_comm().rank() == root) {
    +
    45 auto in_ptr = std::to_address(in.begin());
    +
    46 for (auto remainder = rng::size(in); remainder > 0;) {
    +
    47 auto segment = *(dr::ranges::segments(out).begin());
    +
    48 auto sz = std::min(rng::size(segment), remainder);
    +
    49 assert(sz > 0);
    +
    50 rng::begin(segment).put(in_ptr, sz);
    +
    51 in_ptr += sz;
    +
    52 out += sz;
    +
    53 remainder -= sz;
    +
    54 }
    +
    55 }
    +
    56 barrier();
    +
    57}
    +
    58
    +
    59} // namespace dr::mhp
    +
    Definition: concepts.hpp:51
    +
    Definition: concepts.hpp:42
    +
    Definition: concepts.hpp:31
    +
    + + + + diff --git a/doxygen/mhp_2algorithms_2exclusive__scan_8hpp_source.html b/doxygen/mhp_2algorithms_2exclusive__scan_8hpp_source.html new file mode 100644 index 0000000000..64d6143fbe --- /dev/null +++ b/doxygen/mhp_2algorithms_2exclusive__scan_8hpp_source.html @@ -0,0 +1,136 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/algorithms/exclusive_scan.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    exclusive_scan.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7#include <dr/mhp/algorithms/inclusive_exclusive_scan_impl.hpp>
    +
    8
    +
    9namespace dr::mhp {
    +
    10
    + +
    12 dr::distributed_contiguous_range O, typename T, typename BinaryOp>
    +
    13auto exclusive_scan(R &&r, O &&o, T init, BinaryOp &&binary_op) {
    +
    14 return __detail::inclusive_exclusive_scan_impl_<true>(
    +
    15 std::forward<R>(r), rng::begin(std::forward<O>(o)),
    +
    16 std::forward<BinaryOp>(binary_op), std::optional(init));
    +
    17}
    +
    18
    + + +
    21auto exclusive_scan(R &&r, O &&o, T init) {
    +
    22 return dr::mhp::exclusive_scan(std::forward<R>(r), std::forward<O>(o), init,
    +
    23 std::plus<rng::range_value_t<R>>());
    +
    24}
    +
    25
    +
    26// Distributed iterator versions
    +
    27
    +
    28template <dr::distributed_iterator Iter, dr::distributed_iterator OutputIter,
    +
    29 typename T, typename BinaryOp>
    +
    30OutputIter exclusive_scan(Iter first, Iter last, OutputIter d_first, T init,
    +
    31 BinaryOp &&binary_op) {
    +
    32
    +
    33 return dr::mhp::exclusive_scan(rng::subrange(first, last), d_first,
    +
    34 std::forward<BinaryOp>(binary_op), init);
    +
    35}
    +
    36
    +
    37template <dr::distributed_iterator Iter, dr::distributed_iterator OutputIter,
    +
    38 typename T>
    +
    39OutputIter exclusive_scan(Iter first, Iter last, OutputIter d_first, T init) {
    +
    40 auto dist = rng::distance(first, last);
    +
    41 auto d_last = d_first;
    +
    42 rng::advance(d_last, dist);
    +
    43 dr::mhp::exclusive_scan(rng::subrange(first, last),
    +
    44 rng::subrange(d_first, d_last), init);
    +
    45
    +
    46 return d_last;
    +
    47}
    +
    48
    +
    49} // namespace dr::mhp
    +
    Definition: concepts.hpp:42
    +
    Definition: concepts.hpp:31
    +
    + + + + diff --git a/doxygen/mhp_2algorithms_2fill_8hpp_source.html b/doxygen/mhp_2algorithms_2fill_8hpp_source.html new file mode 100644 index 0000000000..b3698d87ce --- /dev/null +++ b/doxygen/mhp_2algorithms_2fill_8hpp_source.html @@ -0,0 +1,117 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/algorithms/fill.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    fill.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7#include <algorithm>
    +
    8#include <execution>
    +
    9#include <type_traits>
    +
    10#include <utility>
    +
    11
    +
    12#include <dr/concepts/concepts.hpp>
    +
    13#include <dr/detail/logger.hpp>
    +
    14#include <dr/detail/onedpl_direct_iterator.hpp>
    +
    15#include <dr/detail/ranges_shim.hpp>
    +
    16#include <dr/mhp/global.hpp>
    +
    17
    +
    18namespace dr::mhp {
    +
    19
    +
    21auto fill(dr::distributed_contiguous_range auto &&dr, auto value) {
    +
    22 for_each(dr, [=](auto &v) { v = value; });
    +
    23 return rng::end(dr);
    +
    24}
    +
    25
    +
    27template <dr::distributed_iterator DI>
    +
    28auto fill(DI first, DI last, auto value) {
    +
    29 mhp::fill(rng::subrange(first, last), value);
    +
    30 return last;
    +
    31}
    +
    32
    +
    33} // namespace dr::mhp
    +
    Definition: concepts.hpp:42
    +
    + + + + diff --git a/doxygen/mhp_2algorithms_2for__each_8hpp_source.html b/doxygen/mhp_2algorithms_2for__each_8hpp_source.html new file mode 100644 index 0000000000..435a1bd603 --- /dev/null +++ b/doxygen/mhp_2algorithms_2for__each_8hpp_source.html @@ -0,0 +1,140 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/algorithms/for_each.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    for_each.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7#include <algorithm>
    +
    8#include <execution>
    +
    9#include <type_traits>
    +
    10#include <utility>
    +
    11
    +
    12#include <dr/concepts/concepts.hpp>
    +
    13#include <dr/detail/logger.hpp>
    +
    14#include <dr/detail/onedpl_direct_iterator.hpp>
    +
    15#include <dr/detail/ranges_shim.hpp>
    +
    16#include <dr/detail/sycl_utils.hpp>
    +
    17#include <dr/mhp/global.hpp>
    +
    18
    +
    19namespace dr::mhp {
    +
    20
    +
    22void for_each(dr::distributed_range auto &&dr, auto op) {
    +
    23 dr::drlog.debug("for_each: parallel execution\n");
    +
    24 if (rng::empty(dr)) {
    +
    25 return;
    +
    26 }
    +
    27 assert(aligned(dr));
    +
    28
    +
    29 for (const auto &s : local_segments(dr)) {
    +
    30 if (mhp::use_sycl()) {
    +
    31 dr::drlog.debug(" using sycl\n");
    +
    32
    +
    33 assert(rng::distance(s) > 0);
    +
    34#ifdef SYCL_LANGUAGE_VERSION
    +
    35 dr::__detail::parallel_for(
    +
    36 dr::mhp::sycl_queue(), sycl::range<1>(rng::distance(s)),
    +
    37 [first = rng::begin(s), op](auto idx) { op(first[idx]); })
    +
    38 .wait();
    +
    39#else
    +
    40 assert(false);
    +
    41#endif
    +
    42 } else {
    +
    43 dr::drlog.debug(" using cpu\n");
    +
    44 rng::for_each(s, op);
    +
    45 }
    +
    46 }
    +
    47 barrier();
    +
    48}
    +
    49
    +
    51template <dr::distributed_iterator DI>
    +
    52void for_each(DI first, DI last, auto op) {
    +
    53 mhp::for_each(rng::subrange(first, last), op);
    +
    54}
    +
    55
    +
    56} // namespace dr::mhp
    +
    Definition: concepts.hpp:20
    +
    + + + + diff --git a/doxygen/mhp_2algorithms_2inclusive__scan_8hpp_source.html b/doxygen/mhp_2algorithms_2inclusive__scan_8hpp_source.html new file mode 100644 index 0000000000..72f5ed1850 --- /dev/null +++ b/doxygen/mhp_2algorithms_2inclusive__scan_8hpp_source.html @@ -0,0 +1,158 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/algorithms/inclusive_scan.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    inclusive_scan.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7#include <dr/mhp/algorithms/inclusive_exclusive_scan_impl.hpp>
    +
    8
    +
    9namespace dr::mhp {
    +
    10
    + +
    12 dr::distributed_contiguous_range O, typename BinaryOp, typename T>
    +
    13auto inclusive_scan(R &&r, O &&o, BinaryOp &&binary_op, T init) {
    +
    14 return __detail::inclusive_exclusive_scan_impl_<false>(
    +
    15 std::forward<R>(r), rng::begin(std::forward<O>(o)),
    +
    16 std::forward<BinaryOp>(binary_op), std::optional(init));
    +
    17}
    +
    18
    + +
    20 dr::distributed_contiguous_range O, typename BinaryOp>
    +
    21auto inclusive_scan(R &&r, O &&o, BinaryOp &&binary_op) {
    +
    22 return __detail::inclusive_exclusive_scan_impl_<false>(
    +
    23 std::forward<R>(r), rng::begin(std::forward<O>(o)),
    +
    24 std::forward<BinaryOp>(binary_op));
    +
    25}
    +
    26
    + + +
    29auto inclusive_scan(R &&r, O &&o) {
    +
    30 return dr::mhp::inclusive_scan(std::forward<R>(r), std::forward<O>(o),
    +
    31 std::plus<rng::range_value_t<R>>());
    +
    32}
    +
    33
    +
    34// Distributed iterator versions
    +
    35
    +
    36template <dr::distributed_iterator Iter, dr::distributed_iterator OutputIter,
    +
    37 typename BinaryOp, typename T>
    +
    38OutputIter inclusive_scan(Iter first, Iter last, OutputIter d_first,
    +
    39 BinaryOp &&binary_op, T init) {
    +
    40
    +
    41 return dr::mhp::inclusive_scan(rng::subrange(first, last), d_first,
    +
    42 std::forward<BinaryOp>(binary_op), init);
    +
    43}
    +
    44
    +
    45template <dr::distributed_iterator Iter, dr::distributed_iterator OutputIter,
    +
    46 typename BinaryOp>
    +
    47OutputIter inclusive_scan(Iter first, Iter last, OutputIter d_first,
    +
    48 BinaryOp &&binary_op) {
    +
    49
    +
    50 auto dist = rng::distance(first, last);
    +
    51 auto d_last = d_first;
    +
    52 rng::advance(d_last, dist);
    +
    53 dr::mhp::inclusive_scan(rng::subrange(first, last),
    +
    54 rng::subrange(d_first, d_last),
    +
    55 std::forward<BinaryOp>(binary_op));
    +
    56
    +
    57 return d_last;
    +
    58}
    +
    59
    +
    60template <dr::distributed_iterator Iter, dr::distributed_iterator OutputIter>
    +
    61OutputIter inclusive_scan(Iter first, Iter last, OutputIter d_first) {
    +
    62 auto dist = rng::distance(first, last);
    +
    63 auto d_last = d_first;
    +
    64 rng::advance(d_last, dist);
    +
    65 dr::mhp::inclusive_scan(rng::subrange(first, last),
    +
    66 rng::subrange(d_first, d_last));
    +
    67
    +
    68 return d_last;
    +
    69}
    +
    70
    +
    71} // namespace dr::mhp
    +
    Definition: concepts.hpp:42
    +
    Definition: concepts.hpp:31
    +
    + + + + diff --git a/doxygen/mhp_2algorithms_2iota_8hpp_source.html b/doxygen/mhp_2algorithms_2iota_8hpp_source.html new file mode 100644 index 0000000000..afde6055c2 --- /dev/null +++ b/doxygen/mhp_2algorithms_2iota_8hpp_source.html @@ -0,0 +1,120 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/algorithms/iota.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    iota.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7#include <algorithm>
    +
    8#include <execution>
    +
    9#include <type_traits>
    +
    10#include <utility>
    +
    11
    +
    12#include <dr/concepts/concepts.hpp>
    +
    13#include <dr/detail/logger.hpp>
    +
    14#include <dr/detail/onedpl_direct_iterator.hpp>
    +
    15#include <dr/detail/ranges_shim.hpp>
    +
    16#include <dr/mhp/global.hpp>
    +
    17
    +
    18namespace dr::mhp {
    +
    19
    +
    21template <dr::distributed_range R, std::integral T> void iota(R &&r, T value) {
    +
    22 auto iota_view = rng::views::iota(value, T(value + rng::distance(r)));
    +
    23
    +
    24 for_each(views::zip(iota_view, r), [](auto &&elem) {
    +
    25 auto &&[idx, v] = elem;
    +
    26 v = idx;
    +
    27 });
    +
    28}
    +
    29
    +
    31template <dr::distributed_iterator Iter, std::integral T>
    +
    32void iota(Iter begin, Iter end, T value) {
    +
    33 auto r = rng::subrange(begin, end);
    +
    34 iota(r, value);
    +
    35}
    +
    36
    +
    37} // namespace dr::mhp
    +
    + + + + diff --git a/doxygen/mhp_2algorithms_2reduce_8hpp_source.html b/doxygen/mhp_2algorithms_2reduce_8hpp_source.html new file mode 100644 index 0000000000..88d7af3467 --- /dev/null +++ b/doxygen/mhp_2algorithms_2reduce_8hpp_source.html @@ -0,0 +1,292 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/algorithms/reduce.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    reduce.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7namespace dr::mhp::__detail {
    +
    8
    +
    9inline auto std_reduce(rng::forward_range auto &&r, auto &&binary_op) {
    +
    10 using value_type = rng::range_value_t<decltype(r)>;
    +
    11 if (rng::empty(r)) {
    +
    12 return value_type{};
    +
    13 } else {
    +
    14 auto skip1 = rng::begin(r);
    +
    15 skip1++;
    +
    16 // Explicit cast from distributed_vector reference to value_type
    +
    17 return std::reduce(std::execution::par_unseq, skip1, rng::end(r),
    +
    18 value_type(*rng::begin(r)), binary_op);
    +
    19 }
    +
    20}
    +
    21
    +
    22inline auto dpl_reduce(rng::forward_range auto &&r, auto &&binary_op) {
    +
    23 rng::range_value_t<decltype(r)> none{};
    +
    24#ifdef SYCL_LANGUAGE_VERSION
    +
    25 if (rng::empty(r)) {
    +
    26 return none;
    +
    27 } else {
    +
    28 using T = rng::range_value_t<decltype(r)>;
    +
    29 using Fn = decltype(binary_op);
    +
    30 if constexpr (sycl::has_known_identity_v<Fn, T>) {
    +
    31 dr::drlog.debug(" known identity\n");
    +
    32 return std::reduce(dpl_policy(),
    +
    33 dr::__detail::direct_iterator(rng::begin(r)),
    + +
    35 sycl::known_identity_v<Fn, T>, binary_op);
    +
    36 } else {
    +
    37 dr::drlog.debug(" peel 1st value\n");
    +
    38 return std::reduce(dpl_policy(),
    +
    39 dr::__detail::direct_iterator(rng::begin(r) + 1),
    + +
    41 sycl_get(*rng::begin(r)), binary_op);
    +
    42 }
    +
    43 }
    +
    44#else
    +
    45 assert(false);
    +
    46 return none;
    +
    47#endif
    +
    48}
    +
    49
    +
    51template <dr::distributed_range DR>
    +
    52auto reduce(std::size_t root, bool root_provided, DR &&dr, auto &&binary_op) {
    +
    53 using value_type = rng::range_value_t<DR>;
    +
    54 auto comm = default_comm();
    +
    55
    +
    56 if (rng::empty(dr)) {
    +
    57 return rng::range_value_t<DR>{};
    +
    58 }
    +
    59
    +
    60 if (aligned(dr)) {
    +
    61 dr::drlog.debug("Parallel reduce\n");
    +
    62
    +
    63 // Reduce the local segments
    +
    64 auto reduce = [=](auto &&r) {
    +
    65 assert(rng::size(r) > 0);
    +
    66 if (mhp::use_sycl()) {
    +
    67 dr::drlog.debug(" with DPL\n");
    +
    68 return dpl_reduce(r, binary_op);
    +
    69 } else {
    +
    70 dr::drlog.debug(" with CPU\n");
    +
    71 return std_reduce(r, binary_op);
    +
    72 }
    +
    73 };
    +
    74 auto locals = rng::views::transform(local_segments(dr), reduce);
    +
    75 auto local = std_reduce(locals, binary_op);
    +
    76
    +
    77 std::vector<value_type> all(comm.size());
    +
    78 if (root_provided) {
    +
    79 // Everyone gathers to root, only root reduces
    +
    80 comm.gather(local, std::span{all}, root);
    +
    81 if (root == comm.rank()) {
    +
    82 return std_reduce(all, binary_op);
    +
    83 } else {
    +
    84 return value_type{};
    +
    85 }
    +
    86 } else {
    +
    87 // Everyone gathers and everyone reduces
    +
    88 comm.all_gather(local, all);
    +
    89 return std_reduce(all, binary_op);
    +
    90 }
    +
    91 } else {
    +
    92 dr::drlog.debug("Serial reduce\n");
    +
    93 value_type result{};
    +
    94 if (!root_provided || root == comm.rank()) {
    +
    95 result = std_reduce(dr, binary_op);
    +
    96 }
    +
    97 barrier();
    +
    98 return result;
    +
    99 }
    +
    100}
    +
    101
    +
    102// handles init
    +
    103template <typename T, dr::distributed_range DR>
    +
    104T reduce(std::size_t root, bool root_provided, DR &&dr, T init,
    +
    105 auto &&binary_op = std::plus<>{}) {
    +
    106 return binary_op(init, reduce(root, root_provided, dr, binary_op));
    +
    107}
    +
    108
    +
    109inline void
    +
    110#if defined(__GNUC__) && !defined(__clang__)
    +
    111 __attribute__((optimize(0)))
    +
    112#endif
    +
    113 no_optimize(auto x) {
    +
    114}
    +
    115
    +
    116}; // namespace dr::mhp::__detail
    +
    117
    +
    118namespace dr::mhp {
    +
    119
    +
    120//
    +
    121// Ranges
    +
    122//
    +
    123
    +
    124// range, init, and binary op, w/wo root
    +
    125
    +
    127template <typename T, dr::distributed_range DR>
    +
    128auto reduce(std::size_t root, DR &&dr, T init, auto &&binary_op) {
    +
    129 return __detail::reduce(root, true, std::forward<DR>(dr), init, binary_op);
    +
    130}
    +
    132template <typename T, dr::distributed_range DR>
    +
    133auto reduce(DR &&dr, T init, auto &&binary_op) {
    +
    134 return __detail::reduce(0, false, std::forward<DR>(dr), init, binary_op);
    +
    135}
    +
    136
    +
    137// range, init, w/wo root
    +
    138
    +
    140template <typename T, dr::distributed_range DR>
    +
    141auto reduce(std::size_t root, DR &&dr, T init) {
    +
    142 return __detail::reduce(root, true, std::forward<DR>(dr), init,
    +
    143 std::plus<>{});
    +
    144}
    +
    146template <typename T, dr::distributed_range DR> auto reduce(DR &&dr, T init) {
    +
    147 return __detail::reduce(0, false, std::forward<DR>(dr), init, std::plus<>{});
    +
    148}
    +
    149
    +
    150// range, w/wo root
    +
    151
    +
    153template <dr::distributed_range DR> auto reduce(std::size_t root, DR &&dr) {
    +
    154 return __detail::reduce(root, true, std::forward<DR>(dr), std::plus<>{});
    +
    155}
    +
    156
    +
    158template <dr::distributed_range DR> auto reduce(DR &&dr) {
    +
    159 auto x = __detail::reduce(0, false, std::forward<DR>(dr), std::plus<>{});
    +
    160
    +
    161 // The code below avoids an issue where DotProduct_ZipReduce_DR
    +
    162 // fails with gcc11. From debugging, I can see that the call to
    +
    163 // __detail::reduce above computes the correct value, but this
    +
    164 // function returns a bad value. My theory is that the problem is
    +
    165 // related to tail call optimization and the function below disables
    +
    166 // the optimization.
    +
    167 __detail::no_optimize(x);
    +
    168
    +
    169 return x;
    +
    170}
    +
    171
    +
    172//
    +
    173// Iterators
    +
    174//
    +
    175
    +
    176// range, init, and binary op, w/wo root
    +
    177
    +
    179template <typename T, dr::distributed_iterator DI>
    +
    180auto reduce(std::size_t root, DI first, DI last, T init, auto &&binary_op) {
    +
    181 return __detail::reduce(root, true, rng::subrange(first, last), init,
    +
    182 binary_op);
    +
    183}
    +
    185template <typename T, dr::distributed_iterator DI>
    +
    186auto reduce(DI first, DI last, T init, auto &&binary_op) {
    +
    187 return __detail::reduce(0, false, rng::subrange(first, last), init,
    +
    188 binary_op);
    +
    189}
    +
    190
    +
    191// range, init, w/wo root
    +
    192
    +
    194template <typename T, dr::distributed_iterator DI>
    +
    195auto reduce(std::size_t root, DI first, DI last, T init) {
    +
    196 return __detail::reduce(root, true, rng::subrange(first, last), init,
    +
    197 std::plus<>{});
    +
    198}
    +
    200template <typename T, dr::distributed_iterator DI>
    +
    201auto reduce(DI first, DI last, T init) {
    +
    202 return __detail::reduce(0, false, rng::subrange(first, last), init,
    +
    203 std::plus<>{});
    +
    204}
    +
    205
    +
    206// range, w/wo root
    +
    207
    +
    209template <dr::distributed_iterator DI>
    +
    210auto reduce(std::size_t root, DI first, DI last) {
    +
    211 return __detail::reduce(root, true, rng::subrange(first, last),
    +
    212 std::plus<>{});
    +
    213}
    +
    215template <dr::distributed_iterator DI> auto reduce(DI first, DI last) {
    +
    216 return __detail::reduce(0, false, rng::subrange(first, last), std::plus<>{});
    +
    217}
    +
    218
    +
    219} // namespace dr::mhp
    +
    Definition: onedpl_direct_iterator.hpp:15
    +
    + + + + diff --git a/doxygen/mhp_2algorithms_2sort_8hpp_source.html b/doxygen/mhp_2algorithms_2sort_8hpp_source.html new file mode 100644 index 0000000000..07cff0961f --- /dev/null +++ b/doxygen/mhp_2algorithms_2sort_8hpp_source.html @@ -0,0 +1,396 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/algorithms/sort.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    sort.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7#ifdef SYCL_LANGUAGE_VERSION
    +
    8#include <dr/shp/init.hpp>
    +
    9#include <oneapi/dpl/algorithm>
    +
    10#include <oneapi/dpl/execution>
    +
    11#include <oneapi/dpl/iterator>
    +
    12#endif
    +
    13
    +
    14#include <mpi.h>
    +
    15
    +
    16#include <algorithm>
    +
    17#include <utility>
    +
    18
    +
    19#include <dr/concepts/concepts.hpp>
    +
    20#include <dr/detail/logger.hpp>
    +
    21#include <dr/detail/onedpl_direct_iterator.hpp>
    +
    22#include <dr/detail/ranges_shim.hpp>
    +
    23#include <dr/mhp/global.hpp>
    +
    24
    +
    25namespace dr::mhp {
    +
    26
    +
    27namespace __detail {
    +
    28
    +
    29template <rng::forward_range R, typename Compare>
    +
    30void local_sort(R &r, Compare &&comp) {
    +
    31 if (rng::size(r) >= 2) {
    +
    32 if (mhp::use_sycl()) {
    +
    33#ifdef SYCL_LANGUAGE_VERSION
    +
    34 auto policy = dpl_policy();
    +
    35 auto &&local_segment = dr::ranges::__detail::local(r);
    +
    36 drlog.debug("GPU dpl::sort(), size {}\n", rng::size(r));
    +
    37 oneapi::dpl::sort(
    +
    38 policy, dr::__detail::direct_iterator(rng::begin(local_segment)),
    +
    39 dr::__detail::direct_iterator(rng::end(local_segment)), comp);
    +
    40#else
    +
    41 assert(false);
    +
    42#endif
    +
    43 } else {
    +
    44 drlog.debug("cpu rng::sort, size {}\n", rng::size(r));
    +
    45 rng::sort(rng::begin(r), rng::end(r), comp);
    +
    46 }
    +
    47 }
    +
    48}
    +
    49
    +
    50// TODO: quite a long function, refactor to make the code more clear
    +
    51template <dr::distributed_range R, typename Compare>
    +
    52void dist_sort(R &r, Compare &&comp) {
    +
    53 using valT = typename R::value_type;
    +
    54
    +
    55 const std::size_t _comm_rank = default_comm().rank();
    +
    56 const std::size_t _comm_size = default_comm().size(); // dr-style ignore
    +
    57
    +
    58 auto &&lsegment = local_segment(r);
    +
    59 /* sort local segment */
    +
    60
    +
    61 __detail::local_sort(lsegment, comp);
    +
    62
    +
    63 std::vector<valT> vec_lmedians(_comm_size + 1);
    +
    64 std::vector<valT> vec_gmedians((_comm_size + 1) * _comm_size);
    +
    65
    +
    66 const double _step_m = static_cast<double>(rng::size(lsegment)) /
    +
    67 static_cast<double>(_comm_size);
    +
    68
    +
    69 /* calculate splitting values and indices - find n-1 dividers splitting each
    +
    70 * segment into equal parts */
    +
    71
    +
    72 for (std::size_t _i = 0; _i < rng::size(vec_lmedians); _i++) {
    +
    73 // vec_lmedians[_i] = lsegment[(_i + 1) * _step_m];
    +
    74 vec_lmedians[_i] = lsegment[_i * _step_m];
    +
    75 }
    +
    76 vec_lmedians.back() = lsegment.back();
    +
    77
    +
    78 default_comm().all_gather(vec_lmedians, vec_gmedians);
    +
    79
    +
    80 rng::sort(rng::begin(vec_gmedians), rng::end(vec_gmedians), comp);
    +
    81
    +
    82 /* find splitting values - medians of dividers */
    +
    83
    +
    84 std::vector<valT> vec_split_v(_comm_size - 1);
    +
    85
    +
    86 for (std::size_t _i = 0; _i < _comm_size - 1; _i++) {
    +
    87 vec_split_v[_i] = vec_gmedians[(_i + 1) * (_comm_size + 1) - 1];
    +
    88 }
    +
    89
    +
    90 /* calculate splitting indices (start of buffers) and sizes of buffers to send
    +
    91 */
    +
    92
    +
    93 std::vector<std::size_t> vec_split_i(_comm_size, 0);
    +
    94 std::vector<std::size_t> vec_split_s(_comm_size, 0);
    +
    95
    +
    96 std::size_t segidx = 0, vidx = 1;
    +
    97
    +
    98 while (vidx < _comm_size && segidx < rng::size(lsegment)) {
    +
    99 assert(segidx < rng::size(lsegment));
    +
    100 if (comp(vec_split_v[vidx - 1], *(lsegment.begin() + segidx))) {
    +
    101 vec_split_i[vidx] = segidx;
    +
    102 vec_split_s[vidx - 1] = vec_split_i[vidx] - vec_split_i[vidx - 1];
    +
    103 vidx++;
    +
    104 } else {
    +
    105 segidx++;
    +
    106 }
    +
    107 }
    +
    108 assert(rng::size(lsegment) > vec_split_i[vidx - 1]);
    +
    109 vec_split_s[vidx - 1] = rng::size(lsegment) - vec_split_i[vidx - 1];
    +
    110
    +
    111 /* send data size to each node */
    +
    112 std::vector<std::size_t> vec_rsizes(_comm_size, 0);
    +
    113 std::vector<std::size_t> vec_rindices(_comm_size, 0); // recv buffers
    +
    114
    +
    115 default_comm().alltoall(vec_split_s, vec_rsizes, 1);
    +
    116
    +
    117 std::exclusive_scan(vec_rsizes.begin(), vec_rsizes.end(),
    +
    118 vec_rindices.begin(), 0);
    +
    119
    +
    120 // const std::size_t _recv_elems =
    +
    121 // std::reduce(vec_rsizes.begin(), vec_rsizes.end());
    +
    122
    +
    123 const std::size_t _recv_elems = vec_rindices.back() + vec_rsizes.back();
    +
    124
    +
    125 /* send and receive data belonging to each node, then redistribute
    +
    126 * data to achieve size of data equal to size of local segment */
    +
    127
    +
    128 std::vector<std::size_t> vec_recv_elems(_comm_size);
    +
    129 MPI_Request req_recvelems;
    +
    130 MPI_Status stat_recvelemes;
    +
    131
    +
    132 default_comm().i_all_gather(_recv_elems, vec_recv_elems, &req_recvelems);
    +
    133
    +
    134#ifdef SYCL_LANGUAGE_VERSION
    +
    135 auto policy = dpl_policy();
    +
    136 sycl::usm_allocator<valT, sycl::usm::alloc::host> alloc(policy.queue());
    +
    137 std::vector<valT, decltype(alloc)> vec_recvdata(_recv_elems, alloc);
    +
    138#else
    +
    139 std::vector<valT> vec_recvdata(_recv_elems);
    +
    140#endif
    +
    141
    +
    142 default_comm().alltoallv(lsegment, vec_split_s, vec_split_i, vec_recvdata,
    +
    143 vec_rsizes, vec_rindices);
    +
    144
    +
    145 /* vec recvdata is partially sorted, implementation of merge on GPU is
    +
    146 * desirable */
    +
    147 __detail::local_sort(vec_recvdata, comp);
    +
    148
    +
    149 MPI_Wait(&req_recvelems, &stat_recvelemes);
    +
    150
    +
    151 const std::size_t _total_elems =
    +
    152 std::reduce(vec_recv_elems.begin(), vec_recv_elems.end());
    +
    153
    +
    154 assert(_total_elems == rng::size(r));
    +
    155
    +
    156 std::vector<int> vec_shift(_comm_size - 1);
    +
    157
    +
    158 const auto desired_elems_num = (_total_elems + _comm_size - 1) / _comm_size;
    +
    159
    +
    160 vec_shift[0] = desired_elems_num - vec_recv_elems[0];
    +
    161 for (std::size_t _i = 1; _i < _comm_size - 1; _i++) {
    +
    162 vec_shift[_i] = vec_shift[_i - 1] + desired_elems_num - vec_recv_elems[_i];
    +
    163 }
    +
    164
    +
    165 const int shift_left = _comm_rank == 0 ? 0 : -vec_shift[_comm_rank - 1];
    +
    166 const int shift_right =
    +
    167 _comm_rank == _comm_size - 1 ? 0 : vec_shift[_comm_rank];
    +
    168
    +
    169 MPI_Request req_l, req_r;
    +
    170 MPI_Status stat_l, stat_r;
    +
    171 const communicator::tag t = communicator::tag::halo_index;
    +
    172
    +
    173#ifdef SYCL_LANGUAGE_VERSION
    +
    174 std::vector<valT, decltype(alloc)> vec_left(std::max(shift_left, 0), alloc);
    +
    175 std::vector<valT, decltype(alloc)> vec_right(std::max(shift_right, 0), alloc);
    +
    176#else
    +
    177 std::vector<valT> vec_left(std::max(shift_left, 0));
    +
    178 std::vector<valT> vec_right(std::max(shift_right, 0));
    +
    179#endif
    +
    180
    +
    181 if (static_cast<int>(rng::size(vec_recvdata)) < -shift_left) {
    +
    182 // Too little data in recv buffer to shift left - first get from right, then
    +
    183 // send left
    +
    184 drlog.debug("Get from right first, recvdata size {} shl {}\n",
    +
    185 rng::size(vec_recvdata), -shift_left);
    +
    186 // ** This will never happen, because values eq to split go left **
    +
    187 assert(false);
    +
    188 } else if (static_cast<int>(rng::size(vec_recvdata)) < -shift_right) {
    +
    189 // Too little data in buffer to shift right - first get from left, then send
    +
    190 // right
    +
    191 assert(shift_left > 0);
    +
    192 default_comm().irecv(vec_left, _comm_rank - 1, t, &req_l);
    +
    193 MPI_Wait(&req_l, &stat_l);
    +
    194
    +
    195 vec_left.insert(vec_left.end(), vec_recvdata.begin(), vec_recvdata.end());
    +
    196 std::swap(vec_left, vec_recvdata);
    +
    197 vec_left.clear();
    +
    198
    +
    199 default_comm().isend((valT *)(vec_recvdata.data()) +
    +
    200 rng::size(vec_recvdata) + shift_right,
    +
    201 -shift_right, _comm_rank + 1, t, &req_r);
    +
    202 MPI_Wait(&req_r, &stat_r);
    +
    203 } else {
    +
    204 // enough data in recv buffer
    +
    205
    +
    206 if (shift_left < 0) {
    +
    207 default_comm().isend(vec_recvdata.data(), -shift_left, _comm_rank - 1, t,
    +
    208 &req_l);
    +
    209 } else if (shift_left > 0) {
    +
    210 default_comm().irecv(vec_left, _comm_rank - 1, t, &req_l);
    +
    211 }
    +
    212
    +
    213 if (shift_right > 0) {
    +
    214 default_comm().irecv(vec_right, _comm_rank + 1, t, &req_r);
    +
    215 } else if (shift_right < 0) {
    +
    216 default_comm().isend((valT *)(vec_recvdata.data()) +
    +
    217 rng::size(vec_recvdata) + shift_right,
    +
    218 -shift_right, _comm_rank + 1, t, &req_r);
    +
    219 }
    +
    220
    +
    221 if (shift_left != 0)
    +
    222 MPI_Wait(&req_l, &stat_l);
    +
    223 if (shift_right != 0)
    +
    224 MPI_Wait(&req_r, &stat_r);
    +
    225 }
    +
    226
    +
    227 const std::size_t invalidate_left = std::max(-shift_left, 0);
    +
    228 const std::size_t invalidate_right = std::max(-shift_right, 0);
    +
    229
    +
    230 const std::size_t size_l = rng::size(vec_left);
    +
    231 const std::size_t size_r = rng::size(vec_right);
    +
    232 const std::size_t size_d =
    +
    233 rng::size(vec_recvdata) - (invalidate_left + invalidate_right);
    +
    234
    +
    235 if (mhp::use_sycl()) {
    +
    236#ifdef SYCL_LANGUAGE_VERSION
    +
    237 sycl::event e_l, e_d, e_r;
    +
    238
    +
    239 if (size_l > 0)
    +
    240 e_l = sycl_queue().copy(vec_left.data(), lsegment.data(), size_l);
    +
    241 if (size_r > 0)
    +
    242 e_r = sycl_queue().copy(vec_right.data(),
    +
    243 lsegment.data() + size_l + size_d, size_r);
    +
    244 e_d = sycl_queue().copy(vec_recvdata.data() + invalidate_left,
    +
    245 lsegment.data() + size_l, size_d);
    +
    246
    +
    247 if (size_l > 0)
    +
    248 e_l.wait();
    +
    249 if (size_r > 0)
    +
    250 e_r.wait();
    +
    251 e_d.wait();
    +
    252
    +
    253#else
    +
    254 assert(false);
    +
    255#endif
    +
    256 } else {
    +
    257 if (size_l > 0)
    +
    258 std::memcpy(lsegment.data(), vec_left.data(), size_l * sizeof(valT));
    +
    259 if (size_r > 0)
    +
    260 std::memcpy(lsegment.data() + size_l + size_d, vec_right.data(),
    +
    261 size_r * sizeof(valT));
    +
    262
    +
    263 std::memcpy(lsegment.data() + size_l, vec_recvdata.data() + invalidate_left,
    +
    264 size_d * sizeof(valT));
    +
    265 }
    +
    266
    +
    267} // __detail::dist_sort
    +
    268
    +
    269} // namespace __detail
    +
    270
    +
    271template <dr::distributed_range R, typename Compare = std::less<>>
    +
    272void sort(R &r, Compare &&comp = Compare()) {
    +
    273
    +
    274 using valT = typename R::value_type;
    +
    275
    +
    276 std::size_t _comm_rank = default_comm().rank();
    +
    277 std::size_t _comm_size = default_comm().size(); // dr-style ignore
    +
    278
    +
    279 if (_comm_size == 1) {
    +
    280 drlog.debug("mhp::sort() - single node\n");
    +
    281 auto &&lsegment = local_segment(r);
    +
    282 __detail::local_sort(lsegment, comp);
    +
    283
    +
    284 } else if (rng::size(r) <= (_comm_size - 1) * (_comm_size - 1)) {
    +
    285 /* Distributed vector of size <= (comm_size-1) * (comm_size-1) may have
    +
    286 * 0-size local segments. It is also small enough to prefer sequential sort
    +
    287 */
    +
    288 drlog.debug("mhp::sort() - local sort\n");
    +
    289 std::vector<valT> vec_recvdata(rng::size(r));
    +
    290 dr::mhp::copy(0, r, rng::begin(vec_recvdata));
    +
    291
    +
    292 if (_comm_rank == 0) {
    +
    293 rng::sort(vec_recvdata, comp);
    +
    294 }
    +
    295 dr::mhp::barrier();
    +
    296 dr::mhp::copy(0, vec_recvdata, rng::begin(r));
    +
    297
    +
    298 } else {
    +
    299 drlog.debug("mhp::sort() - dist sort\n");
    +
    300 __detail::dist_sort(r, comp);
    +
    301 dr::mhp::barrier();
    +
    302 }
    +
    303}
    +
    304
    +
    305template <dr::distributed_iterator RandomIt, typename Compare = std::less<>>
    +
    306void sort(RandomIt first, RandomIt last, Compare comp = Compare()) {
    +
    307 sort(rng::subrange(first, last), comp);
    +
    308}
    +
    309
    +
    310} // namespace dr::mhp
    +
    Definition: onedpl_direct_iterator.hpp:15
    +
    + + + + diff --git a/doxygen/mhp_2algorithms_2transform_8hpp_source.html b/doxygen/mhp_2algorithms_2transform_8hpp_source.html new file mode 100644 index 0000000000..d7449a4b89 --- /dev/null +++ b/doxygen/mhp_2algorithms_2transform_8hpp_source.html @@ -0,0 +1,127 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/algorithms/transform.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    transform.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7#include <algorithm>
    +
    8#include <execution>
    +
    9#include <type_traits>
    +
    10#include <utility>
    +
    11
    +
    12#include <dr/concepts/concepts.hpp>
    +
    13#include <dr/detail/logger.hpp>
    +
    14#include <dr/detail/onedpl_direct_iterator.hpp>
    +
    15#include <dr/detail/ranges_shim.hpp>
    +
    16#include <dr/mhp/global.hpp>
    +
    17
    +
    18namespace dr::mhp {
    +
    19
    +
    20void transform(rng::forward_range auto &&in, dr::distributed_iterator auto out,
    +
    21 auto op) {
    +
    22 if (rng::empty(in)) {
    +
    23 return;
    +
    24 }
    +
    25 assert(aligned(in, out));
    +
    26
    +
    27 auto zip = mhp::views::zip(in, rng::subrange(out, out + rng::size(in)));
    +
    28 auto transform_op = [op](auto pair) {
    +
    29 auto &[in, out] = pair;
    +
    30 out = op(in);
    +
    31 };
    +
    32 for_each(zip, transform_op);
    +
    33}
    +
    34
    +
    35template <rng::forward_iterator DI_IN>
    +
    36void transform(DI_IN &&first, DI_IN &&last, dr::distributed_iterator auto &&out,
    +
    37 auto op) {
    +
    38 mhp::transform(rng::subrange(first, last), out, op);
    +
    39}
    +
    40
    +
    41} // namespace dr::mhp
    +
    Definition: concepts.hpp:31
    +
    + + + + diff --git a/doxygen/mhp_2containers_2distributed__vector_8hpp_source.html b/doxygen/mhp_2containers_2distributed__vector_8hpp_source.html new file mode 100644 index 0000000000..d684b26af4 --- /dev/null +++ b/doxygen/mhp_2containers_2distributed__vector_8hpp_source.html @@ -0,0 +1,292 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/containers/distributed_vector.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    distributed_vector.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7#include <dr/mhp/algorithms/fill.hpp>
    +
    8#include <dr/mhp/containers/distribution.hpp>
    +
    9#include <dr/mhp/containers/segment.hpp>
    +
    10
    +
    11namespace dr::mhp {
    +
    12
    +
    14template <typename T> class distributed_vector {
    +
    15
    +
    16public:
    +
    17 using value_type = T;
    +
    18 using size_type = std::size_t;
    +
    19 using difference_type = std::ptrdiff_t;
    +
    20
    +
    21 class iterator {
    +
    22 public:
    +
    23 using iterator_category = std::random_access_iterator_tag;
    +
    24 using value_type = typename distributed_vector::value_type;
    +
    25 using difference_type = typename distributed_vector::difference_type;
    +
    26
    +
    27 iterator() {}
    +
    28 iterator(const distributed_vector *parent, difference_type offset)
    +
    29 : parent_(parent), offset_(offset) {}
    +
    30
    +
    31 auto operator+(difference_type n) const {
    +
    32 return iterator(parent_, offset_ + n);
    +
    33 }
    +
    34 friend auto operator+(difference_type n, const iterator &other) {
    +
    35 return other + n;
    +
    36 }
    +
    37 auto operator-(difference_type n) const {
    +
    38 return iterator(parent_, offset_ - n);
    +
    39 }
    +
    40 auto operator-(iterator other) const { return offset_ - other.offset_; }
    +
    41
    +
    42 auto &operator+=(difference_type n) {
    +
    43 offset_ += n;
    +
    44 return *this;
    +
    45 }
    +
    46 auto &operator-=(difference_type n) {
    +
    47 offset_ -= n;
    +
    48 return *this;
    +
    49 }
    +
    50 auto &operator++() {
    +
    51 offset_++;
    +
    52 return *this;
    +
    53 }
    +
    54 auto operator++(int) {
    +
    55 auto old = *this;
    +
    56 offset_++;
    +
    57 return old;
    +
    58 }
    +
    59 auto &operator--() {
    +
    60 offset_--;
    +
    61 return *this;
    +
    62 }
    +
    63 auto operator--(int) {
    +
    64 auto old = *this;
    +
    65 offset_--;
    +
    66 return old;
    +
    67 }
    +
    68
    +
    69 bool operator==(iterator other) const {
    +
    70 if (parent_ == nullptr || other.parent_ == nullptr) {
    +
    71 return false;
    +
    72 } else {
    +
    73 return offset_ == other.offset_;
    +
    74 }
    +
    75 }
    +
    76 auto operator<=>(iterator other) const {
    +
    77 assert(parent_ == other.parent_);
    +
    78 return offset_ <=> other.offset_;
    +
    79 }
    +
    80
    +
    81 auto operator*() const {
    +
    82 auto segment_size = parent_->segment_size_;
    +
    83 return parent_
    +
    84 ->segments()[offset_ / segment_size][offset_ % segment_size];
    +
    85 }
    +
    86 auto operator[](difference_type n) const { return *(*this + n); }
    +
    87
    +
    88 auto local() {
    +
    89 auto segment_size = parent_->segment_size_;
    +
    90 return (parent_->segments()[offset_ / segment_size].begin() +
    +
    91 offset_ % segment_size)
    +
    92 .local();
    +
    93 }
    +
    94
    +
    95 //
    +
    96 // Support for distributed ranges
    +
    97 //
    +
    98 // distributed iterator provides segments
    +
    99 // remote iterator provides local
    +
    100 //
    +
    101 auto segments() {
    +
    102 return dr::__detail::drop_segments(parent_->segments(), offset_);
    +
    103 }
    +
    104
    +
    105 private:
    +
    106 const distributed_vector *parent_ = nullptr;
    +
    107 difference_type offset_;
    +
    108 };
    +
    109
    +
    110 // Do not copy
    +
    111 // We need a move constructor for the implementation of reduce algorithm
    +
    112 distributed_vector(const distributed_vector &) = delete;
    +
    113 distributed_vector &operator=(const distributed_vector &) = delete;
    +
    114 distributed_vector(distributed_vector &&) { assert(false); }
    +
    115
    + +
    118 init(size, dist);
    +
    119 }
    +
    120
    +
    122 distributed_vector(std::size_t size, value_type fill_value,
    +
    123 distribution dist = distribution()) {
    +
    124 init(size, dist);
    +
    125 mhp::fill(*this, fill_value);
    +
    126 }
    +
    127
    + +
    129 if (!finalized()) {
    +
    130 fence();
    +
    131 active_wins().erase(win_.mpi_win());
    +
    132 win_.free();
    +
    133 __detail::allocator<T>().deallocate(data_, data_size_);
    +
    134 data_ = nullptr;
    +
    135 delete halo_;
    +
    136 }
    +
    137 }
    +
    138
    +
    140 auto begin() const { return iterator(this, 0); }
    +
    142 auto end() const { return begin() + size_; }
    +
    143
    +
    145 auto size() const { return size_; }
    +
    147 auto operator[](difference_type n) const { return *(begin() + n); }
    +
    148 auto &halo() const { return *halo_; }
    +
    149
    +
    150 auto segments() const { return rng::views::all(segments_); }
    +
    151
    +
    152private:
    +
    153 void init(auto size, auto dist) {
    +
    154 size_ = size;
    +
    155 distribution_ = dist;
    +
    156
    +
    157 // determine the distribution of data
    +
    158 auto comm_size = default_comm().size(); // dr-style ignore
    +
    159 auto hb = dist.halo();
    +
    160 std::size_t gran = dist.granularity();
    +
    161 // TODO: make this an error that is reported back to user
    +
    162 assert(size % gran == 0 && "size must be a multiple of the granularity");
    +
    163 assert(hb.prev % gran == 0 && "size must be a multiple of the granularity");
    +
    164 assert(hb.next % gran == 0 && "size must be a multiple of the granularity");
    +
    165 segment_size_ = gran * std::max({(size / gran + comm_size - 1) / comm_size,
    +
    166 hb.prev / gran, hb.next / gran});
    +
    167
    +
    168 data_size_ = segment_size_ + hb.prev + hb.next;
    +
    169 if (size_ > 0) {
    +
    170 data_ = __detail::allocator<T>().allocate(data_size_);
    +
    171 }
    +
    172
    +
    173 halo_ = new span_halo<T>(default_comm(), data_, data_size_, hb);
    +
    174
    +
    175 std::size_t segment_index = 0;
    +
    176 for (std::size_t i = 0; i < size; i += segment_size_) {
    +
    177 segments_.emplace_back(this, segment_index++,
    +
    178 std::min(segment_size_, size - i));
    +
    179 }
    +
    180
    +
    181 win_.create(default_comm(), data_, data_size_ * sizeof(T));
    +
    182 active_wins().insert(win_.mpi_win());
    +
    183 fence();
    +
    184 }
    +
    185
    +
    186 friend dv_segment_iterator<distributed_vector>;
    +
    187
    +
    188 std::size_t segment_size_ = 0;
    +
    189 std::size_t data_size_ = 0;
    +
    190 T *data_ = nullptr;
    +
    191 span_halo<T> *halo_;
    +
    192
    +
    193 distribution distribution_;
    +
    194 std::size_t size_;
    +
    195 std::vector<dv_segment<distributed_vector>> segments_;
    +
    196 dr::rma_window win_;
    +
    197};
    +
    198
    +
    199template <typename T> auto &halo(const distributed_vector<T> &dv) {
    +
    200 return dv.halo();
    +
    201}
    +
    202
    +
    203} // namespace dr::mhp
    +
    Definition: global.hpp:209
    +
    Definition: distributed_vector.hpp:21
    +
    distributed vector
    Definition: distributed_vector.hpp:14
    +
    distributed_vector(std::size_t size, value_type fill_value, distribution dist=distribution())
    Constructor.
    Definition: distributed_vector.hpp:122
    +
    distributed_vector(std::size_t size=0, distribution dist=distribution())
    Constructor.
    Definition: distributed_vector.hpp:117
    +
    auto end() const
    Returns iterator to end.
    Definition: distributed_vector.hpp:142
    +
    auto operator[](difference_type n) const
    Returns reference using index.
    Definition: distributed_vector.hpp:147
    +
    auto begin() const
    Returns iterator to beginning.
    Definition: distributed_vector.hpp:140
    +
    auto size() const
    Returns size.
    Definition: distributed_vector.hpp:145
    +
    Definition: communicator.hpp:185
    +
    Definition: distribution.hpp:11
    +
    + + + + diff --git a/doxygen/mhp_2views_2enumerate_8hpp_source.html b/doxygen/mhp_2views_2enumerate_8hpp_source.html new file mode 100644 index 0000000000..d002bfa67e --- /dev/null +++ b/doxygen/mhp_2views_2enumerate_8hpp_source.html @@ -0,0 +1,144 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/views/enumerate.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    enumerate.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7#include <dr/mhp/views/zip.hpp>
    +
    8
    +
    9namespace dr::mhp {
    +
    10
    +
    11namespace views {
    +
    12
    +
    13namespace __detail {
    +
    14
    +
    15template <rng::range R> struct range_size {
    +
    16 using type = std::size_t;
    +
    17};
    +
    18
    +
    19template <rng::sized_range R> struct range_size<R> {
    +
    20 using type = rng::range_size_t<R>;
    +
    21};
    +
    22
    +
    23template <rng::range R> using range_size_t = typename range_size<R>::type;
    +
    24
    +
    25} // namespace __detail
    +
    26
    + +
    28public:
    +
    29 template <rng::viewable_range R>
    +
    30 requires(rng::sized_range<R>)
    +
    31 auto operator()(R &&r) const {
    +
    32 using W = std::uint32_t;
    +
    33 return mhp::views::zip(mhp::views::iota(W(0), W(rng::distance(r))),
    +
    34 std::forward<R>(r));
    +
    35 }
    +
    36
    +
    37 template <rng::viewable_range R>
    +
    38 friend auto operator|(R &&r, const enumerate_adapter_closure &closure) {
    +
    39 return closure(std::forward<R>(r));
    +
    40 }
    +
    41};
    +
    42
    + +
    44public:
    +
    45 template <rng::viewable_range R> constexpr auto operator()(R &&r) const {
    +
    46 return enumerate_adapter_closure{}(std::forward<R>(r));
    +
    47 }
    +
    48
    +
    49 inline auto enumerate() const { return enumerate_adapter_closure{}; }
    +
    50};
    +
    51
    +
    52inline constexpr auto enumerate = enumerate_fn_{};
    +
    53
    +
    54} // namespace views
    +
    55
    +
    56} // namespace dr::mhp
    +
    Definition: enumerate.hpp:27
    +
    Definition: enumerate.hpp:43
    +
    Definition: enumerate.hpp:15
    +
    + + + + diff --git a/doxygen/mhp_2views_2views_8hpp_source.html b/doxygen/mhp_2views_2views_8hpp_source.html new file mode 100644 index 0000000000..0023e5e2ea --- /dev/null +++ b/doxygen/mhp_2views_2views_8hpp_source.html @@ -0,0 +1,173 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/views/views.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    views.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7#include <dr/detail/ranges_shim.hpp>
    +
    8#include <dr/views/iota.hpp>
    +
    9#include <dr/views/transform.hpp>
    +
    10
    +
    11namespace dr::mhp {
    +
    12
    +
    13// Select segments local to this rank and convert the iterators in the
    +
    14// segment to local
    +
    15template <typename R> auto local_segments(R &&dr) {
    +
    16 auto is_local = [](const auto &segment) {
    +
    17 return dr::ranges::rank(segment) == default_comm().rank();
    +
    18 };
    +
    19 // Convert from remote iter to local iter
    +
    20 auto local_iter = [](const auto &segment) {
    +
    21 auto b = dr::ranges::local(rng::begin(segment));
    +
    22 return rng::subrange(b, b + rng::distance(segment));
    +
    23 };
    +
    24 return dr::ranges::segments(std::forward<R>(dr)) |
    +
    25 rng::views::filter(is_local) | rng::views::transform(local_iter);
    +
    26}
    +
    27
    +
    28template <typename R> auto local_segments_with_idx(R &&dr) {
    +
    29 auto is_local = [](const auto &segment_with_idx) {
    +
    30 return dr::ranges::rank(std::get<1>(segment_with_idx)) ==
    +
    31 default_comm().rank();
    +
    32 };
    +
    33 // Convert from remote iter to local iter
    +
    34 auto local_iter = [](const auto &segment_with_idx) {
    +
    35 auto &&[idx, segment] = segment_with_idx;
    +
    36 auto b = dr::ranges::local(rng::begin(segment));
    +
    37 return std::tuple(idx, rng::subrange(b, b + rng::distance(segment)));
    +
    38 };
    +
    39 return dr::ranges::segments(std::forward<R>(dr)) | rng::views::enumerate |
    +
    40 rng::views::filter(is_local) | rng::views::transform(local_iter);
    +
    41}
    +
    42
    +
    43template <dr::distributed_contiguous_range R> auto local_segment(R &&r) {
    +
    44 auto segments = dr::mhp::local_segments(std::forward<R>(r));
    +
    45
    +
    46 if (rng::empty(segments)) {
    +
    47 return rng::range_value_t<decltype(segments)>{};
    +
    48 }
    +
    49
    +
    50 // Should be error, not assert. Or we could join all the segments
    +
    51 assert(rng::distance(segments) == 1);
    +
    52 return *rng::begin(segments);
    +
    53}
    +
    54
    +
    55template <typename R> auto local_mdspans(R &&dr) {
    +
    56 return dr::ranges::segments(std::forward<R>(dr))
    +
    57 // Select the local segments
    +
    58 | rng::views::filter([](auto s) {
    +
    59 return dr::ranges::rank(s) == default_comm().rank();
    +
    60 })
    +
    61 // Extract the mdspan
    +
    62 | rng::views::transform([](auto s) { return s.mdspan(); });
    +
    63}
    +
    64
    +
    65template <dr::distributed_contiguous_range R> auto local_mdspan(R &&r) {
    +
    66 auto mdspans = dr::mhp::local_mdspans(std::forward<R>(r));
    +
    67
    +
    68 if (rng::empty(mdspans)) {
    +
    69 return rng::range_value_t<decltype(mdspans)>{};
    +
    70 }
    +
    71
    +
    72 // Should be error, not assert. Or we could join all the segments
    +
    73 assert(rng::distance(mdspans) == 1);
    +
    74 return *rng::begin(mdspans);
    +
    75}
    +
    76
    +
    77} // namespace dr::mhp
    +
    78
    +
    79namespace dr::mhp::views {
    +
    80
    +
    81inline constexpr auto all = rng::views::all;
    +
    82inline constexpr auto counted = rng::views::counted;
    +
    83inline constexpr auto drop = rng::views::drop;
    +
    84inline constexpr auto iota = dr::views::iota;
    +
    85inline constexpr auto take = rng::views::take;
    +
    86inline constexpr auto transform = dr::views::transform;
    +
    87
    +
    88} // namespace dr::mhp::views
    +
    + + + + diff --git a/doxygen/mhp_8hpp_source.html b/doxygen/mhp_8hpp_source.html new file mode 100644 index 0000000000..63dc51ee19 --- /dev/null +++ b/doxygen/mhp_8hpp_source.html @@ -0,0 +1,157 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    mhp.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7#ifdef SYCL_LANGUAGE_VERSION
    +
    8#include <oneapi/dpl/algorithm>
    +
    9#include <oneapi/dpl/execution>
    +
    10#include <oneapi/dpl/numeric>
    +
    11#endif
    +
    12
    +
    13#include <cassert>
    +
    14#include <concepts>
    +
    15#include <execution>
    +
    16#include <fstream>
    +
    17#include <iostream>
    +
    18#include <iterator>
    +
    19#include <memory>
    +
    20#include <optional>
    +
    21#include <set>
    +
    22#include <span>
    +
    23#include <string>
    +
    24#include <utility>
    +
    25#include <vector>
    +
    26
    +
    27#include <vendor/source_location/source_location.hpp>
    +
    28
    +
    29// MPI should be optional
    +
    30#include <mkl.h>
    +
    31#include <mpi.h>
    +
    32
    +
    33#include <dr/detail/format_shim.hpp>
    +
    34#include <dr/detail/ranges_shim.hpp>
    +
    35
    +
    36// clang-format off
    +
    37#include <dr/concepts/concepts.hpp>
    +
    38
    +
    39#include <dr/detail/logger.hpp>
    +
    40#include <dr/detail/view_detectors.hpp>
    +
    41#include <dr/detail/segments_tools.hpp>
    +
    42#include <dr/detail/iterator_adaptor.hpp>
    +
    43#include <dr/detail/normal_distributed_iterator.hpp>
    +
    44#include <dr/detail/memory.hpp>
    +
    45#include <dr/detail/communicator.hpp>
    +
    46#include <dr/detail/index.hpp>
    +
    47
    +
    48#include <dr/views/views.hpp>
    +
    49#include <dr/views/transform.hpp>
    +
    50
    +
    51#include <dr/mhp/halo.hpp>
    +
    52#include <dr/mhp/global.hpp>
    +
    53#include <dr/mhp/sycl_support.hpp>
    +
    54#include <dr/mhp/alignment.hpp>
    +
    55#include <dr/mhp/views/views.hpp>
    +
    56#include <dr/mhp/views/zip.hpp>
    +
    57#include <dr/mhp/views/enumerate.hpp>
    +
    58#include <dr/mhp/views/sliding.hpp>
    +
    59#include <dr/mhp/views/mdspan_view.hpp>
    +
    60#include <dr/mhp/views/submdspan_view.hpp>
    +
    61#include <dr/mhp/algorithms/copy.hpp>
    +
    62#include <dr/mhp/algorithms/fill.hpp>
    +
    63#include <dr/mhp/algorithms/for_each.hpp>
    +
    64#include <dr/mhp/algorithms/exclusive_scan.hpp>
    +
    65#include <dr/mhp/algorithms/inclusive_scan.hpp>
    +
    66#include <dr/mhp/algorithms/iota.hpp>
    +
    67#include <dr/mhp/algorithms/reduce.hpp>
    +
    68#include <dr/mhp/algorithms/sort.hpp>
    +
    69#include <dr/mhp/algorithms/md_for_each.hpp>
    +
    70#include <dr/mhp/algorithms/transform.hpp>
    +
    71#include <dr/mhp/containers/distributed_vector.hpp>
    +
    72#include <dr/mhp/containers/distributed_mdarray.hpp>
    +
    + + + + diff --git a/doxygen/nav_f.png b/doxygen/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/doxygen/nav_fd.png b/doxygen/nav_fd.png new file mode 100644 index 0000000000000000000000000000000000000000..032fbdd4c54f54fa9a2e6423b94ef4b2ebdfaceb GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQU#tajv*C{Z|C~*H7f|XvG1G8 zt7aS*L7xwMeS}!z6R#{C5tIw-s~AJ==F^i}x3XyJseHR@yF& zerFf(Zf;Dd{+(0lDIROL@Sj-Ju2JQ8&-n%4%q?>|^bShc&lR?}7HeMo@BDl5N(aHY Uj$gdr1MOz;boFyt=akR{0D!zeaR2}S literal 0 HcmV?d00001 diff --git a/doxygen/nav_g.png b/doxygen/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL6W-eg#Jd_@e6*DPn)w;=|1H}Zvm9l6xXXB%>yL=NQU;mg M>FVdQ&MBb@0Bdt1Qvd(} literal 0 HcmV?d00001 diff --git a/doxygen/normal__distributed__iterator_8hpp_source.html b/doxygen/normal__distributed__iterator_8hpp_source.html new file mode 100644 index 0000000000..4d76ba4774 --- /dev/null +++ b/doxygen/normal__distributed__iterator_8hpp_source.html @@ -0,0 +1,210 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail/normal_distributed_iterator.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    normal_distributed_iterator.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4#pragma once
    +
    5
    +
    6#include <dr/detail/segments_tools.hpp>
    +
    7
    +
    8namespace dr {
    +
    9
    +
    10template <rng::viewable_range V>
    +
    11/*
    +
    12requires(dr::remote_range<rng::range_reference_t<V>> &&
    +
    13 rng::random_access_range<rng::range_reference_t<V>>)
    +
    14 */
    + +
    16public:
    +
    17 using value_type = rng::range_value_t<rng::range_reference_t<V>>;
    +
    18
    +
    19 using segment_type = rng::range_value_t<V>;
    +
    20
    +
    21 using size_type = rng::range_size_t<segment_type>;
    +
    22 using difference_type = rng::range_difference_t<segment_type>;
    +
    23
    +
    24 using reference = rng::range_reference_t<segment_type>;
    +
    25
    +
    26 using iterator_category = std::random_access_iterator_tag;
    +
    27
    + + + +
    31
    +
    32 constexpr normal_distributed_iterator_accessor() noexcept = default;
    +
    33 constexpr ~normal_distributed_iterator_accessor() noexcept = default;
    + +
    35 const normal_distributed_iterator_accessor &) noexcept = default;
    + +
    37 operator=(const normal_distributed_iterator_accessor &) noexcept = default;
    +
    38
    +
    39 constexpr normal_distributed_iterator_accessor(V segments,
    +
    40 size_type segment_id,
    +
    41 size_type idx) noexcept
    +
    42 : segments_(segments), segment_id_(segment_id), idx_(idx) {}
    +
    43
    + +
    45 operator+=(difference_type offset) noexcept {
    +
    46
    +
    47 while (offset > 0) {
    +
    48 difference_type current_offset =
    +
    49 std::min(offset, difference_type(segments_[segment_id_].size()) -
    +
    50 difference_type(idx_));
    +
    51 idx_ += current_offset;
    +
    52 offset -= current_offset;
    +
    53
    +
    54 if (idx_ >= segments_[segment_id_].size()) {
    +
    55 segment_id_++;
    +
    56 idx_ = 0;
    +
    57 }
    +
    58 }
    +
    59
    +
    60 while (offset < 0) {
    +
    61 difference_type current_offset =
    +
    62 std::min(-offset, difference_type(idx_) + 1);
    +
    63
    +
    64 difference_type new_idx = difference_type(idx_) - current_offset;
    +
    65 offset += current_offset;
    +
    66
    +
    67 if (new_idx < 0) {
    +
    68 segment_id_--;
    +
    69 new_idx = segments_[segment_id_].size() - 1;
    +
    70 }
    +
    71
    +
    72 idx_ = new_idx;
    +
    73 }
    +
    74
    +
    75 return *this;
    +
    76 }
    +
    77
    +
    78 constexpr bool operator==(const iterator_accessor &other) const noexcept {
    +
    79 return segment_id_ == other.segment_id_ && idx_ == other.idx_;
    +
    80 }
    +
    81
    +
    82 constexpr difference_type
    +
    83 operator-(const iterator_accessor &other) const noexcept {
    +
    84 return difference_type(get_global_idx()) - other.get_global_idx();
    +
    85 }
    +
    86
    +
    87 constexpr bool operator<(const iterator_accessor &other) const noexcept {
    +
    88 if (segment_id_ < other.segment_id_) {
    +
    89 return true;
    +
    90 } else if (segment_id_ == other.segment_id_) {
    +
    91 return idx_ < other.idx_;
    +
    92 } else {
    +
    93 return false;
    +
    94 }
    +
    95 }
    +
    96
    +
    97 constexpr reference operator*() const noexcept {
    +
    98 return segments_[segment_id_][idx_];
    +
    99 }
    +
    100
    +
    101 auto segments() const noexcept {
    +
    102 return dr::__detail::drop_segments(segments_, segment_id_, idx_);
    +
    103 }
    +
    104
    +
    105private:
    +
    106 size_type get_global_idx() const noexcept {
    +
    107 size_type cumulative_size = 0;
    +
    108 for (std::size_t i = 0; i < segment_id_; i++) {
    +
    109 cumulative_size += segments_[i].size();
    +
    110 }
    +
    111 return cumulative_size + idx_;
    +
    112 }
    +
    113
    +
    114 rng::views::all_t<V> segments_;
    +
    115 size_type segment_id_ = 0;
    +
    116 size_type idx_ = 0;
    +
    117};
    +
    118
    +
    119template <rng::viewable_range T>
    + + +
    122
    +
    123} // namespace dr
    +
    Definition: iterator_adaptor.hpp:23
    +
    Definition: normal_distributed_iterator.hpp:15
    +
    + + + + diff --git a/doxygen/onedpl__direct__iterator_8hpp_source.html b/doxygen/onedpl__direct__iterator_8hpp_source.html new file mode 100644 index 0000000000..d8e41ecd94 --- /dev/null +++ b/doxygen/onedpl__direct__iterator_8hpp_source.html @@ -0,0 +1,197 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail/onedpl_direct_iterator.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    onedpl_direct_iterator.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7#include <iterator>
    +
    8
    +
    9#include <dr/detail/iterator_adaptor.hpp>
    +
    10
    +
    11namespace dr {
    +
    12
    +
    13namespace __detail {
    +
    14
    +
    15template <std::random_access_iterator Iter> class direct_iterator {
    +
    16public:
    +
    17 using value_type = std::iter_value_t<Iter>;
    +
    18 using difference_type = std::iter_difference_t<Iter>;
    +
    19 using reference = std::iter_reference_t<Iter>;
    + +
    21
    +
    22 using pointer = iterator;
    +
    23
    +
    24 using iterator_category = std::random_access_iterator_tag;
    +
    25
    +
    26 using is_passed_directly = ::std::true_type;
    +
    27
    +
    28 direct_iterator(Iter iter) noexcept : iter_(iter) {}
    +
    29 direct_iterator() noexcept = default;
    +
    30 ~direct_iterator() noexcept = default;
    +
    31 direct_iterator(const direct_iterator &) noexcept = default;
    +
    32 direct_iterator &operator=(const direct_iterator &) noexcept = default;
    +
    33
    +
    34 bool operator==(const direct_iterator &) const noexcept = default;
    +
    35 bool operator!=(const direct_iterator &) const noexcept = default;
    +
    36
    +
    37 iterator operator+(difference_type offset) const noexcept {
    +
    38 return iterator(iter_ + offset);
    +
    39 }
    +
    40
    +
    41 iterator operator-(difference_type offset) const noexcept {
    +
    42 return iterator(iter_ - offset);
    +
    43 }
    +
    44
    +
    45 difference_type operator-(iterator other) const noexcept {
    +
    46 return iter_ - other.iter_;
    +
    47 }
    +
    48
    +
    49 bool operator<(iterator other) const noexcept { return iter_ < other.iter_; }
    +
    50
    +
    51 bool operator>(iterator other) const noexcept { return iter_ > iter_; }
    +
    52
    +
    53 bool operator<=(iterator other) const noexcept {
    +
    54 return iter_ <= other.iter_;
    +
    55 }
    +
    56
    +
    57 bool operator>=(iterator other) const noexcept {
    +
    58 return iter_ >= other.iter_;
    +
    59 }
    +
    60
    +
    61 iterator &operator++() noexcept {
    +
    62 ++iter_;
    +
    63 return *this;
    +
    64 }
    +
    65
    +
    66 iterator operator++(int) noexcept {
    +
    67 iterator other = *this;
    +
    68 ++(*this);
    +
    69 return other;
    +
    70 }
    +
    71
    +
    72 iterator &operator--() noexcept {
    +
    73 --iter_;
    +
    74 return *this;
    +
    75 }
    +
    76
    +
    77 iterator operator--(int) noexcept {
    +
    78 iterator other = *this;
    +
    79 --(*this);
    +
    80 return other;
    +
    81 }
    +
    82
    +
    83 iterator &operator+=(difference_type offset) noexcept {
    +
    84 iter_ += offset;
    +
    85 return *this;
    +
    86 }
    +
    87
    +
    88 iterator &operator-=(difference_type offset) noexcept {
    +
    89 iter_ -= offset;
    +
    90 return *this;
    +
    91 }
    +
    92
    +
    93 reference operator*() const noexcept { return *iter_; }
    +
    94
    +
    95 reference operator[](difference_type offset) const noexcept {
    +
    96 return reference(*(*this + offset));
    +
    97 }
    +
    98
    +
    99 friend iterator operator+(difference_type n, iterator iter) {
    +
    100 return iter.iter_ + n;
    +
    101 }
    +
    102
    +
    103 Iter base() const noexcept { return iter_; }
    +
    104
    +
    105private:
    +
    106 Iter iter_;
    +
    107};
    +
    108
    +
    109} // namespace __detail
    +
    110
    +
    111} // namespace dr
    +
    Definition: onedpl_direct_iterator.hpp:15
    +
    + + + + diff --git a/doxygen/open.png b/doxygen/open.png new file mode 100644 index 0000000000000000000000000000000000000000..30f75c7efe2dd0c9e956e35b69777a02751f048b GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail/owning_view.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    owning_view.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7#include <dr/detail/ranges_shim.hpp>
    +
    8
    +
    9namespace dr {
    +
    10
    +
    11namespace __detail {
    +
    12
    +
    13// TODO: this `owning_view` is needed because range-v3 does not have an
    +
    14// `owning_view`. Ideally we would submit a PR to range-v3 /or
    +
    15// switch to solely using libstdc++13.
    +
    16
    +
    17template <rng::range R>
    +
    18class owning_view : public rng::view_interface<owning_view<R>> {
    +
    19public:
    +
    20 owning_view(R &&range) : range_(std::move(range)) {}
    +
    21
    + +
    23 requires std::default_initializable<R>
    +
    24 = default;
    +
    25 owning_view(owning_view &&other) = default;
    +
    26 owning_view(const owning_view &other) = default;
    +
    27
    +
    28 owning_view &operator=(owning_view &&other) = default;
    +
    29 owning_view &operator=(const owning_view &other) = default;
    +
    30
    +
    31 auto size() const
    +
    32 requires(rng::sized_range<R>)
    +
    33 {
    +
    34 return rng::size(range_);
    +
    35 }
    +
    36
    +
    37 auto empty() const
    +
    38 requires(rng::sized_range<R>)
    +
    39 {
    +
    40 return size() == 0;
    +
    41 }
    +
    42
    +
    43 auto begin() { return rng::begin(range_); }
    +
    44
    +
    45 auto begin() const
    +
    46 requires(rng::range<const R>)
    +
    47 {
    +
    48 return rng::begin(range_);
    +
    49 }
    +
    50
    +
    51 auto end() { return rng::end(range_); }
    +
    52
    +
    53 auto end() const
    +
    54 requires(rng::range<const R>)
    +
    55 {
    +
    56 return rng::end(range_);
    +
    57 }
    +
    58
    +
    59 decltype(auto) base() { return range_; }
    +
    60
    +
    61 decltype(auto) base() const { return range_; }
    +
    62
    +
    63private:
    +
    64 R range_;
    +
    65};
    +
    66
    +
    67} // namespace __detail
    +
    68
    +
    69} // namespace dr
    +
    Definition: owning_view.hpp:18
    +
    + + + + diff --git a/doxygen/range_8hpp_source.html b/doxygen/range_8hpp_source.html new file mode 100644 index 0000000000..e641d62e68 --- /dev/null +++ b/doxygen/range_8hpp_source.html @@ -0,0 +1,241 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/range.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    range.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7#include <dr/concepts/concepts.hpp>
    +
    8#include <dr/shp/distributed_span.hpp>
    +
    9
    +
    10namespace dr::shp {
    +
    11
    +
    12template <int dimensions = 1> class id {
    +
    13public:
    +
    14 static_assert(dimensions == 1);
    +
    15
    +
    16 id() noexcept = default;
    +
    17
    +
    18 id(std::size_t segment_id, std::size_t local_id, std::size_t global_id)
    +
    19 : segment_id_(segment_id), local_id_(local_id), global_id_(global_id) {}
    +
    20
    +
    21 std::size_t get(int dimension) const { return global_id_; }
    +
    22
    +
    23 operator std::size_t() const { return global_id_; }
    +
    24
    +
    25 std::size_t segment() const { return segment_id_; }
    +
    26
    +
    27 std::size_t local_id() const { return local_id_; }
    +
    28
    +
    29private:
    +
    30 std::size_t segment_id_ = 0;
    +
    31 std::size_t local_id_ = 0;
    +
    32 std::size_t global_id_ = 0;
    +
    33};
    +
    34
    + +
    36public:
    +
    37 using element_type = id<1>;
    + +
    39
    +
    40 using size_type = std::size_t;
    +
    41 using difference_type = std::ptrdiff_t;
    +
    42
    +
    43 // using pointer = typename segment_type::pointer;
    +
    44 using reference = value_type;
    +
    45
    +
    46 using iterator_category = std::random_access_iterator_tag;
    +
    47
    + + + +
    51
    +
    52 constexpr segment_range_accessor() noexcept = default;
    +
    53 constexpr ~segment_range_accessor() noexcept = default;
    +
    54 constexpr segment_range_accessor(const segment_range_accessor &) noexcept =
    +
    55 default;
    +
    56 constexpr segment_range_accessor &
    +
    57 operator=(const segment_range_accessor &) noexcept = default;
    +
    58
    +
    59 constexpr segment_range_accessor(size_type segment_id, size_type idx,
    +
    60 size_type global_offset) noexcept
    +
    61 : global_offset_(global_offset), segment_id_(segment_id), idx_(idx) {}
    +
    62
    +
    63 constexpr segment_range_accessor &
    +
    64 operator+=(difference_type offset) noexcept {
    +
    65 idx_ += offset;
    +
    66 return *this;
    +
    67 }
    +
    68
    +
    69 constexpr bool operator==(const iterator_accessor &other) const noexcept {
    +
    70 return segment_id_ == other.segment_id_ && idx_ == other.idx_;
    +
    71 }
    +
    72
    +
    73 constexpr difference_type
    +
    74 operator-(const iterator_accessor &other) const noexcept {
    +
    75 return difference_type(idx_) - difference_type(other.idx_);
    +
    76 }
    +
    77
    +
    78 // Comparing iterators from different segments is undefined
    +
    79 constexpr bool operator<(const iterator_accessor &other) const noexcept {
    +
    80 return idx_ < other.idx_;
    +
    81 }
    +
    82
    +
    83 reference operator*() const noexcept {
    +
    84 return value_type(segment_id_, idx_, get_global_idx());
    +
    85 }
    +
    86
    +
    87private:
    +
    88 size_type get_global_idx() const noexcept { return global_offset_ + idx_; }
    +
    89
    +
    90 size_type global_offset_ = 0;
    +
    91 size_type segment_id_ = 0;
    +
    92 size_type idx_ = 0;
    +
    93};
    +
    94
    + +
    96
    +
    97template <int dimensions = 1> class segment_range {
    +
    98public:
    +
    99 static_assert(dimensions == 1);
    +
    100
    + +
    102 using size_type = std::size_t;
    +
    103 using different_type = std::ptrdiff_t;
    +
    104
    +
    105 using reference = value_type;
    +
    106
    + +
    108
    +
    109 segment_range(std::size_t segment_id, std::size_t segment_size,
    +
    110 std::size_t global_offset)
    +
    111 : segment_id_(segment_id), segment_size_(segment_size),
    +
    112 global_offset_(global_offset) {}
    +
    113
    +
    114 iterator begin() const { return iterator(segment_id_, 0, global_offset_); }
    +
    115
    +
    116 iterator end() const {
    +
    117 return iterator(segment_id_, segment_size_, global_offset_);
    +
    118 }
    +
    119
    +
    120 size_type size() const noexcept { return segment_size_; }
    +
    121
    +
    122 value_type operator[](std::size_t idx) { return *(begin() + idx); }
    +
    123
    +
    124 size_type rank() const noexcept { return 0; }
    +
    125
    +
    126private:
    +
    127 std::size_t segment_size_;
    +
    128 std::size_t segment_id_;
    +
    129 std::size_t global_offset_;
    +
    130};
    +
    131
    +
    132/*
    +
    133template <rng::forward_range R> auto distributed_iota_view(R &&r) {
    +
    134 static_assert(dr::distributed_contiguous_range<R>);
    +
    135 if constexpr (dr::distributed_contiguous_range<R>) {
    +
    136 std::vector<segment_range<>> iota_segments;
    +
    137 std::size_t global_offset = 0;
    +
    138 std::size_t segment_id = 0;
    +
    139 for (auto &&segment : r.segments()) {
    +
    140 iota_segments.push_back(
    +
    141 segment_range(segment_id, segment.size(), global_offset));
    +
    142 global_offset += segment.size();
    +
    143 segment_id++;
    +
    144 }
    +
    145 return dr::shp::distributed_span(iota_segments);
    +
    146 } else {
    +
    147 return segment_range(0, rng::size(r), 0);
    +
    148 }
    +
    149}
    +
    150*/
    +
    151
    +
    152} // namespace dr::shp
    +
    Definition: iterator_adaptor.hpp:23
    +
    Definition: range.hpp:12
    +
    Definition: range.hpp:35
    +
    Definition: range.hpp:97
    +
    + + + + diff --git a/doxygen/range__adaptors_8hpp_source.html b/doxygen/range__adaptors_8hpp_source.html new file mode 100644 index 0000000000..70d45ad88f --- /dev/null +++ b/doxygen/range__adaptors_8hpp_source.html @@ -0,0 +1,103 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/range_adaptors.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    range_adaptors.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7#include <dr/shp/views/standard_views.hpp>
    +
    8#include <dr/shp/zip_view.hpp>
    +
    9
    +
    10namespace dr::shp {
    +
    11
    +
    12template <rng::range R> auto enumerate(R &&r) {
    +
    13 auto i = rng::views::iota(uint32_t(0), uint32_t(rng::size(r)));
    +
    14 return dr::shp::zip_view(i, r);
    +
    15}
    +
    16
    +
    17} // namespace dr::shp
    +
    zip
    Definition: zip_view.hpp:108
    +
    + + + + diff --git a/doxygen/ranges_8hpp_source.html b/doxygen/ranges_8hpp_source.html new file mode 100644 index 0000000000..753420c754 --- /dev/null +++ b/doxygen/ranges_8hpp_source.html @@ -0,0 +1,360 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail/ranges.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    ranges.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7#include <any>
    +
    8#include <iterator>
    +
    9#include <type_traits>
    +
    10
    +
    11#include <dr/detail/ranges_shim.hpp>
    +
    12
    +
    13namespace dr {
    +
    14
    +
    15namespace ranges {
    +
    16
    +
    17template <typename> inline constexpr bool disable_rank = false;
    +
    18
    +
    19namespace {
    +
    20
    +
    21template <typename T>
    +
    22concept has_rank_method = requires(T t) {
    +
    23 { t.rank() } -> std::weakly_incrementable;
    +
    24};
    +
    25
    +
    26template <typename R>
    +
    27concept has_rank_adl = requires(R &r) {
    +
    28 { rank_(r) } -> std::weakly_incrementable;
    +
    29};
    +
    30
    +
    31template <typename Iter>
    + +
    33 std::forward_iterator<Iter> && has_rank_method<Iter> &&
    +
    34 !disable_rank<std::remove_cv_t<Iter>>;
    +
    35
    +
    36} // namespace
    +
    37
    +
    38namespace {
    +
    39
    +
    40struct rank_fn_ {
    +
    41
    +
    42 // Return the rank associated with a remote range.
    +
    43 // This is either:
    +
    44 // 1) r.rank(), if the remote range has a `rank()` method
    +
    45 // OR, if not available,
    +
    46 // 2) r.begin().rank(), if iterator is `remote_iterator`
    +
    47 template <rng::forward_range R>
    +
    48 requires((has_rank_method<R> && !disable_rank<std::remove_cv_t<R>>) ||
    +
    49 (has_rank_adl<R> && !disable_rank<std::remove_cv_t<R>>) ||
    + +
    51 constexpr auto operator()(R &&r) const {
    +
    52 if constexpr (has_rank_method<R> && !disable_rank<std::remove_cv_t<R>>) {
    +
    53 return std::forward<R>(r).rank();
    + +
    55 // rng::begin needs an lvalue or borrowed_range. We only need
    +
    56 // the rank from the rng::begin so creating a local lvalue is ok.
    +
    57 auto t = r;
    +
    58 return operator()(rng::begin(t));
    +
    59 } else if constexpr (has_rank_adl<R> &&
    +
    60 !disable_rank<std::remove_cv_t<R>>) {
    +
    61 return rank_(std::forward<R>(r));
    +
    62 }
    +
    63 }
    +
    64
    +
    65 template <std::forward_iterator Iter>
    +
    66 requires(has_rank_method<Iter> && !disable_rank<std::remove_cv_t<Iter>>)
    +
    67 auto operator()(Iter iter) const {
    +
    68 if constexpr (has_rank_method<Iter> &&
    +
    69 !disable_rank<std::remove_cv_t<Iter>>) {
    +
    70 return std::forward<Iter>(iter).rank();
    +
    71 }
    +
    72 }
    +
    73};
    +
    74
    +
    75} // namespace
    +
    76
    +
    77inline constexpr auto rank = rank_fn_{};
    +
    78
    +
    79namespace {
    +
    80
    +
    81template <typename R>
    + +
    83 rng::forward_range<R> && requires(R &r) { dr::ranges::rank(r); };
    +
    84
    +
    85template <typename R>
    + + +
    88
    +
    89template <typename R>
    +
    90concept has_segments_method = requires(R r) {
    +
    91 { r.segments() } -> segments_range;
    +
    92};
    +
    93
    +
    94template <typename R>
    +
    95concept has_segments_adl = requires(R &r) {
    +
    96 { segments_(r) } -> segments_range;
    +
    97};
    +
    98
    +
    99struct segments_fn_ {
    +
    100 template <rng::forward_range R>
    + +
    102 constexpr decltype(auto) operator()(R &&r) const {
    +
    103 if constexpr (has_segments_method<R>) {
    +
    104 return std::forward<R>(r).segments();
    +
    105 } else if constexpr (has_segments_adl<R>) {
    +
    106 return segments_(std::forward<R>(r));
    +
    107 }
    +
    108 }
    +
    109
    +
    110 template <std::forward_iterator I>
    +
    111 requires(has_segments_method<I> || has_segments_adl<I>)
    +
    112 constexpr decltype(auto) operator()(I iter) const {
    +
    113 if constexpr (has_segments_method<I>) {
    +
    114 return std::forward<I>(iter).segments();
    +
    115 } else if constexpr (has_segments_adl<I>) {
    +
    116 return segments_(std::forward<I>(iter));
    +
    117 }
    +
    118 }
    +
    119};
    +
    120
    +
    121} // namespace
    +
    122
    +
    123inline constexpr auto segments = segments_fn_{};
    +
    124
    +
    125namespace {
    +
    126
    +
    127template <typename Iter>
    +
    128concept has_local_adl = requires(Iter &iter) {
    +
    129 { local_(iter) } -> std::forward_iterator;
    +
    130};
    +
    131
    +
    132template <typename Iter>
    + +
    134 std::forward_iterator<Iter> && requires(Iter iter) {
    +
    135 { iter.local() } -> std::forward_iterator;
    +
    136 };
    +
    137
    +
    138template <typename T> struct is_localizable_helper : std::false_type {};
    +
    139
    +
    140template <has_local_adl T> struct is_localizable_helper<T> : std::true_type {};
    +
    141
    +
    142template <iter_has_local_method T>
    +
    143struct is_localizable_helper<T> : std::true_type {};
    +
    144
    +
    145template <rng::forward_iterator Iter>
    +
    146 requires(not iter_has_local_method<Iter> && not has_local_adl<Iter>) &&
    +
    147 requires() { std::iter_value_t<Iter>(); }
    +
    148struct is_localizable_helper<Iter>
    +
    149 : is_localizable_helper<std::iter_value_t<Iter>> {};
    +
    150
    +
    151template <rng::forward_range R>
    +
    152struct is_localizable_helper<R> : is_localizable_helper<rng::iterator_t<R>> {};
    +
    153
    +
    154template <typename T>
    +
    155concept is_localizable = is_localizable_helper<T>::value;
    +
    156
    +
    157template <typename Segment>
    + +
    159 rng::forward_range<Segment> && requires(Segment segment) {
    +
    160 { segment.local() } -> rng::forward_range;
    +
    161 };
    +
    162
    +
    163struct local_fn_ {
    +
    164
    +
    165 // based on https://ericniebler.github.io/range-v3/#autotoc_md30 "Create
    +
    166 // custom iterators"
    +
    167 // TODO: rewrite using iterator_interface from
    +
    168 // https://github.com/boostorg/stl_interfaces
    +
    169 template <typename Iter>
    +
    170 requires rng::forward_range<typename Iter::value_type>
    +
    171 struct cursor_over_local_ranges {
    +
    172 Iter iter;
    +
    173 auto make_begin_for_counted() const {
    +
    174 if constexpr (iter_has_local_method<
    +
    175 rng::iterator_t<typename Iter::value_type>>)
    +
    176 return rng::begin(*iter).local();
    +
    177 else
    +
    178 return rng::basic_iterator<cursor_over_local_ranges<
    +
    179 rng::iterator_t<typename Iter::value_type>>>(rng::begin(*iter));
    +
    180 }
    +
    181 auto read() const {
    +
    182 return rng::views::counted(make_begin_for_counted(), rng::size(*iter));
    +
    183 }
    +
    184 bool equal(const cursor_over_local_ranges &other) const {
    +
    185 return iter == other.iter;
    +
    186 }
    +
    187 void next() { ++iter; }
    +
    188 void prev() { --iter; }
    +
    189 void advance(std::ptrdiff_t n) { this->iter += n; }
    +
    190 std::ptrdiff_t distance_to(const cursor_over_local_ranges &other) const {
    +
    191 return other.iter - this->iter;
    +
    192 }
    +
    193 cursor_over_local_ranges() = default;
    +
    194 cursor_over_local_ranges(Iter iter) : iter(iter) {}
    +
    195 };
    +
    196
    +
    197 template <std::forward_iterator Iter>
    +
    198 requires(has_local_adl<Iter> || iter_has_local_method<Iter> ||
    +
    199 std::contiguous_iterator<Iter> || is_localizable<Iter>)
    +
    200 auto operator()(Iter iter) const {
    +
    201 if constexpr (iter_has_local_method<Iter>) {
    +
    202 return iter.local();
    +
    203 } else if constexpr (has_local_adl<Iter>) {
    +
    204 return local_(iter);
    +
    205 } else if constexpr (is_localizable<Iter>) {
    +
    206 return rng::basic_iterator<cursor_over_local_ranges<Iter>>(iter);
    +
    207 } else if constexpr (std::contiguous_iterator<Iter>) {
    +
    208 return iter;
    +
    209 }
    +
    210 }
    +
    211
    +
    212 template <rng::forward_range R>
    +
    213 requires(has_local_adl<R> || iter_has_local_method<rng::iterator_t<R>> ||
    +
    214 segment_has_local_method<R> ||
    +
    215 std::contiguous_iterator<rng::iterator_t<R>> ||
    +
    216 is_localizable<R> || rng::contiguous_range<R>)
    +
    217 auto operator()(R &&r) const {
    +
    218 if constexpr (segment_has_local_method<R>) {
    +
    219 return r.local();
    +
    220 } else if constexpr (iter_has_local_method<rng::iterator_t<R>>) {
    +
    221 return rng::views::counted(rng::begin(r).local(), rng::size(r));
    +
    222 } else if constexpr (has_local_adl<R>) {
    +
    223 return local_(std::forward<R>(r));
    +
    224 } else if constexpr (is_localizable<R>) {
    +
    225 return rng::views::counted(
    +
    226 rng::basic_iterator<cursor_over_local_ranges<rng::iterator_t<R>>>(
    +
    227 rng::begin(r)),
    +
    228 rng::size(r));
    +
    229 } else if constexpr (std::contiguous_iterator<rng::iterator_t<R>>) {
    +
    230 return std::span(rng::begin(r), rng::size(r));
    +
    231 }
    +
    232 }
    +
    233};
    +
    234
    +
    235} // namespace
    +
    236
    +
    237inline constexpr auto local = local_fn_{};
    +
    238
    +
    239namespace __detail {
    +
    240
    +
    241template <typename T>
    +
    242concept has_local = requires(T &t) {
    +
    243 { dr::ranges::local(t) } -> std::convertible_to<std::any>;
    +
    244};
    +
    245
    +
    246struct local_fn_ {
    +
    247 template <typename T>
    +
    248 requires(has_local<T>)
    +
    249 auto operator()(T &&t) const {
    +
    250 return dr::ranges::local(t);
    +
    251 }
    +
    252
    +
    253 template <typename T> decltype(auto) operator()(T &&t) const { return t; }
    +
    254};
    +
    255
    +
    256inline constexpr auto local = local_fn_{};
    +
    257
    +
    258} // namespace __detail
    +
    259
    +
    260} // namespace ranges
    +
    261
    +
    262} // namespace dr
    +
    Definition: ranges.hpp:128
    +
    Definition: ranges.hpp:27
    +
    Definition: ranges.hpp:22
    +
    Definition: ranges.hpp:95
    +
    Definition: ranges.hpp:90
    +
    Definition: ranges.hpp:155
    + +
    Definition: ranges.hpp:133
    + + +
    Definition: ranges.hpp:86
    +
    Definition: ranges.hpp:242
    +
    Definition: ranges.hpp:246
    +
    + + + + diff --git a/doxygen/ranges__shim_8hpp_source.html b/doxygen/ranges__shim_8hpp_source.html new file mode 100644 index 0000000000..2d2884eec5 --- /dev/null +++ b/doxygen/ranges__shim_8hpp_source.html @@ -0,0 +1,112 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail/ranges_shim.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    ranges_shim.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7// TODO: use libstdc++ 13.0 or greater if available.
    +
    8
    +
    9// #define DR_USE_STD_RANGES
    +
    10
    +
    11#ifdef DR_USE_STD_RANGES
    +
    12
    +
    13#include <ranges>
    +
    14
    +
    15namespace rng = ::std::ranges;
    +
    16
    +
    17#define DR_RANGES_NAMESPACE std::ranges
    +
    18
    +
    19#else
    +
    20
    +
    21#include <range/v3/all.hpp>
    +
    22
    +
    23namespace rng = ::ranges;
    +
    24
    +
    25#define DR_RANGES_NAMESPACE ranges
    +
    26
    +
    27#endif
    +
    + + + + diff --git a/doxygen/ranges__utils_8hpp_source.html b/doxygen/ranges__utils_8hpp_source.html new file mode 100644 index 0000000000..5c8186e641 --- /dev/null +++ b/doxygen/ranges__utils_8hpp_source.html @@ -0,0 +1,106 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail/ranges_utils.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    ranges_utils.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7namespace dr::__detail {
    +
    8
    +
    9//
    +
    10// std::ranges::enumerate handles unbounded ranges and returns a range
    +
    11// where end() is a different type than begin(). Most of our code
    +
    12// assumes std::ranges::common_range. bounded_enumerate requires a
    +
    13// bounded range and returns a common_range.
    +
    14//
    +
    15template <typename R> auto bounded_enumerate(R &&r) {
    +
    16 auto size = rng::distance(r);
    +
    17 using W = std::uint32_t;
    +
    18 return rng::views::zip(rng::views::iota(W(0), W(size)), r);
    +
    19}
    +
    20
    +
    21} // namespace dr::__detail
    +
    + + + + diff --git a/doxygen/remote__subrange_8hpp_source.html b/doxygen/remote__subrange_8hpp_source.html new file mode 100644 index 0000000000..d1e61cce00 --- /dev/null +++ b/doxygen/remote__subrange_8hpp_source.html @@ -0,0 +1,140 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail/remote_subrange.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    remote_subrange.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7#include <iterator>
    +
    8
    +
    9#include <dr/concepts/concepts.hpp>
    +
    10#include <dr/detail/ranges_shim.hpp>
    +
    11
    +
    12namespace dr {
    +
    13
    +
    14template <std::forward_iterator I>
    +
    15class remote_subrange : public rng::subrange<I, I> {
    +
    16 using base = rng::subrange<I, I>;
    +
    17
    +
    18public:
    + +
    20 requires std::default_initializable<I>
    +
    21 = default;
    +
    22
    +
    23 constexpr remote_subrange(I first, I last, std::size_t rank)
    +
    24 : base(first, last), rank_(rank) {}
    +
    25
    +
    26 template <rng::forward_range R>
    +
    27 constexpr remote_subrange(R &&r, std::size_t rank)
    +
    28 : base(rng::begin(r), rng::end(r)), rank_(rank) {}
    +
    29
    +
    30 template <dr::remote_range R>
    +
    31 constexpr remote_subrange(R &&r)
    +
    32 : base(rng::begin(r), rng::end(r)), rank_(dr::ranges::rank(r)) {}
    +
    33
    +
    34 constexpr std::size_t rank() const noexcept { return rank_; }
    +
    35
    +
    36private:
    +
    37 std::size_t rank_;
    +
    38};
    +
    39
    +
    40template <rng::forward_range R>
    + +
    42
    +
    43template <dr::remote_range R>
    + +
    45
    +
    46} // namespace dr
    +
    47
    +
    48#if !defined(DR_SPEC)
    +
    49
    +
    50// Needed to satisfy concepts for rng::begin
    +
    51template <typename R>
    +
    52inline constexpr bool rng::enable_borrowed_range<dr::remote_subrange<R>> = true;
    +
    53
    +
    54#endif
    +
    Definition: remote_subrange.hpp:15
    +
    + + + + diff --git a/doxygen/search/all_0.js b/doxygen/search/all_0.js new file mode 100644 index 0000000000..61e4dfc0a1 --- /dev/null +++ b/doxygen/search/all_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['allocator_0',['allocator',['../classdr_1_1mhp_1_1____detail_1_1allocator.html',1,'dr::mhp::__detail']]], + ['any_1',['any',['../structdr_1_1mhp_1_1____detail_1_1any.html',1,'dr::mhp::__detail']]] +]; diff --git a/doxygen/search/all_1.js b/doxygen/search/all_1.js new file mode 100644 index 0000000000..40e97f37bc --- /dev/null +++ b/doxygen/search/all_1.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['begin_0',['begin',['../classdr_1_1mhp_1_1distributed__vector.html#ae4c0c9494f2c9ca131a565b648487acd',1,'dr::mhp::distributed_vector']]], + ['block_5fcyclic_1',['block_cyclic',['../classdr_1_1shp_1_1block__cyclic.html',1,'dr::shp']]], + ['buffered_5fallocator_2',['buffered_allocator',['../classdr_1_1shp_1_1buffered__allocator.html',1,'dr::shp']]] +]; diff --git a/doxygen/search/all_10.js b/doxygen/search/all_10.js new file mode 100644 index 0000000000..ae9aa4b147 --- /dev/null +++ b/doxygen/search/all_10.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['transform_5fadapter_5fclosure_0',['transform_adapter_closure',['../classdr_1_1views_1_1transform__adapter__closure.html',1,'dr::views']]], + ['transform_5ffn_5f_1',['transform_fn_',['../classdr_1_1views_1_1transform__fn__.html',1,'dr::views']]], + ['transform_5fiterator_2',['transform_iterator',['../classdr_1_1transform__iterator.html',1,'dr']]], + ['transform_5fview_3',['transform_view',['../classdr_1_1transform__view.html',1,'dr']]], + ['tuple_5felement_3c_20index_2c_20dr_3a_3aindex_3c_20i_20_3e_20_3e_4',['tuple_element< Index, dr::index< I > >',['../structstd_1_1tuple__element_3_01Index_00_01dr_1_1index_3_01I_01_4_01_4.html',1,'std']]], + ['tuple_5felement_3c_20index_2c_20dr_3a_3ashp_3a_3amatrix_5fentry_3c_20t_2c_20i_20_3e_20_3e_5',['tuple_element< Index, dr::shp::matrix_entry< T, I > >',['../structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4.html',1,'std']]], + ['tuple_5felement_3c_20index_2c_20dr_3a_3ashp_3a_3amatrix_5fref_3c_20t_2c_20i_2c_20tref_20_3e_20_3e_6',['tuple_element< Index, dr::shp::matrix_ref< T, I, TRef > >',['../structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4.html',1,'std']]], + ['tuple_5for_5fpair_7',['tuple_or_pair',['../structdr_1_1shp_1_1____detail_1_1tuple__or__pair.html',1,'dr::shp::__detail']]], + ['tuple_5for_5fpair_3c_20t_2c_20u_20_3e_8',['tuple_or_pair< T, U >',['../structdr_1_1shp_1_1____detail_1_1tuple__or__pair_3_01T_00_01U_01_4.html',1,'dr::shp::__detail']]], + ['tuple_5fsize_3c_20dr_3a_3aindex_3c_20i_20_3e_20_3e_9',['tuple_size< dr::index< I > >',['../structstd_1_1tuple__size_3_01dr_1_1index_3_01I_01_4_01_4.html',1,'std']]], + ['tuple_5fsize_3c_20dr_3a_3ashp_3a_3amatrix_5fentry_3c_20t_2c_20i_20_3e_20_3e_10',['tuple_size< dr::shp::matrix_entry< T, I > >',['../structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4.html',1,'std']]], + ['tuple_5fsize_3c_20dr_3a_3ashp_3a_3amatrix_5fref_3c_20t_2c_20i_2c_20tref_20_3e_20_3e_11',['tuple_size< dr::shp::matrix_ref< T, I, TRef > >',['../structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4.html',1,'std']]] +]; diff --git a/doxygen/search/all_11.js b/doxygen/search/all_11.js new file mode 100644 index 0000000000..9551074350 --- /dev/null +++ b/doxygen/search/all_11.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['unstructured_5fhalo_0',['unstructured_halo',['../classdr_1_1mhp_1_1unstructured__halo.html',1,'dr::mhp::unstructured_halo< T, Memory >'],['../classdr_1_1mhp_1_1unstructured__halo.html#adb0adc8fd9c1756560507fa412728afb',1,'dr::mhp::unstructured_halo::unstructured_halo()']]] +]; diff --git a/doxygen/search/all_12.js b/doxygen/search/all_12.js new file mode 100644 index 0000000000..fbc152963c --- /dev/null +++ b/doxygen/search/all_12.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['vector_0',['vector',['../classdr_1_1shp_1_1vector.html',1,'dr::shp']]], + ['vector_3c_20t_2c_20allocator_20_3e_1',['vector< T, Allocator >',['../classdr_1_1shp_1_1vector.html',1,'dr::shp']]] +]; diff --git a/doxygen/search/all_13.js b/doxygen/search/all_13.js new file mode 100644 index 0000000000..e7a0a2c706 --- /dev/null +++ b/doxygen/search/all_13.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['zip_5faccessor_0',['zip_accessor',['../classdr_1_1shp_1_1zip__accessor.html',1,'dr::shp']]], + ['zip_5fiterator_1',['zip_iterator',['../classdr_1_1mhp_1_1zip__iterator.html',1,'dr::mhp']]], + ['zip_5fview_2',['zip_view',['../classdr_1_1mhp_1_1zip__view.html',1,'dr::mhp::zip_view< Rs >'],['../classdr_1_1shp_1_1zip__view.html',1,'dr::shp::zip_view< Rs >']]] +]; diff --git a/doxygen/search/all_2.js b/doxygen/search/all_2.js new file mode 100644 index 0000000000..f827747306 --- /dev/null +++ b/doxygen/search/all_2.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['communicator_0',['communicator',['../classdr_1_1communicator.html',1,'dr']]], + ['coo_5fmatrix_1',['coo_matrix',['../classdr_1_1shp_1_1____detail_1_1coo__matrix.html',1,'dr::shp::__detail']]], + ['csr_5fmatrix_5fview_2',['csr_matrix_view',['../classdr_1_1shp_1_1csr__matrix__view.html',1,'dr::shp']]], + ['csr_5fmatrix_5fview_5faccessor_3',['csr_matrix_view_accessor',['../classdr_1_1shp_1_1csr__matrix__view__accessor.html',1,'dr::shp']]] +]; diff --git a/doxygen/search/all_3.js b/doxygen/search/all_3.js new file mode 100644 index 0000000000..e5137bb6b6 --- /dev/null +++ b/doxygen/search/all_3.js @@ -0,0 +1,64 @@ +var searchData= +[ + ['default_5fmemory_0',['default_memory',['../structdr_1_1default__memory.html',1,'dr']]], + ['dense_5fmatrix_1',['dense_matrix',['../classdr_1_1shp_1_1dense__matrix.html',1,'dr::shp']]], + ['dense_5fmatrix_5faccessor_2',['dense_matrix_accessor',['../classdr_1_1shp_1_1dense__matrix__accessor.html',1,'dr::shp']]], + ['dense_5fmatrix_5fcolumn_5faccessor_3',['dense_matrix_column_accessor',['../classdr_1_1shp_1_1dense__matrix__column__accessor.html',1,'dr::shp']]], + ['dense_5fmatrix_5fcolumn_5fview_4',['dense_matrix_column_view',['../classdr_1_1shp_1_1dense__matrix__column__view.html',1,'dr::shp']]], + ['dense_5fmatrix_5frow_5faccessor_5',['dense_matrix_row_accessor',['../classdr_1_1shp_1_1dense__matrix__row__accessor.html',1,'dr::shp']]], + ['dense_5fmatrix_5frow_5fview_6',['dense_matrix_row_view',['../classdr_1_1shp_1_1dense__matrix__row__view.html',1,'dr::shp']]], + ['dense_5fmatrix_5fview_7',['dense_matrix_view',['../classdr_1_1shp_1_1dense__matrix__view.html',1,'dr::shp']]], + ['device_5fallocator_8',['device_allocator',['../classdr_1_1shp_1_1device__allocator.html',1,'dr::shp']]], + ['device_5fpolicy_9',['device_policy',['../structdr_1_1mhp_1_1device__policy.html',1,'dr::mhp::device_policy'],['../structdr_1_1shp_1_1device__policy.html',1,'dr::shp::device_policy']]], + ['device_5fptr_10',['device_ptr',['../classdr_1_1shp_1_1device__ptr.html',1,'dr::shp']]], + ['device_5fref_11',['device_ref',['../classdr_1_1shp_1_1device__ref.html',1,'dr::shp']]], + ['device_5fspan_12',['device_span',['../classdr_1_1shp_1_1device__span.html',1,'dr::shp']]], + ['device_5fvector_13',['device_vector',['../classdr_1_1shp_1_1device__vector.html',1,'dr::shp']]], + ['direct_5fiterator_14',['direct_iterator',['../classdr_1_1____detail_1_1direct__iterator.html',1,'dr::__detail']]], + ['distributed_5fcontiguous_5fiterator_15',['distributed_contiguous_iterator',['../conceptdr_1_1distributed__contiguous__iterator.html',1,'dr']]], + ['distributed_5fcontiguous_5frange_16',['distributed_contiguous_range',['../conceptdr_1_1distributed__contiguous__range.html',1,'dr']]], + ['distributed_5fdense_5fmatrix_17',['distributed_dense_matrix',['../classdr_1_1shp_1_1distributed__dense__matrix.html',1,'dr::shp']]], + ['distributed_5fdense_5fmatrix_5faccessor_18',['distributed_dense_matrix_accessor',['../classdr_1_1shp_1_1distributed__dense__matrix__accessor.html',1,'dr::shp']]], + ['distributed_5fiterator_19',['distributed_iterator',['../conceptdr_1_1distributed__iterator.html',1,'dr']]], + ['distributed_5fmdarray_20',['distributed_mdarray',['../classdr_1_1mhp_1_1distributed__mdarray.html',1,'dr::mhp']]], + ['distributed_5frange_21',['distributed_range',['../conceptdr_1_1distributed__range.html',1,'dr']]], + ['distributed_5frange_5faccessor_22',['distributed_range_accessor',['../classdr_1_1shp_1_1distributed__range__accessor.html',1,'dr::shp']]], + ['distributed_5fspan_23',['distributed_span',['../classdr_1_1shp_1_1distributed__span.html',1,'dr::shp']]], + ['distributed_5fspan_5faccessor_24',['distributed_span_accessor',['../classdr_1_1shp_1_1distributed__span__accessor.html',1,'dr::shp']]], + ['distributed_5fvector_25',['distributed_vector',['../classdr_1_1mhp_1_1distributed__vector.html#a0448f3a05db40993aad220bcf927f8fd',1,'dr::mhp::distributed_vector::distributed_vector(std::size_t size, value_type fill_value, distribution dist=distribution())'],['../classdr_1_1mhp_1_1distributed__vector.html#a1e6c268244a4a124aa6cf3ef802d133d',1,'dr::mhp::distributed_vector::distributed_vector(std::size_t size=0, distribution dist=distribution())'],['../classdr_1_1mhp_1_1distributed__vector.html',1,'dr::mhp::distributed_vector< T >'],['../structdr_1_1shp_1_1distributed__vector.html',1,'dr::shp::distributed_vector< T, Allocator >']]], + ['distributed_5fvector_5faccessor_26',['distributed_vector_accessor',['../classdr_1_1shp_1_1distributed__vector__accessor.html',1,'dr::shp']]], + ['distribution_27',['distribution',['../structdr_1_1mhp_1_1distribution.html',1,'dr::mhp']]], + ['duplicated_5fvector_28',['duplicated_vector',['../classdr_1_1shp_1_1duplicated__vector.html',1,'dr::shp']]], + ['dv_5fsegment_29',['dv_segment',['../classdr_1_1mhp_1_1dv__segment.html',1,'dr::mhp']]], + ['dv_5fsegment_5fiterator_30',['dv_segment_iterator',['../classdr_1_1mhp_1_1dv__segment__iterator.html',1,'dr::mhp']]], + ['dv_5fsegment_5freference_31',['dv_segment_reference',['../classdr_1_1mhp_1_1dv__segment__reference.html',1,'dr::mhp']]], + ['has_5fhalo_5fmethod_32',['has_halo_method',['../conceptdr_1_1mhp_1_1has__halo__method.html',1,'dr::mhp']]], + ['has_5flocal_33',['has_local',['../conceptdr_1_1ranges_1_1____detail_1_1has__local.html',1,'dr::ranges::__detail']]], + ['has_5flocal_5fadl_34',['has_local_adl',['../conceptdr_1_1ranges_1_1_0d13_1_1has__local__adl.html',1,'dr::ranges::@13']]], + ['has_5frank_5fadl_35',['has_rank_adl',['../conceptdr_1_1ranges_1_1_0d13_1_1has__rank__adl.html',1,'dr::ranges::@13']]], + ['has_5frank_5fmethod_36',['has_rank_method',['../conceptdr_1_1ranges_1_1_0d13_1_1has__rank__method.html',1,'dr::ranges::@13']]], + ['has_5fsegments_37',['has_segments',['../conceptdr_1_1mhp_1_1has__segments.html',1,'dr::mhp']]], + ['has_5fsegments_5fadl_38',['has_segments_adl',['../conceptdr_1_1ranges_1_1_0d13_1_1has__segments__adl.html',1,'dr::ranges::@13']]], + ['has_5fsegments_5fmethod_39',['has_segments_method',['../conceptdr_1_1_0d5_1_1has__segments__method.html',1,'dr::@5'],['../conceptdr_1_1ranges_1_1_0d13_1_1has__segments__method.html',1,'dr::ranges::@13']]], + ['is_5fdistributed_40',['is_distributed',['../conceptdr_1_1mhp_1_1____detail_1_1is__distributed.html',1,'dr::mhp::__detail']]], + ['is_5flocalizable_41',['is_localizable',['../conceptdr_1_1ranges_1_1_0d13_1_1is__localizable.html',1,'dr::ranges::@13']]], + ['is_5fmdspan_5fview_42',['is_mdspan_view',['../conceptdr_1_1mhp_1_1is__mdspan__view.html',1,'dr::mhp']]], + ['is_5fremote_5fiterator_5fshadow_5fimpl_5f_43',['is_remote_iterator_shadow_impl_',['../conceptdr_1_1ranges_1_1_0d13_1_1is__remote__iterator__shadow__impl__.html',1,'dr::ranges::@13']]], + ['is_5fsyclmemcopyable_44',['is_syclmemcopyable',['../conceptdr_1_1shp_1_1____detail_1_1is__syclmemcopyable.html',1,'dr::shp::__detail']]], + ['iter_5fhas_5flocal_5fmethod_45',['iter_has_local_method',['../conceptdr_1_1ranges_1_1_0d13_1_1iter__has__local__method.html',1,'dr::ranges::@13']]], + ['mdspan_5flike_46',['mdspan_like',['../conceptdr_1_1____detail_1_1mdspan__like.html',1,'dr::__detail']]], + ['no_5fsegments_47',['no_segments',['../conceptdr_1_1mhp_1_1no__segments.html',1,'dr::mhp']]], + ['one_5fargument_48',['one_argument',['../conceptdr_1_1mhp_1_1____detail_1_1one__argument.html',1,'dr::mhp::__detail']]], + ['remote_5fcontiguous_5fiterator_49',['remote_contiguous_iterator',['../conceptdr_1_1remote__contiguous__iterator.html',1,'dr']]], + ['remote_5fcontiguous_5frange_50',['remote_contiguous_range',['../conceptdr_1_1remote__contiguous__range.html',1,'dr']]], + ['remote_5fiterator_51',['remote_iterator',['../conceptdr_1_1remote__iterator.html',1,'dr']]], + ['remote_5frange_52',['remote_range',['../conceptdr_1_1remote__range.html',1,'dr']]], + ['remote_5frange_5fshadow_5fimpl_5f_53',['remote_range_shadow_impl_',['../conceptdr_1_1ranges_1_1_0d13_1_1remote__range__shadow__impl__.html',1,'dr::ranges::@13']]], + ['segment_5fhas_5flocal_5fmethod_54',['segment_has_local_method',['../conceptdr_1_1ranges_1_1_0d13_1_1segment__has__local__method.html',1,'dr::ranges::@13']]], + ['segments_5frange_55',['segments_range',['../conceptdr_1_1ranges_1_1_0d13_1_1segments__range.html',1,'dr::ranges::@13']]], + ['sycl_5fdevice_5fselector_56',['sycl_device_selector',['../conceptdr_1_1shp_1_1____detail_1_1sycl__device__selector.html',1,'dr::shp::__detail']]], + ['tupleelementgettable_57',['TupleElementGettable',['../conceptdr_1_1_0d4_1_1TupleElementGettable.html',1,'dr::@4']]], + ['tuplelike_58',['TupleLike',['../conceptdr_1_1TupleLike.html',1,'dr']]], + ['two_5farguments_59',['two_arguments',['../conceptdr_1_1mhp_1_1____detail_1_1two__arguments.html',1,'dr::mhp::__detail']]], + ['zipable_60',['zipable',['../conceptdr_1_1mhp_1_1____detail_1_1zipable.html',1,'dr::mhp::__detail']]] +]; diff --git a/doxygen/search/all_4.js b/doxygen/search/all_4.js new file mode 100644 index 0000000000..56bfd2aa5e --- /dev/null +++ b/doxygen/search/all_4.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['end_0',['end',['../classdr_1_1mhp_1_1distributed__vector.html#a7e2d8f42e59d01e1d6aaf2eadab9a0d7',1,'dr::mhp::distributed_vector']]], + ['enumerate_5fadapter_5fclosure_1',['enumerate_adapter_closure',['../classdr_1_1____detail_1_1enumerate__adapter__closure.html',1,'dr::__detail::enumerate_adapter_closure'],['../classdr_1_1mhp_1_1views_1_1enumerate__adapter__closure.html',1,'dr::mhp::views::enumerate_adapter_closure'],['../classdr_1_1shp_1_1views_1_1enumerate__adapter__closure.html',1,'dr::shp::views::enumerate_adapter_closure']]], + ['enumerate_5ffn_5f_2',['enumerate_fn_',['../classdr_1_1____detail_1_1enumerate__fn__.html',1,'dr::__detail::enumerate_fn_'],['../classdr_1_1mhp_1_1views_1_1enumerate__fn__.html',1,'dr::mhp::views::enumerate_fn_'],['../classdr_1_1shp_1_1views_1_1enumerate__fn__.html',1,'dr::shp::views::enumerate_fn_']]], + ['exchange_5fbegin_3',['exchange_begin',['../classdr_1_1mhp_1_1halo__impl.html#ab73e60acdad319f144e563483124fc6a',1,'dr::mhp::halo_impl']]], + ['exchange_5ffinalize_4',['exchange_finalize',['../classdr_1_1mhp_1_1halo__impl.html#aa0d81cc8ddbc683c8e340e917109b377',1,'dr::mhp::halo_impl']]] +]; diff --git a/doxygen/search/all_5.js b/doxygen/search/all_5.js new file mode 100644 index 0000000000..1e2126f038 --- /dev/null +++ b/doxygen/search/all_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['formatter_3c_20mdspan_2c_20char_20_3e_0',['formatter< Mdspan, char >',['../structfmt_1_1formatter_3_01Mdspan_00_01char_01_4.html',1,'fmt']]], + ['future_1',['future',['../classdr_1_1shp_1_1future.html',1,'dr::shp']]] +]; diff --git a/doxygen/search/all_6.js b/doxygen/search/all_6.js new file mode 100644 index 0000000000..39094ac572 --- /dev/null +++ b/doxygen/search/all_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['global_5fcontext_0',['global_context',['../structdr_1_1mhp_1_1____detail_1_1global__context.html',1,'dr::mhp::__detail']]] +]; diff --git a/doxygen/search/all_7.js b/doxygen/search/all_7.js new file mode 100644 index 0000000000..a3e09f3201 --- /dev/null +++ b/doxygen/search/all_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['halo_5fbounds_0',['halo_bounds',['../structdr_1_1mhp_1_1halo__bounds.html',1,'dr::mhp']]], + ['halo_5fimpl_1',['halo_impl',['../classdr_1_1mhp_1_1halo__impl.html',1,'dr::mhp::halo_impl< Group >'],['../classdr_1_1mhp_1_1halo__impl.html#a45130d039c491be7692515acc3bde318',1,'dr::mhp::halo_impl::halo_impl()']]] +]; diff --git a/doxygen/search/all_8.js b/doxygen/search/all_8.js new file mode 100644 index 0000000000..7fea36e12d --- /dev/null +++ b/doxygen/search/all_8.js @@ -0,0 +1,27 @@ +var searchData= +[ + ['id_0',['id',['../classdr_1_1shp_1_1id.html',1,'dr::shp']]], + ['index_1',['index',['../classdr_1_1index.html',1,'dr']]], + ['index_3c_20i_20_3e_2',['index< I >',['../classdr_1_1index.html',1,'dr']]], + ['index_3c_20std_3a_3aint64_5ft_20_3e_3',['index< std::int64_t >',['../classdr_1_1index.html',1,'dr']]], + ['index_3c_20std_3a_3asize_5ft_20_3e_4',['index< std::size_t >',['../classdr_1_1index.html',1,'dr']]], + ['index_5fgroup_5',['index_group',['../classdr_1_1mhp_1_1index__group.html',1,'dr::mhp::index_group< T, Memory >'],['../classdr_1_1mhp_1_1index__group.html#a14d654b8226699b589b82cca7e2f9649',1,'dr::mhp::index_group::index_group()']]], + ['iota_5ffn_5f_6',['iota_fn_',['../structdr_1_1views_1_1iota__fn__.html',1,'dr::views']]], + ['is_5fdrop_5fview_7',['is_drop_view',['../structdr_1_1is__drop__view.html',1,'dr']]], + ['is_5fdrop_5fview_3c_20rng_3a_3adrop_5fview_3c_20t_20_3e_20_3e_8',['is_drop_view< rng::drop_view< T > >',['../structdr_1_1is__drop__view_3_01rng_1_1drop__view_3_01T_01_4_01_4.html',1,'dr']]], + ['is_5fiota_5fview_9',['is_iota_view',['../structdr_1_1is__iota__view.html',1,'dr']]], + ['is_5fiota_5fview_3c_20rng_3a_3aiota_5fview_3c_20w_20_3e_20_3e_10',['is_iota_view< rng::iota_view< W > >',['../structdr_1_1is__iota__view_3_01rng_1_1iota__view_3_01W_01_4_01_4.html',1,'dr']]], + ['is_5fowning_5fview_11',['is_owning_view',['../structdr_1_1is__owning__view.html',1,'dr']]], + ['is_5fref_5fview_12',['is_ref_view',['../structdr_1_1is__ref__view.html',1,'dr']]], + ['is_5fref_5fview_3c_20rng_3a_3aref_5fview_3c_20r_20_3e_20_3e_13',['is_ref_view< rng::ref_view< R > >',['../structdr_1_1is__ref__view_3_01rng_1_1ref__view_3_01R_01_4_01_4.html',1,'dr']]], + ['is_5fsliding_5fview_14',['is_sliding_view',['../structdr_1_1is__sliding__view.html',1,'dr']]], + ['is_5fsliding_5fview_3c_20rng_3a_3asliding_5fview_3c_20t_20_3e_20_3e_15',['is_sliding_view< rng::sliding_view< T > >',['../structdr_1_1is__sliding__view_3_01rng_1_1sliding__view_3_01T_01_4_01_4.html',1,'dr']]], + ['is_5fsubrange_5fview_16',['is_subrange_view',['../structdr_1_1is__subrange__view.html',1,'dr']]], + ['is_5fsubrange_5fview_3c_20rng_3a_3asubrange_3c_20t_20_3e_20_3e_17',['is_subrange_view< rng::subrange< T > >',['../structdr_1_1is__subrange__view_3_01rng_1_1subrange_3_01T_01_4_01_4.html',1,'dr']]], + ['is_5ftake_5fview_18',['is_take_view',['../structdr_1_1is__take__view.html',1,'dr']]], + ['is_5ftake_5fview_3c_20rng_3a_3atake_5fview_3c_20t_20_3e_20_3e_19',['is_take_view< rng::take_view< T > >',['../structdr_1_1is__take__view_3_01rng_1_1take__view_3_01T_01_4_01_4.html',1,'dr']]], + ['is_5fzip_5fview_20',['is_zip_view',['../structdr_1_1is__zip__view.html',1,'dr']]], + ['is_5fzip_5fview_3c_20rng_3a_3azip_5fview_3c_20views_2e_2e_2e_20_3e_20_3e_21',['is_zip_view< rng::zip_view< Views... > >',['../structdr_1_1is__zip__view_3_01rng_1_1zip__view_3_01Views_8_8_8_01_4_01_4.html',1,'dr']]], + ['iterator_22',['iterator',['../classdr_1_1mhp_1_1distributed__vector_1_1iterator.html',1,'dr::mhp::distributed_vector']]], + ['iterator_5fadaptor_23',['iterator_adaptor',['../classdr_1_1iterator__adaptor.html',1,'dr']]] +]; diff --git a/doxygen/search/all_9.js b/doxygen/search/all_9.js new file mode 100644 index 0000000000..6f4ccf4735 --- /dev/null +++ b/doxygen/search/all_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['local_5ffn_5f_0',['local_fn_',['../structdr_1_1ranges_1_1____detail_1_1local__fn__.html',1,'dr::ranges::__detail']]], + ['logger_1',['logger',['../classdr_1_1logger.html',1,'dr']]] +]; diff --git a/doxygen/search/all_a.js b/doxygen/search/all_a.js new file mode 100644 index 0000000000..745d780a5e --- /dev/null +++ b/doxygen/search/all_a.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['matrix_5fentry_0',['matrix_entry',['../classdr_1_1shp_1_1matrix__entry.html',1,'dr::shp']]], + ['matrix_5fpartition_1',['matrix_partition',['../classdr_1_1shp_1_1matrix__partition.html',1,'dr::shp']]], + ['matrix_5fref_2',['matrix_ref',['../classdr_1_1shp_1_1matrix__ref.html',1,'dr::shp']]], + ['max_5fop_3',['max_op',['../structdr_1_1mhp_1_1halo__impl_1_1max__op.html',1,'dr::mhp::halo_impl']]], + ['md_5fsegment_4',['md_segment',['../classdr_1_1mhp_1_1____detail_1_1md__segment.html',1,'dr::mhp::__detail']]], + ['mdspan_5fadapter_5fclosure_5',['mdspan_adapter_closure',['../classdr_1_1mhp_1_1views_1_1mdspan__adapter__closure.html',1,'dr::mhp::views']]], + ['mdspan_5ffn_5f_6',['mdspan_fn_',['../classdr_1_1mhp_1_1views_1_1mdspan__fn__.html',1,'dr::mhp::views']]], + ['mdspan_5fiter_5faccessor_7',['mdspan_iter_accessor',['../classdr_1_1____detail_1_1mdspan__iter__accessor.html',1,'dr::__detail']]], + ['mdspan_5fview_8',['mdspan_view',['../structdr_1_1mhp_1_1mdspan__view.html',1,'dr::mhp']]], + ['mdsub_5fsegment_9',['mdsub_segment',['../classdr_1_1mhp_1_1____detail_1_1mdsub__segment.html',1,'dr::mhp::__detail']]], + ['mdtranspose_10',['mdtranspose',['../classdr_1_1____detail_1_1mdtranspose.html',1,'dr::__detail']]], + ['min_5fop_11',['min_op',['../structdr_1_1mhp_1_1halo__impl_1_1min__op.html',1,'dr::mhp::halo_impl']]], + ['multiplies_5fop_12',['multiplies_op',['../structdr_1_1mhp_1_1halo__impl_1_1multiplies__op.html',1,'dr::mhp::halo_impl']]] +]; diff --git a/doxygen/search/all_b.js b/doxygen/search/all_b.js new file mode 100644 index 0000000000..c0669e1f27 --- /dev/null +++ b/doxygen/search/all_b.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['normal_5fdistributed_5fiterator_5faccessor_0',['normal_distributed_iterator_accessor',['../classdr_1_1normal__distributed__iterator__accessor.html',1,'dr']]] +]; diff --git a/doxygen/search/all_c.js b/doxygen/search/all_c.js new file mode 100644 index 0000000000..0c36f9fa8d --- /dev/null +++ b/doxygen/search/all_c.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['operator_5b_5d_0',['operator[]',['../classdr_1_1mhp_1_1distributed__vector.html#ac5dd02baad90df8fe28391952e799da5',1,'dr::mhp::distributed_vector']]], + ['owning_5fview_1',['owning_view',['../classdr_1_1____detail_1_1owning__view.html',1,'dr::__detail']]] +]; diff --git a/doxygen/search/all_d.js b/doxygen/search/all_d.js new file mode 100644 index 0000000000..5677cae064 --- /dev/null +++ b/doxygen/search/all_d.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['plus_5fop_0',['plus_op',['../structdr_1_1mhp_1_1halo__impl_1_1plus__op.html',1,'dr::mhp::halo_impl']]] +]; diff --git a/doxygen/search/all_e.js b/doxygen/search/all_e.js new file mode 100644 index 0000000000..bb58d5df51 --- /dev/null +++ b/doxygen/search/all_e.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['range_5fsize_0',['range_size',['../structdr_1_1mhp_1_1views_1_1____detail_1_1range__size.html',1,'dr::mhp::views::__detail']]], + ['range_5fsize_3c_20r_20_3e_1',['range_size< R >',['../structdr_1_1mhp_1_1views_1_1____detail_1_1range__size_3_01R_01_4.html',1,'dr::mhp::views::__detail']]], + ['rebind_2',['rebind',['../structdr_1_1shp_1_1device__allocator_1_1rebind.html',1,'dr::shp::device_allocator']]], + ['reduce_5fbegin_3',['reduce_begin',['../classdr_1_1mhp_1_1halo__impl.html#a78da1fc3ca0448705ea7690e6c0e8ecf',1,'dr::mhp::halo_impl']]], + ['reduce_5ffinalize_4',['reduce_finalize',['../classdr_1_1mhp_1_1halo__impl.html#abcf6841717acb246fcea716eb1af02b0',1,'dr::mhp::halo_impl::reduce_finalize(const auto &op)'],['../classdr_1_1mhp_1_1halo__impl.html#af756ff4409842704121c9d81ec1a9974',1,'dr::mhp::halo_impl::reduce_finalize()']]], + ['remote_5fsubrange_5',['remote_subrange',['../classdr_1_1remote__subrange.html',1,'dr']]], + ['rma_5fwindow_6',['rma_window',['../classdr_1_1rma__window.html',1,'dr']]] +]; diff --git a/doxygen/search/all_f.js b/doxygen/search/all_f.js new file mode 100644 index 0000000000..deae4beec3 --- /dev/null +++ b/doxygen/search/all_f.js @@ -0,0 +1,22 @@ +var searchData= +[ + ['second_5fop_0',['second_op',['../structdr_1_1mhp_1_1halo__impl_1_1second__op.html',1,'dr::mhp::halo_impl']]], + ['segment_5frange_1',['segment_range',['../classdr_1_1shp_1_1segment__range.html',1,'dr::shp']]], + ['segment_5frange_5faccessor_2',['segment_range_accessor',['../classdr_1_1shp_1_1segment__range__accessor.html',1,'dr::shp']]], + ['segmented_5fview_3',['segmented_view',['../classdr_1_1mhp_1_1segmented__view.html',1,'dr::mhp']]], + ['segmented_5fview_5fiterator_4',['segmented_view_iterator',['../classdr_1_1mhp_1_1segmented__view__iterator.html',1,'dr::mhp']]], + ['size_5',['size',['../classdr_1_1mhp_1_1distributed__vector.html#aeaee61dead6a4e70f7eb2543ce3e8b15',1,'dr::mhp::distributed_vector']]], + ['slice_5fadaptor_5fclosure_6',['slice_adaptor_closure',['../classdr_1_1shp_1_1views_1_1slice__adaptor__closure.html',1,'dr::shp::views']]], + ['sliding_5ffn_7',['sliding_fn',['../structdr_1_1mhp_1_1views_1_1____detail_1_1sliding__fn.html',1,'dr::mhp::views::__detail']]], + ['source_5flocation_8',['source_location',['../structnostd_1_1source__location.html',1,'nostd']]], + ['span_9',['span',['../classdr_1_1shp_1_1span.html',1,'dr::shp']]], + ['span_3c_20t_2c_20t_20_2a_20_3e_10',['span< T, T * >',['../classdr_1_1shp_1_1span.html',1,'dr::shp']]], + ['span_5fgroup_11',['span_group',['../classdr_1_1mhp_1_1span__group.html',1,'dr::mhp']]], + ['span_5fhalo_12',['span_halo',['../classdr_1_1mhp_1_1span__halo.html',1,'dr::mhp']]], + ['sparse_5fmatrix_13',['sparse_matrix',['../classdr_1_1shp_1_1sparse__matrix.html',1,'dr::shp']]], + ['submdspan_5fadapter_5fclosure_14',['submdspan_adapter_closure',['../classdr_1_1mhp_1_1views_1_1submdspan__adapter__closure.html',1,'dr::mhp::views']]], + ['submdspan_5ffn_5f_15',['submdspan_fn_',['../classdr_1_1mhp_1_1views_1_1submdspan__fn__.html',1,'dr::mhp::views']]], + ['submdspan_5fview_16',['submdspan_view',['../structdr_1_1mhp_1_1submdspan__view.html',1,'dr::mhp']]], + ['subrange_17',['subrange',['../classdr_1_1mhp_1_1subrange.html',1,'dr::mhp']]], + ['subrange_5fiterator_18',['subrange_iterator',['../classdr_1_1mhp_1_1subrange__iterator.html',1,'dr::mhp']]] +]; diff --git a/doxygen/search/classes_0.js b/doxygen/search/classes_0.js new file mode 100644 index 0000000000..61e4dfc0a1 --- /dev/null +++ b/doxygen/search/classes_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['allocator_0',['allocator',['../classdr_1_1mhp_1_1____detail_1_1allocator.html',1,'dr::mhp::__detail']]], + ['any_1',['any',['../structdr_1_1mhp_1_1____detail_1_1any.html',1,'dr::mhp::__detail']]] +]; diff --git a/doxygen/search/classes_1.js b/doxygen/search/classes_1.js new file mode 100644 index 0000000000..142a1fc680 --- /dev/null +++ b/doxygen/search/classes_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['block_5fcyclic_0',['block_cyclic',['../classdr_1_1shp_1_1block__cyclic.html',1,'dr::shp']]], + ['buffered_5fallocator_1',['buffered_allocator',['../classdr_1_1shp_1_1buffered__allocator.html',1,'dr::shp']]] +]; diff --git a/doxygen/search/classes_10.js b/doxygen/search/classes_10.js new file mode 100644 index 0000000000..ae9aa4b147 --- /dev/null +++ b/doxygen/search/classes_10.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['transform_5fadapter_5fclosure_0',['transform_adapter_closure',['../classdr_1_1views_1_1transform__adapter__closure.html',1,'dr::views']]], + ['transform_5ffn_5f_1',['transform_fn_',['../classdr_1_1views_1_1transform__fn__.html',1,'dr::views']]], + ['transform_5fiterator_2',['transform_iterator',['../classdr_1_1transform__iterator.html',1,'dr']]], + ['transform_5fview_3',['transform_view',['../classdr_1_1transform__view.html',1,'dr']]], + ['tuple_5felement_3c_20index_2c_20dr_3a_3aindex_3c_20i_20_3e_20_3e_4',['tuple_element< Index, dr::index< I > >',['../structstd_1_1tuple__element_3_01Index_00_01dr_1_1index_3_01I_01_4_01_4.html',1,'std']]], + ['tuple_5felement_3c_20index_2c_20dr_3a_3ashp_3a_3amatrix_5fentry_3c_20t_2c_20i_20_3e_20_3e_5',['tuple_element< Index, dr::shp::matrix_entry< T, I > >',['../structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4.html',1,'std']]], + ['tuple_5felement_3c_20index_2c_20dr_3a_3ashp_3a_3amatrix_5fref_3c_20t_2c_20i_2c_20tref_20_3e_20_3e_6',['tuple_element< Index, dr::shp::matrix_ref< T, I, TRef > >',['../structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4.html',1,'std']]], + ['tuple_5for_5fpair_7',['tuple_or_pair',['../structdr_1_1shp_1_1____detail_1_1tuple__or__pair.html',1,'dr::shp::__detail']]], + ['tuple_5for_5fpair_3c_20t_2c_20u_20_3e_8',['tuple_or_pair< T, U >',['../structdr_1_1shp_1_1____detail_1_1tuple__or__pair_3_01T_00_01U_01_4.html',1,'dr::shp::__detail']]], + ['tuple_5fsize_3c_20dr_3a_3aindex_3c_20i_20_3e_20_3e_9',['tuple_size< dr::index< I > >',['../structstd_1_1tuple__size_3_01dr_1_1index_3_01I_01_4_01_4.html',1,'std']]], + ['tuple_5fsize_3c_20dr_3a_3ashp_3a_3amatrix_5fentry_3c_20t_2c_20i_20_3e_20_3e_10',['tuple_size< dr::shp::matrix_entry< T, I > >',['../structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4.html',1,'std']]], + ['tuple_5fsize_3c_20dr_3a_3ashp_3a_3amatrix_5fref_3c_20t_2c_20i_2c_20tref_20_3e_20_3e_11',['tuple_size< dr::shp::matrix_ref< T, I, TRef > >',['../structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4.html',1,'std']]] +]; diff --git a/doxygen/search/classes_11.js b/doxygen/search/classes_11.js new file mode 100644 index 0000000000..10e9007061 --- /dev/null +++ b/doxygen/search/classes_11.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['unstructured_5fhalo_0',['unstructured_halo',['../classdr_1_1mhp_1_1unstructured__halo.html',1,'dr::mhp']]] +]; diff --git a/doxygen/search/classes_12.js b/doxygen/search/classes_12.js new file mode 100644 index 0000000000..fbc152963c --- /dev/null +++ b/doxygen/search/classes_12.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['vector_0',['vector',['../classdr_1_1shp_1_1vector.html',1,'dr::shp']]], + ['vector_3c_20t_2c_20allocator_20_3e_1',['vector< T, Allocator >',['../classdr_1_1shp_1_1vector.html',1,'dr::shp']]] +]; diff --git a/doxygen/search/classes_13.js b/doxygen/search/classes_13.js new file mode 100644 index 0000000000..e7a0a2c706 --- /dev/null +++ b/doxygen/search/classes_13.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['zip_5faccessor_0',['zip_accessor',['../classdr_1_1shp_1_1zip__accessor.html',1,'dr::shp']]], + ['zip_5fiterator_1',['zip_iterator',['../classdr_1_1mhp_1_1zip__iterator.html',1,'dr::mhp']]], + ['zip_5fview_2',['zip_view',['../classdr_1_1mhp_1_1zip__view.html',1,'dr::mhp::zip_view< Rs >'],['../classdr_1_1shp_1_1zip__view.html',1,'dr::shp::zip_view< Rs >']]] +]; diff --git a/doxygen/search/classes_2.js b/doxygen/search/classes_2.js new file mode 100644 index 0000000000..f827747306 --- /dev/null +++ b/doxygen/search/classes_2.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['communicator_0',['communicator',['../classdr_1_1communicator.html',1,'dr']]], + ['coo_5fmatrix_1',['coo_matrix',['../classdr_1_1shp_1_1____detail_1_1coo__matrix.html',1,'dr::shp::__detail']]], + ['csr_5fmatrix_5fview_2',['csr_matrix_view',['../classdr_1_1shp_1_1csr__matrix__view.html',1,'dr::shp']]], + ['csr_5fmatrix_5fview_5faccessor_3',['csr_matrix_view_accessor',['../classdr_1_1shp_1_1csr__matrix__view__accessor.html',1,'dr::shp']]] +]; diff --git a/doxygen/search/classes_3.js b/doxygen/search/classes_3.js new file mode 100644 index 0000000000..bcf9826438 --- /dev/null +++ b/doxygen/search/classes_3.js @@ -0,0 +1,31 @@ +var searchData= +[ + ['default_5fmemory_0',['default_memory',['../structdr_1_1default__memory.html',1,'dr']]], + ['dense_5fmatrix_1',['dense_matrix',['../classdr_1_1shp_1_1dense__matrix.html',1,'dr::shp']]], + ['dense_5fmatrix_5faccessor_2',['dense_matrix_accessor',['../classdr_1_1shp_1_1dense__matrix__accessor.html',1,'dr::shp']]], + ['dense_5fmatrix_5fcolumn_5faccessor_3',['dense_matrix_column_accessor',['../classdr_1_1shp_1_1dense__matrix__column__accessor.html',1,'dr::shp']]], + ['dense_5fmatrix_5fcolumn_5fview_4',['dense_matrix_column_view',['../classdr_1_1shp_1_1dense__matrix__column__view.html',1,'dr::shp']]], + ['dense_5fmatrix_5frow_5faccessor_5',['dense_matrix_row_accessor',['../classdr_1_1shp_1_1dense__matrix__row__accessor.html',1,'dr::shp']]], + ['dense_5fmatrix_5frow_5fview_6',['dense_matrix_row_view',['../classdr_1_1shp_1_1dense__matrix__row__view.html',1,'dr::shp']]], + ['dense_5fmatrix_5fview_7',['dense_matrix_view',['../classdr_1_1shp_1_1dense__matrix__view.html',1,'dr::shp']]], + ['device_5fallocator_8',['device_allocator',['../classdr_1_1shp_1_1device__allocator.html',1,'dr::shp']]], + ['device_5fpolicy_9',['device_policy',['../structdr_1_1mhp_1_1device__policy.html',1,'dr::mhp::device_policy'],['../structdr_1_1shp_1_1device__policy.html',1,'dr::shp::device_policy']]], + ['device_5fptr_10',['device_ptr',['../classdr_1_1shp_1_1device__ptr.html',1,'dr::shp']]], + ['device_5fref_11',['device_ref',['../classdr_1_1shp_1_1device__ref.html',1,'dr::shp']]], + ['device_5fspan_12',['device_span',['../classdr_1_1shp_1_1device__span.html',1,'dr::shp']]], + ['device_5fvector_13',['device_vector',['../classdr_1_1shp_1_1device__vector.html',1,'dr::shp']]], + ['direct_5fiterator_14',['direct_iterator',['../classdr_1_1____detail_1_1direct__iterator.html',1,'dr::__detail']]], + ['distributed_5fdense_5fmatrix_15',['distributed_dense_matrix',['../classdr_1_1shp_1_1distributed__dense__matrix.html',1,'dr::shp']]], + ['distributed_5fdense_5fmatrix_5faccessor_16',['distributed_dense_matrix_accessor',['../classdr_1_1shp_1_1distributed__dense__matrix__accessor.html',1,'dr::shp']]], + ['distributed_5fmdarray_17',['distributed_mdarray',['../classdr_1_1mhp_1_1distributed__mdarray.html',1,'dr::mhp']]], + ['distributed_5frange_5faccessor_18',['distributed_range_accessor',['../classdr_1_1shp_1_1distributed__range__accessor.html',1,'dr::shp']]], + ['distributed_5fspan_19',['distributed_span',['../classdr_1_1shp_1_1distributed__span.html',1,'dr::shp']]], + ['distributed_5fspan_5faccessor_20',['distributed_span_accessor',['../classdr_1_1shp_1_1distributed__span__accessor.html',1,'dr::shp']]], + ['distributed_5fvector_21',['distributed_vector',['../classdr_1_1mhp_1_1distributed__vector.html',1,'dr::mhp::distributed_vector< T >'],['../structdr_1_1shp_1_1distributed__vector.html',1,'dr::shp::distributed_vector< T, Allocator >']]], + ['distributed_5fvector_5faccessor_22',['distributed_vector_accessor',['../classdr_1_1shp_1_1distributed__vector__accessor.html',1,'dr::shp']]], + ['distribution_23',['distribution',['../structdr_1_1mhp_1_1distribution.html',1,'dr::mhp']]], + ['duplicated_5fvector_24',['duplicated_vector',['../classdr_1_1shp_1_1duplicated__vector.html',1,'dr::shp']]], + ['dv_5fsegment_25',['dv_segment',['../classdr_1_1mhp_1_1dv__segment.html',1,'dr::mhp']]], + ['dv_5fsegment_5fiterator_26',['dv_segment_iterator',['../classdr_1_1mhp_1_1dv__segment__iterator.html',1,'dr::mhp']]], + ['dv_5fsegment_5freference_27',['dv_segment_reference',['../classdr_1_1mhp_1_1dv__segment__reference.html',1,'dr::mhp']]] +]; diff --git a/doxygen/search/classes_4.js b/doxygen/search/classes_4.js new file mode 100644 index 0000000000..64186f5977 --- /dev/null +++ b/doxygen/search/classes_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['enumerate_5fadapter_5fclosure_0',['enumerate_adapter_closure',['../classdr_1_1____detail_1_1enumerate__adapter__closure.html',1,'dr::__detail::enumerate_adapter_closure'],['../classdr_1_1mhp_1_1views_1_1enumerate__adapter__closure.html',1,'dr::mhp::views::enumerate_adapter_closure'],['../classdr_1_1shp_1_1views_1_1enumerate__adapter__closure.html',1,'dr::shp::views::enumerate_adapter_closure']]], + ['enumerate_5ffn_5f_1',['enumerate_fn_',['../classdr_1_1____detail_1_1enumerate__fn__.html',1,'dr::__detail::enumerate_fn_'],['../classdr_1_1mhp_1_1views_1_1enumerate__fn__.html',1,'dr::mhp::views::enumerate_fn_'],['../classdr_1_1shp_1_1views_1_1enumerate__fn__.html',1,'dr::shp::views::enumerate_fn_']]] +]; diff --git a/doxygen/search/classes_5.js b/doxygen/search/classes_5.js new file mode 100644 index 0000000000..1e2126f038 --- /dev/null +++ b/doxygen/search/classes_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['formatter_3c_20mdspan_2c_20char_20_3e_0',['formatter< Mdspan, char >',['../structfmt_1_1formatter_3_01Mdspan_00_01char_01_4.html',1,'fmt']]], + ['future_1',['future',['../classdr_1_1shp_1_1future.html',1,'dr::shp']]] +]; diff --git a/doxygen/search/classes_6.js b/doxygen/search/classes_6.js new file mode 100644 index 0000000000..39094ac572 --- /dev/null +++ b/doxygen/search/classes_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['global_5fcontext_0',['global_context',['../structdr_1_1mhp_1_1____detail_1_1global__context.html',1,'dr::mhp::__detail']]] +]; diff --git a/doxygen/search/classes_7.js b/doxygen/search/classes_7.js new file mode 100644 index 0000000000..bfde681720 --- /dev/null +++ b/doxygen/search/classes_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['halo_5fbounds_0',['halo_bounds',['../structdr_1_1mhp_1_1halo__bounds.html',1,'dr::mhp']]], + ['halo_5fimpl_1',['halo_impl',['../classdr_1_1mhp_1_1halo__impl.html',1,'dr::mhp']]] +]; diff --git a/doxygen/search/classes_8.js b/doxygen/search/classes_8.js new file mode 100644 index 0000000000..a1acb38eb8 --- /dev/null +++ b/doxygen/search/classes_8.js @@ -0,0 +1,27 @@ +var searchData= +[ + ['id_0',['id',['../classdr_1_1shp_1_1id.html',1,'dr::shp']]], + ['index_1',['index',['../classdr_1_1index.html',1,'dr']]], + ['index_3c_20i_20_3e_2',['index< I >',['../classdr_1_1index.html',1,'dr']]], + ['index_3c_20std_3a_3aint64_5ft_20_3e_3',['index< std::int64_t >',['../classdr_1_1index.html',1,'dr']]], + ['index_3c_20std_3a_3asize_5ft_20_3e_4',['index< std::size_t >',['../classdr_1_1index.html',1,'dr']]], + ['index_5fgroup_5',['index_group',['../classdr_1_1mhp_1_1index__group.html',1,'dr::mhp']]], + ['iota_5ffn_5f_6',['iota_fn_',['../structdr_1_1views_1_1iota__fn__.html',1,'dr::views']]], + ['is_5fdrop_5fview_7',['is_drop_view',['../structdr_1_1is__drop__view.html',1,'dr']]], + ['is_5fdrop_5fview_3c_20rng_3a_3adrop_5fview_3c_20t_20_3e_20_3e_8',['is_drop_view< rng::drop_view< T > >',['../structdr_1_1is__drop__view_3_01rng_1_1drop__view_3_01T_01_4_01_4.html',1,'dr']]], + ['is_5fiota_5fview_9',['is_iota_view',['../structdr_1_1is__iota__view.html',1,'dr']]], + ['is_5fiota_5fview_3c_20rng_3a_3aiota_5fview_3c_20w_20_3e_20_3e_10',['is_iota_view< rng::iota_view< W > >',['../structdr_1_1is__iota__view_3_01rng_1_1iota__view_3_01W_01_4_01_4.html',1,'dr']]], + ['is_5fowning_5fview_11',['is_owning_view',['../structdr_1_1is__owning__view.html',1,'dr']]], + ['is_5fref_5fview_12',['is_ref_view',['../structdr_1_1is__ref__view.html',1,'dr']]], + ['is_5fref_5fview_3c_20rng_3a_3aref_5fview_3c_20r_20_3e_20_3e_13',['is_ref_view< rng::ref_view< R > >',['../structdr_1_1is__ref__view_3_01rng_1_1ref__view_3_01R_01_4_01_4.html',1,'dr']]], + ['is_5fsliding_5fview_14',['is_sliding_view',['../structdr_1_1is__sliding__view.html',1,'dr']]], + ['is_5fsliding_5fview_3c_20rng_3a_3asliding_5fview_3c_20t_20_3e_20_3e_15',['is_sliding_view< rng::sliding_view< T > >',['../structdr_1_1is__sliding__view_3_01rng_1_1sliding__view_3_01T_01_4_01_4.html',1,'dr']]], + ['is_5fsubrange_5fview_16',['is_subrange_view',['../structdr_1_1is__subrange__view.html',1,'dr']]], + ['is_5fsubrange_5fview_3c_20rng_3a_3asubrange_3c_20t_20_3e_20_3e_17',['is_subrange_view< rng::subrange< T > >',['../structdr_1_1is__subrange__view_3_01rng_1_1subrange_3_01T_01_4_01_4.html',1,'dr']]], + ['is_5ftake_5fview_18',['is_take_view',['../structdr_1_1is__take__view.html',1,'dr']]], + ['is_5ftake_5fview_3c_20rng_3a_3atake_5fview_3c_20t_20_3e_20_3e_19',['is_take_view< rng::take_view< T > >',['../structdr_1_1is__take__view_3_01rng_1_1take__view_3_01T_01_4_01_4.html',1,'dr']]], + ['is_5fzip_5fview_20',['is_zip_view',['../structdr_1_1is__zip__view.html',1,'dr']]], + ['is_5fzip_5fview_3c_20rng_3a_3azip_5fview_3c_20views_2e_2e_2e_20_3e_20_3e_21',['is_zip_view< rng::zip_view< Views... > >',['../structdr_1_1is__zip__view_3_01rng_1_1zip__view_3_01Views_8_8_8_01_4_01_4.html',1,'dr']]], + ['iterator_22',['iterator',['../classdr_1_1mhp_1_1distributed__vector_1_1iterator.html',1,'dr::mhp::distributed_vector']]], + ['iterator_5fadaptor_23',['iterator_adaptor',['../classdr_1_1iterator__adaptor.html',1,'dr']]] +]; diff --git a/doxygen/search/classes_9.js b/doxygen/search/classes_9.js new file mode 100644 index 0000000000..6f4ccf4735 --- /dev/null +++ b/doxygen/search/classes_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['local_5ffn_5f_0',['local_fn_',['../structdr_1_1ranges_1_1____detail_1_1local__fn__.html',1,'dr::ranges::__detail']]], + ['logger_1',['logger',['../classdr_1_1logger.html',1,'dr']]] +]; diff --git a/doxygen/search/classes_a.js b/doxygen/search/classes_a.js new file mode 100644 index 0000000000..745d780a5e --- /dev/null +++ b/doxygen/search/classes_a.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['matrix_5fentry_0',['matrix_entry',['../classdr_1_1shp_1_1matrix__entry.html',1,'dr::shp']]], + ['matrix_5fpartition_1',['matrix_partition',['../classdr_1_1shp_1_1matrix__partition.html',1,'dr::shp']]], + ['matrix_5fref_2',['matrix_ref',['../classdr_1_1shp_1_1matrix__ref.html',1,'dr::shp']]], + ['max_5fop_3',['max_op',['../structdr_1_1mhp_1_1halo__impl_1_1max__op.html',1,'dr::mhp::halo_impl']]], + ['md_5fsegment_4',['md_segment',['../classdr_1_1mhp_1_1____detail_1_1md__segment.html',1,'dr::mhp::__detail']]], + ['mdspan_5fadapter_5fclosure_5',['mdspan_adapter_closure',['../classdr_1_1mhp_1_1views_1_1mdspan__adapter__closure.html',1,'dr::mhp::views']]], + ['mdspan_5ffn_5f_6',['mdspan_fn_',['../classdr_1_1mhp_1_1views_1_1mdspan__fn__.html',1,'dr::mhp::views']]], + ['mdspan_5fiter_5faccessor_7',['mdspan_iter_accessor',['../classdr_1_1____detail_1_1mdspan__iter__accessor.html',1,'dr::__detail']]], + ['mdspan_5fview_8',['mdspan_view',['../structdr_1_1mhp_1_1mdspan__view.html',1,'dr::mhp']]], + ['mdsub_5fsegment_9',['mdsub_segment',['../classdr_1_1mhp_1_1____detail_1_1mdsub__segment.html',1,'dr::mhp::__detail']]], + ['mdtranspose_10',['mdtranspose',['../classdr_1_1____detail_1_1mdtranspose.html',1,'dr::__detail']]], + ['min_5fop_11',['min_op',['../structdr_1_1mhp_1_1halo__impl_1_1min__op.html',1,'dr::mhp::halo_impl']]], + ['multiplies_5fop_12',['multiplies_op',['../structdr_1_1mhp_1_1halo__impl_1_1multiplies__op.html',1,'dr::mhp::halo_impl']]] +]; diff --git a/doxygen/search/classes_b.js b/doxygen/search/classes_b.js new file mode 100644 index 0000000000..c0669e1f27 --- /dev/null +++ b/doxygen/search/classes_b.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['normal_5fdistributed_5fiterator_5faccessor_0',['normal_distributed_iterator_accessor',['../classdr_1_1normal__distributed__iterator__accessor.html',1,'dr']]] +]; diff --git a/doxygen/search/classes_c.js b/doxygen/search/classes_c.js new file mode 100644 index 0000000000..a87c20ce48 --- /dev/null +++ b/doxygen/search/classes_c.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['owning_5fview_0',['owning_view',['../classdr_1_1____detail_1_1owning__view.html',1,'dr::__detail']]] +]; diff --git a/doxygen/search/classes_d.js b/doxygen/search/classes_d.js new file mode 100644 index 0000000000..5677cae064 --- /dev/null +++ b/doxygen/search/classes_d.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['plus_5fop_0',['plus_op',['../structdr_1_1mhp_1_1halo__impl_1_1plus__op.html',1,'dr::mhp::halo_impl']]] +]; diff --git a/doxygen/search/classes_e.js b/doxygen/search/classes_e.js new file mode 100644 index 0000000000..e7bf191b71 --- /dev/null +++ b/doxygen/search/classes_e.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['range_5fsize_0',['range_size',['../structdr_1_1mhp_1_1views_1_1____detail_1_1range__size.html',1,'dr::mhp::views::__detail']]], + ['range_5fsize_3c_20r_20_3e_1',['range_size< R >',['../structdr_1_1mhp_1_1views_1_1____detail_1_1range__size_3_01R_01_4.html',1,'dr::mhp::views::__detail']]], + ['rebind_2',['rebind',['../structdr_1_1shp_1_1device__allocator_1_1rebind.html',1,'dr::shp::device_allocator']]], + ['remote_5fsubrange_3',['remote_subrange',['../classdr_1_1remote__subrange.html',1,'dr']]], + ['rma_5fwindow_4',['rma_window',['../classdr_1_1rma__window.html',1,'dr']]] +]; diff --git a/doxygen/search/classes_f.js b/doxygen/search/classes_f.js new file mode 100644 index 0000000000..06575f12dc --- /dev/null +++ b/doxygen/search/classes_f.js @@ -0,0 +1,21 @@ +var searchData= +[ + ['second_5fop_0',['second_op',['../structdr_1_1mhp_1_1halo__impl_1_1second__op.html',1,'dr::mhp::halo_impl']]], + ['segment_5frange_1',['segment_range',['../classdr_1_1shp_1_1segment__range.html',1,'dr::shp']]], + ['segment_5frange_5faccessor_2',['segment_range_accessor',['../classdr_1_1shp_1_1segment__range__accessor.html',1,'dr::shp']]], + ['segmented_5fview_3',['segmented_view',['../classdr_1_1mhp_1_1segmented__view.html',1,'dr::mhp']]], + ['segmented_5fview_5fiterator_4',['segmented_view_iterator',['../classdr_1_1mhp_1_1segmented__view__iterator.html',1,'dr::mhp']]], + ['slice_5fadaptor_5fclosure_5',['slice_adaptor_closure',['../classdr_1_1shp_1_1views_1_1slice__adaptor__closure.html',1,'dr::shp::views']]], + ['sliding_5ffn_6',['sliding_fn',['../structdr_1_1mhp_1_1views_1_1____detail_1_1sliding__fn.html',1,'dr::mhp::views::__detail']]], + ['source_5flocation_7',['source_location',['../structnostd_1_1source__location.html',1,'nostd']]], + ['span_8',['span',['../classdr_1_1shp_1_1span.html',1,'dr::shp']]], + ['span_3c_20t_2c_20t_20_2a_20_3e_9',['span< T, T * >',['../classdr_1_1shp_1_1span.html',1,'dr::shp']]], + ['span_5fgroup_10',['span_group',['../classdr_1_1mhp_1_1span__group.html',1,'dr::mhp']]], + ['span_5fhalo_11',['span_halo',['../classdr_1_1mhp_1_1span__halo.html',1,'dr::mhp']]], + ['sparse_5fmatrix_12',['sparse_matrix',['../classdr_1_1shp_1_1sparse__matrix.html',1,'dr::shp']]], + ['submdspan_5fadapter_5fclosure_13',['submdspan_adapter_closure',['../classdr_1_1mhp_1_1views_1_1submdspan__adapter__closure.html',1,'dr::mhp::views']]], + ['submdspan_5ffn_5f_14',['submdspan_fn_',['../classdr_1_1mhp_1_1views_1_1submdspan__fn__.html',1,'dr::mhp::views']]], + ['submdspan_5fview_15',['submdspan_view',['../structdr_1_1mhp_1_1submdspan__view.html',1,'dr::mhp']]], + ['subrange_16',['subrange',['../classdr_1_1mhp_1_1subrange.html',1,'dr::mhp']]], + ['subrange_5fiterator_17',['subrange_iterator',['../classdr_1_1mhp_1_1subrange__iterator.html',1,'dr::mhp']]] +]; diff --git a/doxygen/search/close.svg b/doxygen/search/close.svg new file mode 100644 index 0000000000..a933eea1a2 --- /dev/null +++ b/doxygen/search/close.svg @@ -0,0 +1,31 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/doxygen/search/concepts_0.js b/doxygen/search/concepts_0.js new file mode 100644 index 0000000000..346842d304 --- /dev/null +++ b/doxygen/search/concepts_0.js @@ -0,0 +1,36 @@ +var searchData= +[ + ['distributed_5fcontiguous_5fiterator_0',['distributed_contiguous_iterator',['../conceptdr_1_1distributed__contiguous__iterator.html',1,'dr']]], + ['distributed_5fcontiguous_5frange_1',['distributed_contiguous_range',['../conceptdr_1_1distributed__contiguous__range.html',1,'dr']]], + ['distributed_5fiterator_2',['distributed_iterator',['../conceptdr_1_1distributed__iterator.html',1,'dr']]], + ['distributed_5frange_3',['distributed_range',['../conceptdr_1_1distributed__range.html',1,'dr']]], + ['has_5fhalo_5fmethod_4',['has_halo_method',['../conceptdr_1_1mhp_1_1has__halo__method.html',1,'dr::mhp']]], + ['has_5flocal_5',['has_local',['../conceptdr_1_1ranges_1_1____detail_1_1has__local.html',1,'dr::ranges::__detail']]], + ['has_5flocal_5fadl_6',['has_local_adl',['../conceptdr_1_1ranges_1_1_0d13_1_1has__local__adl.html',1,'dr::ranges::@13']]], + ['has_5frank_5fadl_7',['has_rank_adl',['../conceptdr_1_1ranges_1_1_0d13_1_1has__rank__adl.html',1,'dr::ranges::@13']]], + ['has_5frank_5fmethod_8',['has_rank_method',['../conceptdr_1_1ranges_1_1_0d13_1_1has__rank__method.html',1,'dr::ranges::@13']]], + ['has_5fsegments_9',['has_segments',['../conceptdr_1_1mhp_1_1has__segments.html',1,'dr::mhp']]], + ['has_5fsegments_5fadl_10',['has_segments_adl',['../conceptdr_1_1ranges_1_1_0d13_1_1has__segments__adl.html',1,'dr::ranges::@13']]], + ['has_5fsegments_5fmethod_11',['has_segments_method',['../conceptdr_1_1_0d5_1_1has__segments__method.html',1,'dr::@5'],['../conceptdr_1_1ranges_1_1_0d13_1_1has__segments__method.html',1,'dr::ranges::@13']]], + ['is_5fdistributed_12',['is_distributed',['../conceptdr_1_1mhp_1_1____detail_1_1is__distributed.html',1,'dr::mhp::__detail']]], + ['is_5flocalizable_13',['is_localizable',['../conceptdr_1_1ranges_1_1_0d13_1_1is__localizable.html',1,'dr::ranges::@13']]], + ['is_5fmdspan_5fview_14',['is_mdspan_view',['../conceptdr_1_1mhp_1_1is__mdspan__view.html',1,'dr::mhp']]], + ['is_5fremote_5fiterator_5fshadow_5fimpl_5f_15',['is_remote_iterator_shadow_impl_',['../conceptdr_1_1ranges_1_1_0d13_1_1is__remote__iterator__shadow__impl__.html',1,'dr::ranges::@13']]], + ['is_5fsyclmemcopyable_16',['is_syclmemcopyable',['../conceptdr_1_1shp_1_1____detail_1_1is__syclmemcopyable.html',1,'dr::shp::__detail']]], + ['iter_5fhas_5flocal_5fmethod_17',['iter_has_local_method',['../conceptdr_1_1ranges_1_1_0d13_1_1iter__has__local__method.html',1,'dr::ranges::@13']]], + ['mdspan_5flike_18',['mdspan_like',['../conceptdr_1_1____detail_1_1mdspan__like.html',1,'dr::__detail']]], + ['no_5fsegments_19',['no_segments',['../conceptdr_1_1mhp_1_1no__segments.html',1,'dr::mhp']]], + ['one_5fargument_20',['one_argument',['../conceptdr_1_1mhp_1_1____detail_1_1one__argument.html',1,'dr::mhp::__detail']]], + ['remote_5fcontiguous_5fiterator_21',['remote_contiguous_iterator',['../conceptdr_1_1remote__contiguous__iterator.html',1,'dr']]], + ['remote_5fcontiguous_5frange_22',['remote_contiguous_range',['../conceptdr_1_1remote__contiguous__range.html',1,'dr']]], + ['remote_5fiterator_23',['remote_iterator',['../conceptdr_1_1remote__iterator.html',1,'dr']]], + ['remote_5frange_24',['remote_range',['../conceptdr_1_1remote__range.html',1,'dr']]], + ['remote_5frange_5fshadow_5fimpl_5f_25',['remote_range_shadow_impl_',['../conceptdr_1_1ranges_1_1_0d13_1_1remote__range__shadow__impl__.html',1,'dr::ranges::@13']]], + ['segment_5fhas_5flocal_5fmethod_26',['segment_has_local_method',['../conceptdr_1_1ranges_1_1_0d13_1_1segment__has__local__method.html',1,'dr::ranges::@13']]], + ['segments_5frange_27',['segments_range',['../conceptdr_1_1ranges_1_1_0d13_1_1segments__range.html',1,'dr::ranges::@13']]], + ['sycl_5fdevice_5fselector_28',['sycl_device_selector',['../conceptdr_1_1shp_1_1____detail_1_1sycl__device__selector.html',1,'dr::shp::__detail']]], + ['tupleelementgettable_29',['TupleElementGettable',['../conceptdr_1_1_0d4_1_1TupleElementGettable.html',1,'dr::@4']]], + ['tuplelike_30',['TupleLike',['../conceptdr_1_1TupleLike.html',1,'dr']]], + ['two_5farguments_31',['two_arguments',['../conceptdr_1_1mhp_1_1____detail_1_1two__arguments.html',1,'dr::mhp::__detail']]], + ['zipable_32',['zipable',['../conceptdr_1_1mhp_1_1____detail_1_1zipable.html',1,'dr::mhp::__detail']]] +]; diff --git a/doxygen/search/functions_0.js b/doxygen/search/functions_0.js new file mode 100644 index 0000000000..eeb5c732e3 --- /dev/null +++ b/doxygen/search/functions_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['begin_0',['begin',['../classdr_1_1mhp_1_1distributed__vector.html#ae4c0c9494f2c9ca131a565b648487acd',1,'dr::mhp::distributed_vector']]] +]; diff --git a/doxygen/search/functions_1.js b/doxygen/search/functions_1.js new file mode 100644 index 0000000000..699a85649d --- /dev/null +++ b/doxygen/search/functions_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['distributed_5fvector_0',['distributed_vector',['../classdr_1_1mhp_1_1distributed__vector.html#a1e6c268244a4a124aa6cf3ef802d133d',1,'dr::mhp::distributed_vector::distributed_vector(std::size_t size=0, distribution dist=distribution())'],['../classdr_1_1mhp_1_1distributed__vector.html#a0448f3a05db40993aad220bcf927f8fd',1,'dr::mhp::distributed_vector::distributed_vector(std::size_t size, value_type fill_value, distribution dist=distribution())']]] +]; diff --git a/doxygen/search/functions_2.js b/doxygen/search/functions_2.js new file mode 100644 index 0000000000..c515bc186a --- /dev/null +++ b/doxygen/search/functions_2.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['end_0',['end',['../classdr_1_1mhp_1_1distributed__vector.html#a7e2d8f42e59d01e1d6aaf2eadab9a0d7',1,'dr::mhp::distributed_vector']]], + ['exchange_5fbegin_1',['exchange_begin',['../classdr_1_1mhp_1_1halo__impl.html#ab73e60acdad319f144e563483124fc6a',1,'dr::mhp::halo_impl']]], + ['exchange_5ffinalize_2',['exchange_finalize',['../classdr_1_1mhp_1_1halo__impl.html#aa0d81cc8ddbc683c8e340e917109b377',1,'dr::mhp::halo_impl']]] +]; diff --git a/doxygen/search/functions_3.js b/doxygen/search/functions_3.js new file mode 100644 index 0000000000..2aa3e7b70f --- /dev/null +++ b/doxygen/search/functions_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['halo_5fimpl_0',['halo_impl',['../classdr_1_1mhp_1_1halo__impl.html#a45130d039c491be7692515acc3bde318',1,'dr::mhp::halo_impl']]] +]; diff --git a/doxygen/search/functions_4.js b/doxygen/search/functions_4.js new file mode 100644 index 0000000000..6d226d6c97 --- /dev/null +++ b/doxygen/search/functions_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['index_5fgroup_0',['index_group',['../classdr_1_1mhp_1_1index__group.html#a14d654b8226699b589b82cca7e2f9649',1,'dr::mhp::index_group']]] +]; diff --git a/doxygen/search/functions_5.js b/doxygen/search/functions_5.js new file mode 100644 index 0000000000..a54a5ac821 --- /dev/null +++ b/doxygen/search/functions_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['operator_5b_5d_0',['operator[]',['../classdr_1_1mhp_1_1distributed__vector.html#ac5dd02baad90df8fe28391952e799da5',1,'dr::mhp::distributed_vector']]] +]; diff --git a/doxygen/search/functions_6.js b/doxygen/search/functions_6.js new file mode 100644 index 0000000000..939e8278a3 --- /dev/null +++ b/doxygen/search/functions_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['reduce_5fbegin_0',['reduce_begin',['../classdr_1_1mhp_1_1halo__impl.html#a78da1fc3ca0448705ea7690e6c0e8ecf',1,'dr::mhp::halo_impl']]], + ['reduce_5ffinalize_1',['reduce_finalize',['../classdr_1_1mhp_1_1halo__impl.html#abcf6841717acb246fcea716eb1af02b0',1,'dr::mhp::halo_impl::reduce_finalize(const auto &op)'],['../classdr_1_1mhp_1_1halo__impl.html#af756ff4409842704121c9d81ec1a9974',1,'dr::mhp::halo_impl::reduce_finalize()']]] +]; diff --git a/doxygen/search/functions_7.js b/doxygen/search/functions_7.js new file mode 100644 index 0000000000..86a64c7691 --- /dev/null +++ b/doxygen/search/functions_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['size_0',['size',['../classdr_1_1mhp_1_1distributed__vector.html#aeaee61dead6a4e70f7eb2543ce3e8b15',1,'dr::mhp::distributed_vector']]] +]; diff --git a/doxygen/search/functions_8.js b/doxygen/search/functions_8.js new file mode 100644 index 0000000000..3126f339c3 --- /dev/null +++ b/doxygen/search/functions_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['unstructured_5fhalo_0',['unstructured_halo',['../classdr_1_1mhp_1_1unstructured__halo.html#adb0adc8fd9c1756560507fa412728afb',1,'dr::mhp::unstructured_halo']]] +]; diff --git a/doxygen/search/mag.svg b/doxygen/search/mag.svg new file mode 100644 index 0000000000..9f46b301eb --- /dev/null +++ b/doxygen/search/mag.svg @@ -0,0 +1,37 @@ + + + + + + image/svg+xml + + + + + + + + + diff --git a/doxygen/search/mag_d.svg b/doxygen/search/mag_d.svg new file mode 100644 index 0000000000..b9a814c78d --- /dev/null +++ b/doxygen/search/mag_d.svg @@ -0,0 +1,37 @@ + + + + + + image/svg+xml + + + + + + + + + diff --git a/doxygen/search/mag_sel.svg b/doxygen/search/mag_sel.svg new file mode 100644 index 0000000000..03626f64a0 --- /dev/null +++ b/doxygen/search/mag_sel.svg @@ -0,0 +1,74 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/doxygen/search/mag_seld.svg b/doxygen/search/mag_seld.svg new file mode 100644 index 0000000000..6e720dcc91 --- /dev/null +++ b/doxygen/search/mag_seld.svg @@ -0,0 +1,74 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/doxygen/search/search.css b/doxygen/search/search.css new file mode 100644 index 0000000000..19f76f9d5b --- /dev/null +++ b/doxygen/search/search.css @@ -0,0 +1,291 @@ +/*---------------- Search Box positioning */ + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search box styling */ + +.SRPage * { + font-weight: normal; + line-height: normal; +} + +dark-mode-toggle { + margin-left: 5px; + display: flex; + float: right; +} + +#MSearchBox { + display: inline-block; + white-space : nowrap; + background: var(--search-background-color); + border-radius: 0.65em; + box-shadow: var(--search-box-shadow); + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + width: 20px; + height: 19px; + background-image: var(--search-magnification-select-image); + margin: 0 0 0 0.3em; + padding: 0; +} + +#MSearchSelectExt { + display: inline-block; + vertical-align: middle; + width: 10px; + height: 19px; + background-image: var(--search-magnification-image); + margin: 0 0 0 0.5em; + padding: 0; +} + + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 19px; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: var(--search-foreground-color); + outline: none; + font-family: var(--font-family-search); + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: var(--search-active-color); +} + + + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-filter-border-color); + background-color: var(--search-filter-background-color); + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt var(--font-family-search); + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: var(--font-family-monospace); + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: var(--search-filter-foreground-color); + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: var(--search-filter-foreground-color); + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: var(--search-filter-highlight-text-color); + background-color: var(--search-filter-highlight-bg-color); + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + /*width: 60ex;*/ + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-results-border-color); + background-color: var(--search-results-background-color); + z-index:10000; + width: 300px; + height: 400px; + overflow: auto; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +div.SRPage { + margin: 5px 2px; + background-color: var(--search-results-background-color); +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + font-size: 8pt; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: var(--font-family-search); +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: var(--font-family-search); +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: var(--nav-gradient-active-image-parent); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/doxygen/search/search.js b/doxygen/search/search.js new file mode 100644 index 0000000000..e103a26217 --- /dev/null +++ b/doxygen/search/search.js @@ -0,0 +1,816 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var jsFile; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + } + + var loadJS = function(url, impl, loc){ + var scriptTag = document.createElement('script'); + scriptTag.src = url; + scriptTag.onload = impl; + scriptTag.onreadystatechange = impl; + loc.appendChild(scriptTag); + } + + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + var domSearchBox = this.DOMSearchBox(); + var domPopupSearchResults = this.DOMPopupSearchResults(); + var domSearchClose = this.DOMSearchClose(); + var resultsPath = this.resultsPath; + + var handleResults = function() { + document.getElementById("Loading").style.display="none"; + if (typeof searchData !== 'undefined') { + createResults(resultsPath); + document.getElementById("NoMatches").style.display="none"; + } + + searchResults.Search(searchValue); + + if (domPopupSearchResultsWindow.style.display!='block') + { + domSearchClose.style.display = 'inline-block'; + var left = getXPos(domSearchBox) + 150; + var top = getYPos(domSearchBox) + 20; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + var maxWidth = document.body.clientWidth; + var maxHeight = document.body.clientHeight; + var width = 300; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + var height = 400; + if (height+top+8>maxHeight) height=maxHeight-top-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResultsWindow.style.height = height + 'px'; + } + } + + if (jsFile) { + loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow()); + } else { + handleResults(); + } + + this.lastSearchValue = searchValue; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + this.searchActive = true; + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + this.DOMSearchField().value = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults(resultsPath) +{ + var results = document.getElementById("SRResults"); + results.innerHTML = ''; + for (var e=0; e + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/containers/segment.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    segment.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7namespace dr::mhp {
    +
    8
    +
    9template <typename DV> class dv_segment_iterator;
    +
    10
    +
    11template <typename DV> class dv_segment_reference {
    + +
    13
    +
    14public:
    +
    15 using value_type = typename DV::value_type;
    +
    16
    +
    17 dv_segment_reference(const iterator it) : iterator_(it) {}
    +
    18
    +
    19 operator value_type() const { return iterator_.get(); }
    +
    20 auto operator=(const value_type &value) const {
    +
    21 iterator_.put(value);
    +
    22 return *this;
    +
    23 }
    +
    24 auto operator=(const dv_segment_reference &other) const {
    +
    25 *this = value_type(other);
    +
    26 return *this;
    +
    27 }
    +
    28 auto operator&() const { return iterator_; }
    +
    29
    +
    30private:
    +
    31 const iterator iterator_;
    +
    32}; // dv_segment_reference
    +
    33
    +
    34template <typename DV> class dv_segment_iterator {
    +
    35public:
    +
    36 using value_type = typename DV::value_type;
    +
    37 using size_type = typename DV::size_type;
    +
    38 using difference_type = typename DV::difference_type;
    +
    39
    +
    40 dv_segment_iterator() = default;
    +
    41 dv_segment_iterator(DV *dv, std::size_t segment_index, std::size_t index) {
    +
    42 dv_ = dv;
    +
    43 segment_index_ = segment_index;
    +
    44 index_ = index;
    +
    45 }
    +
    46
    +
    47 auto operator<=>(const dv_segment_iterator &other) const noexcept {
    +
    48 // assertion below checks against compare dereferenceable iterator to a
    +
    49 // singular iterator and against attempt to compare iterators from different
    +
    50 // sequences like _Safe_iterator<gnu_cxx::normal_iterator> does
    +
    51 assert(dv_ == other.dv_);
    +
    52 return segment_index_ == other.segment_index_
    +
    53 ? index_ <=> other.index_
    +
    54 : segment_index_ <=> other.segment_index_;
    +
    55 }
    +
    56
    +
    57 // Comparison
    +
    58 bool operator==(const dv_segment_iterator &other) const noexcept {
    +
    59 return (*this <=> other) == 0;
    +
    60 }
    +
    61
    +
    62 // Only this arithmetic manipulate internal state
    +
    63 auto &operator+=(difference_type n) {
    +
    64 assert(dv_ != nullptr);
    +
    65 assert(n >= 0 || static_cast<difference_type>(index_) >= -n);
    +
    66 index_ += n;
    +
    67 return *this;
    +
    68 }
    +
    69
    +
    70 auto &operator-=(difference_type n) { return *this += (-n); }
    +
    71
    +
    72 difference_type operator-(const dv_segment_iterator &other) const noexcept {
    +
    73 assert(dv_ != nullptr && dv_ == other.dv_);
    +
    74 assert(index_ >= other.index_);
    +
    75 return index_ - other.index_;
    +
    76 }
    +
    77
    +
    78 // prefix
    +
    79 auto &operator++() {
    +
    80 *this += 1;
    +
    81 return *this;
    +
    82 }
    +
    83 auto &operator--() {
    +
    84 *this -= 1;
    +
    85 return *this;
    +
    86 }
    +
    87
    +
    88 // postfix
    +
    89 auto operator++(int) {
    +
    90 auto prev = *this;
    +
    91 *this += 1;
    +
    92 return prev;
    +
    93 }
    +
    94 auto operator--(int) {
    +
    95 auto prev = *this;
    +
    96 *this -= 1;
    +
    97 return prev;
    +
    98 }
    +
    99
    +
    100 auto operator+(difference_type n) const {
    +
    101 auto p = *this;
    +
    102 p += n;
    +
    103 return p;
    +
    104 }
    +
    105 auto operator-(difference_type n) const {
    +
    106 auto p = *this;
    +
    107 p -= n;
    +
    108 return p;
    +
    109 }
    +
    110
    +
    111 // When *this is not first in the expression
    +
    112 friend auto operator+(difference_type n, const dv_segment_iterator &other) {
    +
    113 return other + n;
    +
    114 }
    +
    115
    +
    116 // dereference
    +
    117 auto operator*() const {
    +
    118 assert(dv_ != nullptr);
    +
    119 return dv_segment_reference<DV>{*this};
    +
    120 }
    +
    121 auto operator[](difference_type n) const {
    +
    122 assert(dv_ != nullptr);
    +
    123 return *(*this + n);
    +
    124 }
    +
    125
    +
    126 void get(value_type *dst, std::size_t size) const {
    +
    127 assert(dv_ != nullptr);
    +
    128 assert(segment_index_ * dv_->segment_size_ + index_ < dv_->size());
    +
    129 auto segment_offset = index_ + dv_->distribution_.halo().prev;
    +
    130 dv_->win_.get(dst, size * sizeof(*dst), segment_index_,
    +
    131 segment_offset * sizeof(*dst));
    +
    132 }
    +
    133
    +
    134 value_type get() const {
    +
    135 value_type val;
    +
    136 get(&val, 1);
    +
    137 return val;
    +
    138 }
    +
    139
    +
    140 void put(const value_type *dst, std::size_t size) const {
    +
    141 assert(dv_ != nullptr);
    +
    142 assert(segment_index_ * dv_->segment_size_ + index_ < dv_->size());
    +
    143 auto segment_offset = index_ + dv_->distribution_.halo().prev;
    +
    144 dr::drlog.debug("dv put:: ({}:{}:{})\n", segment_index_, segment_offset,
    +
    145 size);
    +
    146 dv_->win_.put(dst, size * sizeof(*dst), segment_index_,
    +
    147 segment_offset * sizeof(*dst));
    +
    148 }
    +
    149
    +
    150 void put(const value_type &value) const { put(&value, 1); }
    +
    151
    +
    152 auto rank() const {
    +
    153 assert(dv_ != nullptr);
    +
    154 return segment_index_;
    +
    155 }
    +
    156
    +
    157 auto local() const {
    +
    158#ifndef SYCL_LANGUAGE_VERSION
    +
    159 assert(dv_ != nullptr);
    +
    160#endif
    +
    161 const auto my_process_segment_index = dv_->win_.communicator().rank();
    +
    162
    +
    163 if (my_process_segment_index == segment_index_)
    +
    164 return dv_->data_ + index_ + dv_->distribution_.halo().prev;
    +
    165#ifndef SYCL_LANGUAGE_VERSION
    +
    166 assert(!dv_->distribution_.halo().periodic); // not implemented
    +
    167#endif
    +
    168 // sliding view needs local iterators that point to the halo
    +
    169 if (my_process_segment_index + 1 == segment_index_) {
    +
    170#ifndef SYCL_LANGUAGE_VERSION
    +
    171 assert(index_ <= dv_->distribution_.halo()
    +
    172 .next); // <= instead of < to cover end() case
    +
    173#endif
    +
    174 return dv_->data_ + dv_->distribution_.halo().prev + index_ +
    +
    175 dv_->segment_size_;
    +
    176 }
    +
    177
    +
    178 if (my_process_segment_index == segment_index_ + 1) {
    +
    179#ifndef SYCL_LANGUAGE_VERSION
    +
    180 assert(dv_->segment_size_ - index_ <= dv_->distribution_.halo().prev);
    +
    181#endif
    +
    182 return dv_->data_ + dv_->distribution_.halo().prev + index_ -
    +
    183 dv_->segment_size_;
    +
    184 }
    +
    185
    +
    186#ifndef SYCL_LANGUAGE_VERSION
    +
    187 assert(false); // trying to read non-owned memory
    +
    188#endif
    +
    189 return static_cast<decltype(dv_->data_)>(nullptr);
    +
    190 }
    +
    191
    +
    192 auto segments() const {
    +
    193 assert(dv_ != nullptr);
    +
    194 return dr::__detail::drop_segments(dv_->segments(), segment_index_, index_);
    +
    195 }
    +
    196
    +
    197 auto &halo() const {
    +
    198 assert(dv_ != nullptr);
    +
    199 return dv_->halo();
    +
    200 }
    +
    201 auto halo_bounds() const {
    +
    202 assert(dv_ != nullptr);
    +
    203 return dv_->distribution_.halo();
    +
    204 }
    +
    205
    +
    206private:
    +
    207 // all fields need to be initialized by default ctor so every default
    +
    208 // constructed iter is equal to any other default constructed iter
    +
    209 DV *dv_ = nullptr;
    +
    210 std::size_t segment_index_ = 0;
    +
    211 std::size_t index_ = 0;
    +
    212}; // dv_segment_iterator
    +
    213
    +
    214template <typename DV> class dv_segment {
    +
    215private:
    + +
    217
    +
    218public:
    +
    219 using difference_type = std::ptrdiff_t;
    +
    220 dv_segment() = default;
    +
    221 dv_segment(DV *dv, std::size_t segment_index, std::size_t size) {
    +
    222 dv_ = dv;
    +
    223 segment_index_ = segment_index;
    +
    224 size_ = size;
    +
    225 assert(dv_ != nullptr);
    +
    226 }
    +
    227
    +
    228 auto size() const {
    +
    229 assert(dv_ != nullptr);
    +
    230 return size_;
    +
    231 }
    +
    232
    +
    233 auto begin() const { return iterator(dv_, segment_index_, 0); }
    +
    234 auto end() const { return begin() + size(); }
    +
    235
    +
    236 auto operator[](difference_type n) const { return *(begin() + n); }
    +
    237
    +
    238 bool is_local() const { return segment_index_ == default_comm().rank(); }
    +
    239
    +
    240private:
    +
    241 DV *dv_ = nullptr;
    +
    242 std::size_t segment_index_;
    +
    243 std::size_t size_;
    +
    244}; // dv_segment
    +
    245
    +
    246//
    +
    247// Many views preserve the distributed_vector segments iterator, which
    +
    248// can supply halo
    +
    249//
    +
    250template <typename DR>
    +
    251concept has_halo_method = dr::distributed_range<DR> && requires(DR &&dr) {
    +
    252 { rng::begin(dr::ranges::segments(dr)[0]).halo() };
    +
    253};
    +
    254
    +
    255auto &halo(has_halo_method auto &&dr) {
    +
    256 return rng::begin(dr::ranges::segments(dr)[0]).halo();
    +
    257}
    +
    258
    +
    259} // namespace dr::mhp
    +
    Definition: index.hpp:34
    +
    Definition: segment.hpp:34
    +
    Definition: segment.hpp:11
    +
    Definition: segment.hpp:214
    +
    Definition: concepts.hpp:20
    +
    Definition: segment.hpp:251
    +
    Definition: halo.hpp:354
    +
    + + + + diff --git a/doxygen/segmented_8hpp_source.html b/doxygen/segmented_8hpp_source.html new file mode 100644 index 0000000000..77ae8899e4 --- /dev/null +++ b/doxygen/segmented_8hpp_source.html @@ -0,0 +1,182 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/views/segmented.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    segmented.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7#include <dr/detail/remote_subrange.hpp>
    +
    8
    +
    9namespace dr::mhp {
    +
    10
    +
    11template <typename BaseIter, typename SegTplIter, typename SegTplSentinel>
    + +
    13public:
    +
    14 using iterator_category = std::forward_iterator_tag;
    +
    15 using difference_type = rng::iter_difference_t<SegTplIter>;
    + +
    17
    + +
    19 segmented_view_iterator(BaseIter base_begin, SegTplIter tpl_begin,
    +
    20 SegTplSentinel tpl_end)
    +
    21 : base_cur_(base_begin), tpl_cur_(tpl_begin), tpl_end_(tpl_end) {}
    +
    22
    +
    23 auto operator==(segmented_view_iterator other) const {
    +
    24 return tpl_cur_ == other.tpl_cur_;
    +
    25 }
    +
    26 auto &operator++() {
    +
    27 base_cur_ += rng::size(*tpl_cur_);
    +
    28 tpl_cur_++;
    +
    29 return *this;
    +
    30 }
    +
    31 auto operator++(int) {
    +
    32 auto iter(*this);
    +
    33 base_cur_ += rng::size(*tpl_cur_);
    +
    34 tpl_cur_++;
    +
    35 return iter;
    +
    36 }
    +
    37 auto operator*() const {
    +
    38 return dr::remote_subrange(base_cur_, base_cur_ + rng::size(*tpl_cur_),
    +
    39 dr::ranges::rank(*tpl_cur_));
    +
    40 }
    +
    41
    +
    42private:
    +
    43 BaseIter base_cur_;
    +
    44 SegTplIter tpl_cur_;
    +
    45 SegTplSentinel tpl_end_;
    +
    46};
    +
    47
    +
    48//
    +
    49// Some distributed algorithms need an iota_view as an operand. An
    +
    50// iota_view does not depend on external data and can be segmented as
    +
    51// needed. The segmented_view creates segments for a range using the
    +
    52// segments of another range. It can be used to create segments for an
    +
    53// iota_view, using the segments of a distributed_range.
    +
    54//
    +
    55// It should be usable if you have a range that is local and
    +
    56// replicated across all processes, but that is not tested.
    +
    57//
    +
    58template <rng::random_access_range R, rng::common_range SegTpl>
    +
    59class segmented_view : public rng::view_interface<segmented_view<R, SegTpl>> {
    +
    60public:
    +
    61 template <typename V1, typename V2>
    +
    62 segmented_view(V1 &&r, V2 &&tpl)
    +
    63 : base_(rng::views::all(std::forward<V1>(r))),
    +
    64 segments_tpl_(rng::views::all(std::forward<V2>(tpl))) {}
    +
    65
    +
    66 auto begin() const {
    +
    67 return segmented_view_iterator(rng::begin(base_), rng::begin(segments_tpl_),
    +
    68 rng::end(segments_tpl_));
    +
    69 }
    +
    70 auto end() const {
    +
    71 return segmented_view_iterator(rng::begin(base_), rng::end(segments_tpl_),
    +
    72 rng::end(segments_tpl_));
    +
    73 }
    +
    74
    +
    75 auto size() const { return rng::size(segments_tpl_); }
    +
    76
    +
    77private:
    +
    78 rng::views::all_t<R> base_;
    +
    79 rng::views::all_t<SegTpl> segments_tpl_;
    +
    80};
    +
    81
    +
    82template <typename R, typename Seg>
    +
    83segmented_view(R &&r, Seg &&seg)
    +
    84 -> segmented_view<rng::views::all_t<R>, rng::views::all_t<Seg>>;
    +
    85
    +
    86namespace views {
    +
    87
    +
    89template <typename R, typename Seg> auto segmented(R &&r, Seg &&seg) {
    +
    90 return segmented_view(std::forward<R>(r), std::forward<Seg>(seg));
    +
    91}
    +
    92
    +
    93} // namespace views
    +
    94
    +
    95} // namespace dr::mhp
    +
    Definition: segmented.hpp:12
    +
    Definition: segmented.hpp:59
    +
    Definition: remote_subrange.hpp:15
    +
    + + + + diff --git a/doxygen/segments__tools_8hpp_source.html b/doxygen/segments__tools_8hpp_source.html new file mode 100644 index 0000000000..50f0258091 --- /dev/null +++ b/doxygen/segments__tools_8hpp_source.html @@ -0,0 +1,228 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail/segments_tools.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    segments_tools.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7#include <dr/concepts/concepts.hpp>
    +
    8#include <dr/detail/enumerate.hpp>
    +
    9#include <dr/detail/ranges_shim.hpp>
    +
    10#include <dr/detail/remote_subrange.hpp>
    +
    11#include <dr/detail/view_detectors.hpp>
    +
    12
    +
    13namespace dr {
    +
    14
    +
    15namespace __detail {
    +
    16
    +
    17// Take all elements up to and including segment `segment_id` at index
    +
    18// `local_id`
    +
    19template <typename R>
    +
    20auto take_segments(R &&segments, std::size_t last_seg, std::size_t local_id) {
    +
    21 auto remainder = local_id;
    +
    22
    +
    23 auto take_partial = [=](auto &&v) {
    +
    24 auto &&[i, segment] = v;
    +
    25 if (i == last_seg) {
    +
    26 auto first = rng::begin(segment);
    +
    27 auto last = rng::begin(segment);
    +
    28 rng::advance(last, remainder);
    +
    29 return dr::remote_subrange(first, last, dr::ranges::rank(segment));
    +
    30 } else {
    +
    31 return dr::remote_subrange(segment);
    +
    32 }
    +
    33 };
    +
    34
    +
    35 return enumerate(segments) | rng::views::take(last_seg + 1) |
    +
    36 rng::views::transform(std::move(take_partial));
    +
    37}
    +
    38
    +
    39// Take the first n elements
    +
    40template <typename R> auto take_segments(R &&segments, std::size_t n) {
    +
    41 std::size_t last_seg = 0;
    +
    42 std::size_t remainder = n;
    +
    43
    +
    44 for (auto &&seg : segments) {
    +
    45 if (seg.size() >= remainder) {
    +
    46 break;
    +
    47 }
    +
    48 remainder -= seg.size();
    +
    49 last_seg++;
    +
    50 }
    +
    51
    +
    52 return take_segments(std::forward<R>(segments), last_seg, remainder);
    +
    53}
    +
    54
    +
    55// Drop all elements up to segment `segment_id` and index `local_id`
    +
    56template <typename R>
    +
    57auto drop_segments(R &&segments, std::size_t first_seg, std::size_t local_id) {
    +
    58 auto remainder = local_id;
    +
    59
    +
    60 auto drop_partial = [=](auto &&v) {
    +
    61 auto &&[i, segment] = v;
    +
    62 if (i == first_seg) {
    +
    63 auto first = rng::begin(segment);
    +
    64 rng::advance(first, remainder);
    +
    65 auto last = rng::end(segment);
    +
    66 return dr::remote_subrange(first, last, dr::ranges::rank(segment));
    +
    67 } else {
    +
    68 return dr::remote_subrange(segment);
    +
    69 }
    +
    70 };
    +
    71
    +
    72 return enumerate(segments) | rng::views::drop(first_seg) |
    +
    73 rng::views::transform(std::move(drop_partial));
    +
    74}
    +
    75
    +
    76// Drop the first n elements
    +
    77template <typename R> auto drop_segments(R &&segments, std::size_t n) {
    +
    78 std::size_t first_seg = 0;
    +
    79 std::size_t remainder = n;
    +
    80
    +
    81 for (auto &&seg : segments) {
    +
    82 if (seg.size() > remainder) {
    +
    83 break;
    +
    84 }
    +
    85 remainder -= seg.size();
    +
    86 first_seg++;
    +
    87 }
    +
    88
    +
    89 return drop_segments(std::forward<R>(segments), first_seg, remainder);
    +
    90}
    +
    91
    +
    92} // namespace __detail
    +
    93
    +
    94} // namespace dr
    +
    95
    +
    96namespace DR_RANGES_NAMESPACE {
    +
    97
    +
    98// A standard library range adaptor does not change the rank of a
    +
    99// remote range, so we can simply return the rank of the base view.
    +
    100template <rng::range V>
    + +
    102auto rank_(V &&v) {
    +
    103 return dr::ranges::rank(std::forward<V>(v).base());
    +
    104}
    +
    105
    +
    106template <rng::range V>
    +
    107 requires(dr::is_ref_view_v<std::remove_cvref_t<V>> &&
    + +
    109auto segments_(V &&v) {
    +
    110 return dr::ranges::segments(v.base());
    +
    111}
    +
    112
    +
    113template <rng::range V>
    +
    114 requires(dr::is_take_view_v<std::remove_cvref_t<V>> &&
    + +
    116auto segments_(V &&v) {
    +
    117 return dr::__detail::take_segments(dr::ranges::segments(v.base()), v.size());
    +
    118}
    +
    119
    +
    120template <rng::range V>
    +
    121 requires(dr::is_drop_view_v<std::remove_cvref_t<V>> &&
    + +
    123auto segments_(V &&v) {
    +
    124 return dr::__detail::drop_segments(dr::ranges::segments(v.base()),
    +
    125 v.base().size() - v.size());
    +
    126}
    +
    127
    +
    128template <rng::range V>
    +
    129 requires(dr::is_subrange_view_v<std::remove_cvref_t<V>> &&
    + +
    131auto segments_(V &&v) {
    +
    132 auto first = rng::begin(v);
    +
    133 auto last = rng::end(v);
    +
    134 auto size = rng::distance(first, last);
    +
    135
    +
    136 return dr::__detail::take_segments(dr::ranges::segments(first), size);
    +
    137}
    +
    138
    +
    139} // namespace DR_RANGES_NAMESPACE
    +
    Definition: remote_subrange.hpp:15
    +
    Definition: concepts.hpp:31
    +
    Definition: concepts.hpp:20
    +
    Definition: concepts.hpp:16
    +
    + + + + diff --git a/doxygen/shp_2algorithms_2copy_8hpp_source.html b/doxygen/shp_2algorithms_2copy_8hpp_source.html new file mode 100644 index 0000000000..c048fe021d --- /dev/null +++ b/doxygen/shp_2algorithms_2copy_8hpp_source.html @@ -0,0 +1,304 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/algorithms/copy.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    copy.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7#include <memory>
    +
    8#include <type_traits>
    +
    9
    +
    10#include <sycl/sycl.hpp>
    +
    11
    +
    12#include <dr/concepts/concepts.hpp>
    +
    13#include <dr/detail/segments_tools.hpp>
    +
    14#include <dr/shp/detail.hpp>
    +
    15#include <dr/shp/device_ptr.hpp>
    +
    16#include <dr/shp/util.hpp>
    +
    17
    +
    18namespace dr::shp {
    +
    19
    +
    20// Copy between contiguous ranges
    +
    21template <std::contiguous_iterator InputIt, std::contiguous_iterator OutputIt>
    +
    22 requires __detail::is_syclmemcopyable<std::iter_value_t<InputIt>,
    +
    23 std::iter_value_t<OutputIt>>
    +
    24sycl::event copy_async(InputIt first, InputIt last, OutputIt d_first) {
    +
    25 // auto &&q = dr::shp::__detail::default_queue();
    +
    26 auto &&q = __detail::get_queue_for_pointers(first, d_first);
    +
    27 return q.memcpy(std::to_address(d_first), std::to_address(first),
    +
    28 sizeof(std::iter_value_t<InputIt>) * (last - first));
    +
    29}
    +
    30
    +
    32template <std::contiguous_iterator InputIt, std::contiguous_iterator OutputIt>
    +
    33 requires __detail::is_syclmemcopyable<std::iter_value_t<InputIt>,
    +
    34 std::iter_value_t<OutputIt>>
    +
    35OutputIt copy(InputIt first, InputIt last, OutputIt d_first) {
    +
    36 copy_async(first, last, d_first).wait();
    +
    37 return d_first + (last - first);
    +
    38}
    +
    39
    +
    40// Copy from contiguous range to device
    +
    41template <std::contiguous_iterator Iter, typename T>
    +
    42 requires __detail::is_syclmemcopyable<std::iter_value_t<Iter>, T>
    +
    43sycl::event copy_async(Iter first, Iter last, device_ptr<T> d_first) {
    +
    44 // auto &&q = dr::shp::__detail::default_queue();
    +
    45 auto &&q = __detail::get_queue_for_pointers(first, d_first);
    +
    46 return q.memcpy(d_first.get_raw_pointer(), std::to_address(first),
    +
    47 sizeof(T) * (last - first));
    +
    48}
    +
    49
    +
    50template <std::contiguous_iterator Iter, typename T>
    +
    51 requires __detail::is_syclmemcopyable<std::iter_value_t<Iter>, T>
    +
    52device_ptr<T> copy(Iter first, Iter last, device_ptr<T> d_first) {
    +
    53 copy_async(first, last, d_first).wait();
    +
    54 return d_first + (last - first);
    +
    55}
    +
    56
    +
    57// Copy from device to contiguous range
    +
    58template <typename T, std::contiguous_iterator Iter>
    +
    59 requires __detail::is_syclmemcopyable<T, std::iter_value_t<Iter>>
    +
    60sycl::event copy_async(device_ptr<T> first, device_ptr<T> last, Iter d_first) {
    +
    61 // auto &&q = dr::shp::__detail::default_queue();
    +
    62 auto &&q = __detail::get_queue_for_pointers(first, d_first);
    +
    63 return q.memcpy(std::to_address(d_first), first.get_raw_pointer(),
    +
    64 sizeof(T) * (last - first));
    +
    65}
    +
    66
    +
    67template <typename T, std::contiguous_iterator Iter>
    +
    68 requires __detail::is_syclmemcopyable<T, std::iter_value_t<Iter>>
    +
    69Iter copy(device_ptr<T> first, device_ptr<T> last, Iter d_first) {
    +
    70 copy_async(first, last, d_first).wait();
    +
    71 return d_first + (last - first);
    +
    72}
    +
    73
    +
    74// Copy from device to device
    +
    75template <typename T>
    +
    76 requires(!std::is_const_v<T> && std::is_trivially_copyable_v<T>)
    +
    77sycl::event copy_async(device_ptr<std::add_const_t<T>> first,
    +
    78 device_ptr<std::add_const_t<T>> last,
    +
    79 device_ptr<T> d_first) {
    +
    80 // auto &&q = dr::shp::__detail::default_queue();
    +
    81 auto &&q = __detail::get_queue_for_pointers(first, d_first);
    +
    82 return q.memcpy(d_first.get_raw_pointer(), first.get_raw_pointer(),
    +
    83 sizeof(T) * (last - first));
    +
    84}
    +
    85
    +
    86template <typename T>
    +
    87 requires(!std::is_const_v<T> && std::is_trivially_copyable_v<T>)
    +
    88sycl::event copy_async(sycl::queue &q, device_ptr<std::add_const_t<T>> first,
    +
    89 device_ptr<std::add_const_t<T>> last,
    +
    90 device_ptr<T> d_first) {
    +
    91 return q.memcpy(d_first.get_raw_pointer(), first.get_raw_pointer(),
    +
    92 sizeof(T) * (last - first));
    +
    93}
    +
    94
    +
    95template <typename T>
    +
    96 requires(!std::is_const_v<T> && std::is_trivially_copyable_v<T>)
    +
    97device_ptr<T> copy(device_ptr<std::add_const_t<T>> first,
    +
    98 device_ptr<std::add_const_t<T>> last,
    +
    99 device_ptr<T> d_first) {
    +
    100 copy_async(first, last, d_first).wait();
    +
    101 return d_first + (last - first);
    +
    102}
    +
    103
    +
    104// Copy from local range to distributed range
    +
    105template <std::forward_iterator InputIt, dr::distributed_iterator OutputIt>
    +
    106 requires __detail::is_syclmemcopyable<std::iter_value_t<InputIt>,
    +
    107 std::iter_value_t<OutputIt>>
    +
    108sycl::event copy_async(InputIt first, InputIt last, OutputIt d_first) {
    +
    109 auto &&segments = dr::ranges::segments(d_first);
    +
    110 auto segment_iter = rng::begin(segments);
    +
    111
    +
    112 std::vector<sycl::event> events;
    +
    113
    +
    114 while (first != last) {
    +
    115 auto &&segment = *segment_iter;
    +
    116 auto size = rng::distance(segment);
    +
    117
    +
    118 std::size_t n_to_copy = std::min<size_t>(size, rng::distance(first, last));
    +
    119
    +
    120 auto local_last = first;
    +
    121 rng::advance(local_last, n_to_copy);
    +
    122
    +
    123 events.emplace_back(
    +
    124 dr::shp::copy_async(first, local_last, rng::begin(segment)));
    +
    125
    +
    126 ++segment_iter;
    +
    127 rng::advance(first, n_to_copy);
    +
    128 }
    +
    129
    +
    130 return dr::shp::__detail::combine_events(events);
    +
    131}
    +
    132
    +
    133template <std::forward_iterator InputIt, dr::distributed_iterator OutputIt>
    +
    134 requires __detail::is_syclmemcopyable<std::iter_value_t<InputIt>,
    +
    135 std::iter_value_t<OutputIt>>
    +
    136OutputIt copy(InputIt first, InputIt last, OutputIt d_first) {
    +
    137 copy_async(first, last, d_first).wait();
    +
    138 return d_first + (last - first);
    +
    139}
    +
    140
    +
    141// Copy from distributed range to local range
    +
    142template <dr::distributed_iterator InputIt, std::forward_iterator OutputIt>
    +
    143 requires __detail::is_syclmemcopyable<std::iter_value_t<InputIt>,
    +
    144 std::iter_value_t<OutputIt>>
    +
    145sycl::event copy_async(InputIt first, InputIt last, OutputIt d_first) {
    +
    146 auto dist = rng::distance(first, last);
    +
    147 auto segments =
    +
    148 dr::__detail::take_segments(dr::ranges::segments(first), dist);
    +
    149
    +
    150 std::vector<sycl::event> events;
    +
    151
    +
    152 for (auto &&segment : segments) {
    +
    153 auto size = rng::distance(segment);
    +
    154
    +
    155 events.emplace_back(
    +
    156 dr::shp::copy_async(rng::begin(segment), rng::end(segment), d_first));
    +
    157
    +
    158 rng::advance(d_first, size);
    +
    159 }
    +
    160
    +
    161 return dr::shp::__detail::combine_events(events);
    +
    162}
    +
    163
    +
    164template <dr::distributed_iterator InputIt, std::forward_iterator OutputIt>
    +
    165 requires __detail::is_syclmemcopyable<std::iter_value_t<InputIt>,
    +
    166 std::iter_value_t<OutputIt>>
    +
    167OutputIt copy(InputIt first, InputIt last, OutputIt d_first) {
    +
    168 copy_async(first, last, d_first).wait();
    +
    169 return d_first + (last - first);
    +
    170}
    +
    171
    +
    172// Copy from distributed range to distributed range
    +
    173template <dr::distributed_iterator InputIt, dr::distributed_iterator OutputIt>
    +
    174 requires __detail::is_syclmemcopyable<std::iter_value_t<InputIt>,
    +
    175 std::iter_value_t<OutputIt>>
    +
    176sycl::event copy_async(InputIt first, InputIt last, OutputIt d_first) {
    +
    177 auto dist = rng::distance(first, last);
    +
    178 auto segments =
    +
    179 dr::__detail::take_segments(dr::ranges::segments(first), dist);
    +
    180
    +
    181 std::vector<sycl::event> events;
    +
    182
    +
    183 for (auto &&segment : segments) {
    +
    184 auto size = rng::distance(segment);
    +
    185
    +
    186 events.emplace_back(
    +
    187 dr::shp::copy_async(rng::begin(segment), rng::end(segment), d_first));
    +
    188
    +
    189 rng::advance(d_first, size);
    +
    190 }
    +
    191
    +
    192 return dr::shp::__detail::combine_events(events);
    +
    193}
    +
    194
    +
    195template <dr::distributed_iterator InputIt, dr::distributed_iterator OutputIt>
    +
    196 requires __detail::is_syclmemcopyable<std::iter_value_t<InputIt>,
    +
    197 std::iter_value_t<OutputIt>>
    +
    198OutputIt copy(InputIt first, InputIt last, OutputIt d_first) {
    +
    199 copy_async(first, last, d_first).wait();
    +
    200 return d_first + (last - first);
    +
    201}
    +
    202
    +
    203// Ranges versions
    +
    204
    +
    205// Distributed to distributed
    +
    206template <dr::distributed_range R, dr::distributed_iterator O>
    +
    207 requires __detail::is_syclmemcopyable<rng::range_value_t<R>,
    +
    208 std::iter_value_t<O>>
    +
    209sycl::event copy_async(R &&r, O result) {
    +
    210 return copy_async(rng::begin(r), rng::end(r), result);
    +
    211}
    +
    212
    +
    213template <dr::distributed_range R, dr::distributed_iterator O>
    +
    214 requires __detail::is_syclmemcopyable<rng::range_value_t<R>,
    +
    215 std::iter_value_t<O>>
    +
    216O copy(R &&r, O result) {
    +
    217 return copy(rng::begin(r), rng::end(r), result);
    +
    218}
    +
    219
    +
    220} // namespace dr::shp
    +
    + + + + diff --git a/doxygen/shp_2algorithms_2exclusive__scan_8hpp_source.html b/doxygen/shp_2algorithms_2exclusive__scan_8hpp_source.html new file mode 100644 index 0000000000..8ef4117f1c --- /dev/null +++ b/doxygen/shp_2algorithms_2exclusive__scan_8hpp_source.html @@ -0,0 +1,315 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/algorithms/exclusive_scan.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    exclusive_scan.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7#include <sycl/sycl.hpp>
    +
    8
    +
    9#include <oneapi/dpl/execution>
    +
    10#include <oneapi/dpl/numeric>
    +
    11
    +
    12#include <oneapi/dpl/async>
    +
    13
    +
    14#include <dr/concepts/concepts.hpp>
    +
    15#include <dr/detail/onedpl_direct_iterator.hpp>
    +
    16#include <dr/shp/algorithms/execution_policy.hpp>
    +
    17#include <dr/shp/allocators.hpp>
    +
    18#include <dr/shp/detail.hpp>
    +
    19#include <dr/shp/init.hpp>
    +
    20#include <dr/shp/vector.hpp>
    +
    21#include <dr/shp/views/views.hpp>
    +
    22
    +
    23namespace dr::shp {
    +
    24
    +
    25template <typename ExecutionPolicy, dr::distributed_contiguous_range R,
    +
    26 dr::distributed_contiguous_range O, typename U, typename BinaryOp>
    +
    27void exclusive_scan_impl_(ExecutionPolicy &&policy, R &&r, O &&o, U init,
    +
    28 BinaryOp &&binary_op) {
    +
    29 using T = rng::range_value_t<O>;
    +
    30
    +
    31 static_assert(
    +
    32 std::is_same_v<std::remove_cvref_t<ExecutionPolicy>, device_policy>);
    +
    33
    +
    34 auto zipped_view = dr::shp::views::zip(r, o);
    +
    35 auto zipped_segments = zipped_view.zipped_segments();
    +
    36
    +
    37 if constexpr (std::is_same_v<std::remove_cvref_t<ExecutionPolicy>,
    +
    38 device_policy>) {
    +
    39
    +
    40 U *d_inits = sycl::malloc_device<U>(rng::size(zipped_segments),
    +
    41 shp::devices()[0], shp::context());
    +
    42
    +
    43 std::vector<sycl::event> events;
    +
    44
    +
    45 std::size_t segment_id = 0;
    +
    46 for (auto &&segs : zipped_segments) {
    +
    47 auto &&[in_segment, out_segment] = segs;
    +
    48
    +
    49 auto last_element = rng::prev(rng::end(__detail::local(in_segment)));
    +
    50 auto dest = d_inits + segment_id;
    +
    51
    +
    52 auto &&q = __detail::queue(dr::ranges::rank(in_segment));
    +
    53
    +
    54 auto e = q.single_task([=] { *dest = *last_element; });
    +
    55 events.push_back(e);
    +
    56 segment_id++;
    +
    57 }
    +
    58
    +
    59 __detail::wait(events);
    +
    60 events.clear();
    +
    61
    +
    62 std::vector<U> inits(rng::size(zipped_segments));
    +
    63
    +
    64 shp::copy(d_inits, d_inits + inits.size(), inits.data() + 1);
    +
    65
    +
    66 sycl::free(d_inits, shp::context());
    +
    67
    +
    68 inits[0] = init;
    +
    69
    +
    70 auto root = dr::shp::devices()[0];
    +
    71 dr::shp::device_allocator<T> allocator(dr::shp::context(), root);
    + +
    73 std::size_t(zipped_segments.size()), allocator);
    +
    74
    +
    75 segment_id = 0;
    +
    76 for (auto &&segs : zipped_segments) {
    +
    77 auto &&[in_segment, out_segment] = segs;
    +
    78
    +
    79 auto &&q = __detail::queue(dr::ranges::rank(in_segment));
    +
    80 auto &&local_policy = __detail::dpl_policy(dr::ranges::rank(in_segment));
    +
    81
    +
    82 auto dist = rng::distance(in_segment);
    +
    83 assert(dist > 0);
    +
    84
    +
    85 auto first = rng::begin(in_segment);
    +
    86 auto last = rng::end(in_segment);
    +
    87 auto d_first = rng::begin(out_segment);
    +
    88
    +
    89 auto init = inits[segment_id];
    +
    90
    +
    91 auto event = oneapi::dpl::experimental::exclusive_scan_async(
    +
    92 local_policy, dr::__detail::direct_iterator(first),
    + +
    94 dr::__detail::direct_iterator(d_first), init, binary_op);
    +
    95
    +
    96 auto dst_iter = dr::ranges::local(partial_sums).data() + segment_id;
    +
    97
    +
    98 auto src_iter = dr::ranges::local(out_segment).data();
    +
    99 rng::advance(src_iter, dist - 1);
    +
    100
    +
    101 auto e = q.submit([&](auto &&h) {
    +
    102 h.depends_on(event);
    +
    103 h.single_task([=]() {
    +
    104 rng::range_value_t<O> value = *src_iter;
    +
    105 *dst_iter = value;
    +
    106 });
    +
    107 });
    +
    108
    +
    109 events.push_back(e);
    +
    110
    +
    111 segment_id++;
    +
    112 }
    +
    113
    +
    114 __detail::wait(events);
    +
    115 events.clear();
    +
    116
    +
    117 auto &&local_policy = __detail::dpl_policy(0);
    +
    118
    +
    119 auto first = dr::ranges::local(partial_sums).data();
    +
    120 auto last = first + partial_sums.size();
    +
    121
    +
    122 oneapi::dpl::experimental::inclusive_scan_async(local_policy, first, last,
    +
    123 first, binary_op)
    +
    124 .wait();
    +
    125
    +
    126 std::size_t idx = 0;
    +
    127 for (auto &&segs : zipped_segments) {
    +
    128 auto &&[in_segment, out_segment] = segs;
    +
    129
    +
    130 if (idx > 0) {
    +
    131 auto &&q = __detail::queue(dr::ranges::rank(out_segment));
    +
    132
    +
    133 auto first = rng::begin(out_segment);
    +
    134 dr::__detail::direct_iterator d_first(first);
    +
    135
    +
    136 auto d_sum =
    +
    137 dr::ranges::__detail::local(partial_sums).begin() + idx - 1;
    +
    138
    +
    139 sycl::event e = dr::__detail::parallel_for(
    +
    140 q, sycl::range<>(rng::distance(out_segment)),
    +
    141 [=](auto idx) { d_first[idx] = binary_op(d_first[idx], *d_sum); });
    +
    142
    +
    143 events.push_back(e);
    +
    144 }
    +
    145 idx++;
    +
    146 }
    +
    147
    +
    148 __detail::wait(events);
    +
    149
    +
    150 } else {
    +
    151 assert(false);
    +
    152 }
    +
    153}
    +
    154
    +
    155// Ranges versions
    +
    156
    +
    157template <typename ExecutionPolicy, dr::distributed_contiguous_range R,
    +
    158 dr::distributed_contiguous_range O, typename T, typename BinaryOp>
    +
    159void exclusive_scan(ExecutionPolicy &&policy, R &&r, O &&o, T init,
    +
    160 BinaryOp &&binary_op) {
    +
    161 exclusive_scan_impl_(std::forward<ExecutionPolicy>(policy),
    +
    162 std::forward<R>(r), std::forward<O>(o), init,
    +
    163 std::forward<BinaryOp>(binary_op));
    +
    164}
    +
    165
    +
    166template <typename ExecutionPolicy, dr::distributed_contiguous_range R,
    + +
    168void exclusive_scan(ExecutionPolicy &&policy, R &&r, O &&o, T init) {
    +
    169 exclusive_scan_impl_(std::forward<ExecutionPolicy>(policy),
    +
    170 std::forward<R>(r), std::forward<O>(o), init,
    +
    171 std::plus<>{});
    +
    172}
    +
    173
    + +
    175 dr::distributed_contiguous_range O, typename T, typename BinaryOp>
    +
    176void exclusive_scan(R &&r, O &&o, T init, BinaryOp &&binary_op) {
    +
    177 exclusive_scan_impl_(dr::shp::par_unseq, std::forward<R>(r),
    +
    178 std::forward<O>(o), init,
    +
    179 std::forward<BinaryOp>(binary_op));
    +
    180}
    +
    181
    + + +
    184void exclusive_scan(R &&r, O &&o, T init) {
    +
    185 exclusive_scan_impl_(dr::shp::par_unseq, std::forward<R>(r),
    +
    186 std::forward<O>(o), init, std::plus<>{});
    +
    187}
    +
    188
    +
    189// Iterator versions
    +
    190
    +
    191template <typename ExecutionPolicy, dr::distributed_iterator Iter,
    +
    192 dr::distributed_iterator OutputIter, typename T, typename BinaryOp>
    +
    193void exclusive_scan(ExecutionPolicy &&policy, Iter first, Iter last,
    +
    194 OutputIter d_first, T init, BinaryOp &&binary_op) {
    +
    195 auto dist = rng::distance(first, last);
    +
    196 auto d_last = d_first;
    +
    197 rng::advance(d_last, dist);
    +
    198 exclusive_scan_impl_(
    +
    199 std::forward<ExecutionPolicy>(policy), rng::subrange(first, last),
    +
    200 rng::subrange(d_first, d_last), init, std::forward<BinaryOp>(binary_op));
    +
    201}
    +
    202
    +
    203template <typename ExecutionPolicy, dr::distributed_iterator Iter,
    +
    204 dr::distributed_iterator OutputIter, typename T>
    +
    205void exclusive_scan(ExecutionPolicy &&policy, Iter first, Iter last,
    +
    206 OutputIter d_first, T init) {
    +
    207 exclusive_scan(std::forward<ExecutionPolicy>(policy), first, last, d_first,
    +
    208 init, std::plus<>{});
    +
    209}
    +
    210
    +
    211template <dr::distributed_iterator Iter, dr::distributed_iterator OutputIter,
    +
    212 typename T, typename BinaryOp>
    +
    213void exclusive_scan(Iter first, Iter last, OutputIter d_first, T init,
    +
    214 BinaryOp &&binary_op) {
    +
    215 exclusive_scan(dr::shp::par_unseq, first, last, d_first, init,
    +
    216 std::forward<BinaryOp>(binary_op));
    +
    217}
    +
    218
    +
    219template <dr::distributed_iterator Iter, dr::distributed_iterator OutputIter,
    +
    220 typename T>
    +
    221void exclusive_scan(Iter first, Iter last, OutputIter d_first, T init) {
    +
    222 exclusive_scan(dr::shp::par_unseq, first, last, d_first, init);
    +
    223}
    +
    224
    +
    225} // namespace dr::shp
    +
    Definition: onedpl_direct_iterator.hpp:15
    +
    Definition: allocators.hpp:20
    +
    Definition: vector.hpp:14
    +
    Definition: concepts.hpp:42
    +
    Definition: concepts.hpp:31
    +
    + + + + diff --git a/doxygen/shp_2algorithms_2fill_8hpp_source.html b/doxygen/shp_2algorithms_2fill_8hpp_source.html new file mode 100644 index 0000000000..4dd164b414 --- /dev/null +++ b/doxygen/shp_2algorithms_2fill_8hpp_source.html @@ -0,0 +1,179 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/algorithms/fill.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    fill.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7#include <memory>
    +
    8#include <type_traits>
    +
    9
    +
    10#include <sycl/sycl.hpp>
    +
    11
    +
    12#include <dr/concepts/concepts.hpp>
    +
    13#include <dr/detail/segments_tools.hpp>
    +
    14#include <dr/shp/detail.hpp>
    +
    15#include <dr/shp/device_ptr.hpp>
    +
    16#include <dr/shp/util.hpp>
    +
    17
    +
    18namespace dr::shp {
    +
    19
    +
    20template <std::contiguous_iterator Iter>
    +
    21 requires(!std::is_const_v<std::iter_value_t<Iter>> &&
    +
    22 std::is_trivially_copyable_v<std::iter_value_t<Iter>>)
    +
    23sycl::event fill_async(Iter first, Iter last,
    +
    24 const std::iter_value_t<Iter> &value) {
    +
    25 auto &&q = __detail::get_queue_for_pointer(first);
    +
    26 std::iter_value_t<Iter> *arr = std::to_address(first);
    +
    27 // not using q.fill because of CMPLRLLVM-46438
    +
    28 return dr::__detail::parallel_for(q, sycl::range<>(last - first),
    +
    29 [=](auto idx) { arr[idx] = value; });
    +
    30}
    +
    31
    +
    32template <std::contiguous_iterator Iter>
    +
    33 requires(!std::is_const_v<std::iter_value_t<Iter>>)
    +
    34void fill(Iter first, Iter last, const std::iter_value_t<Iter> &value) {
    +
    35 fill_async(first, last, value).wait();
    +
    36}
    +
    37
    +
    38template <typename T, typename U>
    +
    39 requires(std::indirectly_writable<device_ptr<T>, U>)
    +
    40sycl::event fill_async(device_ptr<T> first, device_ptr<T> last,
    +
    41 const U &value) {
    +
    42 auto &&q = __detail::get_queue_for_pointer(first);
    +
    43 auto *arr = first.get_raw_pointer();
    +
    44 // not using q.fill because of CMPLRLLVM-46438
    +
    45 return dr::__detail::parallel_for(q, sycl::range<>(last - first),
    +
    46 [=](auto idx) { arr[idx] = value; });
    +
    47}
    +
    48
    +
    49template <typename T, typename U>
    +
    50 requires(std::indirectly_writable<device_ptr<T>, U>)
    +
    51void fill(device_ptr<T> first, device_ptr<T> last, const U &value) {
    +
    52 fill_async(first, last, value).wait();
    +
    53}
    +
    54
    +
    55template <typename T, dr::remote_contiguous_range R>
    +
    56sycl::event fill_async(R &&r, const T &value) {
    +
    57 auto &&q = __detail::queue(dr::ranges::rank(r));
    +
    58 auto *arr = std::to_address(rng::begin(dr::ranges::local(r)));
    +
    59 // not using q.fill because of CMPLRLLVM-46438
    +
    60 return dr::__detail::parallel_for(q, sycl::range<>(rng::distance(r)),
    +
    61 [=](auto idx) { arr[idx] = value; });
    +
    62}
    +
    63
    +
    64template <typename T, dr::remote_contiguous_range R>
    +
    65auto fill(R &&r, const T &value) {
    +
    66 fill_async(r, value).wait();
    +
    67 return rng::end(r);
    +
    68}
    +
    69
    +
    70template <typename T, dr::distributed_contiguous_range DR>
    +
    71sycl::event fill_async(DR &&r, const T &value) {
    +
    72 std::vector<sycl::event> events;
    +
    73
    +
    74 for (auto &&segment : dr::ranges::segments(r)) {
    +
    75 auto e = dr::shp::fill_async(segment, value);
    +
    76 events.push_back(e);
    +
    77 }
    +
    78
    +
    79 return dr::shp::__detail::combine_events(events);
    +
    80}
    +
    81
    +
    82template <typename T, dr::distributed_contiguous_range DR>
    +
    83auto fill(DR &&r, const T &value) {
    +
    84 fill_async(r, value).wait();
    +
    85 return rng::end(r);
    +
    86}
    +
    87
    +
    88template <typename T, dr::distributed_iterator Iter>
    +
    89auto fill(Iter first, Iter last, const T &value) {
    +
    90 fill_async(rng::subrange(first, last), value).wait();
    +
    91 return last;
    +
    92}
    +
    93
    +
    94} // namespace dr::shp
    +
    + + + + diff --git a/doxygen/shp_2algorithms_2for__each_8hpp_source.html b/doxygen/shp_2algorithms_2for__each_8hpp_source.html new file mode 100644 index 0000000000..8be6f26b7f --- /dev/null +++ b/doxygen/shp_2algorithms_2for__each_8hpp_source.html @@ -0,0 +1,142 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/algorithms/for_each.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    for_each.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7#include <sycl/sycl.hpp>
    +
    8
    +
    9#include <dr/detail/sycl_utils.hpp>
    +
    10#include <dr/shp/algorithms/execution_policy.hpp>
    +
    11#include <dr/shp/detail.hpp>
    +
    12#include <dr/shp/init.hpp>
    +
    13#include <dr/shp/util.hpp>
    +
    14#include <dr/shp/zip_view.hpp>
    +
    15
    +
    16namespace dr::shp {
    +
    17
    +
    18template <typename ExecutionPolicy, dr::distributed_range R, typename Fn>
    +
    19void for_each(ExecutionPolicy &&policy, R &&r, Fn &&fn) {
    +
    20 static_assert( // currently only one policy supported
    +
    21 std::is_same_v<std::remove_cvref_t<ExecutionPolicy>, device_policy>);
    +
    22
    +
    23 std::vector<sycl::event> events;
    +
    24
    +
    25 for (auto &&segment : dr::ranges::segments(r)) {
    +
    26 auto &&q = __detail::queue(dr::ranges::rank(segment));
    +
    27
    +
    28 assert(rng::distance(segment) > 0);
    +
    29
    +
    30 auto local_segment = __detail::local(segment);
    +
    31
    +
    32 auto first = rng::begin(local_segment);
    +
    33
    +
    34 auto event = dr::__detail::parallel_for(
    +
    35 q, sycl::range<>(rng::distance(local_segment)),
    +
    36 [=](auto idx) { fn(*(first + idx)); });
    +
    37 events.emplace_back(event);
    +
    38 }
    +
    39 __detail::wait(events);
    +
    40}
    +
    41
    +
    42template <typename ExecutionPolicy, dr::distributed_iterator Iter, typename Fn>
    +
    43void for_each(ExecutionPolicy &&policy, Iter begin, Iter end, Fn &&fn) {
    +
    44 for_each(std::forward<ExecutionPolicy>(policy), rng::subrange(begin, end),
    +
    45 std::forward<Fn>(fn));
    +
    46}
    +
    47
    +
    48template <dr::distributed_range R, typename Fn> void for_each(R &&r, Fn &&fn) {
    +
    49 for_each(dr::shp::par_unseq, std::forward<R>(r), std::forward<Fn>(fn));
    +
    50}
    +
    51
    +
    52template <dr::distributed_iterator Iter, typename Fn>
    +
    53void for_each(Iter begin, Iter end, Fn &&fn) {
    +
    54 for_each(dr::shp::par_unseq, begin, end, std::forward<Fn>(fn));
    +
    55}
    +
    56
    +
    57} // namespace dr::shp
    +
    + + + + diff --git a/doxygen/shp_2algorithms_2inclusive__scan_8hpp_source.html b/doxygen/shp_2algorithms_2inclusive__scan_8hpp_source.html new file mode 100644 index 0000000000..3c6b3e4076 --- /dev/null +++ b/doxygen/shp_2algorithms_2inclusive__scan_8hpp_source.html @@ -0,0 +1,342 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/algorithms/inclusive_scan.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    inclusive_scan.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7#include <optional>
    +
    8
    +
    9#include <sycl/sycl.hpp>
    +
    10
    +
    11#include <oneapi/dpl/execution>
    +
    12#include <oneapi/dpl/numeric>
    +
    13
    +
    14#include <oneapi/dpl/async>
    +
    15
    +
    16#include <dr/concepts/concepts.hpp>
    +
    17#include <dr/detail/onedpl_direct_iterator.hpp>
    +
    18#include <dr/shp/algorithms/execution_policy.hpp>
    +
    19#include <dr/shp/allocators.hpp>
    +
    20#include <dr/shp/detail.hpp>
    +
    21#include <dr/shp/init.hpp>
    +
    22#include <dr/shp/vector.hpp>
    +
    23#include <dr/shp/views/views.hpp>
    +
    24
    +
    25namespace dr::shp {
    +
    26
    +
    27template <typename ExecutionPolicy, dr::distributed_contiguous_range R,
    +
    28 dr::distributed_contiguous_range O, typename BinaryOp,
    +
    29 typename U = rng::range_value_t<R>>
    +
    30void inclusive_scan_impl_(ExecutionPolicy &&policy, R &&r, O &&o,
    +
    31 BinaryOp &&binary_op, std::optional<U> init = {}) {
    +
    32 using T = rng::range_value_t<O>;
    +
    33
    +
    34 static_assert(
    +
    35 std::is_same_v<std::remove_cvref_t<ExecutionPolicy>, device_policy>);
    +
    36
    +
    37 auto zipped_view = dr::shp::views::zip(r, o);
    +
    38 auto zipped_segments = zipped_view.zipped_segments();
    +
    39
    +
    40 if constexpr (std::is_same_v<std::remove_cvref_t<ExecutionPolicy>,
    +
    41 device_policy>) {
    +
    42
    +
    43 std::vector<sycl::event> events;
    +
    44
    +
    45 auto root = dr::shp::devices()[0];
    +
    46 dr::shp::device_allocator<T> allocator(dr::shp::context(), root);
    + +
    48 std::size_t(zipped_segments.size()), allocator);
    +
    49
    +
    50 std::size_t segment_id = 0;
    +
    51 for (auto &&segs : zipped_segments) {
    +
    52 auto &&[in_segment, out_segment] = segs;
    +
    53
    +
    54 auto &&q = __detail::queue(dr::ranges::rank(in_segment));
    +
    55 auto &&local_policy = __detail::dpl_policy(dr::ranges::rank(in_segment));
    +
    56
    +
    57 auto dist = rng::distance(in_segment);
    +
    58 assert(dist > 0);
    +
    59
    +
    60 auto first = rng::begin(in_segment);
    +
    61 auto last = rng::end(in_segment);
    +
    62 auto d_first = rng::begin(out_segment);
    +
    63
    +
    64 sycl::event event;
    +
    65
    +
    66 if (segment_id == 0 && init.has_value()) {
    +
    67 event = oneapi::dpl::experimental::inclusive_scan_async(
    +
    68 local_policy, dr::__detail::direct_iterator(first),
    + +
    70 dr::__detail::direct_iterator(d_first), binary_op, init.value());
    +
    71 } else {
    +
    72 event = oneapi::dpl::experimental::inclusive_scan_async(
    +
    73 local_policy, dr::__detail::direct_iterator(first),
    + +
    75 dr::__detail::direct_iterator(d_first), binary_op);
    +
    76 }
    +
    77
    +
    78 auto dst_iter = dr::ranges::local(partial_sums).data() + segment_id;
    +
    79
    +
    80 auto src_iter = dr::ranges::local(out_segment).data();
    +
    81 rng::advance(src_iter, dist - 1);
    +
    82
    +
    83 auto e = q.submit([&](auto &&h) {
    +
    84 h.depends_on(event);
    +
    85 h.single_task([=]() {
    +
    86 rng::range_value_t<O> value = *src_iter;
    +
    87 *dst_iter = value;
    +
    88 });
    +
    89 });
    +
    90
    +
    91 events.push_back(e);
    +
    92
    +
    93 segment_id++;
    +
    94 }
    +
    95
    +
    96 __detail::wait(events);
    +
    97 events.clear();
    +
    98
    +
    99 auto &&local_policy = __detail::dpl_policy(0);
    +
    100
    +
    101 auto first = dr::ranges::local(partial_sums).data();
    +
    102 auto last = first + partial_sums.size();
    +
    103
    +
    104 oneapi::dpl::experimental::inclusive_scan_async(local_policy, first, last,
    +
    105 first, binary_op)
    +
    106 .wait();
    +
    107
    +
    108 std::size_t idx = 0;
    +
    109 for (auto &&segs : zipped_segments) {
    +
    110 auto &&[in_segment, out_segment] = segs;
    +
    111
    +
    112 if (idx > 0) {
    +
    113 auto &&q = __detail::queue(dr::ranges::rank(out_segment));
    +
    114
    +
    115 auto first = rng::begin(out_segment);
    +
    116 dr::__detail::direct_iterator d_first(first);
    +
    117
    +
    118 auto d_sum =
    +
    119 dr::ranges::__detail::local(partial_sums).begin() + idx - 1;
    +
    120
    +
    121 sycl::event e = dr::__detail::parallel_for(
    +
    122 q, sycl::range<>(rng::distance(out_segment)),
    +
    123 [=](auto idx) { d_first[idx] = binary_op(d_first[idx], *d_sum); });
    +
    124
    +
    125 events.push_back(e);
    +
    126 }
    +
    127 idx++;
    +
    128 }
    +
    129
    +
    130 __detail::wait(events);
    +
    131
    +
    132 } else {
    +
    133 assert(false);
    +
    134 }
    +
    135}
    +
    136
    +
    137template <typename ExecutionPolicy, dr::distributed_contiguous_range R,
    +
    138 dr::distributed_contiguous_range O, typename BinaryOp, typename T>
    +
    139void inclusive_scan(ExecutionPolicy &&policy, R &&r, O &&o,
    +
    140 BinaryOp &&binary_op, T init) {
    +
    141 inclusive_scan_impl_(std::forward<ExecutionPolicy>(policy),
    +
    142 std::forward<R>(r), std::forward<O>(o),
    +
    143 std::forward<BinaryOp>(binary_op), std::optional(init));
    +
    144}
    +
    145
    +
    146template <typename ExecutionPolicy, dr::distributed_contiguous_range R,
    +
    147 dr::distributed_contiguous_range O, typename BinaryOp>
    +
    148void inclusive_scan(ExecutionPolicy &&policy, R &&r, O &&o,
    +
    149 BinaryOp &&binary_op) {
    +
    150 inclusive_scan_impl_(std::forward<ExecutionPolicy>(policy),
    +
    151 std::forward<R>(r), std::forward<O>(o),
    +
    152 std::forward<BinaryOp>(binary_op));
    +
    153}
    +
    154
    +
    155template <typename ExecutionPolicy, dr::distributed_contiguous_range R,
    + +
    157void inclusive_scan(ExecutionPolicy &&policy, R &&r, O &&o) {
    +
    158 inclusive_scan(std::forward<ExecutionPolicy>(policy), std::forward<R>(r),
    +
    159 std::forward<O>(o), std::plus<rng::range_value_t<R>>());
    +
    160}
    +
    161
    +
    162// Distributed iterator versions
    +
    163
    +
    164template <typename ExecutionPolicy, dr::distributed_iterator Iter,
    +
    165 dr::distributed_iterator OutputIter, typename BinaryOp, typename T>
    +
    166OutputIter inclusive_scan(ExecutionPolicy &&policy, Iter first, Iter last,
    +
    167 OutputIter d_first, BinaryOp &&binary_op, T init) {
    +
    168
    +
    169 auto dist = rng::distance(first, last);
    +
    170 auto d_last = d_first;
    +
    171 rng::advance(d_last, dist);
    +
    172 inclusive_scan(std::forward<ExecutionPolicy>(policy),
    +
    173 rng::subrange(first, last), rng::subrange(d_first, d_last),
    +
    174 std::forward<BinaryOp>(binary_op), init);
    +
    175
    +
    176 return d_last;
    +
    177}
    +
    178
    +
    179template <typename ExecutionPolicy, dr::distributed_iterator Iter,
    +
    180 dr::distributed_iterator OutputIter, typename BinaryOp>
    +
    181OutputIter inclusive_scan(ExecutionPolicy &&policy, Iter first, Iter last,
    +
    182 OutputIter d_first, BinaryOp &&binary_op) {
    +
    183
    +
    184 auto dist = rng::distance(first, last);
    +
    185 auto d_last = d_first;
    +
    186 rng::advance(d_last, dist);
    +
    187 inclusive_scan(std::forward<ExecutionPolicy>(policy),
    +
    188 rng::subrange(first, last), rng::subrange(d_first, d_last),
    +
    189 std::forward<BinaryOp>(binary_op));
    +
    190
    +
    191 return d_last;
    +
    192}
    +
    193
    +
    194template <typename ExecutionPolicy, dr::distributed_iterator Iter,
    +
    195 dr::distributed_iterator OutputIter>
    +
    196OutputIter inclusive_scan(ExecutionPolicy &&policy, Iter first, Iter last,
    +
    197 OutputIter d_first) {
    +
    198 auto dist = rng::distance(first, last);
    +
    199 auto d_last = d_first;
    +
    200 rng::advance(d_last, dist);
    +
    201 inclusive_scan(std::forward<ExecutionPolicy>(policy),
    +
    202 rng::subrange(first, last), rng::subrange(d_first, d_last));
    +
    203
    +
    204 return d_last;
    +
    205}
    +
    206
    +
    207// Execution policy-less versions
    +
    208
    + + +
    211void inclusive_scan(R &&r, O &&o) {
    +
    212 inclusive_scan(dr::shp::par_unseq, std::forward<R>(r), std::forward<O>(o));
    +
    213}
    +
    214
    + +
    216 dr::distributed_contiguous_range O, typename BinaryOp>
    +
    217void inclusive_scan(R &&r, O &&o, BinaryOp &&binary_op) {
    +
    218 inclusive_scan(dr::shp::par_unseq, std::forward<R>(r), std::forward<O>(o),
    +
    219 std::forward<BinaryOp>(binary_op));
    +
    220}
    +
    221
    + +
    223 dr::distributed_contiguous_range O, typename BinaryOp, typename T>
    +
    224void inclusive_scan(R &&r, O &&o, BinaryOp &&binary_op, T init) {
    +
    225 inclusive_scan(dr::shp::par_unseq, std::forward<R>(r), std::forward<O>(o),
    +
    226 std::forward<BinaryOp>(binary_op), init);
    +
    227}
    +
    228
    +
    229// Distributed iterator versions
    +
    230
    +
    231template <dr::distributed_iterator Iter, dr::distributed_iterator OutputIter>
    +
    232OutputIter inclusive_scan(Iter first, Iter last, OutputIter d_first) {
    +
    233 return inclusive_scan(dr::shp::par_unseq, first, last, d_first);
    +
    234}
    +
    235
    +
    236template <dr::distributed_iterator Iter, dr::distributed_iterator OutputIter,
    +
    237 typename BinaryOp>
    +
    238OutputIter inclusive_scan(Iter first, Iter last, OutputIter d_first,
    +
    239 BinaryOp &&binary_op) {
    +
    240 return inclusive_scan(dr::shp::par_unseq, first, last, d_first,
    +
    241 std::forward<BinaryOp>(binary_op));
    +
    242}
    +
    243
    +
    244template <dr::distributed_iterator Iter, dr::distributed_iterator OutputIter,
    +
    245 typename BinaryOp, typename T>
    +
    246OutputIter inclusive_scan(Iter first, Iter last, OutputIter d_first,
    +
    247 BinaryOp &&binary_op, T init) {
    +
    248 return inclusive_scan(dr::shp::par_unseq, first, last, d_first,
    +
    249 std::forward<BinaryOp>(binary_op), init);
    +
    250}
    +
    251
    +
    252} // namespace dr::shp
    +
    Definition: onedpl_direct_iterator.hpp:15
    +
    Definition: allocators.hpp:20
    +
    Definition: vector.hpp:14
    +
    Definition: concepts.hpp:42
    +
    Definition: concepts.hpp:31
    +
    + + + + diff --git a/doxygen/shp_2algorithms_2iota_8hpp_source.html b/doxygen/shp_2algorithms_2iota_8hpp_source.html new file mode 100644 index 0000000000..4c0fba8650 --- /dev/null +++ b/doxygen/shp_2algorithms_2iota_8hpp_source.html @@ -0,0 +1,116 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/algorithms/iota.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    iota.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7#include <limits>
    +
    8
    +
    9#include <dr/concepts/concepts.hpp>
    +
    10#include <dr/detail/ranges_shim.hpp>
    +
    11#include <dr/shp/algorithms/for_each.hpp>
    +
    12#include <dr/views/iota.hpp>
    +
    13
    +
    14namespace dr::shp {
    +
    15
    +
    16template <dr::distributed_range R, std::integral T> void iota(R &&r, T value) {
    +
    17 auto iota_view = rng::views::iota(value, T(value + rng::distance(r)));
    +
    18
    +
    19 for_each(par_unseq, views::zip(iota_view, r), [](auto &&elem) {
    +
    20 auto &&[idx, v] = elem;
    +
    21 v = idx;
    +
    22 });
    +
    23}
    +
    24
    +
    25template <dr::distributed_iterator Iter, std::integral T>
    +
    26void iota(Iter begin, Iter end, T value) {
    +
    27 auto r = rng::subrange(begin, end);
    +
    28 iota(r, value);
    +
    29}
    +
    30
    +
    31} // namespace dr::shp
    +
    + + + + diff --git a/doxygen/shp_2algorithms_2reduce_8hpp_source.html b/doxygen/shp_2algorithms_2reduce_8hpp_source.html new file mode 100644 index 0000000000..cbae1acde4 --- /dev/null +++ b/doxygen/shp_2algorithms_2reduce_8hpp_source.html @@ -0,0 +1,256 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/algorithms/reduce.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    reduce.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7#include <oneapi/dpl/execution>
    +
    8#include <oneapi/dpl/numeric>
    +
    9
    +
    10#include <oneapi/dpl/async>
    +
    11
    +
    12#include <dr/concepts/concepts.hpp>
    +
    13#include <dr/detail/onedpl_direct_iterator.hpp>
    +
    14#include <dr/shp/algorithms/execution_policy.hpp>
    +
    15#include <dr/shp/init.hpp>
    +
    16#include <sycl/sycl.hpp>
    +
    17
    +
    18namespace {
    +
    19
    +
    20// Precondition: rng::distance(first, last) >= 2
    +
    21// Postcondition: return future to [first, last) reduced with fn
    +
    22template <typename T, typename ExecutionPolicy,
    +
    23 std::bidirectional_iterator Iter, typename Fn>
    +
    24auto reduce_no_init_async(ExecutionPolicy &&policy, Iter first, Iter last,
    +
    25 Fn &&fn) {
    +
    26 Iter new_last = last;
    +
    27 --new_last;
    +
    28
    +
    29 std::iter_value_t<Iter> init = *new_last;
    +
    30
    +
    31 dr::__detail::direct_iterator d_first(first);
    +
    32 dr::__detail::direct_iterator d_last(new_last);
    +
    33
    +
    34 return oneapi::dpl::experimental::reduce_async(
    +
    35 std::forward<ExecutionPolicy>(policy), d_first, d_last,
    +
    36 static_cast<T>(init), std::forward<Fn>(fn));
    +
    37}
    +
    38
    +
    39template <typename T, typename ExecutionPolicy,
    +
    40 std::bidirectional_iterator Iter, typename Fn>
    +
    41 requires(sycl::has_known_identity_v<Fn, T>)
    +
    42auto reduce_no_init_async(ExecutionPolicy &&policy, Iter first, Iter last,
    +
    43 Fn &&fn) {
    +
    44 dr::__detail::direct_iterator d_first(first);
    + +
    46
    +
    47 return oneapi::dpl::experimental::reduce_async(
    +
    48 std::forward<ExecutionPolicy>(policy), d_first, d_last,
    +
    49 sycl::known_identity_v<Fn, T>, std::forward<Fn>(fn));
    +
    50}
    +
    51
    +
    52} // namespace
    +
    53
    +
    54namespace dr::shp {
    +
    55
    +
    56template <typename ExecutionPolicy, dr::distributed_range R, typename T,
    +
    57 typename BinaryOp>
    +
    58T reduce(ExecutionPolicy &&policy, R &&r, T init, BinaryOp &&binary_op) {
    +
    59
    +
    60 static_assert(
    +
    61 std::is_same_v<std::remove_cvref_t<ExecutionPolicy>, device_policy>);
    +
    62
    +
    63 if constexpr (std::is_same_v<std::remove_cvref_t<ExecutionPolicy>,
    +
    64 device_policy>) {
    +
    65 using future_t = decltype(oneapi::dpl::experimental::reduce_async(
    +
    66 oneapi::dpl::execution::device_policy(policy.get_devices()[0]),
    +
    67 dr::ranges::segments(r)[0].begin(), dr::ranges::segments(r)[0].end(),
    +
    68 init, std::forward<BinaryOp>(binary_op)));
    +
    69
    +
    70 std::vector<future_t> futures;
    +
    71
    +
    72 for (auto &&segment : dr::ranges::segments(r)) {
    +
    73 auto &&local_policy = __detail::dpl_policy(dr::ranges::rank(segment));
    +
    74
    +
    75 auto dist = rng::distance(segment);
    +
    76 if (dist <= 0) {
    +
    77 continue;
    +
    78 } else if (dist == 1) {
    +
    79 init = std::forward<BinaryOp>(binary_op)(init, *rng::begin(segment));
    +
    80 continue;
    +
    81 }
    +
    82
    +
    83 auto future = reduce_no_init_async<T>(local_policy, rng::begin(segment),
    +
    84 rng::end(segment),
    +
    85 std::forward<BinaryOp>(binary_op));
    +
    86
    +
    87 futures.push_back(std::move(future));
    +
    88 }
    +
    89
    +
    90 for (auto &&future : futures) {
    +
    91 init = std::forward<BinaryOp>(binary_op)(init, future.get());
    +
    92 }
    +
    93 return init;
    +
    94 } else {
    +
    95 assert(false);
    +
    96 }
    +
    97}
    +
    98
    +
    99template <typename ExecutionPolicy, dr::distributed_range R, typename T>
    +
    100T reduce(ExecutionPolicy &&policy, R &&r, T init) {
    +
    101 return reduce(std::forward<ExecutionPolicy>(policy), std::forward<R>(r), init,
    +
    102 std::plus<>());
    +
    103}
    +
    104
    +
    105template <typename ExecutionPolicy, dr::distributed_range R>
    +
    106rng::range_value_t<R> reduce(ExecutionPolicy &&policy, R &&r) {
    +
    107 return reduce(std::forward<ExecutionPolicy>(policy), std::forward<R>(r),
    +
    108 rng::range_value_t<R>{}, std::plus<>());
    +
    109}
    +
    110
    +
    111// Iterator versions
    +
    112
    +
    113template <typename ExecutionPolicy, dr::distributed_iterator Iter>
    +
    114std::iter_value_t<Iter> reduce(ExecutionPolicy &&policy, Iter first,
    +
    115 Iter last) {
    +
    116 return reduce(std::forward<ExecutionPolicy>(policy),
    +
    117 rng::subrange(first, last), std::iter_value_t<Iter>{},
    +
    118 std::plus<>());
    +
    119}
    +
    120
    +
    121template <typename ExecutionPolicy, dr::distributed_iterator Iter, typename T>
    +
    122T reduce(ExecutionPolicy &&policy, Iter first, Iter last, T init) {
    +
    123 return reduce(std::forward<ExecutionPolicy>(policy),
    +
    124 rng::subrange(first, last), init, std::plus<>());
    +
    125}
    +
    126
    +
    127template <typename ExecutionPolicy, dr::distributed_iterator Iter, typename T,
    +
    128 typename BinaryOp>
    +
    129T reduce(ExecutionPolicy &&policy, Iter first, Iter last, T init,
    +
    130 BinaryOp &&binary_op) {
    +
    131 return reduce(std::forward<ExecutionPolicy>(policy),
    +
    132 rng::subrange(first, last), init,
    +
    133 std::forward<BinaryOp>(binary_op));
    +
    134}
    +
    135
    +
    136// Execution policy-less algorithms
    +
    137
    +
    138template <dr::distributed_range R> rng::range_value_t<R> reduce(R &&r) {
    +
    139 return reduce(dr::shp::par_unseq, std::forward<R>(r));
    +
    140}
    +
    141
    +
    142template <dr::distributed_range R, typename T> T reduce(R &&r, T init) {
    +
    143 return reduce(dr::shp::par_unseq, std::forward<R>(r), init);
    +
    144}
    +
    145
    +
    146template <dr::distributed_range R, typename T, typename BinaryOp>
    +
    147T reduce(R &&r, T init, BinaryOp &&binary_op) {
    +
    148 return reduce(dr::shp::par_unseq, std::forward<R>(r), init,
    +
    149 std::forward<BinaryOp>(binary_op));
    +
    150}
    +
    151
    +
    152template <dr::distributed_iterator Iter>
    +
    153std::iter_value_t<Iter> reduce(Iter first, Iter last) {
    +
    154 return reduce(dr::shp::par_unseq, first, last);
    +
    155}
    +
    156
    +
    157template <dr::distributed_iterator Iter, typename T>
    +
    158T reduce(Iter first, Iter last, T init) {
    +
    159 return reduce(dr::shp::par_unseq, first, last, init);
    +
    160}
    +
    161
    +
    162template <dr::distributed_iterator Iter, typename T, typename BinaryOp>
    +
    163T reduce(Iter first, Iter last, T init, BinaryOp &&binary_op) {
    +
    164 return reduce(dr::shp::par_unseq, first, last, init,
    +
    165 std::forward<BinaryOp>(binary_op));
    +
    166}
    +
    167
    +
    168} // namespace dr::shp
    +
    Definition: onedpl_direct_iterator.hpp:15
    +
    Definition: concepts.hpp:31
    +
    Definition: concepts.hpp:20
    +
    + + + + diff --git a/doxygen/shp_2algorithms_2sort_8hpp_source.html b/doxygen/shp_2algorithms_2sort_8hpp_source.html new file mode 100644 index 0000000000..ecb6c59370 --- /dev/null +++ b/doxygen/shp_2algorithms_2sort_8hpp_source.html @@ -0,0 +1,374 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/algorithms/sort.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    sort.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7#include <oneapi/dpl/execution>
    +
    8
    +
    9#include <oneapi/dpl/algorithm>
    +
    10#include <oneapi/dpl/async>
    +
    11
    +
    12#include <dr/concepts/concepts.hpp>
    +
    13#include <dr/detail/onedpl_direct_iterator.hpp>
    +
    14#include <dr/shp/init.hpp>
    +
    15#include <sycl/sycl.hpp>
    +
    16
    +
    17namespace dr::shp {
    +
    18
    +
    19namespace __detail {
    +
    20
    +
    21template <typename LocalPolicy, typename InputIt, typename Compare>
    +
    22sycl::event sort_async(LocalPolicy &&policy, InputIt first, InputIt last,
    +
    23 Compare &&comp) {
    +
    24 if (rng::distance(first, last) >= 2) {
    +
    25 dr::__detail::direct_iterator d_first(first);
    + +
    27 return oneapi::dpl::experimental::sort_async(
    +
    28 std::forward<LocalPolicy>(policy), d_first, d_last,
    +
    29 std::forward<Compare>(comp));
    +
    30 } else {
    +
    31 return sycl::event{};
    +
    32 }
    +
    33}
    +
    34
    +
    35template <typename LocalPolicy, typename InputIt1, typename InputIt2,
    +
    36 typename OutputIt, typename Comparator = std::less<>>
    +
    37OutputIt lower_bound(LocalPolicy &&policy, InputIt1 start, InputIt1 end,
    +
    38 InputIt2 value_first, InputIt2 value_last, OutputIt result,
    +
    39 Comparator comp = Comparator()) {
    +
    40 dr::__detail::direct_iterator d_start(start);
    + +
    42
    +
    43 dr::__detail::direct_iterator d_value_first(value_first);
    +
    44 dr::__detail::direct_iterator d_value_last(value_last);
    +
    45
    +
    46 dr::__detail::direct_iterator d_result(result);
    +
    47
    +
    48 return oneapi::dpl::lower_bound(std::forward<LocalPolicy>(policy), d_start,
    +
    49 d_end, d_value_first, d_value_last, d_result,
    +
    50 comp)
    +
    51 .base();
    +
    52}
    +
    53
    +
    54} // namespace __detail
    +
    55
    +
    56template <dr::distributed_range R, typename Compare = std::less<>>
    +
    57void sort(R &&r, Compare comp = Compare()) {
    +
    58 auto &&segments = dr::ranges::segments(r);
    +
    59
    +
    60 if (rng::size(segments) == 0) {
    +
    61 return;
    +
    62 } else if (rng::size(segments) == 1) {
    +
    63 auto &&segment = *rng::begin(segments);
    +
    64 auto &&local_policy =
    +
    65 dr::shp::__detail::dpl_policy(dr::ranges::rank(segment));
    +
    66 auto &&local_segment = dr::shp::__detail::local(segment);
    +
    67
    +
    68 __detail::sort_async(local_policy, rng::begin(local_segment),
    +
    69 rng::end(local_segment), comp)
    +
    70 .wait();
    +
    71 return;
    +
    72 }
    +
    73
    +
    74 using T = rng::range_value_t<R>;
    +
    75 std::vector<sycl::event> events;
    +
    76
    +
    77 std::size_t n_segments = std::size_t(rng::size(segments));
    +
    78 std::size_t n_splitters = n_segments - 1;
    +
    79
    +
    80 // Sort each local segment, then compute medians.
    +
    81 // Each segment has `n_splitters` medians,
    +
    82 // so `n_segments * n_splitters` medians total.
    +
    83
    +
    84 T *medians = sycl::malloc_device<T>(n_segments * n_splitters,
    +
    85 shp::devices()[0], shp::context());
    +
    86 std::size_t segment_id = 0;
    +
    87
    +
    88 for (auto &&segment : segments) {
    +
    89 auto &&q = dr::shp::__detail::queue(dr::ranges::rank(segment));
    +
    90 auto &&local_policy =
    +
    91 dr::shp::__detail::dpl_policy(dr::ranges::rank(segment));
    +
    92
    +
    93 auto &&local_segment = dr::shp::__detail::local(segment);
    +
    94
    +
    95 auto s = __detail::sort_async(local_policy, rng::begin(local_segment),
    +
    96 rng::end(local_segment), comp);
    +
    97
    +
    98 double step_size = static_cast<double>(rng::size(segment)) / n_segments;
    +
    99
    +
    100 auto local_begin = rng::begin(local_segment);
    +
    101
    +
    102 auto e = q.submit([&](auto &&h) {
    +
    103 h.depends_on(s);
    +
    104
    +
    105 h.parallel_for(n_splitters, [=](auto i) {
    +
    106 medians[n_splitters * segment_id + i] =
    +
    107 local_begin[std::size_t(step_size * (i + 1) + 0.5)];
    +
    108 });
    +
    109 });
    +
    110
    +
    111 events.push_back(e);
    +
    112 ++segment_id;
    +
    113 }
    +
    114
    +
    115 dr::shp::__detail::wait(events);
    +
    116 events.clear();
    +
    117
    +
    118 // Compute global medians by sorting medians and
    +
    119 // computing `n_splitters` medians from the medians.
    +
    120 auto &&local_policy = dr::shp::__detail::dpl_policy(0);
    +
    121 __detail::sort_async(local_policy, medians,
    +
    122 medians + n_segments * n_splitters, comp)
    +
    123 .wait();
    +
    124
    +
    125 double step_size = static_cast<double>(n_segments * n_splitters) / n_segments;
    +
    126
    +
    127 // - Collect median of medians to get final splitters.
    +
    128 // - Write splitters to [0, n_splitters) in `medians`
    +
    129
    +
    130 auto &&q = dr::shp::__detail::queue(0);
    +
    131 q.single_task([=] {
    +
    132 for (std::size_t i = 0; i < n_splitters; i++) {
    +
    133 medians[i] = medians[std::size_t(step_size * (i + 1) + 0.5)];
    +
    134 }
    +
    135 }).wait();
    +
    136
    +
    137 std::vector<std::size_t *> splitter_indices;
    +
    138 std::vector<std::size_t> sorted_seg_sizes(n_splitters + 1);
    +
    139 std::vector<std::vector<std::size_t>> push_positions(n_segments);
    +
    140
    +
    141 // Compute how many elements will be sent to each of the new "sorted
    +
    142 // segments". Simultaneously compute the offsets `push_positions` where each
    +
    143 // segments' corresponding elements will be pushed.
    +
    144
    +
    145 segment_id = 0;
    +
    146 for (auto &&segment : segments) {
    +
    147 auto &&q = dr::shp::__detail::queue(dr::ranges::rank(segment));
    +
    148 auto &&local_policy =
    +
    149 dr::shp::__detail::dpl_policy(dr::ranges::rank(segment));
    +
    150
    +
    151 auto &&local_segment = dr::shp::__detail::local(segment);
    +
    152
    +
    153 std::size_t *splitter_i = sycl::malloc_shared<std::size_t>(
    +
    154 n_splitters, q.get_device(), shp::context());
    +
    155 splitter_indices.push_back(splitter_i);
    +
    156
    +
    157 // Local copy `medians_l` necessary due to [GSD-3893]
    +
    158 T *medians_l =
    +
    159 sycl::malloc_device<T>(n_splitters, q.get_device(), shp::context());
    +
    160
    +
    161 q.memcpy(medians_l, medians, sizeof(T) * n_splitters).wait();
    +
    162
    +
    163 __detail::lower_bound(local_policy, rng::begin(local_segment),
    +
    164 rng::end(local_segment), medians_l,
    +
    165 medians_l + n_splitters, splitter_i, comp);
    +
    166
    +
    167 sycl::free(medians_l, shp::context());
    +
    168
    +
    169 auto p_first = rng::begin(local_segment);
    +
    170 auto p_last = p_first;
    +
    171 for (std::size_t i = 0; i < n_splitters; i++) {
    +
    172 p_last = rng::begin(local_segment) + splitter_i[i];
    +
    173
    +
    174 std::size_t n_elements = rng::distance(p_first, p_last);
    +
    175 std::size_t pos =
    +
    176 std::atomic_ref(sorted_seg_sizes[i]).fetch_add(n_elements);
    +
    177
    +
    178 push_positions[segment_id].push_back(pos);
    +
    179
    +
    180 p_first = p_last;
    +
    181 }
    +
    182
    +
    183 std::size_t n_elements = rng::distance(p_first, rng::end(local_segment));
    +
    184 std::size_t pos =
    +
    185 std::atomic_ref(sorted_seg_sizes.back()).fetch_add(n_elements);
    +
    186
    +
    187 push_positions[segment_id].push_back(pos);
    +
    188
    +
    189 ++segment_id;
    +
    190 }
    +
    191
    +
    192 // Allocate new "sorted segments"
    +
    193 std::vector<T *> sorted_segments;
    +
    194
    +
    195 segment_id = 0;
    +
    196 for (auto &&segment : segments) {
    +
    197 auto &&q = dr::shp::__detail::queue(dr::ranges::rank(segment));
    +
    198
    +
    199 T *buffer = sycl::malloc_device<T>(sorted_seg_sizes[segment_id], q);
    +
    200 sorted_segments.push_back(buffer);
    +
    201
    +
    202 ++segment_id;
    +
    203 }
    +
    204
    +
    205 // Copy corresponding elements to each "sorted segment"
    +
    206 segment_id = 0;
    +
    207 for (auto &&segment : segments) {
    +
    208 auto &&local_segment = dr::shp::__detail::local(segment);
    +
    209
    +
    210 std::size_t *splitter_i = splitter_indices[segment_id];
    +
    211
    +
    212 auto p_first = rng::begin(local_segment);
    +
    213 auto p_last = p_first;
    +
    214 for (std::size_t i = 0; i < n_splitters; i++) {
    +
    215 p_last = rng::begin(local_segment) + splitter_i[i];
    +
    216
    +
    217 std::size_t pos = push_positions[segment_id][i];
    +
    218
    +
    219 auto e = shp::copy_async(p_first, p_last, sorted_segments[i] + pos);
    +
    220 events.push_back(e);
    +
    221
    +
    222 p_first = p_last;
    +
    223 }
    +
    224
    +
    225 std::size_t pos = push_positions[segment_id].back();
    +
    226
    +
    227 auto e = shp::copy_async(p_first, rng::end(local_segment),
    +
    228 sorted_segments.back() + pos);
    +
    229
    +
    230 events.push_back(e);
    +
    231
    +
    232 ++segment_id;
    +
    233 }
    +
    234
    +
    235 dr::shp::__detail::wait(events);
    +
    236 events.clear();
    +
    237
    +
    238 // Sort each of these new segments
    +
    239 for (std::size_t i = 0; i < sorted_segments.size(); i++) {
    +
    240 auto &&local_policy =
    +
    241 dr::shp::__detail::dpl_policy(dr::ranges::rank(segments[i]));
    +
    242 T *seg = sorted_segments[i];
    +
    243 std::size_t n_elements = sorted_seg_sizes[i];
    +
    244
    +
    245 auto e = __detail::sort_async(local_policy, seg, seg + n_elements, comp);
    +
    246
    +
    247 events.push_back(e);
    +
    248 }
    +
    249
    +
    250 dr::shp::__detail::wait(events);
    +
    251 events.clear();
    +
    252
    +
    253 // Copy the results into the output.
    +
    254
    +
    255 auto d_first = rng::begin(r);
    +
    256
    +
    257 for (std::size_t i = 0; i < sorted_segments.size(); i++) {
    +
    258 T *seg = sorted_segments[i];
    +
    259 std::size_t n_elements = sorted_seg_sizes[i];
    +
    260
    +
    261 auto e = shp::copy_async(seg, seg + n_elements, d_first);
    +
    262
    +
    263 events.push_back(e);
    +
    264
    +
    265 rng::advance(d_first, n_elements);
    +
    266 }
    +
    267
    +
    268 dr::shp::__detail::wait(events);
    +
    269
    +
    270 // Free temporary memory.
    +
    271
    +
    272 for (auto &&sorted_seg : sorted_segments) {
    +
    273 sycl::free(sorted_seg, shp::context());
    +
    274 }
    +
    275
    +
    276 for (auto &&splitter_i : splitter_indices) {
    +
    277 sycl::free(splitter_i, shp::context());
    +
    278 }
    +
    279
    +
    280 sycl::free(medians, shp::context());
    +
    281}
    +
    282
    +
    283template <dr::distributed_iterator RandomIt, typename Compare = std::less<>>
    +
    284void sort(RandomIt first, RandomIt last, Compare comp = Compare()) {
    +
    285 sort(rng::subrange(first, last), comp);
    +
    286}
    +
    287
    +
    288} // namespace dr::shp
    +
    Definition: onedpl_direct_iterator.hpp:15
    +
    + + + + diff --git a/doxygen/shp_2algorithms_2transform_8hpp_source.html b/doxygen/shp_2algorithms_2transform_8hpp_source.html new file mode 100644 index 0000000000..cb919ef274 --- /dev/null +++ b/doxygen/shp_2algorithms_2transform_8hpp_source.html @@ -0,0 +1,168 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/algorithms/transform.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    transform.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4#pragma once
    +
    5
    +
    6#include <dr/shp/detail.hpp>
    +
    7#include <dr/shp/init.hpp>
    +
    8#include <dr/shp/util.hpp>
    +
    9
    +
    10namespace dr::shp {
    +
    11
    +
    25template <class ExecutionPolicy>
    +
    26auto transform(ExecutionPolicy &&policy, dr::distributed_range auto &&in,
    +
    27 dr::distributed_iterator auto out, auto &&fn) {
    +
    28
    +
    29 static_assert( // currently only one policy supported
    +
    30 std::is_same_v<std::remove_cvref_t<ExecutionPolicy>, device_policy>);
    +
    31
    +
    32 std::vector<sycl::event> events;
    +
    33 using OutT = typename decltype(out)::value_type;
    +
    34 std::vector<void *> buffers;
    +
    35 const auto out_end = out + rng::size(in);
    +
    36
    +
    37 for (auto &&[in_seg, out_seg] :
    +
    38 views::zip(in, rng::subrange(out, out_end)).zipped_segments()) {
    +
    39 auto in_device = policy.get_devices()[in_seg.rank()];
    +
    40 auto &&q = __detail::queue(dr::ranges::rank(in_seg));
    +
    41 const std::size_t seg_size = rng::size(in_seg);
    +
    42 assert(seg_size == rng::size(out_seg));
    +
    43 auto local_in_seg = __detail::local(in_seg);
    +
    44
    +
    45 if (in_seg.rank() == out_seg.rank()) {
    +
    46 auto local_out_seg = __detail::local(out_seg);
    +
    47 events.emplace_back(q.parallel_for(seg_size, [=](auto idx) {
    +
    48 local_out_seg[idx] = fn(local_in_seg[idx]);
    +
    49 }));
    +
    50 } else {
    +
    51 OutT *buffer =
    +
    52 sycl::malloc_device<OutT>(seg_size, in_device, dr::shp::context());
    +
    53 buffers.push_back(buffer);
    +
    54
    +
    55 sycl::event compute_event = q.parallel_for(
    +
    56 seg_size, [=](auto idx) { buffer[idx] = fn(local_in_seg[idx]); });
    +
    57 events.emplace_back(q.copy(buffer, __detail::local(out_seg.begin()),
    +
    58 seg_size, compute_event));
    +
    59 }
    +
    60 }
    +
    61 __detail::wait(events);
    +
    62
    +
    63 for (auto *b : buffers)
    +
    64 sycl::free(b, dr::shp::context());
    +
    65
    +
    66 return rng::unary_transform_result<decltype(rng::end(in)), decltype(out_end)>{
    +
    67 rng::end(in), out_end};
    +
    68}
    +
    69
    +
    70template <dr::distributed_range R, dr::distributed_iterator Iter, typename Fn>
    +
    71auto transform(R &&in, Iter out, Fn &&fn) {
    +
    72 return transform(dr::shp::par_unseq, std::forward<R>(in),
    +
    73 std::forward<Iter>(out), std::forward<Fn>(fn));
    +
    74}
    +
    75
    +
    76template <typename ExecutionPolicy, dr::distributed_iterator Iter1,
    +
    77 dr::distributed_iterator Iter2, typename Fn>
    +
    78auto transform(ExecutionPolicy &&policy, Iter1 in_begin, Iter1 in_end,
    +
    79 Iter2 out_end, Fn &&fn) {
    +
    80 return transform(
    +
    81 std::forward<ExecutionPolicy>(policy),
    +
    82 rng::subrange(std::forward<Iter1>(in_begin), std::forward<Iter1>(in_end)),
    +
    83 std::forward<Iter2>(out_end), std::forward<Fn>(fn));
    +
    84}
    +
    85
    + +
    87 typename Fn>
    +
    88auto transform(Iter1 in_begin, Iter1 in_end, Iter2 out_end, Fn &&fn) {
    +
    89 return transform(dr::shp::par_unseq, std::forward<Iter1>(in_begin),
    +
    90 std::forward<Iter1>(in_end), std::forward<Iter2>(out_end),
    +
    91 std::forward<Fn>(fn));
    +
    92}
    +
    93
    +
    94} // namespace dr::shp
    +
    Definition: concepts.hpp:31
    +
    Definition: concepts.hpp:20
    +
    + + + + diff --git a/doxygen/shp_2distributed__vector_8hpp_source.html b/doxygen/shp_2distributed__vector_8hpp_source.html new file mode 100644 index 0000000000..a43816a170 --- /dev/null +++ b/doxygen/shp_2distributed__vector_8hpp_source.html @@ -0,0 +1,296 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/distributed_vector.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    distributed_vector.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7#include <vector>
    +
    8
    +
    9#include <sycl/sycl.hpp>
    +
    10
    +
    11#include <dr/detail/segments_tools.hpp>
    +
    12#include <dr/shp/allocators.hpp>
    +
    13#include <dr/shp/device_ptr.hpp>
    +
    14#include <dr/shp/device_vector.hpp>
    +
    15#include <dr/shp/vector.hpp>
    +
    16
    +
    17namespace dr::shp {
    +
    18
    +
    19template <typename T, typename L> class distributed_vector_accessor {
    +
    20public:
    +
    21 using element_type = T;
    +
    22 using value_type = std::remove_cv_t<T>;
    +
    23
    +
    24 using segment_type = L;
    +
    25 using const_segment_type = std::add_const_t<L>;
    +
    26 using nonconst_segment_type = std::remove_const_t<L>;
    +
    27
    +
    28 using size_type = std::size_t;
    +
    29 using difference_type = std::ptrdiff_t;
    +
    30
    +
    31 // using pointer = typename segment_type::pointer;
    +
    32 using reference = rng::range_reference_t<segment_type>;
    +
    33
    +
    34 using iterator_category = std::random_access_iterator_tag;
    +
    35
    + + + +
    39
    +
    40 constexpr distributed_vector_accessor() noexcept = default;
    +
    41 constexpr ~distributed_vector_accessor() noexcept = default;
    + +
    43 const distributed_vector_accessor &) noexcept = default;
    + +
    45 operator=(const distributed_vector_accessor &) noexcept = default;
    +
    46
    +
    47 constexpr distributed_vector_accessor(std::span<segment_type> segments,
    +
    48 size_type segment_id, size_type idx,
    +
    49 size_type segment_size) noexcept
    +
    50 : segments_(segments), segment_id_(segment_id), idx_(idx),
    +
    51 segment_size_(segment_size) {}
    +
    52
    + +
    54 operator+=(difference_type offset) noexcept {
    +
    55 if (offset > 0) {
    +
    56 idx_ += offset;
    +
    57 if (idx_ >= segment_size_) {
    +
    58 segment_id_ += idx_ / segment_size_;
    +
    59 idx_ = idx_ % segment_size_;
    +
    60 }
    +
    61 }
    +
    62
    +
    63 if (offset < 0) {
    +
    64 size_type new_global_idx = get_global_idx() + offset;
    +
    65 segment_id_ = new_global_idx / segment_size_;
    +
    66 idx_ = new_global_idx % segment_size_;
    +
    67 }
    +
    68 return *this;
    +
    69 }
    +
    70
    +
    71 constexpr bool operator==(const iterator_accessor &other) const noexcept {
    +
    72 return segment_id_ == other.segment_id_ && idx_ == other.idx_;
    +
    73 }
    +
    74
    +
    75 constexpr difference_type
    +
    76 operator-(const iterator_accessor &other) const noexcept {
    +
    77 return difference_type(get_global_idx()) - other.get_global_idx();
    +
    78 }
    +
    79
    +
    80 constexpr bool operator<(const iterator_accessor &other) const noexcept {
    +
    81 if (segment_id_ < other.segment_id_) {
    +
    82 return true;
    +
    83 } else if (segment_id_ == other.segment_id_) {
    +
    84 return idx_ < other.idx_;
    +
    85 } else {
    +
    86 return false;
    +
    87 }
    +
    88 }
    +
    89
    +
    90 constexpr reference operator*() const noexcept {
    +
    91 return segments_[segment_id_][idx_];
    +
    92 }
    +
    93
    +
    94 auto segments() const noexcept {
    +
    95 return dr::__detail::drop_segments(segments_, segment_id_, idx_);
    +
    96 }
    +
    97
    +
    98private:
    +
    99 size_type get_global_idx() const noexcept {
    +
    100 return segment_id_ * segment_size_ + idx_;
    +
    101 }
    +
    102
    +
    103 std::span<segment_type> segments_;
    +
    104 size_type segment_id_ = 0;
    +
    105 size_type idx_ = 0;
    +
    106 size_type segment_size_ = 0;
    +
    107};
    +
    108
    +
    109template <typename T, typename L>
    + + +
    112
    +
    113// TODO: support teams, distributions
    +
    114
    +
    116template <typename T, typename Allocator = dr::shp::device_allocator<T>>
    + +
    118public:
    + +
    120 using const_segment_type =
    +
    121 std::add_const_t<dr::shp::device_vector<T, Allocator>>;
    +
    122
    +
    123 using value_type = T;
    +
    124 using size_type = std::size_t;
    +
    125 using difference_type = std::ptrdiff_t;
    +
    126
    +
    127 using pointer = decltype(std::declval<segment_type>().data());
    +
    128 using const_pointer =
    +
    129 decltype(std::declval<std::add_const_t<segment_type>>().data());
    +
    130
    +
    131 using reference = std::iter_reference_t<pointer>;
    +
    132 using const_reference = std::iter_reference_t<const_pointer>;
    +
    133
    + +
    135 using const_iterator =
    + +
    137 using allocator_type = Allocator;
    +
    138
    +
    139 distributed_vector(std::size_t count = 0) {
    +
    140 assert(dr::shp::devices().size() > 0);
    +
    141 size_ = count;
    +
    142 segment_size_ =
    +
    143 (count + dr::shp::devices().size() - 1) / dr::shp::devices().size();
    +
    144 capacity_ = segment_size_ * dr::shp::devices().size();
    +
    145
    +
    146 std::size_t rank = 0;
    +
    147 for (auto &&device : dr::shp::devices()) {
    +
    148 segments_.emplace_back(segment_type(
    +
    149 segment_size_, Allocator(dr::shp::context(), device), rank++));
    +
    150 }
    +
    151 }
    +
    152
    +
    153 distributed_vector(std::size_t count, const T &value)
    +
    154 : distributed_vector(count) {
    +
    155 dr::shp::fill(*this, value);
    +
    156 }
    +
    157
    +
    158 distributed_vector(std::initializer_list<T> init)
    +
    159 : distributed_vector(init.size()) {
    +
    160 dr::shp::copy(rng::begin(init), rng::end(init), begin());
    +
    161 }
    +
    162
    +
    163 reference operator[](size_type pos) {
    +
    164 size_type segment_id = pos / segment_size_;
    +
    165 size_type local_id = pos % segment_size_;
    +
    166 return *(segments_[segment_id].begin() + local_id);
    +
    167 }
    +
    168
    +
    169 const_reference operator[](size_type pos) const {
    +
    170 size_type segment_id = pos / segment_size_;
    +
    171 size_type local_id = pos % segment_size_;
    +
    172 return *(segments_[segment_id].begin() + local_id);
    +
    173 }
    +
    174
    +
    175 size_type size() const noexcept { return size_; }
    +
    176
    +
    177 auto segments() { return dr::__detail::take_segments(segments_, size()); }
    +
    178
    +
    179 auto segments() const {
    +
    180 return dr::__detail::take_segments(segments_, size());
    +
    181 }
    +
    182
    +
    183 iterator begin() { return iterator(segments_, 0, 0, segment_size_); }
    +
    184
    +
    185 const_iterator begin() const {
    +
    186 return const_iterator(segments_, 0, 0, segment_size_);
    +
    187 }
    +
    188
    +
    189 iterator end() {
    +
    190 return size_ ? iterator(segments_, size() / segment_size_,
    +
    191 size() % segment_size_, segment_size_)
    +
    192 : begin();
    +
    193 }
    +
    194
    +
    195 const_iterator end() const {
    +
    196 return size_ ? const_iterator(segments_, size() / segment_size_,
    +
    197 size() % segment_size_, segment_size_)
    +
    198 : begin();
    +
    199 }
    +
    200
    +
    201private:
    +
    202 std::vector<segment_type> segments_;
    +
    203 std::size_t capacity_ = 0;
    +
    204 std::size_t size_ = 0;
    +
    205 std::size_t segment_size_ = 0;
    +
    206};
    +
    207
    +
    208} // namespace dr::shp
    +
    Definition: iterator_adaptor.hpp:23
    +
    Definition: device_vector.hpp:13
    +
    Definition: distributed_vector.hpp:19
    +
    distributed vector
    Definition: distributed_vector.hpp:117
    +
    + + + + diff --git a/doxygen/shp_2views_2enumerate_8hpp_source.html b/doxygen/shp_2views_2enumerate_8hpp_source.html new file mode 100644 index 0000000000..274be6eb82 --- /dev/null +++ b/doxygen/shp_2views_2enumerate_8hpp_source.html @@ -0,0 +1,144 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/views/enumerate.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    enumerate.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7#include <dr/shp/zip_view.hpp>
    +
    8
    +
    9namespace dr::shp {
    +
    10
    +
    11namespace views {
    +
    12
    +
    13namespace {
    +
    14
    +
    15template <rng::range R> struct range_size {
    +
    16 using type = std::size_t;
    +
    17};
    +
    18
    +
    19template <rng::sized_range R> struct range_size<R> {
    +
    20 using type = rng::range_size_t<R>;
    +
    21};
    +
    22
    +
    23template <rng::range R> using range_size_t = typename range_size<R>::type;
    +
    24
    +
    25} // namespace
    +
    26
    + +
    28public:
    +
    29 template <rng::viewable_range R>
    +
    30 requires(rng::sized_range<R>)
    +
    31 auto operator()(R &&r) const {
    +
    32 using W = std::uint32_t;
    +
    33 return dr::shp::zip_view(rng::views::iota(W(0), W(rng::size(r))),
    +
    34 std::forward<R>(r));
    +
    35 }
    +
    36
    +
    37 template <rng::viewable_range R>
    +
    38 friend auto operator|(R &&r, const enumerate_adapter_closure &closure) {
    +
    39 return closure(std::forward<R>(r));
    +
    40 }
    +
    41};
    +
    42
    + +
    44public:
    +
    45 template <rng::viewable_range R> constexpr auto operator()(R &&r) const {
    +
    46 return enumerate_adapter_closure{}(std::forward<R>(r));
    +
    47 }
    +
    48
    +
    49 inline auto enumerate() const { return enumerate_adapter_closure{}; }
    +
    50};
    +
    51
    +
    52inline constexpr auto enumerate = enumerate_fn_{};
    +
    53
    +
    54} // namespace views
    +
    55
    +
    56} // namespace dr::shp
    +
    Definition: enumerate.hpp:27
    +
    Definition: enumerate.hpp:43
    +
    zip
    Definition: zip_view.hpp:108
    +
    + + + + diff --git a/doxygen/shp_2views_2views_8hpp_source.html b/doxygen/shp_2views_2views_8hpp_source.html new file mode 100644 index 0000000000..733dd7788b --- /dev/null +++ b/doxygen/shp_2views_2views_8hpp_source.html @@ -0,0 +1,111 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/views/views.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    views.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7#include <dr/shp/views/standard_views.hpp>
    +
    8#include <dr/views/iota.hpp>
    +
    9#include <dr/views/transform.hpp>
    +
    10#include <dr/views/views.hpp>
    +
    11
    +
    12namespace dr::shp::views {
    +
    13
    +
    14inline constexpr auto all = rng::views::all;
    +
    15
    +
    16inline constexpr auto counted = rng::views::counted;
    +
    17
    +
    18inline constexpr auto drop = rng::views::drop;
    +
    19
    +
    20inline constexpr auto iota = dr::views::iota;
    +
    21
    +
    22inline constexpr auto take = rng::views::take;
    +
    23
    +
    24inline constexpr auto transform = dr::views::transform;
    +
    25
    +
    26} // namespace dr::shp::views
    +
    + + + + diff --git a/doxygen/shp_8hpp_source.html b/doxygen/shp_8hpp_source.html new file mode 100644 index 0000000000..88b8694c8c --- /dev/null +++ b/doxygen/shp_8hpp_source.html @@ -0,0 +1,104 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    shp.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7#include <dr/shp/algorithms/algorithms.hpp>
    +
    8#include <dr/shp/containers/distributed_dense_matrix.hpp>
    +
    9#include <dr/shp/containers/sparse_matrix.hpp>
    +
    10#include <dr/shp/detail.hpp>
    +
    11#include <dr/shp/distributed_span.hpp>
    +
    12#include <dr/shp/distributed_vector.hpp>
    +
    13#include <dr/shp/init.hpp>
    +
    14#include <dr/shp/range.hpp>
    +
    15#include <dr/shp/range_adaptors.hpp>
    +
    16#include <dr/shp/util.hpp>
    +
    17#include <dr/shp/util/matrix_io.hpp>
    +
    18#include <dr/shp/views/views.hpp>
    +
    19#include <dr/views/views.hpp>
    +
    + + + + diff --git a/doxygen/sliding_8hpp_source.html b/doxygen/sliding_8hpp_source.html new file mode 100644 index 0000000000..163965973c --- /dev/null +++ b/doxygen/sliding_8hpp_source.html @@ -0,0 +1,148 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/views/sliding.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    sliding.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7#include <dr/detail/ranges.hpp>
    +
    8#include <dr/detail/segments_tools.hpp>
    +
    9#include <dr/mhp/views/segmented.hpp>
    +
    10
    +
    11namespace dr::mhp {
    +
    12namespace views {
    +
    13namespace __detail {
    +
    14
    +
    15struct sliding_fn {
    +
    16
    +
    17 // one can not use local algorithms if n is not equal to halo_bounds.prev + 1
    +
    18 // + halo_bounds.next
    +
    19 template <typename Rng, typename Int>
    +
    20 requires rng::viewable_range<Rng> && rng::forward_range<Rng> &&
    +
    21 rng::detail::integer_like_<Int>
    +
    22 auto operator()(Rng &&r, Int n) const {
    +
    23 return rng::views::sliding(static_cast<Rng &&>(r), n);
    +
    24 }
    +
    25};
    +
    26
    +
    27} // namespace __detail
    +
    28
    +
    29inline constexpr __detail::sliding_fn sliding{};
    +
    30
    +
    31} // namespace views
    +
    32} // namespace dr::mhp
    +
    33
    +
    34namespace DR_RANGES_NAMESPACE {
    +
    35
    +
    36template <rng::range V>
    +
    37 requires(dr::is_sliding_view_v<V>)
    +
    38auto segments_(V &&v) {
    +
    39
    +
    40 auto base_segments = dr::ranges::segments(v.base());
    +
    41 auto elements_to_skip_in_base = rng::size(v.base());
    +
    42 auto elements_to_take = 0;
    +
    43 if (!rng::empty(v)) {
    +
    44 // need to reverse engineer `n` which was passed to sliding_view
    +
    45 elements_to_take = rng::size(v);
    +
    46 const auto slide_size = elements_to_skip_in_base - elements_to_take + 1;
    +
    47 // TODO: this code assumes that halo is symmetric, thus odd (center + 2n)
    +
    48 // note, it is not an assertion preventing all wrong use cases
    +
    49 // other ones are caught by assert during attempt to read outside halo
    +
    50 assert(slide_size % 2 == 1);
    +
    51 elements_to_skip_in_base = slide_size / 2;
    +
    52 }
    +
    53
    +
    54 return dr::mhp::views::segmented(
    +
    55 v,
    +
    56 dr::__detail::take_segments(
    +
    57 dr::__detail::drop_segments(base_segments, elements_to_skip_in_base),
    +
    58 elements_to_take));
    +
    59}
    +
    60
    +
    61// TODO: add support for dr::mhp::halo(dr::mhp::views::sliding(r)).exchange()
    +
    62} // namespace DR_RANGES_NAMESPACE
    +
    Definition: sliding.hpp:15
    +
    + + + + diff --git a/doxygen/source__location_8hpp_source.html b/doxygen/source__location_8hpp_source.html new file mode 100644 index 0000000000..6a9bf19c43 --- /dev/null +++ b/doxygen/source__location_8hpp_source.html @@ -0,0 +1,151 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/vendor/source_location/source_location.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    source_location.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#ifndef NOSTD_SOURCE_LOCATION_HPP
    +
    6#define NOSTD_SOURCE_LOCATION_HPP
    +
    7
    +
    8#pragma once
    +
    9
    +
    10#include <cstdint>
    +
    11
    +
    12namespace nostd {
    + +
    14public:
    +
    15#if not defined(__apple_build_version__) and defined(__clang__) and \
    +
    16 (__clang_major__ >= 9)
    +
    17 static constexpr source_location
    +
    18 current(const char *fileName = __builtin_FILE(),
    +
    19 const char *functionName = __builtin_FUNCTION(),
    +
    20 const uint_least32_t lineNumber = __builtin_LINE(),
    +
    21 const uint_least32_t columnOffset = __builtin_COLUMN()) noexcept
    +
    22#elif defined(__GNUC__) and \
    +
    23 (__GNUC__ > 4 or (__GNUC__ == 4 and __GNUC_MINOR__ >= 8))
    +
    24 static constexpr source_location
    +
    25 current(const char *fileName = __builtin_FILE(),
    +
    26 const char *functionName = __builtin_FUNCTION(),
    +
    27 const uint_least32_t lineNumber = __builtin_LINE(),
    +
    28 const uint_least32_t columnOffset = 0) noexcept
    +
    29#else
    +
    30 static constexpr source_location
    +
    31 current(const char *fileName = "unsupported",
    +
    32 const char *functionName = "unsupported",
    +
    33 const uint_least32_t lineNumber = 0,
    +
    34 const uint_least32_t columnOffset = 0) noexcept
    +
    35#endif
    +
    36 {
    +
    37 return source_location(fileName, functionName, lineNumber, columnOffset);
    +
    38 }
    +
    39
    +
    40 source_location(const source_location &) = default;
    +
    41 source_location(source_location &&) = default;
    +
    42
    +
    43 constexpr const char *file_name() const noexcept { return fileName; }
    +
    44
    +
    45 constexpr const char *function_name() const noexcept { return functionName; }
    +
    46
    +
    47 constexpr uint_least32_t line() const noexcept { return lineNumber; }
    +
    48
    +
    49 constexpr std::uint_least32_t column() const noexcept { return columnOffset; }
    +
    50
    +
    51private:
    +
    52 constexpr source_location(const char *fileName, const char *functionName,
    +
    53 const uint_least32_t lineNumber,
    +
    54 const uint_least32_t columnOffset) noexcept
    +
    55 : fileName(fileName), functionName(functionName), lineNumber(lineNumber),
    +
    56 columnOffset(columnOffset) {}
    +
    57
    +
    58 const char *fileName;
    +
    59 const char *functionName;
    +
    60 const std::uint_least32_t lineNumber;
    +
    61 const std::uint_least32_t columnOffset;
    +
    62};
    +
    63} // namespace nostd
    +
    64
    +
    65#endif
    +
    Definition: source_location.hpp:13
    +
    + + + + diff --git a/doxygen/span_8hpp_source.html b/doxygen/span_8hpp_source.html new file mode 100644 index 0000000000..04af069862 --- /dev/null +++ b/doxygen/span_8hpp_source.html @@ -0,0 +1,148 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/span.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    span.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7#include <iterator>
    +
    8
    +
    9#include <dr/detail/ranges_shim.hpp>
    +
    10
    +
    11namespace dr::shp {
    +
    12
    +
    13template <typename T, rng::random_access_iterator Iter = T *>
    +
    14class span : public rng::view_interface<dr::shp::span<T, Iter>> {
    +
    15public:
    +
    16 static_assert(std::is_same_v<std::iter_value_t<Iter>, T>);
    +
    17
    +
    18 using value_type = std::iter_value_t<Iter>;
    +
    19 using size_type = std::size_t;
    +
    20 using difference_type = std::iter_difference_t<Iter>;
    +
    21 using reference = std::iter_reference_t<Iter>;
    +
    22 using iterator = Iter;
    +
    23
    +
    24 template <rng::random_access_range R>
    +
    25 span(R &&r) : begin_(rng::begin(r)), end_(rng::end(r)) {}
    +
    26 span(Iter first, Iter last) : begin_(first), end_(last) {}
    +
    27 span(Iter first, std::size_t count) : begin_(first), end_(first + count) {}
    +
    28
    +
    29 span() = default;
    +
    30 span(const span &) noexcept = default;
    +
    31 span &operator=(const span &) noexcept = default;
    +
    32
    +
    33 std::size_t size() const noexcept { return std::size_t(end() - begin()); }
    +
    34
    +
    35 bool empty() const noexcept { return size() == 0; }
    +
    36
    +
    37 Iter begin() const noexcept { return begin_; }
    +
    38
    +
    39 Iter end() const noexcept { return end_; }
    +
    40
    +
    41 reference operator[](size_type index) const { return *(begin() + index); }
    +
    42
    +
    43 span first(size_type n) const { return span(begin(), begin() + n); }
    +
    44
    +
    45 span last(size_type n) const { return span(end() - n, end()); }
    +
    46
    +
    47 span subspan(std::size_t offset, std::size_t count) const {
    +
    48 return span(begin() + offset, begin() + offset + count);
    +
    49 }
    +
    50
    +
    51private:
    +
    52 Iter begin_, end_;
    +
    53};
    +
    54
    +
    55template <rng::random_access_range R>
    +
    56span(R &&) -> span<rng::range_value_t<R>, rng::iterator_t<R>>;
    +
    57
    +
    58template <rng::random_access_iterator Iter>
    +
    59span(Iter first, std::size_t count) -> span<std::iter_value_t<Iter>, Iter>;
    +
    60
    +
    61} // namespace dr::shp
    +
    Definition: index.hpp:34
    +
    Definition: span.hpp:14
    +
    + + + + diff --git a/doxygen/sparse__matrix_8hpp_source.html b/doxygen/sparse__matrix_8hpp_source.html new file mode 100644 index 0000000000..66e41dc12f --- /dev/null +++ b/doxygen/sparse__matrix_8hpp_source.html @@ -0,0 +1,509 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/containers/sparse_matrix.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    sparse_matrix.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7#include <dr/detail/index.hpp>
    +
    8#include <dr/shp/algorithms/copy.hpp>
    +
    9#include <dr/shp/containers/matrix_entry.hpp>
    +
    10#include <dr/shp/containers/matrix_partition.hpp>
    +
    11#include <dr/shp/device_vector.hpp>
    +
    12#include <dr/shp/distributed_span.hpp>
    +
    13#include <dr/shp/init.hpp>
    +
    14#include <dr/shp/util/generate_random.hpp>
    +
    15#include <dr/shp/views/csr_matrix_view.hpp>
    +
    16#include <iterator>
    +
    17
    +
    18namespace dr::shp {
    +
    19
    +
    20template <rng::random_access_range Segments>
    +
    21 requires(rng::viewable_range<Segments>)
    + +
    23public:
    +
    24 using segment_type = rng::range_value_t<Segments>;
    +
    25
    +
    26 using value_type = rng::range_value_t<segment_type>;
    +
    27
    +
    28 using size_type = rng::range_size_t<segment_type>;
    +
    29 using difference_type = rng::range_difference_t<segment_type>;
    +
    30
    +
    31 using reference = rng::range_reference_t<segment_type>;
    +
    32
    +
    33 using iterator_category = std::random_access_iterator_tag;
    +
    34
    + + + +
    38
    +
    39 constexpr distributed_range_accessor() noexcept = default;
    +
    40 constexpr ~distributed_range_accessor() noexcept = default;
    + +
    42 const distributed_range_accessor &) noexcept = default;
    + +
    44 operator=(const distributed_range_accessor &) noexcept = default;
    +
    45
    +
    46 constexpr distributed_range_accessor(Segments segments, size_type segment_id,
    +
    47 size_type idx) noexcept
    +
    48 : segments_(rng::views::all(std::forward<Segments>(segments))),
    +
    49 segment_id_(segment_id), idx_(idx) {}
    +
    50
    + +
    52 operator+=(difference_type offset) noexcept {
    +
    53
    +
    54 while (offset > 0) {
    +
    55 difference_type current_offset = std::min(
    +
    56 offset,
    +
    57 difference_type(rng::size(*(segments_.begin() + segment_id_))) -
    +
    58 difference_type(idx_));
    +
    59 idx_ += current_offset;
    +
    60 offset -= current_offset;
    +
    61
    +
    62 if (idx_ >= rng::size((*(segments_.begin() + segment_id_)))) {
    +
    63 segment_id_++;
    +
    64 idx_ = 0;
    +
    65 }
    +
    66 }
    +
    67
    +
    68 while (offset < 0) {
    +
    69 difference_type current_offset =
    +
    70 std::min(-offset, difference_type(idx_) + 1);
    +
    71
    +
    72 difference_type new_idx = difference_type(idx_) - current_offset;
    +
    73
    +
    74 if (new_idx < 0) {
    +
    75 segment_id_--;
    +
    76 new_idx = rng::size(*(segments_.begin() + segment_id_)) - 1;
    +
    77 }
    +
    78
    +
    79 idx_ = new_idx;
    +
    80 }
    +
    81
    +
    82 return *this;
    +
    83 }
    +
    84
    +
    85 constexpr bool operator==(const iterator_accessor &other) const noexcept {
    +
    86 return segment_id_ == other.segment_id_ && idx_ == other.idx_;
    +
    87 }
    +
    88
    +
    89 constexpr difference_type
    +
    90 operator-(const iterator_accessor &other) const noexcept {
    +
    91 return difference_type(get_global_idx()) - other.get_global_idx();
    +
    92 }
    +
    93
    +
    94 constexpr bool operator<(const iterator_accessor &other) const noexcept {
    +
    95 if (segment_id_ < other.segment_id_) {
    +
    96 return true;
    +
    97 } else if (segment_id_ == other.segment_id_) {
    +
    98 return idx_ < other.idx_;
    +
    99 } else {
    +
    100 return false;
    +
    101 }
    +
    102 }
    +
    103
    +
    104 constexpr reference operator*() const noexcept {
    +
    105 return *((*(segments_.begin() + segment_id_)).begin() + idx_);
    +
    106 }
    +
    107
    +
    108private:
    +
    109 size_type get_global_idx() const noexcept {
    +
    110 size_type cumulative_size = 0;
    +
    111 for (std::size_t i = 0; i < segment_id_; i++) {
    +
    112 cumulative_size += segments_[i].size();
    +
    113 }
    +
    114 return cumulative_size + idx_;
    +
    115 }
    +
    116
    +
    117 rng::views::all_t<Segments> segments_;
    +
    118 size_type segment_id_ = 0;
    +
    119 size_type idx_ = 0;
    +
    120};
    +
    121
    +
    122template <typename Segments>
    + + +
    125
    +
    126template <typename T, std::integral I = std::int64_t> class sparse_matrix {
    +
    127public:
    +
    128 using size_type = std::size_t;
    +
    129 using difference_type = std::ptrdiff_t;
    +
    130
    + +
    132
    +
    133 using scalar_reference = rng::range_reference_t<
    + +
    135 using const_scalar_reference = rng::range_reference_t<
    + +
    137
    + + +
    140
    +
    141 using key_type = dr::index<I>;
    +
    142
    + +
    144 T, I,
    +
    145 rng::iterator_t<dr::shp::device_vector<T, dr::shp::device_allocator<T>>>,
    +
    146 rng::iterator_t<dr::shp::device_vector<I, dr::shp::device_allocator<I>>>>;
    +
    147
    +
    148 // using iterator = sparse_matrix_iterator<T, dr::shp::device_vector<T,
    +
    149 // dr::shp::device_allocator<T>>>;
    +
    150 using iterator =
    + +
    152
    + +
    154 : shape_(shape), partition_(new dr::shp::block_cyclic()) {
    +
    155 init_();
    +
    156 }
    +
    157
    +
    158 sparse_matrix(key_type shape, double density)
    +
    159 : shape_(shape), partition_(new dr::shp::block_cyclic()) {
    +
    160 init_random_(density);
    +
    161 }
    +
    162
    +
    163 sparse_matrix(key_type shape, double density,
    +
    164 const matrix_partition &partition)
    +
    165 : shape_(shape), partition_(partition.clone()) {
    +
    166 init_random_(density);
    +
    167 }
    +
    168
    +
    169 sparse_matrix(key_type shape, const matrix_partition &partition)
    +
    170 : shape_(shape), partition_(partition.clone()) {
    +
    171 init_();
    +
    172 }
    +
    173
    +
    174 size_type size() const noexcept { return total_nnz_; }
    +
    175
    +
    176 key_type shape() const noexcept { return shape_; }
    +
    177
    +
    178 iterator begin() { return iterator(segments(), 0, 0); }
    +
    179
    +
    180 iterator end() {
    +
    181 return iterator(segments(), grid_shape_[0] * grid_shape_[1], 0);
    +
    182 }
    +
    183
    +
    184 segment_type tile(key_type tile_index) {
    +
    185 std::size_t tile_idx = tile_index[0] * grid_shape_[1] + tile_index[1];
    +
    186 auto values = values_[tile_idx].begin();
    +
    187 auto rowptr = rowptr_[tile_idx].begin();
    +
    188 auto colind = colind_[tile_idx].begin();
    +
    189 auto nnz = nnz_[tile_idx];
    +
    190
    +
    191 std::size_t tm =
    +
    192 std::min(tile_shape_[0], shape()[0] - tile_index[0] * tile_shape_[0]);
    +
    193 std::size_t tn =
    +
    194 std::min(tile_shape_[1], shape()[1] - tile_index[1] * tile_shape_[1]);
    +
    195
    +
    196 return segment_type(values, rowptr, colind, key_type(tm, tn), nnz,
    +
    197 values_[tile_idx].rank());
    +
    198 }
    +
    199
    +
    200 // Note: this function is currently *not* asynchronous due to a deadlock
    +
    201 // in `gemv_benchmark`. I believe this is a SYCL bug.
    +
    202 template <typename... Args>
    +
    203 auto copy_tile_async(key_type tile_index,
    + +
    205 std::size_t tile_idx = tile_index[0] * grid_shape_[1] + tile_index[1];
    +
    206 auto &&values = values_[tile_idx];
    +
    207 auto &&colind = colind_[tile_idx];
    +
    208 auto &&rowptr = rowptr_[tile_idx];
    +
    209 auto &&nnz = nnz_[tile_idx];
    +
    210
    +
    211 total_nnz_ -= nnz;
    +
    212 nnz = tile_view.size();
    +
    213
    +
    214 total_nnz_ += tile_view.size();
    +
    215
    +
    216 values.resize(tile_view.size());
    +
    217 colind.resize(tile_view.size());
    +
    218 rowptr.resize(tile_view.shape()[0] + 1);
    +
    219
    +
    220 auto v_e = dr::shp::copy_async(tile_view.values_data(),
    +
    221 tile_view.values_data() + values.size(),
    +
    222 values.data());
    +
    223
    +
    224 auto c_e = dr::shp::copy_async(tile_view.colind_data(),
    +
    225 tile_view.colind_data() + colind.size(),
    +
    226 colind.data());
    +
    227
    +
    228 auto r_e = dr::shp::copy_async(tile_view.rowptr_data(),
    +
    229 tile_view.rowptr_data() + rowptr.size(),
    +
    230 rowptr.data());
    +
    231
    +
    232 tiles_ = generate_tiles_();
    +
    233 segments_ = generate_segments_();
    +
    234
    +
    235 v_e.wait();
    +
    236 c_e.wait();
    +
    237 r_e.wait();
    +
    238
    +
    239 return __detail::combine_events({v_e, c_e, r_e});
    +
    240 }
    +
    241
    +
    242 template <typename... Args>
    +
    243 void copy_tile(key_type tile_index,
    + +
    245 copy_tile_async(tile_index, tile_view).wait();
    +
    246 }
    +
    247
    +
    248 key_type tile_shape() const noexcept { return tile_shape_; }
    +
    249
    +
    250 key_type grid_shape() const noexcept { return grid_shape_; }
    +
    251
    +
    252 std::span<segment_type> tiles() { return std::span(tiles_); }
    +
    253
    +
    254 std::span<segment_type> segments() { return std::span(segments_); }
    +
    255
    +
    256private:
    +
    257 std::vector<segment_type> generate_tiles_() {
    +
    258 std::vector<segment_type> views_;
    +
    259
    +
    260 for (std::size_t i = 0; i < grid_shape_[0]; i++) {
    +
    261 for (std::size_t j = 0; j < grid_shape_[1]; j++) {
    +
    262 std::size_t tm = std::min<std::size_t>(tile_shape_[0],
    +
    263 shape()[0] - i * tile_shape_[0]);
    +
    264 std::size_t tn = std::min<std::size_t>(tile_shape_[1],
    +
    265 shape()[1] - j * tile_shape_[1]);
    +
    266
    +
    267 std::size_t tile_idx = i * grid_shape_[1] + j;
    +
    268
    +
    269 auto values = values_[tile_idx].begin();
    +
    270 auto rowptr = rowptr_[tile_idx].begin();
    +
    271 auto colind = colind_[tile_idx].begin();
    +
    272 auto nnz = nnz_[tile_idx];
    +
    273
    +
    274 views_.emplace_back(values, rowptr, colind, key_type(tm, tn), nnz,
    +
    275 values_[tile_idx].rank());
    +
    276 }
    +
    277 }
    +
    278 return views_;
    +
    279 }
    +
    280
    +
    281 std::vector<segment_type> generate_segments_() {
    +
    282 std::vector<segment_type> views_;
    +
    283
    +
    284 for (std::size_t i = 0; i < grid_shape_[0]; i++) {
    +
    285 for (std::size_t j = 0; j < grid_shape_[1]; j++) {
    +
    286 std::size_t tm = std::min<std::size_t>(tile_shape_[0],
    +
    287 shape()[0] - i * tile_shape_[0]);
    +
    288 std::size_t tn = std::min<std::size_t>(tile_shape_[1],
    +
    289 shape()[1] - j * tile_shape_[1]);
    +
    290
    +
    291 std::size_t tile_idx = i * grid_shape_[1] + j;
    +
    292
    +
    293 auto values = values_[tile_idx].begin();
    +
    294 auto rowptr = rowptr_[tile_idx].begin();
    +
    295 auto colind = colind_[tile_idx].begin();
    +
    296 auto nnz = nnz_[tile_idx];
    +
    297
    +
    298 std::size_t m_offset = i * tile_shape_[0];
    +
    299 std::size_t n_offset = j * tile_shape_[1];
    +
    300
    +
    301 views_.emplace_back(values, rowptr, colind, key_type(tm, tn), nnz,
    +
    302 values_[i * grid_shape_[1] + j].rank(),
    +
    303 key_type(m_offset, n_offset));
    +
    304 }
    +
    305 }
    +
    306 return views_;
    +
    307 }
    +
    308
    +
    309private:
    +
    310 void init_() {
    +
    311 grid_shape_ = key_type(partition_->grid_shape(shape()));
    +
    312 tile_shape_ = key_type(partition_->tile_shape(shape()));
    +
    313
    +
    314 values_.reserve(grid_shape_[0] * grid_shape_[1]);
    +
    315 rowptr_.reserve(grid_shape_[0] * grid_shape_[1]);
    +
    316 colind_.reserve(grid_shape_[0] * grid_shape_[1]);
    +
    317 nnz_.reserve(grid_shape_[0] * grid_shape_[1]);
    +
    318
    +
    319 for (std::size_t i = 0; i < grid_shape_[0]; i++) {
    +
    320 for (std::size_t j = 0; j < grid_shape_[1]; j++) {
    +
    321 std::size_t rank = partition_->tile_rank(shape(), {i, j});
    +
    322
    +
    323 auto device = dr::shp::devices()[rank];
    +
    324 dr::shp::device_allocator<T> alloc(dr::shp::context(), device);
    +
    325 dr::shp::device_allocator<I> i_alloc(dr::shp::context(), device);
    +
    326
    +
    327 values_.emplace_back(1, alloc, rank);
    +
    328 rowptr_.emplace_back(2, i_alloc, rank);
    +
    329 colind_.emplace_back(1, i_alloc, rank);
    +
    330 nnz_.push_back(0);
    +
    331 rowptr_.back()[0] = 0;
    +
    332 rowptr_.back()[1] = 0;
    +
    333 }
    +
    334 }
    +
    335 tiles_ = generate_tiles_();
    +
    336 segments_ = generate_segments_();
    +
    337 }
    +
    338
    +
    339 void init_random_(double density) {
    +
    340 grid_shape_ = key_type(partition_->grid_shape(shape()));
    +
    341 tile_shape_ = key_type(partition_->tile_shape(shape()));
    +
    342
    +
    343 values_.reserve(grid_shape_[0] * grid_shape_[1]);
    +
    344 rowptr_.reserve(grid_shape_[0] * grid_shape_[1]);
    +
    345 colind_.reserve(grid_shape_[0] * grid_shape_[1]);
    +
    346 nnz_.reserve(grid_shape_[0] * grid_shape_[1]);
    +
    347
    +
    348 for (std::size_t i = 0; i < grid_shape_[0]; i++) {
    +
    349 for (std::size_t j = 0; j < grid_shape_[1]; j++) {
    +
    350 std::size_t rank = partition_->tile_rank(shape(), {i, j});
    +
    351
    +
    352 std::size_t tm = std::min<std::size_t>(tile_shape_[0],
    +
    353 shape()[0] - i * tile_shape_[0]);
    +
    354 std::size_t tn = std::min<std::size_t>(tile_shape_[1],
    +
    355 shape()[1] - j * tile_shape_[1]);
    +
    356
    +
    357 auto device = dr::shp::devices()[rank];
    +
    358 dr::shp::device_allocator<T> alloc(dr::shp::context(), device);
    +
    359 dr::shp::device_allocator<I> i_alloc(dr::shp::context(), device);
    +
    360
    +
    361 auto seed = i * grid_shape_[1] + j;
    +
    362
    +
    363 auto csr = generate_random_csr<T, I>(key_type(tm, tn), density, seed);
    +
    364 std::size_t nnz = csr.size();
    +
    365
    + +
    367 csr.size(), alloc, rank);
    + +
    369 tm + 1, i_alloc, rank);
    +
    370
    + +
    372 csr.size(), i_alloc, rank);
    +
    373
    +
    374 dr::shp::copy(csr.values_data(), csr.values_data() + csr.size(),
    +
    375 values.data());
    +
    376 dr::shp::copy(csr.rowptr_data(), csr.rowptr_data() + tm + 1,
    +
    377 rowptr.data());
    +
    378 dr::shp::copy(csr.colind_data(), csr.colind_data() + csr.size(),
    +
    379 colind.data());
    +
    380
    +
    381 values_.push_back(std::move(values));
    +
    382 rowptr_.emplace_back(std::move(rowptr));
    +
    383 colind_.emplace_back(std::move(colind));
    +
    384 nnz_.push_back(nnz);
    +
    385 total_nnz_ += nnz;
    +
    386
    +
    387 delete[] csr.values_data();
    +
    388 delete[] csr.rowptr_data();
    +
    389 delete[] csr.colind_data();
    +
    390 }
    +
    391 }
    +
    392 tiles_ = generate_tiles_();
    +
    393 segments_ = generate_segments_();
    +
    394 }
    +
    395
    +
    396private:
    +
    397 key_type shape_;
    +
    398 key_type grid_shape_;
    +
    399 key_type tile_shape_;
    +
    400 std::unique_ptr<dr::shp::matrix_partition> partition_;
    +
    401
    +
    402 std::vector<dr::shp::device_vector<T, dr::shp::device_allocator<T>>> values_;
    +
    403 std::vector<dr::shp::device_vector<I, dr::shp::device_allocator<I>>> rowptr_;
    +
    404 std::vector<dr::shp::device_vector<I, dr::shp::device_allocator<I>>> colind_;
    +
    405
    +
    406 std::vector<std::size_t> nnz_;
    +
    407 std::size_t total_nnz_ = 0;
    +
    408
    +
    409 std::vector<segment_type> tiles_;
    +
    410 std::vector<segment_type> segments_;
    +
    411};
    +
    412
    +
    413} // namespace dr::shp
    + +
    Definition: iterator_adaptor.hpp:23
    +
    Definition: matrix_partition.hpp:34
    +
    Definition: csr_matrix_view.hpp:126
    +
    Definition: allocators.hpp:20
    +
    Definition: device_vector.hpp:13
    +
    Definition: sparse_matrix.hpp:22
    +
    Definition: matrix_entry.hpp:15
    +
    Definition: matrix_partition.hpp:23
    +
    Definition: matrix_entry.hpp:113
    +
    Definition: sparse_matrix.hpp:126
    +
    + + + + diff --git a/doxygen/splitbar.png b/doxygen/splitbar.png new file mode 100644 index 0000000000000000000000000000000000000000..fe895f2c58179b471a22d8320b39a4bd7312ec8e GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/doxygen/splitbard.png b/doxygen/splitbard.png new file mode 100644 index 0000000000000000000000000000000000000000..8367416d757fd7b6dc4272b6432dc75a75abd068 GIT binary patch literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf@VhhFKy35^fiT zT~&lUj3=cDh^%3HDY9k5CEku}PHXNoNC(_$U3XPb&Q*ME25pT;2(*BOgAf<+R$lzakPG`kF31()Fx{L5Wrac|GQzjeE= zueY1`Ze{#x<8=S|`~MgGetGce)#vN&|J{Cd^tS%;tBYTo?+^d68<#n_Y_xx`J||4O V@QB{^CqU0Kc)I$ztaD0e0svEzbJzd? literal 0 HcmV?d00001 diff --git a/doxygen/standard__views_8hpp_source.html b/doxygen/standard__views_8hpp_source.html new file mode 100644 index 0000000000..5b2d43e61d --- /dev/null +++ b/doxygen/standard__views_8hpp_source.html @@ -0,0 +1,135 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/views/standard_views.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    standard_views.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7#include <dr/detail/index.hpp>
    +
    8#include <dr/detail/segments_tools.hpp>
    +
    9#include <dr/shp/distributed_span.hpp>
    +
    10#include <dr/shp/views/enumerate.hpp>
    +
    11#include <dr/shp/zip_view.hpp>
    +
    12#include <dr/views/transform.hpp>
    +
    13
    +
    14namespace dr::shp {
    +
    15
    +
    16namespace views {
    +
    17
    +
    18template <dr::distributed_range R>
    +
    19auto slice(R &&r, dr::index<> slice_indices) {
    +
    20 return dr::shp::distributed_span(dr::ranges::segments(std::forward<R>(r)))
    +
    21 .subspan(slice_indices[0], slice_indices[1] - slice_indices[0]);
    +
    22}
    +
    23
    + +
    25public:
    +
    26 slice_adaptor_closure(dr::index<> slice_indices) : idx_(slice_indices) {}
    +
    27
    +
    28 template <rng::random_access_range R> auto operator()(R &&r) const {
    +
    29 return slice(std::forward<R>(r), idx_);
    +
    30 }
    +
    31
    +
    32 template <rng::random_access_range R>
    +
    33 friend auto operator|(R &&r, const slice_adaptor_closure &closure) {
    +
    34 return closure(std::forward<R>(r));
    +
    35 }
    +
    36
    +
    37private:
    +
    38 dr::index<> idx_;
    +
    39};
    +
    40
    +
    41inline auto slice(dr::index<> slice_indices) {
    +
    42 return slice_adaptor_closure(slice_indices);
    +
    43}
    +
    44
    +
    45} // namespace views
    +
    46
    +
    47} // namespace dr::shp
    +
    Definition: index.hpp:34
    +
    Definition: distributed_span.hpp:127
    +
    Definition: standard_views.hpp:24
    +
    + + + + diff --git a/doxygen/structdr_1_1default__memory-members.html b/doxygen/structdr_1_1default__memory-members.html new file mode 100644 index 0000000000..7be77f51e5 --- /dev/null +++ b/doxygen/structdr_1_1default__memory-members.html @@ -0,0 +1,96 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    dr::default_memory< T > Member List
    +
    +
    + +

    This is the complete list of members for dr::default_memory< T >, including all inherited members.

    + + + + + + + + + +
    allocate(std::size_t size) (defined in dr::default_memory< T >)dr::default_memory< T >inline
    allocate(std::size_t size) (defined in dr::default_memory< T >)dr::default_memory< T >inline
    deallocate(T *p, std::size_t n) (defined in dr::default_memory< T >)dr::default_memory< T >inline
    deallocate(F *p, std::size_t n) (defined in dr::default_memory< T >)dr::default_memory< T >inline
    memcpy(void *dst, const void *src, std::size_t numBytes) (defined in dr::default_memory< T >)dr::default_memory< T >inline
    offload(F lambda) (defined in dr::default_memory< T >)dr::default_memory< T >inline
    std_allocator (defined in dr::default_memory< T >)dr::default_memory< T >
    value_type typedef (defined in dr::default_memory< T >)dr::default_memory< T >
    + + + + diff --git a/doxygen/structdr_1_1default__memory.html b/doxygen/structdr_1_1default__memory.html new file mode 100644 index 0000000000..af16cb71c9 --- /dev/null +++ b/doxygen/structdr_1_1default__memory.html @@ -0,0 +1,130 @@ + + + + + + + +Distributed Ranges: dr::default_memory< T > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    dr::default_memory< T > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    +using value_type = T
     
    + + + + + + + + + + + + + + + + +

    +Public Member Functions

    +T * allocate (std::size_t size)
     
    +template<typename F >
    F * allocate (std::size_t size)
     
    +constexpr void deallocate (T *p, std::size_t n)
     
    +template<typename F >
    void deallocate (F *p, std::size_t n)
     
    +void memcpy (void *dst, const void *src, std::size_t numBytes)
     
    +template<typename F >
    void offload (F lambda)
     
    + + + +

    +Public Attributes

    +std::allocator< T > std_allocator
     
    +
    The documentation for this struct was generated from the following file:
      +
    • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail/memory.hpp
    • +
    +
    + + + + diff --git a/doxygen/structdr_1_1is__drop__view.html b/doxygen/structdr_1_1is__drop__view.html new file mode 100644 index 0000000000..31ceb238ea --- /dev/null +++ b/doxygen/structdr_1_1is__drop__view.html @@ -0,0 +1,106 @@ + + + + + + + +Distributed Ranges: dr::is_drop_view< T > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    dr::is_drop_view< T > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for dr::is_drop_view< T >:
    +
    +
    Inheritance graph
    + + + + +
    [legend]
    +
    +Collaboration diagram for dr::is_drop_view< T >:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    +
    The documentation for this struct was generated from the following file:
      +
    • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail/view_detectors.hpp
    • +
    +
    + + + + diff --git a/doxygen/structdr_1_1is__drop__view_3_01rng_1_1drop__view_3_01T_01_4_01_4.html b/doxygen/structdr_1_1is__drop__view_3_01rng_1_1drop__view_3_01T_01_4_01_4.html new file mode 100644 index 0000000000..6bfe3be4ee --- /dev/null +++ b/doxygen/structdr_1_1is__drop__view_3_01rng_1_1drop__view_3_01T_01_4_01_4.html @@ -0,0 +1,106 @@ + + + + + + + +Distributed Ranges: dr::is_drop_view< rng::drop_view< T > > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    dr::is_drop_view< rng::drop_view< T > > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for dr::is_drop_view< rng::drop_view< T > >:
    +
    +
    Inheritance graph
    + + + + +
    [legend]
    +
    +Collaboration diagram for dr::is_drop_view< rng::drop_view< T > >:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    +
    The documentation for this struct was generated from the following file:
      +
    • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail/view_detectors.hpp
    • +
    +
    + + + + diff --git a/doxygen/structdr_1_1is__drop__view_3_01rng_1_1drop__view_3_01T_01_4_01_4__coll__graph.map b/doxygen/structdr_1_1is__drop__view_3_01rng_1_1drop__view_3_01T_01_4_01_4__coll__graph.map new file mode 100644 index 0000000000..5540ed652e --- /dev/null +++ b/doxygen/structdr_1_1is__drop__view_3_01rng_1_1drop__view_3_01T_01_4_01_4__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/structdr_1_1is__drop__view_3_01rng_1_1drop__view_3_01T_01_4_01_4__coll__graph.md5 b/doxygen/structdr_1_1is__drop__view_3_01rng_1_1drop__view_3_01T_01_4_01_4__coll__graph.md5 new file mode 100644 index 0000000000..14002e5a1c --- /dev/null +++ b/doxygen/structdr_1_1is__drop__view_3_01rng_1_1drop__view_3_01T_01_4_01_4__coll__graph.md5 @@ -0,0 +1 @@ +b2394a6f2e80c9ffb36ae43abecef95c \ No newline at end of file diff --git a/doxygen/structdr_1_1is__drop__view_3_01rng_1_1drop__view_3_01T_01_4_01_4__coll__graph.png b/doxygen/structdr_1_1is__drop__view_3_01rng_1_1drop__view_3_01T_01_4_01_4__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..28610c3881b007b52b2eca24d57b890294725141 GIT binary patch literal 4402 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 WhEod?55b=xkbA1yDqob$L;nX+#FA$K literal 0 HcmV?d00001 diff --git a/doxygen/structdr_1_1is__drop__view_3_01rng_1_1drop__view_3_01T_01_4_01_4__inherit__graph.map b/doxygen/structdr_1_1is__drop__view_3_01rng_1_1drop__view_3_01T_01_4_01_4__inherit__graph.map new file mode 100644 index 0000000000..5540ed652e --- /dev/null +++ b/doxygen/structdr_1_1is__drop__view_3_01rng_1_1drop__view_3_01T_01_4_01_4__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/structdr_1_1is__drop__view_3_01rng_1_1drop__view_3_01T_01_4_01_4__inherit__graph.md5 b/doxygen/structdr_1_1is__drop__view_3_01rng_1_1drop__view_3_01T_01_4_01_4__inherit__graph.md5 new file mode 100644 index 0000000000..14002e5a1c --- /dev/null +++ b/doxygen/structdr_1_1is__drop__view_3_01rng_1_1drop__view_3_01T_01_4_01_4__inherit__graph.md5 @@ -0,0 +1 @@ +b2394a6f2e80c9ffb36ae43abecef95c \ No newline at end of file diff --git a/doxygen/structdr_1_1is__drop__view_3_01rng_1_1drop__view_3_01T_01_4_01_4__inherit__graph.png b/doxygen/structdr_1_1is__drop__view_3_01rng_1_1drop__view_3_01T_01_4_01_4__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..28610c3881b007b52b2eca24d57b890294725141 GIT binary patch literal 4402 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 WhEod?55b=xkbA1yDqob$L;nX+#FA$K literal 0 HcmV?d00001 diff --git a/doxygen/structdr_1_1is__drop__view__coll__graph.map b/doxygen/structdr_1_1is__drop__view__coll__graph.map new file mode 100644 index 0000000000..af5df8b6f0 --- /dev/null +++ b/doxygen/structdr_1_1is__drop__view__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/structdr_1_1is__drop__view__coll__graph.md5 b/doxygen/structdr_1_1is__drop__view__coll__graph.md5 new file mode 100644 index 0000000000..fc437a1562 --- /dev/null +++ b/doxygen/structdr_1_1is__drop__view__coll__graph.md5 @@ -0,0 +1 @@ +a2f91c7d6a6fb5c622edca015988d54e \ No newline at end of file diff --git a/doxygen/structdr_1_1is__drop__view__coll__graph.png b/doxygen/structdr_1_1is__drop__view__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..d2994bfaa9980b1337392c54919043361d494bb7 GIT binary patch literal 4106 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 + + + diff --git a/doxygen/structdr_1_1is__drop__view__inherit__graph.md5 b/doxygen/structdr_1_1is__drop__view__inherit__graph.md5 new file mode 100644 index 0000000000..fc437a1562 --- /dev/null +++ b/doxygen/structdr_1_1is__drop__view__inherit__graph.md5 @@ -0,0 +1 @@ +a2f91c7d6a6fb5c622edca015988d54e \ No newline at end of file diff --git a/doxygen/structdr_1_1is__drop__view__inherit__graph.png b/doxygen/structdr_1_1is__drop__view__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..d2994bfaa9980b1337392c54919043361d494bb7 GIT binary patch literal 4106 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 + + + + + + +Distributed Ranges: dr::is_iota_view< T > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    dr::is_iota_view< T > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for dr::is_iota_view< T >:
    +
    +
    Inheritance graph
    + + + + +
    [legend]
    +
    +Collaboration diagram for dr::is_iota_view< T >:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    +
    The documentation for this struct was generated from the following file:
      +
    • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail/view_detectors.hpp
    • +
    +
    + + + + diff --git a/doxygen/structdr_1_1is__iota__view_3_01rng_1_1iota__view_3_01W_01_4_01_4.html b/doxygen/structdr_1_1is__iota__view_3_01rng_1_1iota__view_3_01W_01_4_01_4.html new file mode 100644 index 0000000000..9a4ecd4b70 --- /dev/null +++ b/doxygen/structdr_1_1is__iota__view_3_01rng_1_1iota__view_3_01W_01_4_01_4.html @@ -0,0 +1,106 @@ + + + + + + + +Distributed Ranges: dr::is_iota_view< rng::iota_view< W > > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    dr::is_iota_view< rng::iota_view< W > > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for dr::is_iota_view< rng::iota_view< W > >:
    +
    +
    Inheritance graph
    + + + + +
    [legend]
    +
    +Collaboration diagram for dr::is_iota_view< rng::iota_view< W > >:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    +
    The documentation for this struct was generated from the following file:
      +
    • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail/view_detectors.hpp
    • +
    +
    + + + + diff --git a/doxygen/structdr_1_1is__iota__view_3_01rng_1_1iota__view_3_01W_01_4_01_4__coll__graph.map b/doxygen/structdr_1_1is__iota__view_3_01rng_1_1iota__view_3_01W_01_4_01_4__coll__graph.map new file mode 100644 index 0000000000..e7f848c530 --- /dev/null +++ b/doxygen/structdr_1_1is__iota__view_3_01rng_1_1iota__view_3_01W_01_4_01_4__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/structdr_1_1is__iota__view_3_01rng_1_1iota__view_3_01W_01_4_01_4__coll__graph.md5 b/doxygen/structdr_1_1is__iota__view_3_01rng_1_1iota__view_3_01W_01_4_01_4__coll__graph.md5 new file mode 100644 index 0000000000..145b111463 --- /dev/null +++ b/doxygen/structdr_1_1is__iota__view_3_01rng_1_1iota__view_3_01W_01_4_01_4__coll__graph.md5 @@ -0,0 +1 @@ +a9f48d4a7fc5297b8a7c19f5e6a755d7 \ No newline at end of file diff --git a/doxygen/structdr_1_1is__iota__view_3_01rng_1_1iota__view_3_01W_01_4_01_4__coll__graph.png b/doxygen/structdr_1_1is__iota__view_3_01rng_1_1iota__view_3_01W_01_4_01_4__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..4cdb29a993557859eecad5d5b527de0d81a8f390 GIT binary patch literal 4953 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 literal 0 HcmV?d00001 diff --git a/doxygen/structdr_1_1is__iota__view_3_01rng_1_1iota__view_3_01W_01_4_01_4__inherit__graph.map b/doxygen/structdr_1_1is__iota__view_3_01rng_1_1iota__view_3_01W_01_4_01_4__inherit__graph.map new file mode 100644 index 0000000000..e7f848c530 --- /dev/null +++ b/doxygen/structdr_1_1is__iota__view_3_01rng_1_1iota__view_3_01W_01_4_01_4__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/structdr_1_1is__iota__view_3_01rng_1_1iota__view_3_01W_01_4_01_4__inherit__graph.md5 b/doxygen/structdr_1_1is__iota__view_3_01rng_1_1iota__view_3_01W_01_4_01_4__inherit__graph.md5 new file mode 100644 index 0000000000..145b111463 --- /dev/null +++ b/doxygen/structdr_1_1is__iota__view_3_01rng_1_1iota__view_3_01W_01_4_01_4__inherit__graph.md5 @@ -0,0 +1 @@ +a9f48d4a7fc5297b8a7c19f5e6a755d7 \ No newline at end of file diff --git a/doxygen/structdr_1_1is__iota__view_3_01rng_1_1iota__view_3_01W_01_4_01_4__inherit__graph.png b/doxygen/structdr_1_1is__iota__view_3_01rng_1_1iota__view_3_01W_01_4_01_4__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..4cdb29a993557859eecad5d5b527de0d81a8f390 GIT binary patch literal 4953 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 literal 0 HcmV?d00001 diff --git a/doxygen/structdr_1_1is__iota__view__coll__graph.map b/doxygen/structdr_1_1is__iota__view__coll__graph.map new file mode 100644 index 0000000000..7501f1f5da --- /dev/null +++ b/doxygen/structdr_1_1is__iota__view__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/structdr_1_1is__iota__view__coll__graph.md5 b/doxygen/structdr_1_1is__iota__view__coll__graph.md5 new file mode 100644 index 0000000000..bb7f154d51 --- /dev/null +++ b/doxygen/structdr_1_1is__iota__view__coll__graph.md5 @@ -0,0 +1 @@ +971d254fcf9e90ba1f710154f84b8677 \ No newline at end of file diff --git a/doxygen/structdr_1_1is__iota__view__coll__graph.png b/doxygen/structdr_1_1is__iota__view__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..01f7075e09613460fbf3311615a68b54b3183a42 GIT binary patch literal 4167 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 literal 0 HcmV?d00001 diff --git a/doxygen/structdr_1_1is__iota__view__inherit__graph.map b/doxygen/structdr_1_1is__iota__view__inherit__graph.map new file mode 100644 index 0000000000..7501f1f5da --- /dev/null +++ b/doxygen/structdr_1_1is__iota__view__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/structdr_1_1is__iota__view__inherit__graph.md5 b/doxygen/structdr_1_1is__iota__view__inherit__graph.md5 new file mode 100644 index 0000000000..bb7f154d51 --- /dev/null +++ b/doxygen/structdr_1_1is__iota__view__inherit__graph.md5 @@ -0,0 +1 @@ +971d254fcf9e90ba1f710154f84b8677 \ No newline at end of file diff --git a/doxygen/structdr_1_1is__iota__view__inherit__graph.png b/doxygen/structdr_1_1is__iota__view__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..01f7075e09613460fbf3311615a68b54b3183a42 GIT binary patch literal 4167 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 literal 0 HcmV?d00001 diff --git a/doxygen/structdr_1_1is__owning__view.html b/doxygen/structdr_1_1is__owning__view.html new file mode 100644 index 0000000000..a672325c86 --- /dev/null +++ b/doxygen/structdr_1_1is__owning__view.html @@ -0,0 +1,106 @@ + + + + + + + +Distributed Ranges: dr::is_owning_view< T > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    dr::is_owning_view< T > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for dr::is_owning_view< T >:
    +
    +
    Inheritance graph
    + + + + +
    [legend]
    +
    +Collaboration diagram for dr::is_owning_view< T >:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    +
    The documentation for this struct was generated from the following file:
      +
    • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/zip_view.hpp
    • +
    +
    + + + + diff --git a/doxygen/structdr_1_1is__owning__view__coll__graph.map b/doxygen/structdr_1_1is__owning__view__coll__graph.map new file mode 100644 index 0000000000..1fdbdf11cc --- /dev/null +++ b/doxygen/structdr_1_1is__owning__view__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/structdr_1_1is__owning__view__coll__graph.md5 b/doxygen/structdr_1_1is__owning__view__coll__graph.md5 new file mode 100644 index 0000000000..8bc5db7d45 --- /dev/null +++ b/doxygen/structdr_1_1is__owning__view__coll__graph.md5 @@ -0,0 +1 @@ +ef09467e54a05cc78ea660814c52f301 \ No newline at end of file diff --git a/doxygen/structdr_1_1is__owning__view__coll__graph.png b/doxygen/structdr_1_1is__owning__view__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..a3f07f611bc1539fe165cbe90ae86fae6374b421 GIT binary patch literal 4256 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
    00RK@QQrONN}rNL({j;!8XD(&lSCx(F27cW z0H*u6<@j8tr(dEBD)T8Sa$LA@;r<&|RcB}Ca^>>rBD3UXFgM06j~b%m + + + diff --git a/doxygen/structdr_1_1is__owning__view__inherit__graph.md5 b/doxygen/structdr_1_1is__owning__view__inherit__graph.md5 new file mode 100644 index 0000000000..8bc5db7d45 --- /dev/null +++ b/doxygen/structdr_1_1is__owning__view__inherit__graph.md5 @@ -0,0 +1 @@ +ef09467e54a05cc78ea660814c52f301 \ No newline at end of file diff --git a/doxygen/structdr_1_1is__owning__view__inherit__graph.png b/doxygen/structdr_1_1is__owning__view__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..a3f07f611bc1539fe165cbe90ae86fae6374b421 GIT binary patch literal 4256 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
    00RK@QQrONN}rNL({j;!8XD(&lSCx(F27cW z0H*u6<@j8tr(dEBD)T8Sa$LA@;r<&|RcB}Ca^>>rBD3UXFgM06j~b%m + + + + + + +Distributed Ranges: dr::is_ref_view< T > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    dr::is_ref_view< T > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for dr::is_ref_view< T >:
    +
    +
    Inheritance graph
    + + + + +
    [legend]
    +
    +Collaboration diagram for dr::is_ref_view< T >:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    +
    The documentation for this struct was generated from the following file:
      +
    • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail/view_detectors.hpp
    • +
    +
    + + + + diff --git a/doxygen/structdr_1_1is__ref__view_3_01rng_1_1ref__view_3_01R_01_4_01_4.html b/doxygen/structdr_1_1is__ref__view_3_01rng_1_1ref__view_3_01R_01_4_01_4.html new file mode 100644 index 0000000000..dbda435f15 --- /dev/null +++ b/doxygen/structdr_1_1is__ref__view_3_01rng_1_1ref__view_3_01R_01_4_01_4.html @@ -0,0 +1,106 @@ + + + + + + + +Distributed Ranges: dr::is_ref_view< rng::ref_view< R > > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    dr::is_ref_view< rng::ref_view< R > > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for dr::is_ref_view< rng::ref_view< R > >:
    +
    +
    Inheritance graph
    + + + + +
    [legend]
    +
    +Collaboration diagram for dr::is_ref_view< rng::ref_view< R > >:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    +
    The documentation for this struct was generated from the following file:
      +
    • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail/view_detectors.hpp
    • +
    +
    + + + + diff --git a/doxygen/structdr_1_1is__ref__view_3_01rng_1_1ref__view_3_01R_01_4_01_4__coll__graph.map b/doxygen/structdr_1_1is__ref__view_3_01rng_1_1ref__view_3_01R_01_4_01_4__coll__graph.map new file mode 100644 index 0000000000..cce1fcce07 --- /dev/null +++ b/doxygen/structdr_1_1is__ref__view_3_01rng_1_1ref__view_3_01R_01_4_01_4__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/structdr_1_1is__ref__view_3_01rng_1_1ref__view_3_01R_01_4_01_4__coll__graph.md5 b/doxygen/structdr_1_1is__ref__view_3_01rng_1_1ref__view_3_01R_01_4_01_4__coll__graph.md5 new file mode 100644 index 0000000000..57bc0cd6c6 --- /dev/null +++ b/doxygen/structdr_1_1is__ref__view_3_01rng_1_1ref__view_3_01R_01_4_01_4__coll__graph.md5 @@ -0,0 +1 @@ +fd977d2e770e454b3d89ee651a6ab0ee \ No newline at end of file diff --git a/doxygen/structdr_1_1is__ref__view_3_01rng_1_1ref__view_3_01R_01_4_01_4__coll__graph.png b/doxygen/structdr_1_1is__ref__view_3_01rng_1_1ref__view_3_01R_01_4_01_4__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..c20bc133f035c5b62b27047c3ab8209947deee27 GIT binary patch literal 4680 zcmchbg;!Kv+s23P?jAx!T96hPLg|ze=@3K&h7REYq#F?s1Q{Ac8WAPL0VJinQ)&ir zr1RZ8?^@sbzJK6bb7sz3XRmYiefGZY`}*AztFNm@M$AkMfk4PK)Kv|^xd?n;65@m3 z&1n`KaKg9KQd5Oo-+U0QrD+fd)uo22l97K7dLcmn(PlHj{%;K!k6@oUo~oo87M{>_ zS*Xu$%%|CSqgwO5;>tO*?rmDOuF-AmB(t5N$=L!&L8A};6?}t;E~-v*%1%56LE#=l zzBiVHbja76S1Y$}y(Z*@>F!?+hz9Bop0^G4o_c!fVwka_Y#DD30}3hHR~9Y)@Dgoa z7Aac$yRTHBly81!iQf*Y=^kN0VL?J;6jr78D)SlRnOIf5vD-1<*`3s}i6AB>CLVr% z93NKRVtF6$S&om7llGd0b23HRp2gt3UZJB`k1~yV0lmIDclTh8o}D#+k%=s`oyLDX zq9erOP0#Y9(ww(g3Ta_#LPEmY>FH@vl6%`}6e}yMIuCVfb+w4)w~*YJ znDFp$!q5vfL3$c0g9i`rgsfWLYHMrvOiZL7{a(_8l$Df3#l-lcXCDj>4q~pFMJjg2 z#>UcoQPWD*ZD;&UEG&=g?6_uTXGc%}Zf;z@Nl&MOxHvmQxwv9gmETFZ^9BV4F-y46 z-aJ=RQ!{YE+EJpjvvYX8H;t|_Xnz@tC{j5f@BRDtwDj~3+uGV3?Cg}sN^}Yb2DDF) zE-Oo$FD_p8_4G(r6`zpa_rVFcz6u_lnkoguF3+CjqfoB1b&l~Da1jxaxcK--&TE^S zYGGkvM#jbuA|oT$(ddOu*oS{3{*l0>^7!%N@sSZF)$!+09Bgdok%9+CMnQW0`tARtp0ZOT5)k^ zMx&&pg#WnsGqb|UGEU%Tu3t<{*{4tGf`Wp4ckXE9|EQ@Ejg+jas`B1nRsyq#y$M_2 zkSHoFxx`|9u8zwm3# z5>8J1b7XypIXO9pr>0D&O9cEa#=5a6P8hbhFKY#8XE!LuTd`nu}FhYxw^CE2o)C}-=#T6sT*5H6=dhS-`An5h=_)JQsNy{?!W7zSqKOSC{t(AUzbJ%y#D_Bd6m(rg(B_UCnn+P5D-iut*(KQhgRK@ zP55O7C4kv>jBz~lQt{2SeDvs5Jc9`Ngog_MXM1eOGF@x5d6nuhnFdrQ={y+}M+FXf zpD`tD+x!7udPqqx@zf5yPWQ#sJw{w?r5XJMah@f#cuuQd57{SXHhtMo;tqzf~-8T4E$)TVfsh*gcB-9E6( zs_xv@l0OlR+n2w}kS(pR#`1&B3VA8fS-gGUHwqO^4voQa_`tqNn0t0+vsAuFA((R6 zj&&`B6EQRcBSc=4+G=#*2lbkaeXU=gztgTlDV;vVjkEsd9H z@OHjT(#MBQOAyuVrZJOmT@mS&YR8;H%%EBMhgULZ8<$=O@r}ET^7D=8_7k`Py2M+fb7ZES2T4PV7oR#CBacTWb}VbL1+NiWPu@+b_4V0dvc zX?R$lk%fi()-AldckiB@tR>ez8{_5Seba1rar%JV-Fbi!NGy3=eqjV?rukKFA>0+;Huj5X)-dhp8kFn4-Zj6A)&iq9MtfF zk`jD6Iy#pz&8e(_Kn45U zGmJq|aq+FmkB?s!74h7YlIob8r2o4)6rG!EnK$dl(cIWb52*qE%svO8;ydsz^x4y& z*^w&I) zlioSOCyk`OzP=z$mCVc-TUuJ6^zkbw)O@Kvznt(wa&cRm0t8W6NtVo^7zGv=sa0QR zUrCgR^X%zU{Bk4WSXHj2RN%zybBBjgCUg`O6#oAHp)o1%-o}cJwKk#^ z8bKOLCw07+53+G^C^FEooS&aZR9D}mB~(O&VysjzlcUG!@ZW%0WxWZ3rF(dJy(%xi z^DvP)^5DQ5$k-kb4d#W8j!v!3cWgnk8dwM!Kx>kGeZpEZQfq7L^i1;5z;4Hbt&tSX zVrMtEjA+A|+R2C?A~QGLg0JsG0O0^yU7kOO1KP2gD+YWyPk6t1-cm^k>vdY1fu&{Q z;Gk}ggIL4o&#z*}tET4XSpk;BBqysG8`I6s&H^+HfBTlv+uOTrfn)ywF_Wo1zDp26CTl`-|7+dVe241e=*U$C$V{Wgy9&-Ca0(_EQKt zO>A;<(!@tE<3rynDQ>$XLl079@fgr3Z@waHY;q486s+n#JxD(%sT;SH8MOL znrRhCv^!b(DlAOt+gZ@@f*<_X026BNGX-@luB4=-S%Y)xL-#|VX_9YOX9BLSuFK2I zh>;V(Qyy@*Qb53$3u@%gpJdzH+r(4JA3RtIOiia0UQ|@=bq9jQ+yC=NNkgMIv{k3X zGkovwqOi?dVbB>#dv8%5?JZQ8Gy?;vkW$LDee=Z^&5VnU1-4TE$&+{>SM5B7;P$hr zZP?_*gl%^cnEzR8L*{CmqFwb&jV`F0wKJRHP_pxex+z51v_KPh6nwi{OT*F}X z#hnJ1fu+?nG(>n;5v*qP5$`jD(H+@ zWjt}~orW^1D=I6y)Hs48vc#Q~d8j%0`H3OxX%a<-<$ZtL=bOTS#0GNZ7~02Xq=Sz4 z(vOWTEE0wk&Phoagi(L)sDlo45Kuo@vNh080bzr-O&rv;HY+{1l9?Jsk4&C;i zp_ECIrPR;TNgcwd7}C;*2KuS7>mqJBoO}WbKFrNcn2U?c1~fKI;!kf}&awU8GdX>H z`4mtq_m7WFzmQ(Yt>K>dNe=8SG~W$8aE8EaY@iAk`zoN3ER#RYKX=VRAfTtNtj1of z=VBpKuB@OlH8L@=JH>4D3=L%x)SY+6rQO!+bGmk2_-c&S%N!jW1N{N{^7d_M5M{)t zPd?S?8{sW1tnBS2{rdIv;$Teg1Z0STwe|JNAo1g*$mimPOji{(@b$O=Ff4>UE2 z!3{y$gTWcvydA)}J-}+sw*=4t*_gEkO0=}L2C+R#Ys_AK0G)AVov4R@ef#z;R9c!5 zBx6rsUwB?#-YA-1Kp-_MD|UX~B7s$g+OC!{?&@*Ak`9Sow5j$!V=}IP + + + diff --git a/doxygen/structdr_1_1is__ref__view_3_01rng_1_1ref__view_3_01R_01_4_01_4__inherit__graph.md5 b/doxygen/structdr_1_1is__ref__view_3_01rng_1_1ref__view_3_01R_01_4_01_4__inherit__graph.md5 new file mode 100644 index 0000000000..57bc0cd6c6 --- /dev/null +++ b/doxygen/structdr_1_1is__ref__view_3_01rng_1_1ref__view_3_01R_01_4_01_4__inherit__graph.md5 @@ -0,0 +1 @@ +fd977d2e770e454b3d89ee651a6ab0ee \ No newline at end of file diff --git a/doxygen/structdr_1_1is__ref__view_3_01rng_1_1ref__view_3_01R_01_4_01_4__inherit__graph.png b/doxygen/structdr_1_1is__ref__view_3_01rng_1_1ref__view_3_01R_01_4_01_4__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..c20bc133f035c5b62b27047c3ab8209947deee27 GIT binary patch literal 4680 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 + + + diff --git a/doxygen/structdr_1_1is__ref__view__coll__graph.md5 b/doxygen/structdr_1_1is__ref__view__coll__graph.md5 new file mode 100644 index 0000000000..aa5583741a --- /dev/null +++ b/doxygen/structdr_1_1is__ref__view__coll__graph.md5 @@ -0,0 +1 @@ +bac4e2cc71a001722b1cd79b6608d656 \ No newline at end of file diff --git a/doxygen/structdr_1_1is__ref__view__coll__graph.png b/doxygen/structdr_1_1is__ref__view__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..43090bb596f03a248a5ef53f1d501148e59f4f91 GIT binary patch literal 3904 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 + + + diff --git a/doxygen/structdr_1_1is__ref__view__inherit__graph.md5 b/doxygen/structdr_1_1is__ref__view__inherit__graph.md5 new file mode 100644 index 0000000000..aa5583741a --- /dev/null +++ b/doxygen/structdr_1_1is__ref__view__inherit__graph.md5 @@ -0,0 +1 @@ +bac4e2cc71a001722b1cd79b6608d656 \ No newline at end of file diff --git a/doxygen/structdr_1_1is__ref__view__inherit__graph.png b/doxygen/structdr_1_1is__ref__view__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..43090bb596f03a248a5ef53f1d501148e59f4f91 GIT binary patch literal 3904 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 + + + + + + +Distributed Ranges: dr::is_sliding_view< T > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    dr::is_sliding_view< T > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for dr::is_sliding_view< T >:
    +
    +
    Inheritance graph
    + + + + +
    [legend]
    +
    +Collaboration diagram for dr::is_sliding_view< T >:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    +
    The documentation for this struct was generated from the following file:
      +
    • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail/view_detectors.hpp
    • +
    +
    + + + + diff --git a/doxygen/structdr_1_1is__sliding__view_3_01rng_1_1sliding__view_3_01T_01_4_01_4.html b/doxygen/structdr_1_1is__sliding__view_3_01rng_1_1sliding__view_3_01T_01_4_01_4.html new file mode 100644 index 0000000000..9ae38314c8 --- /dev/null +++ b/doxygen/structdr_1_1is__sliding__view_3_01rng_1_1sliding__view_3_01T_01_4_01_4.html @@ -0,0 +1,106 @@ + + + + + + + +Distributed Ranges: dr::is_sliding_view< rng::sliding_view< T > > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    dr::is_sliding_view< rng::sliding_view< T > > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for dr::is_sliding_view< rng::sliding_view< T > >:
    +
    +
    Inheritance graph
    + + + + +
    [legend]
    +
    +Collaboration diagram for dr::is_sliding_view< rng::sliding_view< T > >:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    +
    The documentation for this struct was generated from the following file:
      +
    • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail/view_detectors.hpp
    • +
    +
    + + + + diff --git a/doxygen/structdr_1_1is__sliding__view_3_01rng_1_1sliding__view_3_01T_01_4_01_4__coll__graph.map b/doxygen/structdr_1_1is__sliding__view_3_01rng_1_1sliding__view_3_01T_01_4_01_4__coll__graph.map new file mode 100644 index 0000000000..f9683c55d0 --- /dev/null +++ b/doxygen/structdr_1_1is__sliding__view_3_01rng_1_1sliding__view_3_01T_01_4_01_4__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/structdr_1_1is__sliding__view_3_01rng_1_1sliding__view_3_01T_01_4_01_4__coll__graph.md5 b/doxygen/structdr_1_1is__sliding__view_3_01rng_1_1sliding__view_3_01T_01_4_01_4__coll__graph.md5 new file mode 100644 index 0000000000..880cfc71c7 --- /dev/null +++ b/doxygen/structdr_1_1is__sliding__view_3_01rng_1_1sliding__view_3_01T_01_4_01_4__coll__graph.md5 @@ -0,0 +1 @@ +0e8dfdd907abacb79ca759ad0bc07d54 \ No newline at end of file diff --git a/doxygen/structdr_1_1is__sliding__view_3_01rng_1_1sliding__view_3_01T_01_4_01_4__coll__graph.png b/doxygen/structdr_1_1is__sliding__view_3_01rng_1_1sliding__view_3_01T_01_4_01_4__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..2317305a83d7052c5d88d7f4072abb4514caee96 GIT binary patch literal 4289 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 + + + diff --git a/doxygen/structdr_1_1is__sliding__view_3_01rng_1_1sliding__view_3_01T_01_4_01_4__inherit__graph.md5 b/doxygen/structdr_1_1is__sliding__view_3_01rng_1_1sliding__view_3_01T_01_4_01_4__inherit__graph.md5 new file mode 100644 index 0000000000..880cfc71c7 --- /dev/null +++ b/doxygen/structdr_1_1is__sliding__view_3_01rng_1_1sliding__view_3_01T_01_4_01_4__inherit__graph.md5 @@ -0,0 +1 @@ +0e8dfdd907abacb79ca759ad0bc07d54 \ No newline at end of file diff --git a/doxygen/structdr_1_1is__sliding__view_3_01rng_1_1sliding__view_3_01T_01_4_01_4__inherit__graph.png b/doxygen/structdr_1_1is__sliding__view_3_01rng_1_1sliding__view_3_01T_01_4_01_4__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..2317305a83d7052c5d88d7f4072abb4514caee96 GIT binary patch literal 4289 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 + + + diff --git a/doxygen/structdr_1_1is__sliding__view__coll__graph.md5 b/doxygen/structdr_1_1is__sliding__view__coll__graph.md5 new file mode 100644 index 0000000000..ae32ba6be5 --- /dev/null +++ b/doxygen/structdr_1_1is__sliding__view__coll__graph.md5 @@ -0,0 +1 @@ +c082d9b8f35b2990d2bbf27644b1ff70 \ No newline at end of file diff --git a/doxygen/structdr_1_1is__sliding__view__coll__graph.png b/doxygen/structdr_1_1is__sliding__view__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..430fb9a76a5893190d6f29f249b4d35fb8b37305 GIT binary patch literal 4106 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 literal 0 HcmV?d00001 diff --git a/doxygen/structdr_1_1is__sliding__view__inherit__graph.map b/doxygen/structdr_1_1is__sliding__view__inherit__graph.map new file mode 100644 index 0000000000..302ba7b04b --- /dev/null +++ b/doxygen/structdr_1_1is__sliding__view__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/structdr_1_1is__sliding__view__inherit__graph.md5 b/doxygen/structdr_1_1is__sliding__view__inherit__graph.md5 new file mode 100644 index 0000000000..ae32ba6be5 --- /dev/null +++ b/doxygen/structdr_1_1is__sliding__view__inherit__graph.md5 @@ -0,0 +1 @@ +c082d9b8f35b2990d2bbf27644b1ff70 \ No newline at end of file diff --git a/doxygen/structdr_1_1is__sliding__view__inherit__graph.png b/doxygen/structdr_1_1is__sliding__view__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..430fb9a76a5893190d6f29f249b4d35fb8b37305 GIT binary patch literal 4106 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 literal 0 HcmV?d00001 diff --git a/doxygen/structdr_1_1is__subrange__view.html b/doxygen/structdr_1_1is__subrange__view.html new file mode 100644 index 0000000000..238cea82ed --- /dev/null +++ b/doxygen/structdr_1_1is__subrange__view.html @@ -0,0 +1,106 @@ + + + + + + + +Distributed Ranges: dr::is_subrange_view< T > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    dr::is_subrange_view< T > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for dr::is_subrange_view< T >:
    +
    +
    Inheritance graph
    + + + + +
    [legend]
    +
    +Collaboration diagram for dr::is_subrange_view< T >:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    +
    The documentation for this struct was generated from the following file:
      +
    • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail/view_detectors.hpp
    • +
    +
    + + + + diff --git a/doxygen/structdr_1_1is__subrange__view_3_01rng_1_1subrange_3_01T_01_4_01_4.html b/doxygen/structdr_1_1is__subrange__view_3_01rng_1_1subrange_3_01T_01_4_01_4.html new file mode 100644 index 0000000000..58643d6f10 --- /dev/null +++ b/doxygen/structdr_1_1is__subrange__view_3_01rng_1_1subrange_3_01T_01_4_01_4.html @@ -0,0 +1,106 @@ + + + + + + + +Distributed Ranges: dr::is_subrange_view< rng::subrange< T > > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    dr::is_subrange_view< rng::subrange< T > > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for dr::is_subrange_view< rng::subrange< T > >:
    +
    +
    Inheritance graph
    + + + + +
    [legend]
    +
    +Collaboration diagram for dr::is_subrange_view< rng::subrange< T > >:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    +
    The documentation for this struct was generated from the following file:
      +
    • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail/view_detectors.hpp
    • +
    +
    + + + + diff --git a/doxygen/structdr_1_1is__subrange__view_3_01rng_1_1subrange_3_01T_01_4_01_4__coll__graph.map b/doxygen/structdr_1_1is__subrange__view_3_01rng_1_1subrange_3_01T_01_4_01_4__coll__graph.map new file mode 100644 index 0000000000..a448b8f416 --- /dev/null +++ b/doxygen/structdr_1_1is__subrange__view_3_01rng_1_1subrange_3_01T_01_4_01_4__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/structdr_1_1is__subrange__view_3_01rng_1_1subrange_3_01T_01_4_01_4__coll__graph.md5 b/doxygen/structdr_1_1is__subrange__view_3_01rng_1_1subrange_3_01T_01_4_01_4__coll__graph.md5 new file mode 100644 index 0000000000..25c2966b77 --- /dev/null +++ b/doxygen/structdr_1_1is__subrange__view_3_01rng_1_1subrange_3_01T_01_4_01_4__coll__graph.md5 @@ -0,0 +1 @@ +94fee86429efc7e5a71c1cdd1880752e \ No newline at end of file diff --git a/doxygen/structdr_1_1is__subrange__view_3_01rng_1_1subrange_3_01T_01_4_01_4__coll__graph.png b/doxygen/structdr_1_1is__subrange__view_3_01rng_1_1subrange_3_01T_01_4_01_4__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..60e68d81702b9809f69976cb4fc3a845fbeb9cd5 GIT binary patch literal 4587 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 + + + diff --git a/doxygen/structdr_1_1is__subrange__view_3_01rng_1_1subrange_3_01T_01_4_01_4__inherit__graph.md5 b/doxygen/structdr_1_1is__subrange__view_3_01rng_1_1subrange_3_01T_01_4_01_4__inherit__graph.md5 new file mode 100644 index 0000000000..25c2966b77 --- /dev/null +++ b/doxygen/structdr_1_1is__subrange__view_3_01rng_1_1subrange_3_01T_01_4_01_4__inherit__graph.md5 @@ -0,0 +1 @@ +94fee86429efc7e5a71c1cdd1880752e \ No newline at end of file diff --git a/doxygen/structdr_1_1is__subrange__view_3_01rng_1_1subrange_3_01T_01_4_01_4__inherit__graph.png b/doxygen/structdr_1_1is__subrange__view_3_01rng_1_1subrange_3_01T_01_4_01_4__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..60e68d81702b9809f69976cb4fc3a845fbeb9cd5 GIT binary patch literal 4587 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 + + + diff --git a/doxygen/structdr_1_1is__subrange__view__coll__graph.md5 b/doxygen/structdr_1_1is__subrange__view__coll__graph.md5 new file mode 100644 index 0000000000..4e2fc340e3 --- /dev/null +++ b/doxygen/structdr_1_1is__subrange__view__coll__graph.md5 @@ -0,0 +1 @@ +652e23d426a91fe5793fb43e195f2f9d \ No newline at end of file diff --git a/doxygen/structdr_1_1is__subrange__view__coll__graph.png b/doxygen/structdr_1_1is__subrange__view__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..65ca36e641450d9cae67a1630786023d14c8cb11 GIT binary patch literal 4444 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 literal 0 HcmV?d00001 diff --git a/doxygen/structdr_1_1is__subrange__view__inherit__graph.map b/doxygen/structdr_1_1is__subrange__view__inherit__graph.map new file mode 100644 index 0000000000..bd386c1649 --- /dev/null +++ b/doxygen/structdr_1_1is__subrange__view__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/structdr_1_1is__subrange__view__inherit__graph.md5 b/doxygen/structdr_1_1is__subrange__view__inherit__graph.md5 new file mode 100644 index 0000000000..4e2fc340e3 --- /dev/null +++ b/doxygen/structdr_1_1is__subrange__view__inherit__graph.md5 @@ -0,0 +1 @@ +652e23d426a91fe5793fb43e195f2f9d \ No newline at end of file diff --git a/doxygen/structdr_1_1is__subrange__view__inherit__graph.png b/doxygen/structdr_1_1is__subrange__view__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..65ca36e641450d9cae67a1630786023d14c8cb11 GIT binary patch literal 4444 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 literal 0 HcmV?d00001 diff --git a/doxygen/structdr_1_1is__take__view.html b/doxygen/structdr_1_1is__take__view.html new file mode 100644 index 0000000000..76a688a927 --- /dev/null +++ b/doxygen/structdr_1_1is__take__view.html @@ -0,0 +1,106 @@ + + + + + + + +Distributed Ranges: dr::is_take_view< T > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    dr::is_take_view< T > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for dr::is_take_view< T >:
    +
    +
    Inheritance graph
    + + + + +
    [legend]
    +
    +Collaboration diagram for dr::is_take_view< T >:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    +
    The documentation for this struct was generated from the following file:
      +
    • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail/view_detectors.hpp
    • +
    +
    + + + + diff --git a/doxygen/structdr_1_1is__take__view_3_01rng_1_1take__view_3_01T_01_4_01_4.html b/doxygen/structdr_1_1is__take__view_3_01rng_1_1take__view_3_01T_01_4_01_4.html new file mode 100644 index 0000000000..37e4b8987b --- /dev/null +++ b/doxygen/structdr_1_1is__take__view_3_01rng_1_1take__view_3_01T_01_4_01_4.html @@ -0,0 +1,106 @@ + + + + + + + +Distributed Ranges: dr::is_take_view< rng::take_view< T > > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    dr::is_take_view< rng::take_view< T > > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for dr::is_take_view< rng::take_view< T > >:
    +
    +
    Inheritance graph
    + + + + +
    [legend]
    +
    +Collaboration diagram for dr::is_take_view< rng::take_view< T > >:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    +
    The documentation for this struct was generated from the following file:
      +
    • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail/view_detectors.hpp
    • +
    +
    + + + + diff --git a/doxygen/structdr_1_1is__take__view_3_01rng_1_1take__view_3_01T_01_4_01_4__coll__graph.map b/doxygen/structdr_1_1is__take__view_3_01rng_1_1take__view_3_01T_01_4_01_4__coll__graph.map new file mode 100644 index 0000000000..d17238c2f0 --- /dev/null +++ b/doxygen/structdr_1_1is__take__view_3_01rng_1_1take__view_3_01T_01_4_01_4__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/structdr_1_1is__take__view_3_01rng_1_1take__view_3_01T_01_4_01_4__coll__graph.md5 b/doxygen/structdr_1_1is__take__view_3_01rng_1_1take__view_3_01T_01_4_01_4__coll__graph.md5 new file mode 100644 index 0000000000..0384f52d7e --- /dev/null +++ b/doxygen/structdr_1_1is__take__view_3_01rng_1_1take__view_3_01T_01_4_01_4__coll__graph.md5 @@ -0,0 +1 @@ +df14a0d4b41133f525f1af75f10c3f60 \ No newline at end of file diff --git a/doxygen/structdr_1_1is__take__view_3_01rng_1_1take__view_3_01T_01_4_01_4__coll__graph.png b/doxygen/structdr_1_1is__take__view_3_01rng_1_1take__view_3_01T_01_4_01_4__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..35b25af826d7fe8f8426a52b06f4fcc34cc5c545 GIT binary patch literal 4473 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 Wj3VpMyMy2^1#(Z@P^(76G3wu^KEm<< literal 0 HcmV?d00001 diff --git a/doxygen/structdr_1_1is__take__view_3_01rng_1_1take__view_3_01T_01_4_01_4__inherit__graph.map b/doxygen/structdr_1_1is__take__view_3_01rng_1_1take__view_3_01T_01_4_01_4__inherit__graph.map new file mode 100644 index 0000000000..d17238c2f0 --- /dev/null +++ b/doxygen/structdr_1_1is__take__view_3_01rng_1_1take__view_3_01T_01_4_01_4__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/structdr_1_1is__take__view_3_01rng_1_1take__view_3_01T_01_4_01_4__inherit__graph.md5 b/doxygen/structdr_1_1is__take__view_3_01rng_1_1take__view_3_01T_01_4_01_4__inherit__graph.md5 new file mode 100644 index 0000000000..0384f52d7e --- /dev/null +++ b/doxygen/structdr_1_1is__take__view_3_01rng_1_1take__view_3_01T_01_4_01_4__inherit__graph.md5 @@ -0,0 +1 @@ +df14a0d4b41133f525f1af75f10c3f60 \ No newline at end of file diff --git a/doxygen/structdr_1_1is__take__view_3_01rng_1_1take__view_3_01T_01_4_01_4__inherit__graph.png b/doxygen/structdr_1_1is__take__view_3_01rng_1_1take__view_3_01T_01_4_01_4__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..35b25af826d7fe8f8426a52b06f4fcc34cc5c545 GIT binary patch literal 4473 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 Wj3VpMyMy2^1#(Z@P^(76G3wu^KEm<< literal 0 HcmV?d00001 diff --git a/doxygen/structdr_1_1is__take__view__coll__graph.map b/doxygen/structdr_1_1is__take__view__coll__graph.map new file mode 100644 index 0000000000..2b8a5ece5b --- /dev/null +++ b/doxygen/structdr_1_1is__take__view__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/structdr_1_1is__take__view__coll__graph.md5 b/doxygen/structdr_1_1is__take__view__coll__graph.md5 new file mode 100644 index 0000000000..d71720fd7b --- /dev/null +++ b/doxygen/structdr_1_1is__take__view__coll__graph.md5 @@ -0,0 +1 @@ +7fb2e69bbdde7ac7007449ec0cca1c40 \ No newline at end of file diff --git a/doxygen/structdr_1_1is__take__view__coll__graph.png b/doxygen/structdr_1_1is__take__view__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..ec38718e202bde1bc460d22c031524752d7c09bc GIT binary patch literal 4092 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 aUy^n{(N5#ZT8#w9c}P=L7gd6^e)fOkRkXkW literal 0 HcmV?d00001 diff --git a/doxygen/structdr_1_1is__take__view__inherit__graph.map b/doxygen/structdr_1_1is__take__view__inherit__graph.map new file mode 100644 index 0000000000..2b8a5ece5b --- /dev/null +++ b/doxygen/structdr_1_1is__take__view__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/structdr_1_1is__take__view__inherit__graph.md5 b/doxygen/structdr_1_1is__take__view__inherit__graph.md5 new file mode 100644 index 0000000000..d71720fd7b --- /dev/null +++ b/doxygen/structdr_1_1is__take__view__inherit__graph.md5 @@ -0,0 +1 @@ +7fb2e69bbdde7ac7007449ec0cca1c40 \ No newline at end of file diff --git a/doxygen/structdr_1_1is__take__view__inherit__graph.png b/doxygen/structdr_1_1is__take__view__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..ec38718e202bde1bc460d22c031524752d7c09bc GIT binary patch literal 4092 zcmchaWmHsa-^MpE^dL2)G#sQP4<&*)42_f=7(!A?KuQ=IlmQ6=mC&Pf2q-Z$NHe6g zG$N_ANK5nHto3|&*LuD`YxbVK)}A$Y{NuWQceK8)Iu!*g1q4ACiJRMysM;uNj`b(a;-i?C{IOg{ckiLa zYOU*h>bi+s>S}Q-=lJKrrq-qp-Qnqa$iBW*`4!ovHw%56FeoNl;OYvf6aT=0!{I#g z3cGT39CsEwR&?Y!29v@GAiTKaJw<+d!$gG^hz5axVK5kP_&pX)Z*QrOA3y3SiMs64 z3VsQ53KP`LA^0HY_LcPLck?9)Ufjvejs1RLo?-N#xlqo-!^5}o-pg+f$*HN;eSNEy z>-dya66%Z3s4-QsjV`uMwa4nB0zqG~1#-_WcN5Uy1IXRgo8bvSJ&?#qG zvh*Y@E-NR8$k^C;Sv34zK}<|cl!fRGJD=4d?!~1gm7^e~=%^?zS@&5!EDaqeryf+$ zjN+l?#=h+ARHI{Ozqk48m!`EfmweEXIDxX6nHd>3cJo_J0$Bvo=Q8|FPEL;W$xM~Y zo6dkpo2Y~YYE5lzUZG^I@6R>(K-AHW{aBi8eSz-hoFN)8LITexPxyw1hjXi|jaU4c z*ZeBV%e(vjm6D!T^xFpX=*2H8shP_eb=`zNx6F^z1BkNgtZldT>X_#`1dAr5c%- zB!WCikiMlsR=Z9iWggGS*(wGH2mcr^HgBJs%ScrUHfs#=2=f_Zqo-HN&d!d~;pb&% zXXlfaP6i8jd2tbvwqm!sBZQz>oS)C6?H(O9DtDcdJn-`H5cl-*;!#yq&CSUP&&|)L zCnY8QIx|y*Q4Al35|sH9Y0b^ey;cU&B+j23o0!l;tmjM!gcA(?W|;8y{7{w(pOTVg z<88T?oG}X%6LsiiWF*PKXE5Q_LJ32AZ?9neREe%0>dV1n;qDUKS8=I#C1G=N* z+C?6X>lzTxHOCa?-VV0icLU8Z5- z%YXlkZfa^`D)FDLbhb8SEG{nQ!a4;}QGM5l#nj!2>3wXmwU0tHuBZ1#vj3)8X&msgkvbp|`hugtlhta;_!n z3$#BYro{Pd7*|$Sf)v?w#j~>pf5^|r&&^qF?CKLO$=|wV`z1+G;O0$L2Z!a_M~q}J zzm+u1%hc2tq|_XlpFUCk{P{B~I{L1=d+ETQ#J(S?>udwd>7U<>9$sGcGY1__&DN3! z_45l0Pr=YjU-Ps*yuC;2)8BlJRZ`1&vazq~pm-g`*u43=4>;`}B6E zZx@mM@#7bfW|fvvp_BAx6n)#s?_ju=LLz8lI`?&n{<|IGedi&ABI59Wsiqu!Zx410 zr0HDL4_h*BT)Ytpqo9MJ*eJV8+n9cfueqp|7B!@i29ycQ#8O<^Z3XZP2N26V3uU6U zd?5A%O1-RKzcXv>af;!~IseP{k;N**B-wgE8SIkNGHgCMlB2<`DTZH+)p`jXu`=>} z1uZ}x{?D?o<8JnSG9qnJo^i%TCt_;_KSi6N;?*$iEiH%r8utPwWN8bD!*DnQbfhvN z1v8G1kCIW*Oa%MPl0f&<>?hz7LE>vF>db})<9{n-pH-R>z;`iFW?19kcK zI7f_S{D*~c1g7Tm4_^4{lA|rfY;{bAf2b3=YQQu}DI=lMy>sOB@l3=eEV){dh z)b#Xg(J0$3Nu723+YZ6b!4x)+ztyVLPyj zs>hC|jHafh{6$W+y%v$Ge5r%*Vo7Fcq=Zdx1uIrRci0M%GVXIDLKZ9Hi3?bTu4 z+aYJnz|@>vT*6U2t?7z^5OjQe%-XxQwiXo?rHn$spiCT&hM1UGUjRWv1_RFfT$zix zO0*39qAP)OsXdxr&T|nK6dYU@eCo@l6vT}AJxh!i_we;q1Ahj((;|+)JUp&&9DJFU z76<$$H#Zl8L@jE=zI@Sog24bO3<5=S5mtnjB!85BJ_jVzDrs zNGz{K7QuD=A4=<32Y&IX*gyb#Fdr%*x8r(9wbQmOHt-tE;LKzkdCC zetn(7#l@w)qa!OXk2o$aE+@WYWp4*$dFkX}14_R<5)~92z9l;$&6qI=3NXw_NL5dd z8nh-3;E~Zk{}4dAhJu7dL}TaYyS-v^m@T%3#>O)DIVC=Re%q7%H4^II)*`)&RTGx@ z=_;2p%x}x>5)uU;Ken}ola{%ClL4Wtt*s5S zVP=!_fU2vj#e(2>@7@KN)c(C5V_;zLRCd;n2owTuHG41m>C>ljzMIUhZf>;TfC8vh z?$)hEkOQEn_|d}qV{YthY`BL#bRwqZC`D4n*bYF@VH$i$6bd`we})E4eV6A|W>Jxj zBIyN4ZJZ?OcpwERMUpK2C@IGQR7tQAGrF!#NerH+V*C@3gs0hm{Lwb_e{i`A_y zHD_l*LPA35HuXWWu*qmI@6PtNva74e*O8G|NlDlndg=3kzD7+i(VBd8w*wF1?`7PO zW@fA@Vpflnwh2i-M{5IcD!iYM3;gr=;C|Hfw3*5iD(J0J@U4rJ4Y9LrJT+*Yu1}>+ zF-b`Xw5jRZ3})?Xo}B+K9|a|)gxmDru5(T7Wo2dE0|RO%CQRTwghV2_5_=+l^@_tm zyS;q>J{GW3(AiEGy59Gu=!4H#prafV5riBZ98obbgbA|M_W}F|Su_Q)fLGf)J1kYj zC1rlMInK_{4Xmt6)0<$##0wyetb0~&%#nAkt>@oPH%0xK4IIook5k*A{1q8ggfuw$ z?7z1hC0407nebZhk%-*6riHorb>FQS`NeAR3%9)dabD3+`?fWxzP8pWXw+GkzA)tt zc^XpxKdAN}NN{e94%}aTCAg7U;K{;honpUXB=nDEU|_xcdX_*jI;B_&LxoT^xVr2g aUy^n{(N5#ZT8#w9c}P=L7gd6^e)fOkRkXkW literal 0 HcmV?d00001 diff --git a/doxygen/structdr_1_1is__zip__view.html b/doxygen/structdr_1_1is__zip__view.html new file mode 100644 index 0000000000..76c52444b9 --- /dev/null +++ b/doxygen/structdr_1_1is__zip__view.html @@ -0,0 +1,106 @@ + + + + + + + +Distributed Ranges: dr::is_zip_view< T > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    dr::is_zip_view< T > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for dr::is_zip_view< T >:
    +
    +
    Inheritance graph
    + + + + +
    [legend]
    +
    +Collaboration diagram for dr::is_zip_view< T >:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    +
    The documentation for this struct was generated from the following file:
      +
    • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail/view_detectors.hpp
    • +
    +
    + + + + diff --git a/doxygen/structdr_1_1is__zip__view_3_01rng_1_1zip__view_3_01Views_8_8_8_01_4_01_4.html b/doxygen/structdr_1_1is__zip__view_3_01rng_1_1zip__view_3_01Views_8_8_8_01_4_01_4.html new file mode 100644 index 0000000000..6a2ce0e6ad --- /dev/null +++ b/doxygen/structdr_1_1is__zip__view_3_01rng_1_1zip__view_3_01Views_8_8_8_01_4_01_4.html @@ -0,0 +1,106 @@ + + + + + + + +Distributed Ranges: dr::is_zip_view< rng::zip_view< Views... > > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    dr::is_zip_view< rng::zip_view< Views... > > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for dr::is_zip_view< rng::zip_view< Views... > >:
    +
    +
    Inheritance graph
    + + + + +
    [legend]
    +
    +Collaboration diagram for dr::is_zip_view< rng::zip_view< Views... > >:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    +
    The documentation for this struct was generated from the following file:
      +
    • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail/view_detectors.hpp
    • +
    +
    + + + + diff --git a/doxygen/structdr_1_1is__zip__view_3_01rng_1_1zip__view_3_01Views_8_8_8_01_4_01_4__coll__graph.map b/doxygen/structdr_1_1is__zip__view_3_01rng_1_1zip__view_3_01Views_8_8_8_01_4_01_4__coll__graph.map new file mode 100644 index 0000000000..5a9c141c11 --- /dev/null +++ b/doxygen/structdr_1_1is__zip__view_3_01rng_1_1zip__view_3_01Views_8_8_8_01_4_01_4__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/structdr_1_1is__zip__view_3_01rng_1_1zip__view_3_01Views_8_8_8_01_4_01_4__coll__graph.md5 b/doxygen/structdr_1_1is__zip__view_3_01rng_1_1zip__view_3_01Views_8_8_8_01_4_01_4__coll__graph.md5 new file mode 100644 index 0000000000..370b072008 --- /dev/null +++ b/doxygen/structdr_1_1is__zip__view_3_01rng_1_1zip__view_3_01Views_8_8_8_01_4_01_4__coll__graph.md5 @@ -0,0 +1 @@ +0b5ffce679f56979a39fd7ac2b3c5a08 \ No newline at end of file diff --git a/doxygen/structdr_1_1is__zip__view_3_01rng_1_1zip__view_3_01Views_8_8_8_01_4_01_4__coll__graph.png b/doxygen/structdr_1_1is__zip__view_3_01rng_1_1zip__view_3_01Views_8_8_8_01_4_01_4__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..78a00efc38856a2945f2e40adb914c53462908d0 GIT binary patch literal 4810 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 + + + diff --git a/doxygen/structdr_1_1is__zip__view_3_01rng_1_1zip__view_3_01Views_8_8_8_01_4_01_4__inherit__graph.md5 b/doxygen/structdr_1_1is__zip__view_3_01rng_1_1zip__view_3_01Views_8_8_8_01_4_01_4__inherit__graph.md5 new file mode 100644 index 0000000000..370b072008 --- /dev/null +++ b/doxygen/structdr_1_1is__zip__view_3_01rng_1_1zip__view_3_01Views_8_8_8_01_4_01_4__inherit__graph.md5 @@ -0,0 +1 @@ +0b5ffce679f56979a39fd7ac2b3c5a08 \ No newline at end of file diff --git a/doxygen/structdr_1_1is__zip__view_3_01rng_1_1zip__view_3_01Views_8_8_8_01_4_01_4__inherit__graph.png b/doxygen/structdr_1_1is__zip__view_3_01rng_1_1zip__view_3_01Views_8_8_8_01_4_01_4__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..78a00efc38856a2945f2e40adb914c53462908d0 GIT binary patch literal 4810 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 + + + diff --git a/doxygen/structdr_1_1is__zip__view__coll__graph.md5 b/doxygen/structdr_1_1is__zip__view__coll__graph.md5 new file mode 100644 index 0000000000..f738559ed4 --- /dev/null +++ b/doxygen/structdr_1_1is__zip__view__coll__graph.md5 @@ -0,0 +1 @@ +99c087d18bc4b487a737135592836a9d \ No newline at end of file diff --git a/doxygen/structdr_1_1is__zip__view__coll__graph.png b/doxygen/structdr_1_1is__zip__view__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..294dd43ca810586d40980fca97c156870860b1c1 GIT binary patch literal 4012 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 MX+yQjG_5242Y4(U&Hw-a literal 0 HcmV?d00001 diff --git a/doxygen/structdr_1_1is__zip__view__inherit__graph.map b/doxygen/structdr_1_1is__zip__view__inherit__graph.map new file mode 100644 index 0000000000..b7178db2e9 --- /dev/null +++ b/doxygen/structdr_1_1is__zip__view__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/structdr_1_1is__zip__view__inherit__graph.md5 b/doxygen/structdr_1_1is__zip__view__inherit__graph.md5 new file mode 100644 index 0000000000..f738559ed4 --- /dev/null +++ b/doxygen/structdr_1_1is__zip__view__inherit__graph.md5 @@ -0,0 +1 @@ +99c087d18bc4b487a737135592836a9d \ No newline at end of file diff --git a/doxygen/structdr_1_1is__zip__view__inherit__graph.png b/doxygen/structdr_1_1is__zip__view__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..294dd43ca810586d40980fca97c156870860b1c1 GIT binary patch literal 4012 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 MX+yQjG_5242Y4(U&Hw-a literal 0 HcmV?d00001 diff --git a/doxygen/structdr_1_1mhp_1_1____detail_1_1any-members.html b/doxygen/structdr_1_1mhp_1_1____detail_1_1any-members.html new file mode 100644 index 0000000000..2110e58484 --- /dev/null +++ b/doxygen/structdr_1_1mhp_1_1____detail_1_1any-members.html @@ -0,0 +1,89 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    dr::mhp::__detail::any Member List
    +
    +
    + +

    This is the complete list of members for dr::mhp::__detail::any, including all inherited members.

    + + +
    operator T() const noexcept (defined in dr::mhp::__detail::any)dr::mhp::__detail::anyinline
    + + + + diff --git a/doxygen/structdr_1_1mhp_1_1____detail_1_1any.html b/doxygen/structdr_1_1mhp_1_1____detail_1_1any.html new file mode 100644 index 0000000000..a61e68069b --- /dev/null +++ b/doxygen/structdr_1_1mhp_1_1____detail_1_1any.html @@ -0,0 +1,99 @@ + + + + + + + +Distributed Ranges: dr::mhp::__detail::any Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    dr::mhp::__detail::any Struct Reference
    +
    +
    + + + + + +

    +Public Member Functions

    +template<typename T >
     operator T () const noexcept
     
    +
    The documentation for this struct was generated from the following file:
      +
    • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/algorithms/md_for_each.hpp
    • +
    +
    + + + + diff --git a/doxygen/structdr_1_1mhp_1_1____detail_1_1global__context-members.html b/doxygen/structdr_1_1mhp_1_1____detail_1_1global__context-members.html new file mode 100644 index 0000000000..812a82d64d --- /dev/null +++ b/doxygen/structdr_1_1mhp_1_1____detail_1_1global__context-members.html @@ -0,0 +1,97 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    dr::mhp::__detail::global_context Member List
    +
    + + + + + diff --git a/doxygen/structdr_1_1mhp_1_1____detail_1_1global__context.html b/doxygen/structdr_1_1mhp_1_1____detail_1_1global__context.html new file mode 100644 index 0000000000..21642949c8 --- /dev/null +++ b/doxygen/structdr_1_1mhp_1_1____detail_1_1global__context.html @@ -0,0 +1,134 @@ + + + + + + + +Distributed Ranges: dr::mhp::__detail::global_context Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    dr::mhp::__detail::global_context Struct Reference
    +
    +
    +
    +Collaboration diagram for dr::mhp::__detail::global_context:
    +
    +
    Collaboration graph
    + + + + + +
    [legend]
    + + + + +

    +Public Member Functions

    +void init ()
     
    + + + + + + + + + + + +

    +Public Attributes

    +bool use_sycl_ = false
     
    +dr::communicator comm_
     
    +std::set< MPI_Win > wins_
     
    +dr::rma_window root_win_
     
    +std::vector< char > root_scratchpad_
     
    + + + +

    +Static Public Attributes

    +static constexpr std::size_t scratchpad_size_ = 1000000
     
    +
    The documentation for this struct was generated from the following file:
      +
    • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/global.hpp
    • +
    +
    + + + + diff --git a/doxygen/structdr_1_1mhp_1_1____detail_1_1global__context__coll__graph.map b/doxygen/structdr_1_1mhp_1_1____detail_1_1global__context__coll__graph.map new file mode 100644 index 0000000000..a8355892d0 --- /dev/null +++ b/doxygen/structdr_1_1mhp_1_1____detail_1_1global__context__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/doxygen/structdr_1_1mhp_1_1____detail_1_1global__context__coll__graph.md5 b/doxygen/structdr_1_1mhp_1_1____detail_1_1global__context__coll__graph.md5 new file mode 100644 index 0000000000..1b00de855a --- /dev/null +++ b/doxygen/structdr_1_1mhp_1_1____detail_1_1global__context__coll__graph.md5 @@ -0,0 +1 @@ +a0bd365a159db1e09e95568b33c33726 \ No newline at end of file diff --git a/doxygen/structdr_1_1mhp_1_1____detail_1_1global__context__coll__graph.png b/doxygen/structdr_1_1mhp_1_1____detail_1_1global__context__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..9460fe9f6076fadfb30a3cc3ba056f125ce9a41e GIT binary patch literal 7177 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 literal 0 HcmV?d00001 diff --git a/doxygen/structdr_1_1mhp_1_1device__policy.html b/doxygen/structdr_1_1mhp_1_1device__policy.html new file mode 100644 index 0000000000..7867af8976 --- /dev/null +++ b/doxygen/structdr_1_1mhp_1_1device__policy.html @@ -0,0 +1,88 @@ + + + + + + + +Distributed Ranges: dr::mhp::device_policy Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    dr::mhp::device_policy Struct Reference
    +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/sycl_support.hpp
    • +
    +
    + + + + diff --git a/doxygen/structdr_1_1mhp_1_1distribution-members.html b/doxygen/structdr_1_1mhp_1_1distribution-members.html new file mode 100644 index 0000000000..4be456623a --- /dev/null +++ b/doxygen/structdr_1_1mhp_1_1distribution-members.html @@ -0,0 +1,95 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    dr::mhp::distribution Member List
    +
    +
    + +

    This is the complete list of members for dr::mhp::distribution, including all inherited members.

    + + + + + + + + +
    granularity(std::size_t size) (defined in dr::mhp::distribution)dr::mhp::distributioninline
    granularity() const (defined in dr::mhp::distribution)dr::mhp::distributioninline
    halo(std::size_t radius) (defined in dr::mhp::distribution)dr::mhp::distributioninline
    halo(std::size_t prev, std::size_t next) (defined in dr::mhp::distribution)dr::mhp::distributioninline
    halo() const (defined in dr::mhp::distribution)dr::mhp::distributioninline
    periodic(bool periodic) (defined in dr::mhp::distribution)dr::mhp::distributioninline
    periodic() const (defined in dr::mhp::distribution)dr::mhp::distributioninline
    + + + + diff --git a/doxygen/structdr_1_1mhp_1_1distribution.html b/doxygen/structdr_1_1mhp_1_1distribution.html new file mode 100644 index 0000000000..0e93e84add --- /dev/null +++ b/doxygen/structdr_1_1mhp_1_1distribution.html @@ -0,0 +1,116 @@ + + + + + + + +Distributed Ranges: dr::mhp::distribution Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    dr::mhp::distribution Struct Reference
    +
    +
    + + + + + + + + + + + + + + + + +

    +Public Member Functions

    +distributionhalo (std::size_t radius)
     
    +distributionhalo (std::size_t prev, std::size_t next)
     
    +auto halo () const
     
    +distributionperiodic (bool periodic)
     
    +auto periodic () const
     
    +distributiongranularity (std::size_t size)
     
    +auto granularity () const
     
    +
    The documentation for this struct was generated from the following file:
      +
    • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/containers/distribution.hpp
    • +
    +
    + + + + diff --git a/doxygen/structdr_1_1mhp_1_1halo__bounds-members.html b/doxygen/structdr_1_1mhp_1_1halo__bounds-members.html new file mode 100644 index 0000000000..5b6be29c24 --- /dev/null +++ b/doxygen/structdr_1_1mhp_1_1halo__bounds-members.html @@ -0,0 +1,91 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    dr::mhp::halo_bounds Member List
    +
    +
    + +

    This is the complete list of members for dr::mhp::halo_bounds, including all inherited members.

    + + + + +
    next (defined in dr::mhp::halo_bounds)dr::mhp::halo_bounds
    periodic (defined in dr::mhp::halo_bounds)dr::mhp::halo_bounds
    prev (defined in dr::mhp::halo_bounds)dr::mhp::halo_bounds
    + + + + diff --git a/doxygen/structdr_1_1mhp_1_1halo__bounds.html b/doxygen/structdr_1_1mhp_1_1halo__bounds.html new file mode 100644 index 0000000000..735cde1ef3 --- /dev/null +++ b/doxygen/structdr_1_1mhp_1_1halo__bounds.html @@ -0,0 +1,104 @@ + + + + + + + +Distributed Ranges: dr::mhp::halo_bounds Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    dr::mhp::halo_bounds Struct Reference
    +
    +
    + + + + + + + + +

    +Public Attributes

    +std::size_t prev = 0
     
    +std::size_t next = 0
     
    +bool periodic = false
     
    +
    The documentation for this struct was generated from the following file:
      +
    • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/halo.hpp
    • +
    +
    + + + + diff --git a/doxygen/structdr_1_1mhp_1_1halo__impl_1_1max__op-members.html b/doxygen/structdr_1_1mhp_1_1halo__impl_1_1max__op-members.html new file mode 100644 index 0000000000..bc00f5c303 --- /dev/null +++ b/doxygen/structdr_1_1mhp_1_1halo__impl_1_1max__op-members.html @@ -0,0 +1,89 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    dr::mhp::halo_impl< Group >::max_op Member List
    +
    +
    + +

    This is the complete list of members for dr::mhp::halo_impl< Group >::max_op, including all inherited members.

    + + +
    operator()(T &a, T &b) const (defined in dr::mhp::halo_impl< Group >::max_op)dr::mhp::halo_impl< Group >::max_opinline
    + + + + diff --git a/doxygen/structdr_1_1mhp_1_1halo__impl_1_1max__op.html b/doxygen/structdr_1_1mhp_1_1halo__impl_1_1max__op.html new file mode 100644 index 0000000000..15af9d189a --- /dev/null +++ b/doxygen/structdr_1_1mhp_1_1halo__impl_1_1max__op.html @@ -0,0 +1,98 @@ + + + + + + + +Distributed Ranges: dr::mhp::halo_impl< Group >::max_op Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    dr::mhp::halo_impl< Group >::max_op Struct Reference
    +
    +
    + + + + +

    +Public Member Functions

    +T operator() (T &a, T &b) const
     
    +
    The documentation for this struct was generated from the following file:
      +
    • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/halo.hpp
    • +
    +
    + + + + diff --git a/doxygen/structdr_1_1mhp_1_1halo__impl_1_1min__op-members.html b/doxygen/structdr_1_1mhp_1_1halo__impl_1_1min__op-members.html new file mode 100644 index 0000000000..1174bccf5d --- /dev/null +++ b/doxygen/structdr_1_1mhp_1_1halo__impl_1_1min__op-members.html @@ -0,0 +1,89 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    dr::mhp::halo_impl< Group >::min_op Member List
    +
    +
    + +

    This is the complete list of members for dr::mhp::halo_impl< Group >::min_op, including all inherited members.

    + + +
    operator()(T &a, T &b) const (defined in dr::mhp::halo_impl< Group >::min_op)dr::mhp::halo_impl< Group >::min_opinline
    + + + + diff --git a/doxygen/structdr_1_1mhp_1_1halo__impl_1_1min__op.html b/doxygen/structdr_1_1mhp_1_1halo__impl_1_1min__op.html new file mode 100644 index 0000000000..08bf23ea71 --- /dev/null +++ b/doxygen/structdr_1_1mhp_1_1halo__impl_1_1min__op.html @@ -0,0 +1,98 @@ + + + + + + + +Distributed Ranges: dr::mhp::halo_impl< Group >::min_op Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    dr::mhp::halo_impl< Group >::min_op Struct Reference
    +
    +
    + + + + +

    +Public Member Functions

    +T operator() (T &a, T &b) const
     
    +
    The documentation for this struct was generated from the following file:
      +
    • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/halo.hpp
    • +
    +
    + + + + diff --git a/doxygen/structdr_1_1mhp_1_1halo__impl_1_1multiplies__op-members.html b/doxygen/structdr_1_1mhp_1_1halo__impl_1_1multiplies__op-members.html new file mode 100644 index 0000000000..193f53e115 --- /dev/null +++ b/doxygen/structdr_1_1mhp_1_1halo__impl_1_1multiplies__op-members.html @@ -0,0 +1,89 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    dr::mhp::halo_impl< Group >::multiplies_op Member List
    +
    +
    + +

    This is the complete list of members for dr::mhp::halo_impl< Group >::multiplies_op, including all inherited members.

    + + +
    operator()(T &a, T &b) const (defined in dr::mhp::halo_impl< Group >::multiplies_op)dr::mhp::halo_impl< Group >::multiplies_opinline
    + + + + diff --git a/doxygen/structdr_1_1mhp_1_1halo__impl_1_1multiplies__op.html b/doxygen/structdr_1_1mhp_1_1halo__impl_1_1multiplies__op.html new file mode 100644 index 0000000000..b108457ff3 --- /dev/null +++ b/doxygen/structdr_1_1mhp_1_1halo__impl_1_1multiplies__op.html @@ -0,0 +1,98 @@ + + + + + + + +Distributed Ranges: dr::mhp::halo_impl< Group >::multiplies_op Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    dr::mhp::halo_impl< Group >::multiplies_op Struct Reference
    +
    +
    + + + + +

    +Public Member Functions

    +T operator() (T &a, T &b) const
     
    +
    The documentation for this struct was generated from the following file:
      +
    • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/halo.hpp
    • +
    +
    + + + + diff --git a/doxygen/structdr_1_1mhp_1_1halo__impl_1_1plus__op-members.html b/doxygen/structdr_1_1mhp_1_1halo__impl_1_1plus__op-members.html new file mode 100644 index 0000000000..dee5aeeb88 --- /dev/null +++ b/doxygen/structdr_1_1mhp_1_1halo__impl_1_1plus__op-members.html @@ -0,0 +1,89 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    dr::mhp::halo_impl< Group >::plus_op Member List
    +
    +
    + +

    This is the complete list of members for dr::mhp::halo_impl< Group >::plus_op, including all inherited members.

    + + +
    operator()(T &a, T &b) const (defined in dr::mhp::halo_impl< Group >::plus_op)dr::mhp::halo_impl< Group >::plus_opinline
    + + + + diff --git a/doxygen/structdr_1_1mhp_1_1halo__impl_1_1plus__op.html b/doxygen/structdr_1_1mhp_1_1halo__impl_1_1plus__op.html new file mode 100644 index 0000000000..dc278c397e --- /dev/null +++ b/doxygen/structdr_1_1mhp_1_1halo__impl_1_1plus__op.html @@ -0,0 +1,98 @@ + + + + + + + +Distributed Ranges: dr::mhp::halo_impl< Group >::plus_op Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    dr::mhp::halo_impl< Group >::plus_op Struct Reference
    +
    +
    + + + + +

    +Public Member Functions

    +T operator() (T &a, T &b) const
     
    +
    The documentation for this struct was generated from the following file:
      +
    • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/halo.hpp
    • +
    +
    + + + + diff --git a/doxygen/structdr_1_1mhp_1_1halo__impl_1_1second__op-members.html b/doxygen/structdr_1_1mhp_1_1halo__impl_1_1second__op-members.html new file mode 100644 index 0000000000..0b7bbb8143 --- /dev/null +++ b/doxygen/structdr_1_1mhp_1_1halo__impl_1_1second__op-members.html @@ -0,0 +1,89 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    dr::mhp::halo_impl< Group >::second_op Member List
    +
    +
    + +

    This is the complete list of members for dr::mhp::halo_impl< Group >::second_op, including all inherited members.

    + + +
    operator()(T &a, T &b) const (defined in dr::mhp::halo_impl< Group >::second_op)dr::mhp::halo_impl< Group >::second_opinline
    + + + + diff --git a/doxygen/structdr_1_1mhp_1_1halo__impl_1_1second__op.html b/doxygen/structdr_1_1mhp_1_1halo__impl_1_1second__op.html new file mode 100644 index 0000000000..e673ba2192 --- /dev/null +++ b/doxygen/structdr_1_1mhp_1_1halo__impl_1_1second__op.html @@ -0,0 +1,98 @@ + + + + + + + +Distributed Ranges: dr::mhp::halo_impl< Group >::second_op Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    dr::mhp::halo_impl< Group >::second_op Struct Reference
    +
    +
    + + + + +

    +Public Member Functions

    +T operator() (T &a, T &b) const
     
    +
    The documentation for this struct was generated from the following file:
      +
    • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/halo.hpp
    • +
    +
    + + + + diff --git a/doxygen/structdr_1_1mhp_1_1mdspan__view-members.html b/doxygen/structdr_1_1mhp_1_1mdspan__view-members.html new file mode 100644 index 0000000000..c11af68b71 --- /dev/null +++ b/doxygen/structdr_1_1mhp_1_1mdspan__view-members.html @@ -0,0 +1,97 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    dr::mhp::mdspan_view< R, Rank, Layout > Member List
    +
    +
    + +

    This is the complete list of members for dr::mhp::mdspan_view< R, Rank, Layout >, including all inherited members.

    + + + + + + + + + + +
    begin() const (defined in dr::mhp::mdspan_view< R, Rank, Layout >)dr::mhp::mdspan_view< R, Rank, Layout >inline
    end() const (defined in dr::mhp::mdspan_view< R, Rank, Layout >)dr::mhp::mdspan_view< R, Rank, Layout >inline
    grid() (defined in dr::mhp::mdspan_view< R, Rank, Layout >)dr::mhp::mdspan_view< R, Rank, Layout >inline
    mdspan() const (defined in dr::mhp::mdspan_view< R, Rank, Layout >)dr::mhp::mdspan_view< R, Rank, Layout >inline
    mdspan_view(R r, dr::__detail::dr_extents< Rank > full_shape) (defined in dr::mhp::mdspan_view< R, Rank, Layout >)dr::mhp::mdspan_view< R, Rank, Layout >inline
    mdspan_view(R r, dr::__detail::dr_extents< Rank > full_shape, dr::__detail::dr_extents< Rank > tile_shape) (defined in dr::mhp::mdspan_view< R, Rank, Layout >)dr::mhp::mdspan_view< R, Rank, Layout >inline
    operator[](difference_type n) (defined in dr::mhp::mdspan_view< R, Rank, Layout >)dr::mhp::mdspan_view< R, Rank, Layout >inline
    rank() (defined in dr::mhp::mdspan_view< R, Rank, Layout >)dr::mhp::mdspan_view< R, Rank, Layout >inlinestatic
    segments() const (defined in dr::mhp::mdspan_view< R, Rank, Layout >)dr::mhp::mdspan_view< R, Rank, Layout >inline
    + + + + diff --git a/doxygen/structdr_1_1mhp_1_1mdspan__view.html b/doxygen/structdr_1_1mhp_1_1mdspan__view.html new file mode 100644 index 0000000000..2ea6896b4a --- /dev/null +++ b/doxygen/structdr_1_1mhp_1_1mdspan__view.html @@ -0,0 +1,144 @@ + + + + + + + +Distributed Ranges: dr::mhp::mdspan_view< R, Rank, Layout > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    dr::mhp::mdspan_view< R, Rank, Layout > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for dr::mhp::mdspan_view< R, Rank, Layout >:
    +
    +
    Inheritance graph
    + + + + +
    [legend]
    +
    +Collaboration diagram for dr::mhp::mdspan_view< R, Rank, Layout >:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    mdspan_view (R r, dr::__detail::dr_extents< Rank > full_shape)
     
    mdspan_view (R r, dr::__detail::dr_extents< Rank > full_shape, dr::__detail::dr_extents< Rank > tile_shape)
     
    +auto begin () const
     
    +auto end () const
     
    +auto operator[] (difference_type n)
     
    +auto mdspan () const
     
    +auto segments () const
     
    +auto grid ()
     
    + + + +

    +Static Public Member Functions

    +static constexpr auto rank ()
     
    +
    The documentation for this struct was generated from the following file:
      +
    • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/views/mdspan_view.hpp
    • +
    +
    + + + + diff --git a/doxygen/structdr_1_1mhp_1_1mdspan__view__coll__graph.map b/doxygen/structdr_1_1mhp_1_1mdspan__view__coll__graph.map new file mode 100644 index 0000000000..26f370fcfc --- /dev/null +++ b/doxygen/structdr_1_1mhp_1_1mdspan__view__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/structdr_1_1mhp_1_1mdspan__view__coll__graph.md5 b/doxygen/structdr_1_1mhp_1_1mdspan__view__coll__graph.md5 new file mode 100644 index 0000000000..72a84717f9 --- /dev/null +++ b/doxygen/structdr_1_1mhp_1_1mdspan__view__coll__graph.md5 @@ -0,0 +1 @@ +3d0a6d602cd3273c78f94299173212bc \ No newline at end of file diff --git a/doxygen/structdr_1_1mhp_1_1mdspan__view__coll__graph.png b/doxygen/structdr_1_1mhp_1_1mdspan__view__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..9c539fe429dbaea5823d68b203e940e4bbecda32 GIT binary patch literal 7289 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 literal 0 HcmV?d00001 diff --git a/doxygen/structdr_1_1mhp_1_1mdspan__view__inherit__graph.map b/doxygen/structdr_1_1mhp_1_1mdspan__view__inherit__graph.map new file mode 100644 index 0000000000..26f370fcfc --- /dev/null +++ b/doxygen/structdr_1_1mhp_1_1mdspan__view__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/structdr_1_1mhp_1_1mdspan__view__inherit__graph.md5 b/doxygen/structdr_1_1mhp_1_1mdspan__view__inherit__graph.md5 new file mode 100644 index 0000000000..72a84717f9 --- /dev/null +++ b/doxygen/structdr_1_1mhp_1_1mdspan__view__inherit__graph.md5 @@ -0,0 +1 @@ +3d0a6d602cd3273c78f94299173212bc \ No newline at end of file diff --git a/doxygen/structdr_1_1mhp_1_1mdspan__view__inherit__graph.png b/doxygen/structdr_1_1mhp_1_1mdspan__view__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..9c539fe429dbaea5823d68b203e940e4bbecda32 GIT binary patch literal 7289 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 literal 0 HcmV?d00001 diff --git a/doxygen/structdr_1_1mhp_1_1submdspan__view-members.html b/doxygen/structdr_1_1mhp_1_1submdspan__view-members.html new file mode 100644 index 0000000000..5069758e03 --- /dev/null +++ b/doxygen/structdr_1_1mhp_1_1submdspan__view-members.html @@ -0,0 +1,95 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    dr::mhp::submdspan_view< Base > Member List
    +
    +
    + +

    This is the complete list of members for dr::mhp::submdspan_view< Base >, including all inherited members.

    + + + + + + + + +
    begin() const (defined in dr::mhp::submdspan_view< Base >)dr::mhp::submdspan_view< Base >inline
    end() const (defined in dr::mhp::submdspan_view< Base >)dr::mhp::submdspan_view< Base >inline
    grid() (defined in dr::mhp::submdspan_view< Base >)dr::mhp::submdspan_view< Base >inline
    mdspan() const (defined in dr::mhp::submdspan_view< Base >)dr::mhp::submdspan_view< Base >inline
    operator[](difference_type n) (defined in dr::mhp::submdspan_view< Base >)dr::mhp::submdspan_view< Base >inline
    segments() const (defined in dr::mhp::submdspan_view< Base >)dr::mhp::submdspan_view< Base >inline
    submdspan_view(is_mdspan_view auto base, extents_type slice_starts, extents_type slice_ends) (defined in dr::mhp::submdspan_view< Base >)dr::mhp::submdspan_view< Base >inline
    + + + + diff --git a/doxygen/structdr_1_1mhp_1_1submdspan__view.html b/doxygen/structdr_1_1mhp_1_1submdspan__view.html new file mode 100644 index 0000000000..7db4b0e792 --- /dev/null +++ b/doxygen/structdr_1_1mhp_1_1submdspan__view.html @@ -0,0 +1,134 @@ + + + + + + + +Distributed Ranges: dr::mhp::submdspan_view< Base > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    dr::mhp::submdspan_view< Base > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for dr::mhp::submdspan_view< Base >:
    +
    +
    Inheritance graph
    + + + + +
    [legend]
    +
    +Collaboration diagram for dr::mhp::submdspan_view< Base >:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    + + + + + + + + + + + + + + + + +

    +Public Member Functions

    submdspan_view (is_mdspan_view auto base, extents_type slice_starts, extents_type slice_ends)
     
    +auto begin () const
     
    +auto end () const
     
    +auto operator[] (difference_type n)
     
    +auto mdspan () const
     
    +auto segments () const
     
    +auto grid ()
     
    +
    The documentation for this struct was generated from the following file:
      +
    • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/views/submdspan_view.hpp
    • +
    +
    + + + + diff --git a/doxygen/structdr_1_1mhp_1_1submdspan__view__coll__graph.map b/doxygen/structdr_1_1mhp_1_1submdspan__view__coll__graph.map new file mode 100644 index 0000000000..5e7bd652c2 --- /dev/null +++ b/doxygen/structdr_1_1mhp_1_1submdspan__view__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/structdr_1_1mhp_1_1submdspan__view__coll__graph.md5 b/doxygen/structdr_1_1mhp_1_1submdspan__view__coll__graph.md5 new file mode 100644 index 0000000000..9840d3ba4a --- /dev/null +++ b/doxygen/structdr_1_1mhp_1_1submdspan__view__coll__graph.md5 @@ -0,0 +1 @@ +281df382173094ba45ac093971b17453 \ No newline at end of file diff --git a/doxygen/structdr_1_1mhp_1_1submdspan__view__coll__graph.png b/doxygen/structdr_1_1mhp_1_1submdspan__view__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..b0f6b2ae18627b2d2914832c0473c433fdcd3eac GIT binary patch literal 6823 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 literal 0 HcmV?d00001 diff --git a/doxygen/structdr_1_1mhp_1_1submdspan__view__inherit__graph.map b/doxygen/structdr_1_1mhp_1_1submdspan__view__inherit__graph.map new file mode 100644 index 0000000000..5e7bd652c2 --- /dev/null +++ b/doxygen/structdr_1_1mhp_1_1submdspan__view__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/structdr_1_1mhp_1_1submdspan__view__inherit__graph.md5 b/doxygen/structdr_1_1mhp_1_1submdspan__view__inherit__graph.md5 new file mode 100644 index 0000000000..9840d3ba4a --- /dev/null +++ b/doxygen/structdr_1_1mhp_1_1submdspan__view__inherit__graph.md5 @@ -0,0 +1 @@ +281df382173094ba45ac093971b17453 \ No newline at end of file diff --git a/doxygen/structdr_1_1mhp_1_1submdspan__view__inherit__graph.png b/doxygen/structdr_1_1mhp_1_1submdspan__view__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..b0f6b2ae18627b2d2914832c0473c433fdcd3eac GIT binary patch literal 6823 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 literal 0 HcmV?d00001 diff --git a/doxygen/structdr_1_1mhp_1_1views_1_1____detail_1_1range__size-members.html b/doxygen/structdr_1_1mhp_1_1views_1_1____detail_1_1range__size-members.html new file mode 100644 index 0000000000..9009794562 --- /dev/null +++ b/doxygen/structdr_1_1mhp_1_1views_1_1____detail_1_1range__size-members.html @@ -0,0 +1,89 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +

    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    dr::mhp::views::__detail::range_size< R > Member List
    +
    +
    + +

    This is the complete list of members for dr::mhp::views::__detail::range_size< R >, including all inherited members.

    + + +
    type typedef (defined in dr::mhp::views::__detail::range_size< R >)dr::mhp::views::__detail::range_size< R >
    + + + + diff --git a/doxygen/structdr_1_1mhp_1_1views_1_1____detail_1_1range__size.html b/doxygen/structdr_1_1mhp_1_1views_1_1____detail_1_1range__size.html new file mode 100644 index 0000000000..dc05b4e397 --- /dev/null +++ b/doxygen/structdr_1_1mhp_1_1views_1_1____detail_1_1range__size.html @@ -0,0 +1,98 @@ + + + + + + + +Distributed Ranges: dr::mhp::views::__detail::range_size< R > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    dr::mhp::views::__detail::range_size< R > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    +using type = std::size_t
     
    +
    The documentation for this struct was generated from the following file:
      +
    • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/views/enumerate.hpp
    • +
    +
    + + + + diff --git a/doxygen/structdr_1_1mhp_1_1views_1_1____detail_1_1range__size_3_01R_01_4-members.html b/doxygen/structdr_1_1mhp_1_1views_1_1____detail_1_1range__size_3_01R_01_4-members.html new file mode 100644 index 0000000000..4e61845d2e --- /dev/null +++ b/doxygen/structdr_1_1mhp_1_1views_1_1____detail_1_1range__size_3_01R_01_4-members.html @@ -0,0 +1,89 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    dr::mhp::views::__detail::range_size< R > Member List
    +
    +
    + +

    This is the complete list of members for dr::mhp::views::__detail::range_size< R >, including all inherited members.

    + + +
    type typedef (defined in dr::mhp::views::__detail::range_size< R >)dr::mhp::views::__detail::range_size< R >
    + + + + diff --git a/doxygen/structdr_1_1mhp_1_1views_1_1____detail_1_1range__size_3_01R_01_4.html b/doxygen/structdr_1_1mhp_1_1views_1_1____detail_1_1range__size_3_01R_01_4.html new file mode 100644 index 0000000000..0c1c403161 --- /dev/null +++ b/doxygen/structdr_1_1mhp_1_1views_1_1____detail_1_1range__size_3_01R_01_4.html @@ -0,0 +1,98 @@ + + + + + + + +Distributed Ranges: dr::mhp::views::__detail::range_size< R > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    dr::mhp::views::__detail::range_size< R > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    +using type = rng::range_size_t< R >
     
    +
    The documentation for this struct was generated from the following file:
      +
    • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/views/enumerate.hpp
    • +
    +
    + + + + diff --git a/doxygen/structdr_1_1mhp_1_1views_1_1____detail_1_1sliding__fn-members.html b/doxygen/structdr_1_1mhp_1_1views_1_1____detail_1_1sliding__fn-members.html new file mode 100644 index 0000000000..726c6b6f17 --- /dev/null +++ b/doxygen/structdr_1_1mhp_1_1views_1_1____detail_1_1sliding__fn-members.html @@ -0,0 +1,89 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    dr::mhp::views::__detail::sliding_fn Member List
    +
    +
    + +

    This is the complete list of members for dr::mhp::views::__detail::sliding_fn, including all inherited members.

    + + +
    operator()(Rng &&r, Int n) const (defined in dr::mhp::views::__detail::sliding_fn)dr::mhp::views::__detail::sliding_fninline
    + + + + diff --git a/doxygen/structdr_1_1mhp_1_1views_1_1____detail_1_1sliding__fn.html b/doxygen/structdr_1_1mhp_1_1views_1_1____detail_1_1sliding__fn.html new file mode 100644 index 0000000000..dd86ab0953 --- /dev/null +++ b/doxygen/structdr_1_1mhp_1_1views_1_1____detail_1_1sliding__fn.html @@ -0,0 +1,100 @@ + + + + + + + +Distributed Ranges: dr::mhp::views::__detail::sliding_fn Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    dr::mhp::views::__detail::sliding_fn Struct Reference
    +
    +
    + + + + + +

    +Public Member Functions

    +template<typename Rng , typename Int >
    +requires rng::viewable_range<Rng> && rng::forward_range<Rng> && rng::detail::integer_like_<Int>
    auto operator() (Rng &&r, Int n) const
     
    +
    The documentation for this struct was generated from the following file:
      +
    • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/views/sliding.hpp
    • +
    +
    + + + + diff --git a/doxygen/structdr_1_1ranges_1_1____detail_1_1local__fn__-members.html b/doxygen/structdr_1_1ranges_1_1____detail_1_1local__fn__-members.html new file mode 100644 index 0000000000..26615300a3 --- /dev/null +++ b/doxygen/structdr_1_1ranges_1_1____detail_1_1local__fn__-members.html @@ -0,0 +1,90 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    dr::ranges::__detail::local_fn_ Member List
    +
    +
    + +

    This is the complete list of members for dr::ranges::__detail::local_fn_, including all inherited members.

    + + + +
    operator()(T &&t) const (defined in dr::ranges::__detail::local_fn_)dr::ranges::__detail::local_fn_inline
    operator()(T &&t) const (defined in dr::ranges::__detail::local_fn_)dr::ranges::__detail::local_fn_inline
    + + + + diff --git a/doxygen/structdr_1_1ranges_1_1____detail_1_1local__fn__.html b/doxygen/structdr_1_1ranges_1_1____detail_1_1local__fn__.html new file mode 100644 index 0000000000..0a48020a60 --- /dev/null +++ b/doxygen/structdr_1_1ranges_1_1____detail_1_1local__fn__.html @@ -0,0 +1,104 @@ + + + + + + + +Distributed Ranges: dr::ranges::__detail::local_fn_ Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    dr::ranges::__detail::local_fn_ Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    +template<typename T >
    +requires (has_local<T>)
    auto operator() (T &&t) const
     
    +template<typename T >
    decltype(auto) operator() (T &&t) const
     
    +
    The documentation for this struct was generated from the following file:
      +
    • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail/ranges.hpp
    • +
    +
    + + + + diff --git a/doxygen/structdr_1_1shp_1_1____detail_1_1tuple__or__pair-members.html b/doxygen/structdr_1_1shp_1_1____detail_1_1tuple__or__pair-members.html new file mode 100644 index 0000000000..b7782a688d --- /dev/null +++ b/doxygen/structdr_1_1shp_1_1____detail_1_1tuple__or__pair-members.html @@ -0,0 +1,89 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    dr::shp::__detail::tuple_or_pair< Args > Member List
    +
    +
    + +

    This is the complete list of members for dr::shp::__detail::tuple_or_pair< Args >, including all inherited members.

    + + +
    type typedef (defined in dr::shp::__detail::tuple_or_pair< Args >)dr::shp::__detail::tuple_or_pair< Args >
    + + + + diff --git a/doxygen/structdr_1_1shp_1_1____detail_1_1tuple__or__pair.html b/doxygen/structdr_1_1shp_1_1____detail_1_1tuple__or__pair.html new file mode 100644 index 0000000000..eabc98a9c3 --- /dev/null +++ b/doxygen/structdr_1_1shp_1_1____detail_1_1tuple__or__pair.html @@ -0,0 +1,98 @@ + + + + + + + +Distributed Ranges: dr::shp::__detail::tuple_or_pair< Args > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    dr::shp::__detail::tuple_or_pair< Args > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    +using type = std::tuple< Args... >
     
    +
    The documentation for this struct was generated from the following file:
      +
    • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/zip_view.hpp
    • +
    +
    + + + + diff --git a/doxygen/structdr_1_1shp_1_1____detail_1_1tuple__or__pair_3_01T_00_01U_01_4-members.html b/doxygen/structdr_1_1shp_1_1____detail_1_1tuple__or__pair_3_01T_00_01U_01_4-members.html new file mode 100644 index 0000000000..ae9ad722a7 --- /dev/null +++ b/doxygen/structdr_1_1shp_1_1____detail_1_1tuple__or__pair_3_01T_00_01U_01_4-members.html @@ -0,0 +1,89 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    dr::shp::__detail::tuple_or_pair< T, U > Member List
    +
    +
    + +

    This is the complete list of members for dr::shp::__detail::tuple_or_pair< T, U >, including all inherited members.

    + + +
    type typedef (defined in dr::shp::__detail::tuple_or_pair< T, U >)dr::shp::__detail::tuple_or_pair< T, U >
    + + + + diff --git a/doxygen/structdr_1_1shp_1_1____detail_1_1tuple__or__pair_3_01T_00_01U_01_4.html b/doxygen/structdr_1_1shp_1_1____detail_1_1tuple__or__pair_3_01T_00_01U_01_4.html new file mode 100644 index 0000000000..1230caf4f1 --- /dev/null +++ b/doxygen/structdr_1_1shp_1_1____detail_1_1tuple__or__pair_3_01T_00_01U_01_4.html @@ -0,0 +1,98 @@ + + + + + + + +Distributed Ranges: dr::shp::__detail::tuple_or_pair< T, U > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    dr::shp::__detail::tuple_or_pair< T, U > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    +using type = std::pair< T, U >
     
    +
    The documentation for this struct was generated from the following file:
      +
    • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/zip_view.hpp
    • +
    +
    + + + + diff --git a/doxygen/structdr_1_1shp_1_1device__allocator_1_1rebind-members.html b/doxygen/structdr_1_1shp_1_1device__allocator_1_1rebind-members.html new file mode 100644 index 0000000000..4374dcf00f --- /dev/null +++ b/doxygen/structdr_1_1shp_1_1device__allocator_1_1rebind-members.html @@ -0,0 +1,89 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    dr::shp::device_allocator< T, Alignment >::rebind< U > Member List
    +
    +
    + +

    This is the complete list of members for dr::shp::device_allocator< T, Alignment >::rebind< U >, including all inherited members.

    + + +
    other typedef (defined in dr::shp::device_allocator< T, Alignment >::rebind< U >)dr::shp::device_allocator< T, Alignment >::rebind< U >
    + + + + diff --git a/doxygen/structdr_1_1shp_1_1device__allocator_1_1rebind.html b/doxygen/structdr_1_1shp_1_1device__allocator_1_1rebind.html new file mode 100644 index 0000000000..9fd854ebd4 --- /dev/null +++ b/doxygen/structdr_1_1shp_1_1device__allocator_1_1rebind.html @@ -0,0 +1,98 @@ + + + + + + + +Distributed Ranges: dr::shp::device_allocator< T, Alignment >::rebind< U > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    dr::shp::device_allocator< T, Alignment >::rebind< U > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    +using other = device_allocator< U, Alignment >
     
    +
    The documentation for this struct was generated from the following file:
      +
    • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/allocators.hpp
    • +
    +
    + + + + diff --git a/doxygen/structdr_1_1shp_1_1device__policy-members.html b/doxygen/structdr_1_1shp_1_1device__policy-members.html new file mode 100644 index 0000000000..a716f6db3b --- /dev/null +++ b/doxygen/structdr_1_1shp_1_1device__policy-members.html @@ -0,0 +1,94 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    dr::shp::device_policy Member List
    +
    +
    + +

    This is the complete list of members for dr::shp::device_policy, including all inherited members.

    + + + + + + + +
    device_policy(sycl::device device) (defined in dr::shp::device_policy)dr::shp::device_policyinline
    device_policy(sycl::queue queue) (defined in dr::shp::device_policy)dr::shp::device_policyinline
    device_policy() (defined in dr::shp::device_policy)dr::shp::device_policyinline
    device_policy(R &&devices) (defined in dr::shp::device_policy)dr::shp::device_policyinline
    get_devices() noexcept (defined in dr::shp::device_policy)dr::shp::device_policyinline
    get_devices() const noexcept (defined in dr::shp::device_policy)dr::shp::device_policyinline
    + + + + diff --git a/doxygen/structdr_1_1shp_1_1device__policy.html b/doxygen/structdr_1_1shp_1_1device__policy.html new file mode 100644 index 0000000000..c033dc92e2 --- /dev/null +++ b/doxygen/structdr_1_1shp_1_1device__policy.html @@ -0,0 +1,112 @@ + + + + + + + +Distributed Ranges: dr::shp::device_policy Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    dr::shp::device_policy Struct Reference
    +
    +
    + + + + + + + + + + + + + +

    +Public Member Functions

    device_policy (sycl::device device)
     
    device_policy (sycl::queue queue)
     
    +template<rng::range R>
    +requires (std::is_same_v<rng::range_value_t<R>, sycl::device>)
     device_policy (R &&devices)
     
    +std::span< sycl::device > get_devices () noexcept
     
    +std::span< const sycl::device > get_devices () const noexcept
     
    +
    The documentation for this struct was generated from the following file:
      +
    • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/algorithms/execution_policy.hpp
    • +
    +
    + + + + diff --git a/doxygen/structdr_1_1shp_1_1distributed__vector-members.html b/doxygen/structdr_1_1shp_1_1distributed__vector-members.html new file mode 100644 index 0000000000..3fd2cbe2e7 --- /dev/null +++ b/doxygen/structdr_1_1shp_1_1distributed__vector-members.html @@ -0,0 +1,112 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    dr::shp::distributed_vector< T, Allocator > Member List
    +
    +
    + +

    This is the complete list of members for dr::shp::distributed_vector< T, Allocator >, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    allocator_type typedef (defined in dr::shp::distributed_vector< T, Allocator >)dr::shp::distributed_vector< T, Allocator >
    begin() (defined in dr::shp::distributed_vector< T, Allocator >)dr::shp::distributed_vector< T, Allocator >inline
    begin() const (defined in dr::shp::distributed_vector< T, Allocator >)dr::shp::distributed_vector< T, Allocator >inline
    const_iterator typedef (defined in dr::shp::distributed_vector< T, Allocator >)dr::shp::distributed_vector< T, Allocator >
    const_pointer typedef (defined in dr::shp::distributed_vector< T, Allocator >)dr::shp::distributed_vector< T, Allocator >
    const_reference typedef (defined in dr::shp::distributed_vector< T, Allocator >)dr::shp::distributed_vector< T, Allocator >
    const_segment_type typedef (defined in dr::shp::distributed_vector< T, Allocator >)dr::shp::distributed_vector< T, Allocator >
    difference_type typedef (defined in dr::shp::distributed_vector< T, Allocator >)dr::shp::distributed_vector< T, Allocator >
    distributed_vector(std::size_t count=0) (defined in dr::shp::distributed_vector< T, Allocator >)dr::shp::distributed_vector< T, Allocator >inline
    distributed_vector(std::size_t count, const T &value) (defined in dr::shp::distributed_vector< T, Allocator >)dr::shp::distributed_vector< T, Allocator >inline
    distributed_vector(std::initializer_list< T > init) (defined in dr::shp::distributed_vector< T, Allocator >)dr::shp::distributed_vector< T, Allocator >inline
    end() (defined in dr::shp::distributed_vector< T, Allocator >)dr::shp::distributed_vector< T, Allocator >inline
    end() const (defined in dr::shp::distributed_vector< T, Allocator >)dr::shp::distributed_vector< T, Allocator >inline
    iterator typedef (defined in dr::shp::distributed_vector< T, Allocator >)dr::shp::distributed_vector< T, Allocator >
    operator[](size_type pos) (defined in dr::shp::distributed_vector< T, Allocator >)dr::shp::distributed_vector< T, Allocator >inline
    operator[](size_type pos) const (defined in dr::shp::distributed_vector< T, Allocator >)dr::shp::distributed_vector< T, Allocator >inline
    pointer typedef (defined in dr::shp::distributed_vector< T, Allocator >)dr::shp::distributed_vector< T, Allocator >
    reference typedef (defined in dr::shp::distributed_vector< T, Allocator >)dr::shp::distributed_vector< T, Allocator >
    segment_type typedef (defined in dr::shp::distributed_vector< T, Allocator >)dr::shp::distributed_vector< T, Allocator >
    segments() (defined in dr::shp::distributed_vector< T, Allocator >)dr::shp::distributed_vector< T, Allocator >inline
    segments() const (defined in dr::shp::distributed_vector< T, Allocator >)dr::shp::distributed_vector< T, Allocator >inline
    size() const noexcept (defined in dr::shp::distributed_vector< T, Allocator >)dr::shp::distributed_vector< T, Allocator >inline
    size_type typedef (defined in dr::shp::distributed_vector< T, Allocator >)dr::shp::distributed_vector< T, Allocator >
    value_type typedef (defined in dr::shp::distributed_vector< T, Allocator >)dr::shp::distributed_vector< T, Allocator >
    + + + + diff --git a/doxygen/structdr_1_1shp_1_1distributed__vector.html b/doxygen/structdr_1_1shp_1_1distributed__vector.html new file mode 100644 index 0000000000..c45b7bd334 --- /dev/null +++ b/doxygen/structdr_1_1shp_1_1distributed__vector.html @@ -0,0 +1,179 @@ + + + + + + + +Distributed Ranges: dr::shp::distributed_vector< T, Allocator > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    dr::shp::distributed_vector< T, Allocator > Struct Template Reference
    +
    +
    + +

    distributed vector + More...

    + +

    #include <distributed_vector.hpp>

    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Types

    +using segment_type = dr::shp::device_vector< T, Allocator >
     
    +using const_segment_type = std::add_const_t< dr::shp::device_vector< T, Allocator > >
     
    +using value_type = T
     
    +using size_type = std::size_t
     
    +using difference_type = std::ptrdiff_t
     
    +using pointer = decltype(std::declval< segment_type >().data())
     
    +using const_pointer = decltype(std::declval< std::add_const_t< segment_type > >().data())
     
    +using reference = std::iter_reference_t< pointer >
     
    +using const_reference = std::iter_reference_t< const_pointer >
     
    +using iterator = distributed_vector_iterator< T, segment_type >
     
    +using const_iterator = distributed_vector_iterator< const T, const_segment_type >
     
    +using allocator_type = Allocator
     
    + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    distributed_vector (std::size_t count=0)
     
    distributed_vector (std::size_t count, const T &value)
     
    distributed_vector (std::initializer_list< T > init)
     
    +reference operator[] (size_type pos)
     
    +const_reference operator[] (size_type pos) const
     
    +size_type size () const noexcept
     
    +auto segments ()
     
    +auto segments () const
     
    +iterator begin ()
     
    +const_iterator begin () const
     
    +iterator end ()
     
    +const_iterator end () const
     
    +

    Detailed Description

    +
    template<typename T, typename Allocator = dr::shp::device_allocator<T>>
    +struct dr::shp::distributed_vector< T, Allocator >

    distributed vector

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/doxygen/structdr_1_1views_1_1iota__fn__-members.html b/doxygen/structdr_1_1views_1_1iota__fn__-members.html new file mode 100644 index 0000000000..dd5d1eee73 --- /dev/null +++ b/doxygen/structdr_1_1views_1_1iota__fn__-members.html @@ -0,0 +1,90 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    dr::views::iota_fn_ Member List
    +
    +
    + +

    This is the complete list of members for dr::views::iota_fn_, including all inherited members.

    + + + +
    operator()(W value) const (defined in dr::views::iota_fn_)dr::views::iota_fn_inline
    operator()(W value, Bound bound) const (defined in dr::views::iota_fn_)dr::views::iota_fn_inline
    + + + + diff --git a/doxygen/structdr_1_1views_1_1iota__fn__.html b/doxygen/structdr_1_1views_1_1iota__fn__.html new file mode 100644 index 0000000000..8c2815f90b --- /dev/null +++ b/doxygen/structdr_1_1views_1_1iota__fn__.html @@ -0,0 +1,103 @@ + + + + + + + +Distributed Ranges: dr::views::iota_fn_ Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    dr::views::iota_fn_ Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    +template<std::integral W>
    auto operator() (W value) const
     
    +template<std::integral W, std::integral Bound>
    auto operator() (W value, Bound bound) const
     
    +
    The documentation for this struct was generated from the following file:
      +
    • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/views/iota.hpp
    • +
    +
    + + + + diff --git a/doxygen/structfmt_1_1formatter_3_01Mdspan_00_01char_01_4-members.html b/doxygen/structfmt_1_1formatter_3_01Mdspan_00_01char_01_4-members.html new file mode 100644 index 0000000000..314de90ce1 --- /dev/null +++ b/doxygen/structfmt_1_1formatter_3_01Mdspan_00_01char_01_4-members.html @@ -0,0 +1,90 @@ + + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    fmt::formatter< Mdspan, char > Member List
    +
    +
    + +

    This is the complete list of members for fmt::formatter< Mdspan, char >, including all inherited members.

    + + + +
    format(Mdspan mdspan, FmtContext &ctx) const (defined in fmt::formatter< Mdspan, char >)fmt::formatter< Mdspan, char >inline
    format_mdspan(auto &ctx, auto mdspan, auto &index, std::size_t dim) const (defined in fmt::formatter< Mdspan, char >)fmt::formatter< Mdspan, char >inline
    + + + + diff --git a/doxygen/structfmt_1_1formatter_3_01Mdspan_00_01char_01_4.html b/doxygen/structfmt_1_1formatter_3_01Mdspan_00_01char_01_4.html new file mode 100644 index 0000000000..1f5b65d377 --- /dev/null +++ b/doxygen/structfmt_1_1formatter_3_01Mdspan_00_01char_01_4.html @@ -0,0 +1,120 @@ + + + + + + + +Distributed Ranges: fmt::formatter< Mdspan, char > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    fmt::formatter< Mdspan, char > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for fmt::formatter< Mdspan, char >:
    +
    +
    Inheritance graph
    + + + + +
    [legend]
    +
    +Collaboration diagram for fmt::formatter< Mdspan, char >:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    + + + + + + + +

    +Public Member Functions

    +template<typename FmtContext >
    auto format (Mdspan mdspan, FmtContext &ctx) const
     
    +void format_mdspan (auto &ctx, auto mdspan, auto &index, std::size_t dim) const
     
    +
    The documentation for this struct was generated from the following file:
      +
    • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail/mdspan_utils.hpp
    • +
    +
    + + + + diff --git a/doxygen/structfmt_1_1formatter_3_01Mdspan_00_01char_01_4__coll__graph.map b/doxygen/structfmt_1_1formatter_3_01Mdspan_00_01char_01_4__coll__graph.map new file mode 100644 index 0000000000..d1b9a379e3 --- /dev/null +++ b/doxygen/structfmt_1_1formatter_3_01Mdspan_00_01char_01_4__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/structfmt_1_1formatter_3_01Mdspan_00_01char_01_4__coll__graph.md5 b/doxygen/structfmt_1_1formatter_3_01Mdspan_00_01char_01_4__coll__graph.md5 new file mode 100644 index 0000000000..8048a0261a --- /dev/null +++ b/doxygen/structfmt_1_1formatter_3_01Mdspan_00_01char_01_4__coll__graph.md5 @@ -0,0 +1 @@ +787393ee5b4d2029036d67d19df84ced \ No newline at end of file diff --git a/doxygen/structfmt_1_1formatter_3_01Mdspan_00_01char_01_4__coll__graph.png b/doxygen/structfmt_1_1formatter_3_01Mdspan_00_01char_01_4__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..fbd5e3983be86b5cd4e0394637cea39c70061b0f GIT binary patch literal 5605 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 + + + diff --git a/doxygen/structfmt_1_1formatter_3_01Mdspan_00_01char_01_4__inherit__graph.md5 b/doxygen/structfmt_1_1formatter_3_01Mdspan_00_01char_01_4__inherit__graph.md5 new file mode 100644 index 0000000000..8048a0261a --- /dev/null +++ b/doxygen/structfmt_1_1formatter_3_01Mdspan_00_01char_01_4__inherit__graph.md5 @@ -0,0 +1 @@ +787393ee5b4d2029036d67d19df84ced \ No newline at end of file diff --git a/doxygen/structfmt_1_1formatter_3_01Mdspan_00_01char_01_4__inherit__graph.png b/doxygen/structfmt_1_1formatter_3_01Mdspan_00_01char_01_4__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..fbd5e3983be86b5cd4e0394637cea39c70061b0f GIT binary patch literal 5605 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 + + + + + + +Distributed Ranges: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    nostd::source_location Member List
    +
    +
    + +

    This is the complete list of members for nostd::source_location, including all inherited members.

    + + + + + + + + +
    column() const noexcept (defined in nostd::source_location)nostd::source_locationinline
    current(const char *fileName="unsupported", const char *functionName="unsupported", const uint_least32_t lineNumber=0, const uint_least32_t columnOffset=0) noexcept (defined in nostd::source_location)nostd::source_locationinlinestatic
    file_name() const noexcept (defined in nostd::source_location)nostd::source_locationinline
    function_name() const noexcept (defined in nostd::source_location)nostd::source_locationinline
    line() const noexcept (defined in nostd::source_location)nostd::source_locationinline
    source_location(const source_location &)=default (defined in nostd::source_location)nostd::source_location
    source_location(source_location &&)=default (defined in nostd::source_location)nostd::source_location
    + + + + diff --git a/doxygen/structnostd_1_1source__location.html b/doxygen/structnostd_1_1source__location.html new file mode 100644 index 0000000000..7628649533 --- /dev/null +++ b/doxygen/structnostd_1_1source__location.html @@ -0,0 +1,120 @@ + + + + + + + +Distributed Ranges: nostd::source_location Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    nostd::source_location Struct Reference
    +
    +
    + + + + + + + + + + + + + + +

    +Public Member Functions

    source_location (const source_location &)=default
     
    source_location (source_location &&)=default
     
    +constexpr const char * file_name () const noexcept
     
    +constexpr const char * function_name () const noexcept
     
    +constexpr uint_least32_t line () const noexcept
     
    +constexpr std::uint_least32_t column () const noexcept
     
    + + + +

    +Static Public Member Functions

    +static constexpr source_location current (const char *fileName="unsupported", const char *functionName="unsupported", const uint_least32_t lineNumber=0, const uint_least32_t columnOffset=0) noexcept
     
    +
    The documentation for this struct was generated from the following file:
      +
    • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/vendor/source_location/source_location.hpp
    • +
    +
    + + + + diff --git a/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1index_3_01I_01_4_01_4.html b/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1index_3_01I_01_4_01_4.html new file mode 100644 index 0000000000..d4d89ed2f8 --- /dev/null +++ b/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1index_3_01I_01_4_01_4.html @@ -0,0 +1,106 @@ + + + + + + + +Distributed Ranges: std::tuple_element< Index, dr::index< I > > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    std::tuple_element< Index, dr::index< I > > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for std::tuple_element< Index, dr::index< I > >:
    +
    +
    Inheritance graph
    + + + + +
    [legend]
    +
    +Collaboration diagram for std::tuple_element< Index, dr::index< I > >:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    +
    The documentation for this struct was generated from the following file:
      +
    • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail/index.hpp
    • +
    +
    + + + + diff --git a/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1index_3_01I_01_4_01_4__coll__graph.map b/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1index_3_01I_01_4_01_4__coll__graph.map new file mode 100644 index 0000000000..9011fdab8f --- /dev/null +++ b/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1index_3_01I_01_4_01_4__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1index_3_01I_01_4_01_4__coll__graph.md5 b/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1index_3_01I_01_4_01_4__coll__graph.md5 new file mode 100644 index 0000000000..c210f859dc --- /dev/null +++ b/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1index_3_01I_01_4_01_4__coll__graph.md5 @@ -0,0 +1 @@ +e1224836b7a16209c60a5f085becfdf1 \ No newline at end of file diff --git a/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1index_3_01I_01_4_01_4__coll__graph.png b/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1index_3_01I_01_4_01_4__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..5d8b096d9755a0a4576ae8e6005a3354b67956e4 GIT binary patch literal 5341 zcmcgw1y_`7yB47uKT5)jw%HiGZ_Q|p-@*-G64VW;1^Fy437OS zRvX}t*iKVb337%1W;Yb1Kp=F<>PnA{{NHa*1?m|c;z)Lm&5Wq86WyW^r+!7N`3T*7 zQ)4Oepxv=eFX2s5p*Dl|U-ggwGL^CyAI?*Ws^)#ro#D;R*%^}VFVtC|N9{GnYx(p$ zBlowg8IE>-C%-Y-x)|A;GNnw8qvcuM43?KY3@ELS8c?j#a+mm0WmAj-sh)`e&;fnAmuR zy9%F;$hHL5qfJRy`vrwa=g@hakp&(6%4%w)a%U^K)(=fQc1Pf$FBT*QhlbSI;%sEa zg-BOL>DA-1vpF}$E4yh856$dKcfXpImj#`A_hZ-9SJe7D3Wr>Rj;H)$lae}?dNV&! zb_n|f8nm^w%@$;ZC@3fpNT3wK8zAzcX}Q_i@&h_(y|4v|zaKof1|c9IDD&MkkBp9P z>Fm7mmw-;&%fAE;eho}cCZt&h-1zwMBjY`LQf?j|eKWHsMhOZyW)}`>>aa9;2ooBO zX8hZk8jE6!H!RSx?S3ors(X=9#$U|9z#!YWh$ykvww1Ui9ZIO9qvOBxgXDEu+Q=gF z%=&zLyqczFL_vW-a!ShF))wmd{t{EAT=Wu2*t>VkN-8RNOAsBX_PN%WMC)?bkrLas zSenslkF5M)0|Q$2zzt|cbu|lHu04uPTD-KZ?9~k#M#i7t%FCtQk$!$or>CdyCWeNF z$RVz7ZuSY#rS0wC?>~Gnv$f@_^I9ODsCe=h(%ai^q!jLy0HtST?fLfY+us+q^waS0j z&KM5=U1HtPrGjGZq-2*7bk?GxqVioE6!Kjk7J2*n^$$xcs|@qv;W}*S#UaDQcc0t% zm62XvwwiD6*uu_tBJy=jT3TDjH19U#)w(-h_VwwB`)yeoTUc~=b#@bX=3iMsi+rL+h2`ZA->u0` z#`SZh%@y2oR;bH(Rdw}!0RaKu%kxuF#QprzzS{GPi!tf#`rO(k;6^Xjj(3@v4<_so z2s3l@ciGTtx3QesCN%oRH5;<1aAMe=ETn9F z+`RXKh=}N2o|x}d{n5B<&&Ws`-q!6#oQ_`o_w;vk#=+Wio14Wx7HB=^O58#c3{nG8X9C-Sy`prU7tLm`8&U;sA%c< z1tAGRm?OEBxW{yY-}G}5K0dykgM+qj4&8c2M%S^XX|6d*ji$$9qX6F}U`~)zvi(b7Rx>m!(~Mc6`Z$#*tPkSVC{+!`v@l$jr>l z3QJ0`F9_%9q;V%FHeGLo{4Yw ztq&JRWM;C+T^ty)$_7*nJn3uzo{WGZu$+)mr6tFclM~K+_h{qkMb@5$nk0epr}k*N5T|65x=unu z5*Za`d$=|fi$Y<6>miWT)YNow_jk^_ab0h2x*MM0aODkw$G$k3Jg1%geFV51ewH49 zcHdhTBE{r^vNCfMEebhQC%<*;);klK6Bux=L5%9xS3~SV8X6i(OiqJ^`ut7T)z9*+ zL-Wd_X&r@Sx6J~A4XC+|l62y>1l6}!9kvuS8*$z*Yvg35gwAL`Yc!gaSiW5T7)U9g zOLn%#TaMG{TuZT=sB+)g+Y66~AXHFP+}-~TBkY5Vx)(-fT>V;Us4m9zOid@)`nO_?!GOcvEb+kDVb9NSB@94-aAV31y8FR|w z5)-2y8ymApK-bhTLc~HZgGR^3&|klj!-Ee~vkkd|5zL^$vZ?9n#wehhLF(=PNzq-q z_=Q%Er$>X_oC&>>{qp6Dm}3uPPsV-K{nI#5-u1Yxx^xLI?tJac==^;CjhQBn#l^+Z z8ZVyu`uYS^w{WDY7Vq7soT991ac+q@<+s&d!2z=R1nM9K;yhk>J|^)l4Y1 ztGhcRA|hgX&m*L^0!{0PFjdT`OXr)hs|GFklR>BB?~lEZGN1Kfv#+Ik4d0$kc6Z;D zl$7*eOf{jVql;{7Q##-4z8f&XB5b>*WB0Z;-fB-I`sm2_&*CDNs3_(1^t7|Hb2EU4 zGMAw*Pd9H96$S5?v~G-*Lj#Z809fK}AIR5M)Yhih*xan_`m`-#yQM~sUM>TR!43xv z%{QgG3QOTlD70eCS^_%vPhfl8ts2icf}^de`1EwfgY6j(3p%@HICK#sQ#A+02Y-e0;obdK&fiEq!n8 z!zRmdy&L!Y4x_3{px2&sPxgwOidX+R1Km+YQ}ZSzhg`xx{}|x=sS50K@9J&7BAvL^ zfda(OS6s2Nv0>%q_kqXbB1ow0`m!HEo~3C5mx#BScTZ~nyG{T=<&HDB9`2p))|lI&RDim=dE9rh;Bd!R&ldZ4ylMIXprVKL=U! z1(u)>U$(9d2nzAON$;2(Y_|8j+9W}tKN#|uch#IpX^`FUBLD44{^9CEfP_V?O`VSR z8edeNgbfWOQ-_5~!ZV#Zt0U;s%Q!s)HQrs8BTfV($<+3(%CQPW<0l07Rd(L1SaMTH zw)XF-3#L~#o&G;V!K+&AO|NG+HR2>Gr(f3g%!G5j4%IhMu^?kL(n_RyJ`;WlqddvD_TZfex!Nf`53Jsg zg)3OuKokL1^`61#9^`$&jk9`JswCXmFPJvb0mmIJVz0XEFJ3IK! zHV07h>(@JY;6L7)8f^%C2)fm)w{N3a9zM0%o^B8n5s3m-)Y8%-m6(>98K0BGZEtVy zJT?5#(Zxl0eqmv5d6@*_?B=FqZqAJFZh?V;c?AWC$r>;Gqo956%(Y@{eh>g)S_#rB zE-sev{zD3|qVJ!7!uxYo5kJC-7^R*S{y3x_AJM}d96U>4x=#$?1>kFReEiM%`FTBK z#_q}d@8csqdIR~Z>MU@%y3W(hXI%+fM} zPxEbaZ!ZN1%L#xPaP`SB^D(hwmfYCrXg0hlq^!JL@#^vdaKpq})w>;;6!&A0!!{65P*l&6n$W=8eym5`&UFblZpX}Ns%pI%_ z{Osvba&+V;CTGm{`98a`kuW@LTxcZRtD`TR8oo5(Lw3)m8Pc0V05K9yHO@o{bT?FA zTwGL+Q?Nj? z?*iAwf}CYJJUl#^kH1@CcQF^k;d!|B7@yqFpFhXfk-U7Eu`~k%10Z7v5ShZ_;&!lM zJ$?Nbn-kRwTT^vbB{6sl`HacGub3}1wruc3m6qNGd}L=ja2pN0%%hSZub~mQ)W^=w zj*<;LnjOU;fB?W(DA1l|e%sbx;Z4^2Ylh0oQT@m@X5`jn?P#SdgMpzT)NND@ki@yY z#qJMhQPI)!KVS3c3DSA`__PBGR=Us40->d)^*mV7cbll90HJ^S^eF&Z`KFNQG%aU1 za*6gfv7D9bq=_>d55rw+nWTjp!iM5!GP1I4x-z@h0iF9q8D;u1RI>y2yQ^#M;5k{q zK8l)MU$g?33`p8nt2*Q5V0`KY1=Twca_6kySH}REtdC`qdL{_;noyT%o7CaSfWYVO zU!OkCnA@#r2Lu@$5Feb9t#hBQ4pg~M;LENj^P%pV9`8V=_0|Rju6!an92$Mwq$C^A zJy47sKup%T3fo17sTsW9-_=e%eR>=BMbL(a)KtxdM7q9}X|A zrei-@K6tV=_&Ht5=gUy>i&|WY2T&A(!on?pnA$oy#mvsyL`FtB4}E$$WkRZ-JP#%m z638WTosTjvqoawh6BBa_3Ejw5O%nectpZoS-{D2v{i{wmgB{Erl9Q9m5FM2M{{GqD zzR@;ap4}FA8?`Y~fM8P_vLw6+0AY_xOJlIV$K;Jf1`aaEHo&$QmzJWzL}6~VAPc+L zo#u6R@C5X0MbR`KUf%03Uc4x)u4ZT`rOvT*4&7~MknrE(+-kZCsXrXHh)qlciB{Tq zv#>O8OmD0f$~O=a5`xztawoHdAoV$cprND;f78j#{PGV$B!#HerZuSMf;Ce=%C8GEL&FFFhwtTr&5>4R zAWL&gZuYF+j$GL`tf{T#5*8){(A)wNp}(&$tla5$+`TIFHzYzMKZ#v74vSUc<>lp+ zlw=~IV&6D;@^?ta_gANfP$M!AcURB5m}4h>eHu`g5uY^ExIy*2e*OAC3|FbTfw$X> z_5A$&Z#XX}y`saiRjL-e)|&{-b=0)Aql$|~*!^d(MaIM+01lbf`HHx?yMt7ug2Uk{ z%hi!v)`V7V<5~Uv{n0Ewig2zot<@Tgb?AjpJ?Ka|mJHPE`K8Y+_xvh~d)G^wM14q= z?2K?q|Dhgl=puLY4E_%n34kZNJ3E)zvqqY}Z@e2lkVzMMzN=bIr1=nsG X75UFmt@y`aUI|fG)=?@^unGSkqW@ap literal 0 HcmV?d00001 diff --git a/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1index_3_01I_01_4_01_4__inherit__graph.map b/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1index_3_01I_01_4_01_4__inherit__graph.map new file mode 100644 index 0000000000..9011fdab8f --- /dev/null +++ b/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1index_3_01I_01_4_01_4__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1index_3_01I_01_4_01_4__inherit__graph.md5 b/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1index_3_01I_01_4_01_4__inherit__graph.md5 new file mode 100644 index 0000000000..c210f859dc --- /dev/null +++ b/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1index_3_01I_01_4_01_4__inherit__graph.md5 @@ -0,0 +1 @@ +e1224836b7a16209c60a5f085becfdf1 \ No newline at end of file diff --git a/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1index_3_01I_01_4_01_4__inherit__graph.png b/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1index_3_01I_01_4_01_4__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..5d8b096d9755a0a4576ae8e6005a3354b67956e4 GIT binary patch literal 5341 zcmcgw1y_`7yB47uKT5)jw%HiGZ_Q|p-@*-G64VW;1^Fy437OS zRvX}t*iKVb337%1W;Yb1Kp=F<>PnA{{NHa*1?m|c;z)Lm&5Wq86WyW^r+!7N`3T*7 zQ)4Oepxv=eFX2s5p*Dl|U-ggwGL^CyAI?*Ws^)#ro#D;R*%^}VFVtC|N9{GnYx(p$ zBlowg8IE>-C%-Y-x)|A;GNnw8qvcuM43?KY3@ELS8c?j#a+mm0WmAj-sh)`e&;fnAmuR zy9%F;$hHL5qfJRy`vrwa=g@hakp&(6%4%w)a%U^K)(=fQc1Pf$FBT*QhlbSI;%sEa zg-BOL>DA-1vpF}$E4yh856$dKcfXpImj#`A_hZ-9SJe7D3Wr>Rj;H)$lae}?dNV&! zb_n|f8nm^w%@$;ZC@3fpNT3wK8zAzcX}Q_i@&h_(y|4v|zaKof1|c9IDD&MkkBp9P z>Fm7mmw-;&%fAE;eho}cCZt&h-1zwMBjY`LQf?j|eKWHsMhOZyW)}`>>aa9;2ooBO zX8hZk8jE6!H!RSx?S3ors(X=9#$U|9z#!YWh$ykvww1Ui9ZIO9qvOBxgXDEu+Q=gF z%=&zLyqczFL_vW-a!ShF))wmd{t{EAT=Wu2*t>VkN-8RNOAsBX_PN%WMC)?bkrLas zSenslkF5M)0|Q$2zzt|cbu|lHu04uPTD-KZ?9~k#M#i7t%FCtQk$!$or>CdyCWeNF z$RVz7ZuSY#rS0wC?>~Gnv$f@_^I9ODsCe=h(%ai^q!jLy0HtST?fLfY+us+q^waS0j z&KM5=U1HtPrGjGZq-2*7bk?GxqVioE6!Kjk7J2*n^$$xcs|@qv;W}*S#UaDQcc0t% zm62XvwwiD6*uu_tBJy=jT3TDjH19U#)w(-h_VwwB`)yeoTUc~=b#@bX=3iMsi+rL+h2`ZA->u0` z#`SZh%@y2oR;bH(Rdw}!0RaKu%kxuF#QprzzS{GPi!tf#`rO(k;6^Xjj(3@v4<_so z2s3l@ciGTtx3QesCN%oRH5;<1aAMe=ETn9F z+`RXKh=}N2o|x}d{n5B<&&Ws`-q!6#oQ_`o_w;vk#=+Wio14Wx7HB=^O58#c3{nG8X9C-Sy`prU7tLm`8&U;sA%c< z1tAGRm?OEBxW{yY-}G}5K0dykgM+qj4&8c2M%S^XX|6d*ji$$9qX6F}U`~)zvi(b7Rx>m!(~Mc6`Z$#*tPkSVC{+!`v@l$jr>l z3QJ0`F9_%9q;V%FHeGLo{4Yw ztq&JRWM;C+T^ty)$_7*nJn3uzo{WGZu$+)mr6tFclM~K+_h{qkMb@5$nk0epr}k*N5T|65x=unu z5*Za`d$=|fi$Y<6>miWT)YNow_jk^_ab0h2x*MM0aODkw$G$k3Jg1%geFV51ewH49 zcHdhTBE{r^vNCfMEebhQC%<*;);klK6Bux=L5%9xS3~SV8X6i(OiqJ^`ut7T)z9*+ zL-Wd_X&r@Sx6J~A4XC+|l62y>1l6}!9kvuS8*$z*Yvg35gwAL`Yc!gaSiW5T7)U9g zOLn%#TaMG{TuZT=sB+)g+Y66~AXHFP+}-~TBkY5Vx)(-fT>V;Us4m9zOid@)`nO_?!GOcvEb+kDVb9NSB@94-aAV31y8FR|w z5)-2y8ymApK-bhTLc~HZgGR^3&|klj!-Ee~vkkd|5zL^$vZ?9n#wehhLF(=PNzq-q z_=Q%Er$>X_oC&>>{qp6Dm}3uPPsV-K{nI#5-u1Yxx^xLI?tJac==^;CjhQBn#l^+Z z8ZVyu`uYS^w{WDY7Vq7soT991ac+q@<+s&d!2z=R1nM9K;yhk>J|^)l4Y1 ztGhcRA|hgX&m*L^0!{0PFjdT`OXr)hs|GFklR>BB?~lEZGN1Kfv#+Ik4d0$kc6Z;D zl$7*eOf{jVql;{7Q##-4z8f&XB5b>*WB0Z;-fB-I`sm2_&*CDNs3_(1^t7|Hb2EU4 zGMAw*Pd9H96$S5?v~G-*Lj#Z809fK}AIR5M)Yhih*xan_`m`-#yQM~sUM>TR!43xv z%{QgG3QOTlD70eCS^_%vPhfl8ts2icf}^de`1EwfgY6j(3p%@HICK#sQ#A+02Y-e0;obdK&fiEq!n8 z!zRmdy&L!Y4x_3{px2&sPxgwOidX+R1Km+YQ}ZSzhg`xx{}|x=sS50K@9J&7BAvL^ zfda(OS6s2Nv0>%q_kqXbB1ow0`m!HEo~3C5mx#BScTZ~nyG{T=<&HDB9`2p))|lI&RDim=dE9rh;Bd!R&ldZ4ylMIXprVKL=U! z1(u)>U$(9d2nzAON$;2(Y_|8j+9W}tKN#|uch#IpX^`FUBLD44{^9CEfP_V?O`VSR z8edeNgbfWOQ-_5~!ZV#Zt0U;s%Q!s)HQrs8BTfV($<+3(%CQPW<0l07Rd(L1SaMTH zw)XF-3#L~#o&G;V!K+&AO|NG+HR2>Gr(f3g%!G5j4%IhMu^?kL(n_RyJ`;WlqddvD_TZfex!Nf`53Jsg zg)3OuKokL1^`61#9^`$&jk9`JswCXmFPJvb0mmIJVz0XEFJ3IK! zHV07h>(@JY;6L7)8f^%C2)fm)w{N3a9zM0%o^B8n5s3m-)Y8%-m6(>98K0BGZEtVy zJT?5#(Zxl0eqmv5d6@*_?B=FqZqAJFZh?V;c?AWC$r>;Gqo956%(Y@{eh>g)S_#rB zE-sev{zD3|qVJ!7!uxYo5kJC-7^R*S{y3x_AJM}d96U>4x=#$?1>kFReEiM%`FTBK z#_q}d@8csqdIR~Z>MU@%y3W(hXI%+fM} zPxEbaZ!ZN1%L#xPaP`SB^D(hwmfYCrXg0hlq^!JL@#^vdaKpq})w>;;6!&A0!!{65P*l&6n$W=8eym5`&UFblZpX}Ns%pI%_ z{Osvba&+V;CTGm{`98a`kuW@LTxcZRtD`TR8oo5(Lw3)m8Pc0V05K9yHO@o{bT?FA zTwGL+Q?Nj? z?*iAwf}CYJJUl#^kH1@CcQF^k;d!|B7@yqFpFhXfk-U7Eu`~k%10Z7v5ShZ_;&!lM zJ$?Nbn-kRwTT^vbB{6sl`HacGub3}1wruc3m6qNGd}L=ja2pN0%%hSZub~mQ)W^=w zj*<;LnjOU;fB?W(DA1l|e%sbx;Z4^2Ylh0oQT@m@X5`jn?P#SdgMpzT)NND@ki@yY z#qJMhQPI)!KVS3c3DSA`__PBGR=Us40->d)^*mV7cbll90HJ^S^eF&Z`KFNQG%aU1 za*6gfv7D9bq=_>d55rw+nWTjp!iM5!GP1I4x-z@h0iF9q8D;u1RI>y2yQ^#M;5k{q zK8l)MU$g?33`p8nt2*Q5V0`KY1=Twca_6kySH}REtdC`qdL{_;noyT%o7CaSfWYVO zU!OkCnA@#r2Lu@$5Feb9t#hBQ4pg~M;LENj^P%pV9`8V=_0|Rju6!an92$Mwq$C^A zJy47sKup%T3fo17sTsW9-_=e%eR>=BMbL(a)KtxdM7q9}X|A zrei-@K6tV=_&Ht5=gUy>i&|WY2T&A(!on?pnA$oy#mvsyL`FtB4}E$$WkRZ-JP#%m z638WTosTjvqoawh6BBa_3Ejw5O%nectpZoS-{D2v{i{wmgB{Erl9Q9m5FM2M{{GqD zzR@;ap4}FA8?`Y~fM8P_vLw6+0AY_xOJlIV$K;Jf1`aaEHo&$QmzJWzL}6~VAPc+L zo#u6R@C5X0MbR`KUf%03Uc4x)u4ZT`rOvT*4&7~MknrE(+-kZCsXrXHh)qlciB{Tq zv#>O8OmD0f$~O=a5`xztawoHdAoV$cprND;f78j#{PGV$B!#HerZuSMf;Ce=%C8GEL&FFFhwtTr&5>4R zAWL&gZuYF+j$GL`tf{T#5*8){(A)wNp}(&$tla5$+`TIFHzYzMKZ#v74vSUc<>lp+ zlw=~IV&6D;@^?ta_gANfP$M!AcURB5m}4h>eHu`g5uY^ExIy*2e*OAC3|FbTfw$X> z_5A$&Z#XX}y`saiRjL-e)|&{-b=0)Aql$|~*!^d(MaIM+01lbf`HHx?yMt7ug2Uk{ z%hi!v)`V7V<5~Uv{n0Ewig2zot<@Tgb?AjpJ?Ka|mJHPE`K8Y+_xvh~d)G^wM14q= z?2K?q|Dhgl=puLY4E_%n34kZNJ3E)zvqqY}Z@e2lkVzMMzN=bIr1=nsG X75UFmt@y`aUI|fG)=?@^unGSkqW@ap literal 0 HcmV?d00001 diff --git a/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4.html b/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4.html new file mode 100644 index 0000000000..e0d34349b8 --- /dev/null +++ b/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4.html @@ -0,0 +1,106 @@ + + + + + + + +Distributed Ranges: std::tuple_element< Index, dr::shp::matrix_entry< T, I > > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    std::tuple_element< Index, dr::shp::matrix_entry< T, I > > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for std::tuple_element< Index, dr::shp::matrix_entry< T, I > >:
    +
    +
    Inheritance graph
    + + + + +
    [legend]
    +
    +Collaboration diagram for std::tuple_element< Index, dr::shp::matrix_entry< T, I > >:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    +
    The documentation for this struct was generated from the following file:
      +
    • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/containers/matrix_entry.hpp
    • +
    +
    + + + + diff --git a/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4__coll__graph.map b/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4__coll__graph.map new file mode 100644 index 0000000000..d56bb7d0bf --- /dev/null +++ b/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4__coll__graph.md5 b/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4__coll__graph.md5 new file mode 100644 index 0000000000..40147c9970 --- /dev/null +++ b/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4__coll__graph.md5 @@ -0,0 +1 @@ +5701f37accae207f88946bde46263ba3 \ No newline at end of file diff --git a/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4__coll__graph.png b/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..cee460d36337f1b79046e8a0834ed6dca135f9b4 GIT binary patch literal 6492 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 Oa$j9ntxm-{{C@yXP?Ze; literal 0 HcmV?d00001 diff --git a/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4__inherit__graph.map b/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4__inherit__graph.map new file mode 100644 index 0000000000..d56bb7d0bf --- /dev/null +++ b/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4__inherit__graph.md5 b/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4__inherit__graph.md5 new file mode 100644 index 0000000000..40147c9970 --- /dev/null +++ b/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4__inherit__graph.md5 @@ -0,0 +1 @@ +5701f37accae207f88946bde46263ba3 \ No newline at end of file diff --git a/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4__inherit__graph.png b/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..cee460d36337f1b79046e8a0834ed6dca135f9b4 GIT binary patch literal 6492 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 Oa$j9ntxm-{{C@yXP?Ze; literal 0 HcmV?d00001 diff --git a/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4.html b/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4.html new file mode 100644 index 0000000000..4773b6f537 --- /dev/null +++ b/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4.html @@ -0,0 +1,106 @@ + + + + + + + +Distributed Ranges: std::tuple_element< Index, dr::shp::matrix_ref< T, I, TRef > > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    std::tuple_element< Index, dr::shp::matrix_ref< T, I, TRef > > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for std::tuple_element< Index, dr::shp::matrix_ref< T, I, TRef > >:
    +
    +
    Inheritance graph
    + + + + +
    [legend]
    +
    +Collaboration diagram for std::tuple_element< Index, dr::shp::matrix_ref< T, I, TRef > >:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    +
    The documentation for this struct was generated from the following file:
      +
    • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/containers/matrix_entry.hpp
    • +
    +
    + + + + diff --git a/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4__coll__graph.map b/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4__coll__graph.map new file mode 100644 index 0000000000..6aed0a3378 --- /dev/null +++ b/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4__coll__graph.md5 b/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4__coll__graph.md5 new file mode 100644 index 0000000000..32db4750e8 --- /dev/null +++ b/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4__coll__graph.md5 @@ -0,0 +1 @@ +a2f45b7841bd88a67f588f8264876d7e \ No newline at end of file diff --git a/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4__coll__graph.png b/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..9e11a8a2c3eba681b0eb3bb9d955a5ec003ad658 GIT binary patch literal 6858 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�{RteP<^zCIxw*Y9_qulZ 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 literal 0 HcmV?d00001 diff --git a/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4__inherit__graph.map b/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4__inherit__graph.map new file mode 100644 index 0000000000..6aed0a3378 --- /dev/null +++ b/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4__inherit__graph.md5 b/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4__inherit__graph.md5 new file mode 100644 index 0000000000..32db4750e8 --- /dev/null +++ b/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4__inherit__graph.md5 @@ -0,0 +1 @@ +a2f45b7841bd88a67f588f8264876d7e \ No newline at end of file diff --git a/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4__inherit__graph.png b/doxygen/structstd_1_1tuple__element_3_01Index_00_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..9e11a8a2c3eba681b0eb3bb9d955a5ec003ad658 GIT binary patch literal 6858 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�{RteP<^zCIxw*Y9_qulZ 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 literal 0 HcmV?d00001 diff --git a/doxygen/structstd_1_1tuple__size_3_01dr_1_1index_3_01I_01_4_01_4.html b/doxygen/structstd_1_1tuple__size_3_01dr_1_1index_3_01I_01_4_01_4.html new file mode 100644 index 0000000000..32fdc54fe9 --- /dev/null +++ b/doxygen/structstd_1_1tuple__size_3_01dr_1_1index_3_01I_01_4_01_4.html @@ -0,0 +1,106 @@ + + + + + + + +Distributed Ranges: std::tuple_size< dr::index< I > > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    std::tuple_size< dr::index< I > > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for std::tuple_size< dr::index< I > >:
    +
    +
    Inheritance graph
    + + + + +
    [legend]
    +
    +Collaboration diagram for std::tuple_size< dr::index< I > >:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    +
    The documentation for this struct was generated from the following file:
      +
    • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail/index.hpp
    • +
    +
    + + + + diff --git a/doxygen/structstd_1_1tuple__size_3_01dr_1_1index_3_01I_01_4_01_4__coll__graph.map b/doxygen/structstd_1_1tuple__size_3_01dr_1_1index_3_01I_01_4_01_4__coll__graph.map new file mode 100644 index 0000000000..09c2ae6dce --- /dev/null +++ b/doxygen/structstd_1_1tuple__size_3_01dr_1_1index_3_01I_01_4_01_4__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/structstd_1_1tuple__size_3_01dr_1_1index_3_01I_01_4_01_4__coll__graph.md5 b/doxygen/structstd_1_1tuple__size_3_01dr_1_1index_3_01I_01_4_01_4__coll__graph.md5 new file mode 100644 index 0000000000..9cdf7c6c83 --- /dev/null +++ b/doxygen/structstd_1_1tuple__size_3_01dr_1_1index_3_01I_01_4_01_4__coll__graph.md5 @@ -0,0 +1 @@ +63ee53349f88fac890b89317c0456308 \ No newline at end of file diff --git a/doxygen/structstd_1_1tuple__size_3_01dr_1_1index_3_01I_01_4_01_4__coll__graph.png b/doxygen/structstd_1_1tuple__size_3_01dr_1_1index_3_01I_01_4_01_4__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..d3759c930c800911a932537f2b24ed3bc4d56cff GIT binary patch literal 5565 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 + + + diff --git a/doxygen/structstd_1_1tuple__size_3_01dr_1_1index_3_01I_01_4_01_4__inherit__graph.md5 b/doxygen/structstd_1_1tuple__size_3_01dr_1_1index_3_01I_01_4_01_4__inherit__graph.md5 new file mode 100644 index 0000000000..9cdf7c6c83 --- /dev/null +++ b/doxygen/structstd_1_1tuple__size_3_01dr_1_1index_3_01I_01_4_01_4__inherit__graph.md5 @@ -0,0 +1 @@ +63ee53349f88fac890b89317c0456308 \ No newline at end of file diff --git a/doxygen/structstd_1_1tuple__size_3_01dr_1_1index_3_01I_01_4_01_4__inherit__graph.png b/doxygen/structstd_1_1tuple__size_3_01dr_1_1index_3_01I_01_4_01_4__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..d3759c930c800911a932537f2b24ed3bc4d56cff GIT binary patch literal 5565 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 + + + + + + +Distributed Ranges: std::tuple_size< dr::shp::matrix_entry< T, I > > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    std::tuple_size< dr::shp::matrix_entry< T, I > > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for std::tuple_size< dr::shp::matrix_entry< T, I > >:
    +
    +
    Inheritance graph
    + + + + +
    [legend]
    +
    +Collaboration diagram for std::tuple_size< dr::shp::matrix_entry< T, I > >:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    +
    The documentation for this struct was generated from the following file:
      +
    • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/containers/matrix_entry.hpp
    • +
    +
    + + + + diff --git a/doxygen/structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4__coll__graph.map b/doxygen/structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4__coll__graph.map new file mode 100644 index 0000000000..8d573714b9 --- /dev/null +++ b/doxygen/structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4__coll__graph.md5 b/doxygen/structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4__coll__graph.md5 new file mode 100644 index 0000000000..b9a1bf1a11 --- /dev/null +++ b/doxygen/structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4__coll__graph.md5 @@ -0,0 +1 @@ +de620959004563cfe17bab14179e0e38 \ No newline at end of file diff --git a/doxygen/structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4__coll__graph.png b/doxygen/structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..16051b41b44439ebcf4950223df3e9db3bb5b6c5 GIT binary patch literal 6168 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 literal 0 HcmV?d00001 diff --git a/doxygen/structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4__inherit__graph.map b/doxygen/structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4__inherit__graph.map new file mode 100644 index 0000000000..8d573714b9 --- /dev/null +++ b/doxygen/structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4__inherit__graph.md5 b/doxygen/structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4__inherit__graph.md5 new file mode 100644 index 0000000000..b9a1bf1a11 --- /dev/null +++ b/doxygen/structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4__inherit__graph.md5 @@ -0,0 +1 @@ +de620959004563cfe17bab14179e0e38 \ No newline at end of file diff --git a/doxygen/structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4__inherit__graph.png b/doxygen/structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__entry_3_01T_00_01I_01_4_01_4__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..16051b41b44439ebcf4950223df3e9db3bb5b6c5 GIT binary patch literal 6168 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 literal 0 HcmV?d00001 diff --git a/doxygen/structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4.html b/doxygen/structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4.html new file mode 100644 index 0000000000..822e87173b --- /dev/null +++ b/doxygen/structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4.html @@ -0,0 +1,106 @@ + + + + + + + +Distributed Ranges: std::tuple_size< dr::shp::matrix_ref< T, I, TRef > > Struct Template Reference + + + + + + + + + +

    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    std::tuple_size< dr::shp::matrix_ref< T, I, TRef > > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for std::tuple_size< dr::shp::matrix_ref< T, I, TRef > >:
    +
    +
    Inheritance graph
    + + + + +
    [legend]
    +
    +Collaboration diagram for std::tuple_size< dr::shp::matrix_ref< T, I, TRef > >:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    +
    The documentation for this struct was generated from the following file:
      +
    • /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/containers/matrix_entry.hpp
    • +
    +
    + + + + diff --git a/doxygen/structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4__coll__graph.map b/doxygen/structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4__coll__graph.map new file mode 100644 index 0000000000..63100b6553 --- /dev/null +++ b/doxygen/structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4__coll__graph.md5 b/doxygen/structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4__coll__graph.md5 new file mode 100644 index 0000000000..259a873e99 --- /dev/null +++ b/doxygen/structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4__coll__graph.md5 @@ -0,0 +1 @@ +641b22c5a6768ef2f8dd0fefcb68035b \ No newline at end of file diff --git a/doxygen/structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4__coll__graph.png b/doxygen/structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..a82d870189258493456e9d7033437a146c319f21 GIT binary patch literal 6471 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 literal 0 HcmV?d00001 diff --git a/doxygen/structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4__inherit__graph.map b/doxygen/structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4__inherit__graph.map new file mode 100644 index 0000000000..63100b6553 --- /dev/null +++ b/doxygen/structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen/structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4__inherit__graph.md5 b/doxygen/structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4__inherit__graph.md5 new file mode 100644 index 0000000000..259a873e99 --- /dev/null +++ b/doxygen/structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4__inherit__graph.md5 @@ -0,0 +1 @@ +641b22c5a6768ef2f8dd0fefcb68035b \ No newline at end of file diff --git a/doxygen/structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4__inherit__graph.png b/doxygen/structstd_1_1tuple__size_3_01dr_1_1shp_1_1matrix__ref_3_01T_00_01I_00_01TRef_01_4_01_4__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..a82d870189258493456e9d7033437a146c319f21 GIT binary patch literal 6471 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 literal 0 HcmV?d00001 diff --git a/doxygen/submdspan__view_8hpp_source.html b/doxygen/submdspan__view_8hpp_source.html new file mode 100644 index 0000000000..08f366715e --- /dev/null +++ b/doxygen/submdspan__view_8hpp_source.html @@ -0,0 +1,256 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/views/submdspan_view.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    submdspan_view.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7#include <dr/detail/mdspan_shim.hpp>
    +
    8#include <dr/detail/ranges_shim.hpp>
    +
    9#include <dr/mhp/views/mdspan_view.hpp>
    +
    10
    +
    11namespace dr::mhp::__detail {
    +
    12
    +
    13//
    +
    14// Add a local mdspan to the underlying segment
    +
    15//
    +
    16template <typename BaseSegment, std::size_t Rank,
    +
    17 typename Layout = md::layout_stride>
    +
    18class mdsub_segment : public BaseSegment {
    +
    19private:
    +
    20public:
    +
    21 using index_type = dr::__detail::dr_extents<Rank>;
    +
    22
    +
    23 mdsub_segment(){};
    +
    24 mdsub_segment(BaseSegment segment, const index_type &slice_starts,
    +
    25 const index_type &slice_ends)
    +
    26 : BaseSegment(segment),
    +
    27 mdspan_(local_tile(segment, slice_starts, slice_ends)),
    +
    28 root_mdspan_(segment.mdspan()) {}
    +
    29
    +
    30 auto mdspan() const { return mdspan_; }
    +
    31 auto root_mdspan() const { return root_mdspan_; }
    +
    32
    +
    33private:
    +
    34 using T = rng::range_value_t<BaseSegment>;
    +
    35
    +
    36 static auto local_tile(BaseSegment segment, const index_type &slice_starts,
    +
    37 const index_type &slice_ends) {
    +
    38 index_type starts, ends;
    +
    39 index_type base_starts = segment.origin();
    +
    40 auto base_mdspan = segment.mdspan();
    +
    41
    +
    42 for (std::size_t i = 0; i < Rank; i++) {
    +
    43 // Clip base to area covered by requested span, and translate from global
    +
    44 // to local indexing
    +
    45 auto base_end = base_starts[i] + base_mdspan.extent(i);
    +
    46 starts[i] =
    +
    47 std::min(base_end, std::max(slice_starts[i], base_starts[i])) -
    +
    48 base_starts[i];
    +
    49 ends[i] = std::max(base_starts[i], std::min(slice_ends[i], base_end)) -
    +
    50 base_starts[i];
    +
    51 }
    +
    52
    +
    53 return dr::__detail::make_submdspan(base_mdspan, starts, ends);
    +
    54 }
    +
    55
    +
    56 md::mdspan<T, dr::__detail::md_extents<Rank>, md::layout_stride> mdspan_;
    +
    57 md::mdspan<T, dr::__detail::md_extents<Rank>, md::layout_stride> root_mdspan_;
    +
    58};
    +
    59
    +
    60} // namespace dr::mhp::__detail
    +
    61
    +
    62namespace dr::mhp {
    +
    63
    +
    64//
    +
    65// Wrap a mdspan view
    +
    66//
    +
    67template <is_mdspan_view Base>
    +
    68struct submdspan_view : public rng::view_interface<submdspan_view<Base>> {
    +
    69private:
    +
    70 static auto make_segments(auto base, auto slice_starts, auto slice_ends) {
    +
    71 auto make_md = [=](auto segment) {
    +
    72 return __detail::mdsub_segment(segment, slice_starts, slice_ends);
    +
    73 };
    +
    74 return dr::ranges::segments(base) | rng::views::transform(make_md);
    +
    75 }
    +
    76
    +
    77 using iterator_type = rng::iterator_t<Base>;
    +
    78 using extents_type = dr::__detail::dr_extents<Base::rank()>;
    +
    79 using difference_type = rng::iter_difference_t<iterator_type>;
    +
    80 using segments_type =
    +
    81 decltype(make_segments(std::declval<Base>(), std::declval<extents_type>(),
    +
    82 std::declval<extents_type>()));
    +
    83
    +
    84 Base base_;
    +
    85 extents_type slice_starts_;
    +
    86 extents_type slice_ends_;
    +
    87 segments_type segments_;
    +
    88
    +
    89public:
    +
    90 submdspan_view(is_mdspan_view auto base, extents_type slice_starts,
    +
    91 extents_type slice_ends)
    +
    92 : base_(base), slice_starts_(std::forward<extents_type>(slice_starts)),
    +
    93 slice_ends_(std::forward<extents_type>(slice_ends)) {
    +
    94 segments_ = make_segments(base_, slice_starts_, slice_ends_);
    +
    95 }
    +
    96
    +
    97 // Base implements random access range
    +
    98 auto begin() const { return base_.begin(); }
    +
    99 auto end() const { return base_.end(); }
    +
    100 auto operator[](difference_type n) { return base_[n]; }
    +
    101
    +
    102 auto mdspan() const {
    +
    103 return dr::__detail::make_submdspan(base_.mdspan(), slice_starts_,
    +
    104 slice_ends_);
    +
    105 }
    +
    106
    +
    107 auto segments() const { return segments_; }
    +
    108
    +
    109 // Mdspan access to grid
    +
    110 auto grid() {
    +
    111 using grid_iterator_type = rng::iterator_t<segments_type>;
    +
    112 using grid_type =
    +
    113 md::mdspan<grid_iterator_type, dr::__detail::md_extents<Base::rank()>,
    +
    114 md::layout_right,
    + +
    116 return grid_type(rng::begin(segments_), base_.grid().extents());
    +
    117 }
    +
    118};
    +
    119
    +
    120template <typename R, typename Extents>
    +
    121submdspan_view(R r, Extents slice_starts, Extents slice_ends)
    + +
    123
    +
    124} // namespace dr::mhp
    +
    125
    +
    126namespace dr::mhp::views {
    +
    127
    +
    128template <typename Extents> class submdspan_adapter_closure {
    +
    129public:
    +
    130 submdspan_adapter_closure(Extents slice_starts, Extents slice_ends)
    +
    131 : slice_starts_(slice_starts), slice_ends_(slice_ends) {}
    +
    132
    +
    133 template <rng::viewable_range R> auto operator()(R &&r) const {
    +
    134 return submdspan_view(std::forward<R>(r), slice_starts_, slice_ends_);
    +
    135 }
    +
    136
    +
    137 template <rng::viewable_range R>
    +
    138 friend auto operator|(R &&r, const submdspan_adapter_closure &closure) {
    +
    139 return closure(std::forward<R>(r));
    +
    140 }
    +
    141
    +
    142private:
    +
    143 Extents slice_starts_;
    +
    144 Extents slice_ends_;
    +
    145};
    +
    146
    + +
    148public:
    +
    149 template <is_mdspan_view R, typename Extents>
    +
    150 auto operator()(R r, Extents &&slice_starts, Extents &&slice_ends) const {
    +
    151 return submdspan_adapter_closure(std::forward<Extents>(slice_starts),
    +
    152 std::forward<Extents>(slice_ends))(
    +
    153 std::forward<R>(r));
    +
    154 }
    +
    155
    +
    156 template <typename Extents>
    +
    157 auto operator()(Extents &&slice_starts, Extents &&slice_ends) const {
    +
    158 return submdspan_adapter_closure(std::forward<Extents>(slice_starts),
    +
    159 std::forward<Extents>(slice_ends));
    +
    160 }
    +
    161};
    +
    162
    +
    163inline constexpr auto submdspan = submdspan_fn_{};
    +
    164
    +
    165} // namespace dr::mhp::views
    +
    Definition: mdspan_utils.hpp:45
    +
    Definition: submdspan_view.hpp:18
    +
    Definition: submdspan_view.hpp:128
    +
    Definition: submdspan_view.hpp:147
    +
    Definition: mdspan_view.hpp:197
    +
    Definition: submdspan_view.hpp:68
    +
    + + + + diff --git a/doxygen/subrange_8hpp_source.html b/doxygen/subrange_8hpp_source.html new file mode 100644 index 0000000000..006357d996 --- /dev/null +++ b/doxygen/subrange_8hpp_source.html @@ -0,0 +1,289 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/containers/subrange.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    subrange.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7#include <dr/detail/ranges_shim.hpp>
    +
    8
    +
    9namespace dr::mhp {
    +
    10
    +
    11template <typename DM> class subrange_iterator {
    +
    12public:
    +
    13 using value_type = typename DM::value_type;
    +
    14 using difference_type = typename DM::difference_type;
    +
    15
    + +
    17
    +
    18 subrange_iterator(DM *dm, std::pair<std::size_t, std::size_t> row_rng,
    +
    19 std::pair<std::size_t, std::size_t> col_rng,
    +
    20 difference_type index = 0) noexcept {
    +
    21 dm_ = dm;
    +
    22 row_rng_ = row_rng;
    +
    23 col_rng_ = col_rng;
    +
    24 index_ = index;
    +
    25 }
    +
    26
    +
    27 value_type &operator*() const {
    +
    28
    +
    29 int offset = dm_->halo_bounds().prev + find_dm_offset(index_) -
    +
    30 default_comm().rank() * dm_->segment_size();
    +
    31
    +
    32 assert(offset >= 0);
    +
    33 assert(offset < (int)dm_->data_size());
    +
    34 return *(dm_->data() + offset);
    +
    35 }
    +
    36
    +
    37 dm_row<value_type> operator[](int n) {
    +
    38 std::size_t rowsize = col_rng_.second - col_rng_.first;
    +
    39
    +
    40 int offset = dm_->halo_bounds().prev +
    +
    41 find_dm_offset((int)(index_ + n * rowsize)) -
    +
    42 default_comm().rank() * dm_->segment_size();
    +
    43
    +
    44 assert(offset >= 0);
    +
    45 assert(offset < (int)dm_->data_size());
    +
    46
    +
    47 signed long idx = default_comm().rank() * dm_->segment_shape()[0]; // ??
    +
    48 value_type *ptr = dm_->data() + offset;
    +
    49 const dv_segment<DM> *segment = &(dm_->segments()[0]); // comm rank ??
    +
    50
    +
    51 return dm_row<value_type>(idx, ptr, rowsize, segment);
    +
    52 }
    +
    53
    +
    54 value_type &operator[](std::pair<int, int> p) {
    +
    55 int offset = dm_->distribution_.halo().prev + find_dm_offset(index_) -
    +
    56 default_comm().rank() * dm_->segment_size() +
    +
    57 dm_->shape()[1] * p.first + p.second;
    +
    58
    +
    59 assert(offset >= 0);
    +
    60 assert(offset < (int)dm_->data_size());
    +
    61 return *(dm_->data() + offset);
    +
    62 }
    +
    63
    +
    64 // friend operators fulfill rng::detail::weakly_equality_comparable_with_
    +
    65 friend bool operator==(subrange_iterator &first, subrange_iterator &second) {
    +
    66 return first.index_ == second.index_;
    +
    67 }
    +
    68 friend bool operator!=(subrange_iterator &first, subrange_iterator &second) {
    +
    69 return first.index_ != second.index_;
    +
    70 }
    +
    71 friend bool operator==(subrange_iterator first, subrange_iterator second) {
    +
    72 return first.index_ == second.index_;
    +
    73 }
    +
    74 friend bool operator!=(subrange_iterator first, subrange_iterator second) {
    +
    75 return first.index_ != second.index_;
    +
    76 }
    +
    77 auto operator<=>(const subrange_iterator &other) const noexcept {
    +
    78 return this->index_ <=> other.index_;
    +
    79 }
    +
    80
    +
    81 // Only these arithmetics manipulate internal state
    +
    82 auto &operator-=(difference_type n) {
    +
    83 index_ -= n;
    +
    84 return *this;
    +
    85 }
    +
    86 auto &operator+=(difference_type n) {
    +
    87 index_ += n;
    +
    88 return *this;
    +
    89 }
    +
    90
    +
    91 difference_type operator-(const subrange_iterator &other) const noexcept {
    +
    92 return index_ - other.index_;
    +
    93 }
    +
    94 // prefix
    +
    95 auto &operator++() {
    +
    96 index_ += 1;
    +
    97 return *this;
    +
    98 }
    +
    99 auto &operator--() {
    +
    100 index_ -= 1;
    +
    101 return *this;
    +
    102 }
    +
    103
    +
    104 // postfix
    +
    105 auto operator++(int) {
    +
    106 auto prev = *this;
    +
    107 index_ += 1;
    +
    108 return prev;
    +
    109 }
    +
    110 auto operator--(int) {
    +
    111 auto prev = *this;
    +
    112 index_ -= 1;
    +
    113 return prev;
    +
    114 }
    +
    115
    +
    116 auto operator+(difference_type n) const {
    +
    117 return subrange_iterator(dm_, row_rng_, col_rng_, index_ + n);
    +
    118 }
    +
    119 auto operator-(difference_type n) const {
    +
    120 return subrange_iterator(dm_, row_rng_, col_rng_, index_ - n);
    +
    121 }
    +
    122
    +
    123 // When *this is not first in the expression
    +
    124 friend auto operator+(difference_type n, const subrange_iterator &other) {
    +
    125 return other + n;
    +
    126 }
    +
    127
    +
    128 auto &halo() { return dm_->halo(); }
    +
    129 auto segments() { return dm_->segments(); }
    +
    130
    +
    131 bool is_local() { return dm_->is_local_cell(find_dm_offset(index_)); }
    +
    132
    +
    133 // for debug purposes
    +
    134 std::size_t find_dm_offset() const { return find_dm_offset(index_); }
    +
    135
    +
    136private:
    +
    137 /*
    +
    138 * converts index within subrange (viewed as linear contiguous space)
    +
    139 * into index within physical segment in dm
    +
    140 */
    +
    141 std::size_t find_dm_offset(int index) const {
    +
    142 int ind_rows, ind_cols;
    +
    143 int offset = 0;
    +
    144
    +
    145 ind_rows = index / (col_rng_.second - col_rng_.first);
    +
    146 ind_cols = index % (col_rng_.second - col_rng_.first);
    +
    147
    +
    148 if (ind_cols < 0) {
    +
    149 ind_rows -= 1;
    +
    150 ind_cols += (col_rng_.second - col_rng_.first);
    +
    151 }
    +
    152
    +
    153 offset += row_rng_.first * dm_->shape()[1] + col_rng_.first;
    +
    154 offset += (int)(ind_rows * dm_->shape()[1] + ind_cols);
    +
    155
    +
    156 return offset;
    +
    157 };
    +
    158
    +
    159private:
    +
    160 DM *dm_ = nullptr;
    +
    161 std::pair<int, int> row_rng_ = std::pair<int, int>(0, 0);
    +
    162 std::pair<int, int> col_rng_ = std::pair<int, int>(0, 0);
    +
    163
    +
    164 std::size_t index_ = 0;
    +
    165}; // class subrange_iterator
    +
    166
    +
    167template <typename DM>
    +
    168class subrange : public rng::view_interface<subrange<DM>> {
    +
    169public:
    + +
    171 using value_type = typename DM::value_type;
    +
    172
    +
    173 subrange(DM &dm, std::pair<std::size_t, std::size_t> row_rng,
    +
    174 std::pair<std::size_t, std::size_t> col_rng) {
    +
    175 dm_ = &dm;
    +
    176 row_rng_ = row_rng;
    +
    177 col_rng_ = col_rng;
    +
    178
    +
    179 subrng_size_ =
    +
    180 (col_rng.second - col_rng.first) * (row_rng.second - row_rng.first);
    +
    181 }
    +
    182
    +
    183 iterator begin() const { return iterator(dm_, row_rng_, col_rng_); }
    +
    184 iterator end() const { return begin() + subrng_size_; }
    +
    185
    +
    186 auto size() { return subrng_size_; }
    +
    187
    +
    188 auto &halo() const { return dm_->halo(); }
    +
    189 auto segments() const { return dm_->segments(); }
    +
    190
    +
    191private:
    +
    192 DM *dm_;
    +
    193 std::pair<std::size_t, std::size_t> row_rng_;
    +
    194 std::pair<std::size_t, std::size_t> col_rng_;
    +
    195
    +
    196 std::size_t subrng_size_ = 0;
    +
    197
    +
    198}; // class subrange
    +
    199
    +
    200} // namespace dr::mhp
    +
    Definition: index.hpp:34
    +
    Definition: segment.hpp:214
    +
    Definition: subrange.hpp:11
    +
    Definition: subrange.hpp:168
    +
    + + + + diff --git a/doxygen/sycl__support_8hpp_source.html b/doxygen/sycl__support_8hpp_source.html new file mode 100644 index 0000000000..fbcbb9b31b --- /dev/null +++ b/doxygen/sycl__support_8hpp_source.html @@ -0,0 +1,160 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/sycl_support.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    sycl_support.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7#ifdef SYCL_LANGUAGE_VERSION
    +
    8
    +
    9namespace dr::mhp {
    +
    10
    +
    11sycl::queue &sycl_queue();
    +
    12
    +
    13} // namespace dr::mhp
    +
    14
    +
    15namespace dr::mhp::__detail {
    +
    16
    +
    17template <typename T> T sycl_get(T &v) {
    +
    18 T temp;
    +
    19 sycl_queue().memcpy(&temp, &v, sizeof(v)).wait();
    +
    20 return temp;
    +
    21}
    +
    22
    +
    23template <typename T> void sycl_copy(T *begin, T *end, T *dst) {
    +
    24 sycl_queue().memcpy(dst, begin, (end - begin) * sizeof(T)).wait();
    +
    25}
    +
    26
    +
    27template <typename T, std::size_t Alignment>
    +
    28using shared_base_allocator =
    +
    29 sycl::usm_allocator<T, sycl::usm::alloc::shared, Alignment>;
    +
    30
    +
    31}; // namespace dr::mhp::__detail
    +
    32
    +
    33namespace dr::mhp {
    +
    34
    +
    35template <typename T, std::size_t Alignment = 0>
    +
    36class sycl_shared_allocator
    +
    37 : public __detail::shared_base_allocator<T, Alignment> {
    +
    38public:
    +
    39 sycl_shared_allocator(sycl::queue q = sycl_queue())
    +
    40 : __detail::shared_base_allocator<T, Alignment>(q) {}
    +
    41};
    +
    42
    +
    43struct device_policy {
    +
    44 device_policy(sycl::queue q = sycl_queue()) : queue(q), dpl_policy(q) {}
    +
    45
    +
    46 sycl::queue queue;
    +
    47 decltype(oneapi::dpl::execution::make_device_policy(queue)) dpl_policy;
    +
    48};
    +
    49
    +
    50} // namespace dr::mhp
    +
    51
    +
    52#else // !SYCL_LANGUAGE_VERSION
    +
    53
    +
    54namespace dr::mhp {
    +
    55
    +
    56struct device_policy {};
    +
    57
    +
    58} // namespace dr::mhp
    +
    59
    +
    60namespace dr::mhp::__detail {
    +
    61
    +
    62// define here to avoid ifdefs where it is called
    +
    63template <typename T> T sycl_get(T &v) {
    +
    64 assert(false);
    +
    65 return v;
    +
    66}
    +
    67
    +
    68template <typename T> void sycl_copy(T *begin, T *end, T *dst) {
    +
    69 assert(false);
    +
    70}
    +
    71
    +
    72} // namespace dr::mhp::__detail
    +
    73
    +
    74#endif // SYCL_LANGUAGE_VERSION
    +
    Definition: sycl_support.hpp:56
    +
    + + + + diff --git a/doxygen/sycl__utils_8hpp_source.html b/doxygen/sycl__utils_8hpp_source.html new file mode 100644 index 0000000000..09377f1d74 --- /dev/null +++ b/doxygen/sycl__utils_8hpp_source.html @@ -0,0 +1,222 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail/sycl_utils.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    sycl_utils.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7#include <limits>
    +
    8
    +
    9#include <dr/detail/utils.hpp>
    +
    10
    +
    11#ifdef SYCL_LANGUAGE_VERSION
    +
    12
    +
    13#include <sycl/sycl.hpp>
    +
    14
    +
    15namespace dr::__detail {
    +
    16
    +
    17//
    +
    18// return true if the device can be partitioned by affinity domain
    +
    19//
    +
    20inline auto partitionable(sycl::device device) {
    +
    21 // Earlier commits used the query API, but they return true even
    +
    22 // though a partition will fail: Intel MPI mpirun with multiple
    +
    23 // processes.
    +
    24 try {
    +
    25 device.create_sub_devices<
    +
    26 sycl::info::partition_property::partition_by_affinity_domain>(
    +
    27 sycl::info::partition_affinity_domain::numa);
    +
    28 } catch (sycl::exception const &e) {
    +
    29 if (e.code() == sycl::errc::invalid ||
    +
    30 e.code() == sycl::errc::feature_not_supported) {
    +
    31 return false;
    +
    32 } else {
    +
    33 throw;
    +
    34 }
    +
    35 }
    +
    36
    +
    37 return true;
    +
    38}
    +
    39
    +
    40// Convert a global range to a nd_range using generic block size level
    +
    41// gpu requires uniform size workgroup, so round up to a multiple of a
    +
    42// workgroup.
    +
    43template <int Dim> auto nd_range(sycl::range<Dim> global) {
    +
    44 if constexpr (Dim == 1) {
    +
    45 sycl::range local(128);
    +
    46 return sycl::nd_range<Dim>(sycl::range(round_up(global[0], local[0])),
    +
    47 local);
    +
    48 } else if constexpr (Dim == 2) {
    +
    49 sycl::range local(16, 16);
    +
    50 return sycl::nd_range<Dim>(sycl::range(round_up(global[0], local[0]),
    +
    51 round_up(global[1], local[1])),
    +
    52 local);
    +
    53 } else if constexpr (Dim == 3) {
    +
    54 sycl::range local(8, 8, 8);
    +
    55 return sycl::nd_range<Dim>(sycl::range(round_up(global[0], local[0]),
    +
    56 round_up(global[1], local[1]),
    +
    57 round_up(global[2], local[2])),
    +
    58 local);
    +
    59 } else {
    +
    60 assert(false);
    +
    61 return sycl::range(0);
    +
    62 }
    +
    63}
    +
    64
    +
    65template <typename Fn>
    +
    66sycl::event parallel_for_nd(sycl::queue &q, sycl::range<1> global, Fn &&fn) {
    +
    67 return q.parallel_for(nd_range(global), [=](auto nd_idx) {
    +
    68 auto idx0 = nd_idx.get_global_id(0);
    +
    69 if (idx0 < global[0]) {
    +
    70 fn(idx0);
    +
    71 }
    +
    72 });
    +
    73}
    +
    74
    +
    75template <typename Fn>
    +
    76sycl::event parallel_for_nd(sycl::queue &q, sycl::range<2> global, Fn &&fn) {
    +
    77 return q.parallel_for(nd_range(global), [=](auto nd_idx) {
    +
    78 auto idx0 = nd_idx.get_global_id(0);
    +
    79 auto idx1 = nd_idx.get_global_id(1);
    +
    80 if (idx0 < global[0] && idx1 < global[1]) {
    +
    81 fn(std::array{idx0, idx1});
    +
    82 }
    +
    83 });
    +
    84}
    +
    85
    +
    86template <typename Fn>
    +
    87sycl::event parallel_for_nd(sycl::queue &q, sycl::range<3> global, Fn &&fn) {
    +
    88 return q.parallel_for(nd_range(global), [=](auto nd_idx) {
    +
    89 auto idx0 = nd_idx.get_global_id(0);
    +
    90 auto idx1 = nd_idx.get_global_id(1);
    +
    91 auto idx2 = nd_idx.get_global_id(2);
    +
    92 if (idx0 < global[0] && idx1 < global[1] && idx2 < global[2]) {
    +
    93 fn(std::array{idx0, idx1, idx2});
    +
    94 }
    +
    95 });
    +
    96}
    +
    97
    +
    98auto combine_events(sycl::queue &q, const auto &events) {
    +
    99 return q.submit([&](auto &&h) {
    +
    100 h.depends_on(events);
    +
    101 // Empty host task necessary due to [CMPLRLLVM-46542]
    +
    102 h.host_task([] {});
    +
    103 });
    +
    104}
    +
    105
    +
    106template <typename Fn>
    +
    107sycl::event parallel_for(sycl::queue &q, sycl::range<1> global, Fn &&fn) {
    +
    108 std::vector<sycl::event> events;
    +
    109
    +
    110 // Chunks are 32 bits
    +
    111 for (std::size_t remainder = global[0]; remainder != 0;) {
    +
    112 std::size_t chunk = std::min(
    +
    113 remainder, std::size_t(std::numeric_limits<std::int32_t>::max()));
    +
    114 events.push_back(parallel_for_nd(q, sycl::range<>(chunk), fn));
    +
    115 remainder -= chunk;
    +
    116 }
    +
    117
    +
    118 return combine_events(q, events);
    +
    119}
    +
    120
    +
    121template <typename Fn>
    +
    122sycl::event parallel_for(sycl::queue &q, sycl::range<2> global, Fn &&fn) {
    +
    123 auto max = std::numeric_limits<std::int32_t>::max();
    +
    124 assert(global[0] < max && global[1] < max);
    +
    125 return parallel_for_nd(q, global, fn);
    +
    126}
    +
    127
    +
    128template <typename Fn>
    +
    129sycl::event parallel_for(sycl::queue &q, sycl::range<3> global, Fn &&fn) {
    +
    130 auto max = std::numeric_limits<std::int32_t>::max();
    +
    131 assert(global[0] < max && global[1] < max && global[2] < max);
    +
    132 return parallel_for_nd(q, global, fn);
    +
    133}
    +
    134
    +
    135} // namespace dr::__detail
    +
    136
    +
    137#endif // SYCL_LANGUAGE_VERSION
    +
    + + + + diff --git a/doxygen/sync_off.png b/doxygen/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/doxygen/sync_on.png b/doxygen/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/doxygen/tab_a.png b/doxygen/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/doxygen/tab_ad.png b/doxygen/tab_ad.png new file mode 100644 index 0000000000000000000000000000000000000000..e34850acfc24be58da6d2fd1ccc6b29cc84fe34d GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QhuH;jv*C{Z|5d*H3V=pKi{In zd2jxLclDRPylmD}^l7{QOtL{vUjO{-WqItb5sQp2h-99b8^^Scr-=2mblCdZuUm?4 jzOJvgvt3{(cjKLW5(A@0qPS@<&}0TrS3j3^P6y&q2{!U5bk+Tso_B!YCpDh>v z{CM*1U8YvQRyBUHt^Ju0W_sq-?;9@_4equ-bavTs=gk796zopr0EBT&m;e9( literal 0 HcmV?d00001 diff --git a/doxygen/tab_s.png b/doxygen/tab_s.png new file mode 100644 index 0000000000000000000000000000000000000000..ab478c95b67371d700a20869f7de1ddd73522d50 GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QuUrLjv*C{Z|^p8HaRdjTwH7) zC?wLlL}}I{)n%R&r+1}IGmDnq;&J#%V6)9VsYhS`O^BVBQlxOUep0c$RENLq#g8A$ z)z7%K_bI&n@J+X_=x}fJoEKed-$<>=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/doxygen/tab_sd.png b/doxygen/tab_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..757a565ced4730f85c833fb2547d8e199ae68f19 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qq7(&jv*C{Z|_!fH5o7*c=%9% zcILh!EA=pAQKdx-Cdiev=v{eg{8Ht<{e8_NAN~b=)%W>-WDCE0PyDHGemi$BoXwcK z{>e9^za6*c1ilttWw&V+U;WCPlV9{LdC~Ey%_H(qj`xgfES(4Yz5jSTZfCt`4E$0YRsR*S^mTCR^;V&sxC8{l_Cp7w8-YPgg&ebxsLQ00$vXK>z>% literal 0 HcmV?d00001 diff --git a/doxygen/tabs.css b/doxygen/tabs.css new file mode 100644 index 0000000000..71c8a4704c --- /dev/null +++ b/doxygen/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:0}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important;color:var(--nav-menu-foreground-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} \ No newline at end of file diff --git a/doxygen/tuple__utils_8hpp_source.html b/doxygen/tuple__utils_8hpp_source.html new file mode 100644 index 0000000000..090c84ec0b --- /dev/null +++ b/doxygen/tuple__utils_8hpp_source.html @@ -0,0 +1,113 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail/tuple_utils.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    tuple_utils.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7namespace dr::__detail {
    +
    8
    +
    9auto tuple_transform(auto tuple, auto op) {
    +
    10 auto transform = [op](auto &&...items) {
    +
    11 return std::make_tuple(op(items)...);
    +
    12 };
    +
    13 return std::apply(transform, tuple);
    +
    14}
    +
    15
    +
    16auto tie_transform(auto tuple, auto op) {
    +
    17 auto transform = [op]<typename... Items>(Items &&...items) {
    +
    18 return std::tie(op(std::forward<Items>(items))...);
    +
    19 };
    +
    20 return std::apply(transform, tuple);
    +
    21}
    +
    22
    +
    23auto tuple_foreach(auto tuple, auto op) {
    +
    24 auto transform = [op](auto... items) { (op(items), ...); };
    +
    25 std::apply(transform, tuple);
    +
    26}
    +
    27
    +
    28} // namespace dr::__detail
    +
    + + + + diff --git a/doxygen/util_8hpp_source.html b/doxygen/util_8hpp_source.html new file mode 100644 index 0000000000..11e0fbeec4 --- /dev/null +++ b/doxygen/util_8hpp_source.html @@ -0,0 +1,332 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/util.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    util.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7#include <iostream>
    +
    8#include <sycl/sycl.hpp>
    +
    9
    +
    10namespace dr::shp {
    +
    11
    +
    12template <typename Selector> sycl::device select_device(Selector &&selector) {
    +
    13 sycl::device d;
    +
    14
    +
    15 try {
    +
    16 d = sycl::device(std::forward<Selector>(selector));
    +
    17 std::cout << "Running on device \""
    +
    18 << d.get_info<sycl::info::device::name>() << "\"" << std::endl;
    +
    19 } catch (sycl::exception const &e) {
    +
    20 std::cout << "Cannot select an accelerator\n" << e.what() << "\n";
    +
    21 std::cout << "Using a CPU device\n";
    +
    22 d = sycl::device(sycl::cpu_selector_v);
    +
    23 }
    +
    24 return d;
    +
    25}
    +
    26
    +
    27inline void list_devices() {
    +
    28 auto platforms = sycl::platform::get_platforms();
    +
    29
    +
    30 for (auto &platform : platforms) {
    +
    31 std::cout << "Platform: " << platform.get_info<sycl::info::platform::name>()
    +
    32 << std::endl;
    +
    33
    +
    34 auto devices = platform.get_devices();
    +
    35 for (auto &device : devices) {
    +
    36 std::cout << " Device: " << device.get_info<sycl::info::device::name>()
    +
    37 << std::endl;
    +
    38 }
    +
    39 }
    +
    40}
    +
    41
    +
    42inline void print_device_details(std::span<sycl::device> devices) {
    +
    43 std::size_t device_id = 0;
    +
    44 for (auto &&device : devices) {
    +
    45 std::cout << "Device " << device_id << ": "
    +
    46 << device.get_info<sycl::info::device::name>() << std::endl;
    +
    47 device_id++;
    +
    48 }
    +
    49}
    +
    50
    +
    51template <typename Selector> void list_devices(Selector &&selector) {
    +
    52 sycl::platform p(std::forward<Selector>(selector));
    +
    53 auto devices = p.get_devices();
    +
    54
    +
    55 printf("--Platform Info-----------------\n");
    +
    56
    +
    57 printf("Platform %s has %lu root devices.\n",
    +
    58 p.get_info<sycl::info::platform::name>().c_str(), devices.size());
    +
    59
    +
    60 for (std::size_t i = 0; i < devices.size(); i++) {
    +
    61 auto &&device = devices[i];
    +
    62
    +
    63 printf(" %lu %s\n", i,
    +
    64 device.get_info<sycl::info::device::name>().c_str());
    +
    65
    +
    66 auto subdevices = device.create_sub_devices<
    +
    67 sycl::info::partition_property::partition_by_affinity_domain>(
    +
    68 sycl::info::partition_affinity_domain::numa);
    +
    69
    +
    70 printf(" Subdevices:\n");
    +
    71 for (std::size_t j = 0; j < subdevices.size(); j++) {
    +
    72 auto &&subdevice = subdevices[j];
    +
    73 printf(" %lu.%lu %s\n", i, j,
    +
    74 subdevice.get_info<sycl::info::device::name>().c_str());
    +
    75 }
    +
    76 }
    +
    77
    +
    78 printf("--------------------------------\n");
    +
    79}
    +
    80
    +
    81inline std::vector<sycl::device>
    +
    82trim_devices(const std::vector<sycl::device> &devices, std::size_t n_devices) {
    +
    83 std::vector<sycl::device> trimmed_devices = devices;
    +
    84
    +
    85 if (n_devices < devices.size()) {
    +
    86 trimmed_devices.resize(n_devices);
    +
    87 }
    +
    88 return trimmed_devices;
    +
    89}
    +
    90
    +
    91template <typename Selector>
    +
    92std::vector<sycl::device> get_numa_devices_impl_(Selector &&selector) {
    +
    93 std::vector<sycl::device> devices;
    +
    94
    +
    95 sycl::platform p(std::forward<Selector>(selector));
    +
    96 auto root_devices = p.get_devices();
    +
    97
    +
    98 for (auto &&root_device : root_devices) {
    +
    99 auto subdevices = root_device.create_sub_devices<
    +
    100 sycl::info::partition_property::partition_by_affinity_domain>(
    +
    101 sycl::info::partition_affinity_domain::numa);
    +
    102
    +
    103 for (auto &&subdevice : subdevices) {
    +
    104 devices.push_back(subdevice);
    +
    105 }
    +
    106 }
    +
    107
    +
    108 return devices;
    +
    109}
    +
    110
    +
    111template <typename Selector>
    +
    112std::vector<sycl::device> get_devices(Selector &&selector) {
    +
    113 sycl::platform p(std::forward<Selector>(selector));
    +
    114 return p.get_devices();
    +
    115}
    +
    116
    +
    117template <typename Selector>
    +
    118std::vector<sycl::device> get_numa_devices(Selector &&selector) {
    +
    119 try {
    +
    120 return get_numa_devices_impl_(std::forward<Selector>(selector));
    +
    121 } catch (sycl::exception const &e) {
    +
    122 if (e.code() == sycl::errc::feature_not_supported) {
    +
    123 std::cerr << "NUMA partitioning not supported, returning root devices..."
    +
    124 << std::endl;
    +
    125 return get_devices(std::forward<Selector>(selector));
    +
    126 } else {
    +
    127 throw;
    +
    128 }
    +
    129 }
    +
    130}
    +
    131
    +
    132// Return exactly `n` devices obtained using the selector `selector`.
    +
    133// May duplicate devices
    +
    134template <typename Selector>
    +
    135std::vector<sycl::device> get_duplicated_devices(Selector &&selector,
    +
    136 std::size_t n) {
    +
    137 auto devices = get_numa_devices(std::forward<Selector>(selector));
    +
    138
    +
    139 if (devices.size() >= n) {
    +
    140 return std::vector<sycl::device>(devices.begin(), devices.begin() + n);
    +
    141 } else {
    +
    142 std::size_t i = 0;
    +
    143 while (devices.size() < n) {
    +
    144 auto d = devices[i++];
    +
    145 devices.push_back(d);
    +
    146 }
    +
    147 return devices;
    +
    148 }
    +
    149}
    +
    150
    +
    151template <typename Range> void print_range(Range &&r, std::string label = "") {
    +
    152 std::size_t indent = 1;
    +
    153
    +
    154 if (label != "") {
    +
    155 std::cout << "\"" << label << "\": ";
    +
    156 indent += label.size() + 4;
    +
    157 }
    +
    158
    +
    159 std::string indent_whitespace(indent, ' ');
    +
    160
    +
    161 std::cout << "[";
    +
    162 std::size_t columns = 10;
    +
    163 std::size_t count = 1;
    +
    164 for (auto iter = r.begin(); iter != r.end(); ++iter) {
    +
    165 std::cout << static_cast<rng::range_value_t<Range>>(*iter);
    +
    166
    +
    167 auto next = iter;
    +
    168 ++next;
    +
    169 if (next != r.end()) {
    +
    170 std::cout << ", ";
    +
    171 if (count % columns == 0) {
    +
    172 std::cout << "\n" << indent_whitespace;
    +
    173 }
    +
    174 }
    +
    175 ++count;
    +
    176 }
    +
    177 std::cout << "]" << std::endl;
    +
    178}
    +
    179
    +
    180template <typename Matrix>
    +
    181void print_matrix(Matrix &&m, std::string label = "") {
    +
    182 std::cout << m.shape()[0] << " x " << m.shape()[1] << " matrix with "
    +
    183 << m.size() << " stored values";
    +
    184 if (label != "") {
    +
    185 std::cout << " \"" << label << "\"";
    +
    186 }
    +
    187 std::cout << std::endl;
    +
    188
    +
    189 for (auto &&tuple : m) {
    +
    190 auto &&[index, value] = tuple;
    +
    191 auto &&[i, j] = index;
    +
    192
    +
    193 std::cout << "(" << i << ", " << j << "): " << value << std::endl;
    +
    194 }
    +
    195}
    +
    196
    +
    197template <typename R> void print_range_details(R &&r, std::string label = "") {
    +
    198 if (label != "") {
    +
    199 std::cout << "\"" << label << "\" ";
    +
    200 }
    +
    201
    +
    202 std::cout << "distributed range with " << rng::size(dr::ranges::segments(r))
    +
    203 << " segments." << std::endl;
    +
    204
    +
    205 std::size_t idx = 0;
    +
    206 for (auto &&segment : dr::ranges::segments(r)) {
    +
    207 std::cout << "Seg " << idx++ << ", size " << segment.size() << " (rank "
    +
    208 << dr::ranges::rank(segment) << ")" << std::endl;
    +
    209 }
    +
    210}
    +
    211
    +
    212template <dr::distributed_range R>
    +
    213void range_details(R &&r, std::size_t width = 80) {
    +
    214 std::size_t size = rng::size(r);
    +
    215
    +
    216 for (auto &&[idx, segment] :
    +
    217 dr::__detail::enumerate(dr::ranges::segments(r))) {
    +
    218 std::size_t local_size = rng::size(segment);
    +
    219
    +
    220 double percent = double(local_size) / size;
    +
    221
    +
    222 std::size_t num_chars = percent * width;
    +
    223 num_chars = std::max(num_chars, std::size_t(3));
    +
    224
    +
    225 std::size_t whitespace = num_chars - 3;
    +
    226
    +
    227 std::size_t initial_whitespace = whitespace / 2;
    +
    228 std::size_t after_whitespace = whitespace - initial_whitespace;
    +
    229
    +
    230 std::cout << "[" << std::string(initial_whitespace, ' ')
    +
    231 << dr::ranges::rank(segment) << std::string(after_whitespace, ' ')
    +
    232 << "]";
    +
    233 }
    +
    234 std::cout << std::endl;
    +
    235}
    +
    236
    +
    237namespace __detail {
    +
    238
    +
    239template <typename T>
    +
    240concept sycl_device_selector = requires(T &t, const sycl::device &device) {
    +
    241 { t(device) } -> std::convertible_to<int>;
    +
    242};
    +
    243
    +
    244}
    +
    245
    +
    246} // namespace dr::shp
    + +
    + + + + diff --git a/doxygen/utils_8hpp_source.html b/doxygen/utils_8hpp_source.html new file mode 100644 index 0000000000..99bb58b0e0 --- /dev/null +++ b/doxygen/utils_8hpp_source.html @@ -0,0 +1,115 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail/utils.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    utils.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7namespace dr::__detail {
    +
    8
    +
    9inline std::size_t round_up(std::size_t n, std::size_t multiple) {
    +
    10 if (multiple == 0) {
    +
    11 return n;
    +
    12 }
    +
    13
    +
    14 int remainder = n % multiple;
    +
    15 if (remainder == 0) {
    +
    16 return n;
    +
    17 }
    +
    18
    +
    19 return n + multiple - remainder;
    +
    20}
    +
    21
    +
    22inline std::size_t partition_up(std::size_t n, std::size_t multiple) {
    +
    23 if (multiple == 0) {
    +
    24 return n;
    +
    25 }
    +
    26
    +
    27 return round_up(n, multiple) / multiple;
    +
    28}
    +
    29
    +
    30} // namespace dr::__detail
    +
    + + + + diff --git a/doxygen/vector_8hpp_source.html b/doxygen/vector_8hpp_source.html new file mode 100644 index 0000000000..df67e5418c --- /dev/null +++ b/doxygen/vector_8hpp_source.html @@ -0,0 +1,334 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/vector.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    vector.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7#include <memory>
    +
    8
    +
    9namespace dr::shp {
    +
    10
    +
    11// TODO: deal properly with non-trivially destructible types
    +
    12// - constructors, destructors, assign
    +
    13
    +
    14template <typename T, typename Allocator = std::allocator<T>> class vector {
    +
    15public:
    +
    16 using value_type = T;
    +
    17 using allocator_type = Allocator;
    +
    18 using size_type = std::size_t;
    +
    19 using difference_type = std::ptrdiff_t;
    +
    20 using pointer = typename std::allocator_traits<allocator_type>::pointer;
    +
    21 using const_pointer =
    +
    22 typename std::allocator_traits<allocator_type>::const_pointer;
    +
    23 using reference = decltype(*std::declval<pointer>());
    +
    24 using const_reference = decltype(*std::declval<const_pointer>());
    +
    25 using iterator = pointer;
    +
    26 using const_iterator = const_pointer;
    +
    27
    +
    28 vector() noexcept {}
    +
    29 explicit vector(const Allocator &allocator) noexcept
    +
    30 : allocator_(allocator) {}
    +
    31
    +
    32 explicit vector(size_type count, const T &value,
    +
    33 const Allocator &alloc = Allocator())
    +
    34 : allocator_(alloc) {
    +
    35 change_capacity_impl_(count);
    +
    36 using namespace std;
    +
    37 fill(data(), data() + size(), value);
    +
    38 }
    +
    39
    +
    40 explicit vector(size_type count, const Allocator &alloc = Allocator())
    +
    41 : allocator_(alloc) {
    +
    42 change_capacity_impl_(count);
    +
    43 using namespace std;
    +
    44 fill(data(), data() + size(), T{});
    +
    45 }
    +
    46
    +
    47 template <std::forward_iterator Iter>
    +
    48 constexpr vector(Iter first, Iter last, const Allocator &alloc = Allocator())
    +
    49 : allocator_(alloc) {
    +
    50 change_capacity_impl_(rng::distance(first, last));
    +
    51 using namespace std;
    +
    52 copy(first, last, begin());
    +
    53 }
    +
    54
    +
    55 vector(const vector &other) : allocator_(other.get_allocator()) {
    +
    56 change_capacity_impl_(other.size());
    +
    57 using namespace std;
    +
    58 copy(other.begin(), other.end(), begin());
    +
    59 }
    +
    60
    +
    61 vector(const vector &other, const Allocator &alloc) : allocator_(alloc) {
    +
    62 change_capacity_impl_(other.size());
    +
    63 using namespace std;
    +
    64 copy(other.begin(), other.end(), begin());
    +
    65 }
    +
    66
    +
    67 vector(vector &&other) noexcept
    +
    68 requires(std::is_trivially_move_constructible_v<T>)
    +
    69 : allocator_(other.get_allocator()) {
    +
    70 data_ = other.data_;
    +
    71 other.data_ = nullptr;
    +
    72 size_ = other.size_;
    +
    73 other.size_ = 0;
    +
    74 capacity_ = other.capacity_;
    +
    75 other.capacity_ = 0;
    +
    76 }
    +
    77
    +
    78 vector(vector &&other, const Allocator &alloc) noexcept
    +
    79 requires(std::is_trivially_move_constructible_v<T>)
    +
    80 : allocator_(alloc) {
    +
    81 data_ = other.data_;
    +
    82 other.data_ = nullptr;
    +
    83 size_ = other.size_;
    +
    84 other.size_ = 0;
    +
    85 capacity_ = other.capacity_;
    +
    86 other.capacity_ = 0;
    +
    87 }
    +
    88
    +
    89 vector(std::initializer_list<T> init, const Allocator &alloc = Allocator())
    +
    90 : allocator_(alloc) {
    +
    91 change_capacity_impl_(init.size());
    +
    92 using namespace std;
    +
    93 copy(init.begin(), init.end(), begin());
    +
    94 }
    +
    95
    +
    96 vector &operator=(const vector &other) {
    +
    97 assign(other.begin(), other.end());
    +
    98 return *this;
    +
    99 }
    +
    100
    +
    101 template <std::forward_iterator Iter> void assign(Iter first, Iter last) {
    +
    102 auto new_size = rng::distance(first, last);
    +
    103 reserve(new_size);
    +
    104 using namespace std;
    +
    105 copy(first, last, begin());
    +
    106 size_ = new_size;
    +
    107 }
    +
    108
    +
    109 ~vector() noexcept {
    +
    110 /*
    +
    111 for (auto iter = begin(); iter != end(); ++iter) {
    +
    112 std::allocator_traits<allocator_type>::destroy(allocator_, iter);
    +
    113 }
    +
    114 */
    +
    115 if (data() != nullptr) {
    +
    116 allocator_.deallocate(data(), capacity());
    +
    117 }
    +
    118 }
    +
    119
    +
    120 size_type size() const noexcept { return size_; }
    +
    121
    +
    122 bool empty() const noexcept { return size() == 0; }
    +
    123
    +
    124 size_type capacity() const noexcept { return capacity_; }
    +
    125
    +
    126 pointer data() noexcept { return data_; }
    +
    127
    +
    128 const_pointer data() const noexcept { return data_; }
    +
    129
    +
    130 allocator_type get_allocator() const noexcept { return allocator_; }
    +
    131
    +
    132 iterator begin() noexcept { return data_; }
    +
    133
    +
    134 iterator end() noexcept { return begin() + size(); }
    +
    135
    +
    136 const_iterator begin() const noexcept { return data_; }
    +
    137
    +
    138 const_iterator end() const noexcept { return begin() + size(); }
    +
    139
    +
    140 reference operator[](size_type pos) { return *(begin() + pos); }
    +
    141
    +
    142 const_reference operator[](size_type pos) const { return *(begin() + pos); }
    +
    143
    +
    144 void reserve(size_type new_cap) {
    +
    145 if (new_cap > capacity()) {
    +
    146 pointer new_data = get_allocator().allocate(new_cap);
    +
    147 using namespace std;
    +
    148 if (begin() != end()) {
    +
    149 using namespace std;
    +
    150 copy(begin(), end(), new_data);
    +
    151 }
    +
    152 if (data_ != nullptr) {
    +
    153 get_allocator().deallocate(data_, capacity());
    +
    154 }
    +
    155 data_ = new_data;
    +
    156 capacity_ = new_cap;
    +
    157 }
    +
    158 }
    +
    159
    +
    160 void push_back(const T &value) {
    +
    161 if (size() + 1 > capacity()) {
    +
    162 size_type new_capacity = next_highest_power_of_two_impl_(capacity());
    +
    163 reserve(new_capacity);
    +
    164 }
    +
    165
    +
    166 data()[size()] = value;
    +
    167 ++size_;
    +
    168 }
    +
    169
    +
    170 void push_back(T &&value) {
    +
    171 if (size() + 1 > capacity()) {
    +
    172 size_type new_capacity = next_highest_power_of_two_impl_(capacity());
    +
    173 reserve(new_capacity);
    +
    174 }
    +
    175
    +
    176 data()[size()] = std::move(value);
    +
    177 ++size_;
    +
    178 }
    +
    179
    +
    180 bool try_push_back(const T &value) {
    +
    181 if (size() + 1 <= capacity()) {
    +
    182 data()[size()] = value;
    +
    183 ++size_;
    +
    184 return true;
    +
    185 }
    +
    186 return false;
    +
    187 }
    +
    188
    +
    189 // TODO: properly construct/destruct
    +
    190 void resize(size_type count) {
    +
    191 if (count > capacity()) {
    +
    192 reserve(count);
    +
    193 }
    +
    194 if (count > size()) {
    +
    195 /*
    +
    196 for (std::size_t i = 0; i < count - size(); i++) {
    +
    197 end()[i] = T();
    +
    198 }
    +
    199 */
    +
    200 }
    +
    201 size_ = count;
    +
    202 }
    +
    203
    +
    204 void resize(size_type count, const value_type &value) {
    +
    205 if (count > capacity()) {
    +
    206 reserve(count);
    +
    207 }
    +
    208 if (count > size()) {
    +
    209 for (std::size_t i = 0; i < count - size(); i++) {
    +
    210 end()[i] = value;
    +
    211 }
    +
    212 }
    +
    213 size_ = count;
    +
    214 }
    +
    215
    +
    216private:
    +
    217 // For use only inside constructors and assignment operators
    +
    218 void change_capacity_impl_(size_type count) {
    +
    219 if (data_ != nullptr && capacity_ != count) {
    +
    220 allocator_.deallocate(data_, capacity());
    +
    221 }
    +
    222 size_ = capacity_ = count;
    +
    223 data_ = size_ ? allocator_.allocate(count) : nullptr;
    +
    224 }
    +
    225
    +
    226 // NOTE: algorithm copied from "Bit Twiddling Hacks"
    +
    227 // (Public domain)
    +
    228 constexpr size_type next_highest_power_of_two_impl_(size_type n) {
    +
    229 n--;
    +
    230 n |= n >> 1;
    +
    231 n |= n >> 2;
    +
    232 n |= n >> 4;
    +
    233 n |= n >> 8;
    +
    234 if constexpr (sizeof(size_type) > 2)
    +
    235 n |= n >> 16;
    +
    236 if constexpr (sizeof(size_type) > 4)
    +
    237 n |= n >> 32;
    +
    238 n++;
    +
    239 return n;
    +
    240 }
    +
    241
    +
    242 pointer data_ = nullptr;
    +
    243 size_type size_ = 0;
    +
    244 size_type capacity_ = 0;
    +
    245 allocator_type allocator_;
    +
    246};
    +
    247
    +
    248} // namespace dr::shp
    +
    Definition: vector.hpp:14
    +
    + + + + diff --git a/doxygen/view__detectors_8hpp_source.html b/doxygen/view__detectors_8hpp_source.html new file mode 100644 index 0000000000..4889ed7136 --- /dev/null +++ b/doxygen/view__detectors_8hpp_source.html @@ -0,0 +1,151 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/detail/view_detectors.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    view_detectors.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7#include <type_traits>
    +
    8
    +
    9namespace dr {
    +
    10
    +
    11template <typename T> struct is_ref_view : std::false_type {};
    +
    12template <rng::range R>
    +
    13struct is_ref_view<rng::ref_view<R>> : std::true_type {};
    +
    14
    +
    15template <typename T> inline constexpr bool is_ref_view_v = is_ref_view<T>{};
    +
    16
    +
    17template <typename T> struct is_iota_view : std::false_type {};
    +
    18template <std::weakly_incrementable W>
    +
    19struct is_iota_view<rng::iota_view<W>> : std::true_type {};
    +
    20
    +
    21template <typename T> inline constexpr bool is_iota_view_v = is_iota_view<T>{};
    +
    22
    +
    23template <typename T> struct is_take_view : std::false_type {};
    +
    24template <typename T>
    +
    25struct is_take_view<rng::take_view<T>> : std::true_type {};
    +
    26
    +
    27template <typename T>
    +
    28inline constexpr bool is_take_view_v = is_take_view<T>::value;
    +
    29
    +
    30template <typename T> struct is_drop_view : std::false_type {};
    +
    31template <typename T>
    +
    32struct is_drop_view<rng::drop_view<T>> : std::true_type {};
    +
    33
    +
    34template <typename T>
    +
    35inline constexpr bool is_drop_view_v = is_drop_view<T>::value;
    +
    36
    +
    37template <typename T> struct is_subrange_view : std::false_type {};
    +
    38template <typename T>
    +
    39struct is_subrange_view<rng::subrange<T>> : std::true_type {};
    +
    40
    +
    41template <typename T>
    +
    42inline constexpr bool is_subrange_view_v = is_subrange_view<T>::value;
    +
    43
    +
    44template <typename T> struct is_sliding_view : std::false_type {};
    +
    45template <typename T>
    +
    46struct is_sliding_view<rng::sliding_view<T>> : std::true_type {};
    +
    47template <typename T>
    +
    48inline constexpr bool is_sliding_view_v =
    + +
    50
    +
    51template <typename T> struct is_zip_view : std::false_type {};
    +
    52
    +
    53template <typename... Views>
    +
    54struct is_zip_view<rng::zip_view<Views...>> : std::true_type {};
    +
    55
    +
    56template <typename T>
    +
    57inline constexpr bool is_zip_view_v = is_zip_view<T>::value;
    +
    58
    +
    59} // namespace dr
    +
    Definition: view_detectors.hpp:30
    +
    Definition: view_detectors.hpp:17
    +
    Definition: view_detectors.hpp:11
    +
    Definition: view_detectors.hpp:44
    +
    Definition: view_detectors.hpp:37
    +
    Definition: view_detectors.hpp:23
    +
    Definition: view_detectors.hpp:51
    +
    + + + + diff --git a/doxygen/views_2iota_8hpp_source.html b/doxygen/views_2iota_8hpp_source.html new file mode 100644 index 0000000000..e9d0775b8a --- /dev/null +++ b/doxygen/views_2iota_8hpp_source.html @@ -0,0 +1,113 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/views/iota.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    iota.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7namespace dr::views {
    +
    8
    +
    9//
    +
    10// range-v3 iota uses sentinels that are not the same type as the
    +
    11// iterator. A zip that uses an iota has the same issue. Make our own.
    +
    12//
    +
    13
    +
    14struct iota_fn_ {
    +
    15 template <std::integral W> auto operator()(W value) const {
    +
    16 return rng::views::iota(value, std::numeric_limits<W>::max());
    +
    17 }
    +
    18
    +
    19 template <std::integral W, std::integral Bound>
    +
    20 auto operator()(W value, Bound bound) const {
    +
    21 return rng::views::iota(value, W(bound));
    +
    22 }
    +
    23};
    +
    24
    +
    25inline constexpr auto iota = iota_fn_{};
    +
    26
    +
    27} // namespace dr::views
    +
    Definition: iota.hpp:14
    +
    + + + + diff --git a/doxygen/views_2transform_8hpp_source.html b/doxygen/views_2transform_8hpp_source.html new file mode 100644 index 0000000000..7082d40e1f --- /dev/null +++ b/doxygen/views_2transform_8hpp_source.html @@ -0,0 +1,299 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/views/transform.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    transform.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7#include <concepts>
    +
    8#include <iterator>
    +
    9#include <type_traits>
    +
    10
    +
    11#include <dr/concepts/concepts.hpp>
    +
    12#include <dr/detail/ranges_shim.hpp>
    +
    13
    +
    14namespace dr {
    +
    15
    +
    16template <std::random_access_iterator Iter, std::copy_constructible F>
    + +
    18public:
    +
    19 using value_type = std::invoke_result_t<F, std::iter_value_t<Iter>>;
    +
    20 using difference_type = std::iter_difference_t<Iter>;
    + +
    22 using reference = value_type;
    +
    23
    +
    24 using pointer = iterator;
    +
    25
    +
    26 using iterator_category = std::random_access_iterator_tag;
    +
    27
    +
    28 transform_iterator(Iter iter, F fn) noexcept : iter_(iter) {}
    +
    29 transform_iterator() noexcept = default;
    +
    30 ~transform_iterator() noexcept = default;
    +
    31 transform_iterator(const transform_iterator &) noexcept = default;
    +
    32 transform_iterator &operator=(const transform_iterator &) noexcept = default;
    +
    33
    +
    34 bool operator==(const transform_iterator &other) const noexcept {
    +
    35 return iter_ == other.iter_;
    +
    36 }
    +
    37
    +
    38 bool operator!=(const transform_iterator &other) const noexcept {
    +
    39 return iter_ != other.iter_;
    +
    40 }
    +
    41
    +
    42 iterator operator+(difference_type offset) const noexcept {
    +
    43 return iterator(iter_ + offset, fn_);
    +
    44 }
    +
    45
    +
    46 iterator operator-(difference_type offset) const noexcept {
    +
    47 return iterator(iter_ - offset, fn_);
    +
    48 }
    +
    49
    +
    50 difference_type operator-(iterator other) const noexcept {
    +
    51 return iter_ - other.iter_;
    +
    52 }
    +
    53
    +
    54 bool operator<(iterator other) const noexcept { return iter_ < other.iter_; }
    +
    55
    +
    56 bool operator>(iterator other) const noexcept { return iter_ > iter_; }
    +
    57
    +
    58 bool operator<=(iterator other) const noexcept {
    +
    59 return iter_ <= other.iter_;
    +
    60 }
    +
    61
    +
    62 bool operator>=(iterator other) const noexcept {
    +
    63 return iter_ >= other.iter_;
    +
    64 }
    +
    65
    +
    66 iterator &operator++() noexcept {
    +
    67 ++iter_;
    +
    68 return *this;
    +
    69 }
    +
    70
    +
    71 iterator operator++(int) noexcept {
    +
    72 iterator other = *this;
    +
    73 ++(*this);
    +
    74 return other;
    +
    75 }
    +
    76
    +
    77 iterator &operator--() noexcept {
    +
    78 --iter_;
    +
    79 return *this;
    +
    80 }
    +
    81
    +
    82 iterator operator--(int) noexcept {
    +
    83 iterator other = *this;
    +
    84 --(*this);
    +
    85 return other;
    +
    86 }
    +
    87
    +
    88 iterator &operator+=(difference_type offset) noexcept {
    +
    89 iter_ += offset;
    +
    90 return *this;
    +
    91 }
    +
    92
    +
    93 iterator &operator-=(difference_type offset) noexcept {
    +
    94 iter_ -= offset;
    +
    95 return *this;
    +
    96 }
    +
    97
    +
    98 reference operator*() const noexcept { return fn_(*iter_); }
    +
    99
    +
    100 reference operator[](difference_type offset) const noexcept {
    +
    101 return *(*this + offset);
    +
    102 }
    +
    103
    +
    104 friend iterator operator+(difference_type n, iterator iter) {
    +
    105 return iter.iter_ + n;
    +
    106 }
    +
    107
    +
    108 auto local() const
    + +
    110 {
    +
    111 auto iter = dr::ranges::__detail::local(iter_);
    + +
    113 }
    +
    114
    +
    115private:
    +
    116 Iter iter_;
    +
    117 F fn_;
    +
    118};
    +
    119
    +
    120template <rng::random_access_range V, std::copy_constructible F>
    +
    121class transform_view : public rng::view_interface<transform_view<V, F>> {
    +
    122public:
    +
    123 template <rng::viewable_range R>
    +
    124 transform_view(R &&r, F fn)
    +
    125 : base_(rng::views::all(std::forward<R>(r))), fn_(fn) {}
    +
    126
    +
    127 auto begin() const { return transform_iterator(rng::begin(base_), fn_); }
    +
    128
    +
    129 auto end() const { return transform_iterator(rng::end(base_), fn_); }
    +
    130
    +
    131 auto size() const
    +
    132 requires(rng::sized_range<V>)
    +
    133 {
    +
    134 return rng::size(base_);
    +
    135 }
    +
    136
    +
    137 auto segments() const
    + +
    139 {
    +
    140 auto fn = fn_;
    +
    141 return dr::ranges::segments(base_) |
    +
    142 rng::views::transform([fn]<typename T>(T &&segment) {
    +
    143 return transform_view<rng::views::all_t<decltype(segment)>, F>(
    +
    144 std::forward<T>(segment), fn);
    +
    145 });
    +
    146 }
    +
    147
    +
    148 auto rank() const
    +
    149 requires(dr::remote_range<V>)
    +
    150 {
    +
    151 return dr::ranges::rank(base_);
    +
    152 }
    +
    153
    +
    154 V base() const { return base_; }
    +
    155
    +
    156private:
    +
    157 V base_;
    +
    158 F fn_;
    +
    159};
    +
    160
    +
    161template <rng::viewable_range R, std::copy_constructible F>
    + +
    163
    +
    164namespace views {
    +
    165
    +
    166template <std::copy_constructible F> class transform_adapter_closure {
    +
    167public:
    +
    168 transform_adapter_closure(F fn) : fn_(fn) {}
    +
    169
    +
    170 template <rng::viewable_range R> auto operator()(R &&r) const {
    +
    171 return dr::transform_view(std::forward<R>(r), fn_);
    +
    172 }
    +
    173
    +
    174 template <rng::viewable_range R>
    +
    175 friend auto operator|(R &&r, const transform_adapter_closure &closure) {
    +
    176 return closure(std::forward<R>(r));
    +
    177 }
    +
    178
    +
    179private:
    +
    180 F fn_;
    +
    181};
    +
    182
    + +
    184public:
    +
    185 template <rng::viewable_range R, std::copy_constructible F>
    +
    186 auto operator()(R &&r, F &&f) const {
    +
    187 return transform_adapter_closure(std::forward<F>(f))(std::forward<R>(r));
    +
    188 }
    +
    189
    +
    190 template <std::copy_constructible F> auto operator()(F &&fn) const {
    +
    191 return transform_adapter_closure(std::forward<F>(fn));
    +
    192 }
    +
    193};
    +
    194
    +
    195inline constexpr auto transform = transform_fn_{};
    +
    196} // namespace views
    +
    197
    +
    198} // namespace dr
    +
    199
    +
    200#if !defined(DR_SPEC)
    +
    201
    +
    202// Needed to satisfy rng::viewable_range
    +
    203template <rng::random_access_range V, std::copy_constructible F>
    +
    204inline constexpr bool rng::enable_borrowed_range<dr::transform_view<V, F>> =
    +
    205 true;
    +
    206
    +
    207#endif
    +
    Definition: transform.hpp:17
    +
    Definition: transform.hpp:121
    +
    Definition: transform.hpp:166
    +
    Definition: transform.hpp:183
    +
    Definition: concepts.hpp:20
    +
    Definition: ranges.hpp:242
    +
    Definition: concepts.hpp:16
    +
    + + + + diff --git a/doxygen/views_2views_8hpp_source.html b/doxygen/views_2views_8hpp_source.html new file mode 100644 index 0000000000..a69100fc8c --- /dev/null +++ b/doxygen/views_2views_8hpp_source.html @@ -0,0 +1,104 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/views/views.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    views.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7#include <dr/concepts/concepts.hpp>
    +
    8#include <dr/views/transform.hpp>
    +
    9
    +
    10namespace dr {
    +
    11
    +
    12// returns range: [(rank, element) ...]
    +
    13auto ranked_view(const dr::distributed_range auto &r) {
    +
    14 auto rank = [](auto &&v) { return dr::ranges::rank(&v); };
    +
    15 return rng::views::zip(rng::views::transform(r, rank), r);
    +
    16}
    +
    17
    +
    18} // namespace dr
    +
    Definition: concepts.hpp:20
    +
    + + + + diff --git a/doxygen/zip_8hpp_source.html b/doxygen/zip_8hpp_source.html new file mode 100644 index 0000000000..5a1ece1b1c --- /dev/null +++ b/doxygen/zip_8hpp_source.html @@ -0,0 +1,366 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/mhp/views/zip.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    zip.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7#include <cstddef>
    +
    8#include <iterator>
    +
    9#include <tuple>
    +
    10#include <type_traits>
    +
    11#include <utility>
    +
    12
    +
    13#include <dr/detail/ranges_shim.hpp>
    +
    14#include <dr/mhp/alignment.hpp>
    +
    15#include <dr/mhp/views/segmented.hpp>
    +
    16
    +
    17namespace dr::mhp::__detail {
    +
    18
    +
    19template <typename R>
    +
    20concept zipable = rng::random_access_range<R> && rng::common_range<R>;
    +
    21
    +
    22} // namespace dr::mhp::__detail
    +
    23
    +
    24namespace dr::mhp {
    +
    25
    +
    26template <__detail::zipable... Rs> class zip_view;
    +
    27
    +
    28namespace views {
    +
    29
    +
    30template <typename... Rs> auto zip(Rs &&...rs) {
    +
    31 return zip_view(std::forward<Rs>(rs)...);
    +
    32}
    +
    33
    +
    34} // namespace views
    +
    35
    +
    36namespace __detail {
    +
    37
    +
    38template <typename T>
    + + +
    41
    +
    42template <typename T, typename... Rest>
    +
    43inline auto select_segments(T &&t, Rest &&...rest) {
    +
    44 if constexpr (is_distributed<T>) {
    +
    45 return dr::ranges::segments(std::forward<T>(t));
    +
    46 } else {
    +
    47 return select_segments(std::forward<Rest>(rest)...);
    +
    48 }
    +
    49}
    +
    50
    +
    51template <typename T, typename Seg> inline auto tpl_segments(T &&t, Seg &&tpl) {
    +
    52 if constexpr (is_distributed<T>) {
    +
    53 return dr::ranges::segments(std::forward<T>(t));
    +
    54 } else if constexpr (rng::forward_range<T>) {
    +
    55 return views::segmented(std::forward<T>(t), std::forward<Seg>(tpl));
    +
    56 } else if constexpr (rng::forward_iterator<T>) {
    +
    57 return views::segmented(rng::subrange(std::forward<T>(t), T{}),
    +
    58 std::forward<Seg>(tpl));
    +
    59 }
    +
    60}
    +
    61
    +
    62template <typename Base> auto base_to_segments(Base &&base) {
    +
    63 // Given segments, return elementwise zip
    +
    64 auto zip_segments = [](auto &&...segments) {
    +
    65 return views::zip(segments...);
    +
    66 };
    +
    67
    +
    68 // Given a tuple of segments, return a single segment by doing
    +
    69 // elementwise zip
    +
    70 auto zip_segment_tuple = [zip_segments](auto &&v) {
    +
    71 return std::apply(zip_segments, v);
    +
    72 };
    +
    73
    +
    74 // Given base ranges, return segments
    +
    75 auto bases_to_segments = [zip_segment_tuple](auto &&...bases) {
    +
    76 bool is_aligned = aligned(bases...);
    +
    77 auto tpl = select_segments(bases...);
    +
    78 return rng::views::zip(tpl_segments(bases, tpl)...) |
    +
    79 rng::views::transform(zip_segment_tuple) |
    +
    80 rng::views::filter([is_aligned](auto &&v) { return is_aligned; });
    +
    81 };
    +
    82
    +
    83 return std::apply(bases_to_segments, base);
    +
    84}
    +
    85
    +
    86} // namespace __detail
    +
    87
    +
    88template <std::random_access_iterator RngIter,
    +
    89 std::random_access_iterator... BaseIters>
    + +
    91public:
    +
    92 using value_type = rng::iter_value_t<RngIter>;
    +
    93 using difference_type = rng::iter_difference_t<RngIter>;
    +
    94
    +
    95 using iterator_category = std::random_access_iterator_tag;
    +
    96
    +
    97 zip_iterator() {}
    +
    98 zip_iterator(RngIter rng_iter, BaseIters... base_iters)
    +
    99 : rng_iter_(rng_iter), base_(base_iters...) {}
    +
    100
    +
    101 auto operator+(difference_type n) const {
    +
    102 auto iter(*this);
    +
    103 iter.rng_iter_ += n;
    +
    104 iter.offset_ += n;
    +
    105 return iter;
    +
    106 }
    +
    107 friend auto operator+(difference_type n, const zip_iterator &other) {
    +
    108 return other + n;
    +
    109 }
    +
    110 auto operator-(difference_type n) const {
    +
    111 auto iter(*this);
    +
    112 iter.rng_iter_ -= n;
    +
    113 iter.offset_ -= n;
    +
    114 return iter;
    +
    115 }
    +
    116 auto operator-(zip_iterator other) const {
    +
    117 return rng_iter_ - other.rng_iter_;
    +
    118 }
    +
    119
    +
    120 auto &operator+=(difference_type n) {
    +
    121 rng_iter_ += n;
    +
    122 offset_ += n;
    +
    123 return *this;
    +
    124 }
    +
    125 auto &operator-=(difference_type n) {
    +
    126 rng_iter_ -= n;
    +
    127 offset_ -= n;
    +
    128 return *this;
    +
    129 }
    +
    130 auto &operator++() {
    +
    131 rng_iter_++;
    +
    132 offset_++;
    +
    133 return *this;
    +
    134 }
    +
    135 auto operator++(int) {
    +
    136 auto iter(*this);
    +
    137 rng_iter_++;
    +
    138 offset_++;
    +
    139 return iter;
    +
    140 }
    +
    141 auto &operator--() {
    +
    142 rng_iter_--;
    +
    143 offset_--;
    +
    144 return *this;
    +
    145 }
    +
    146 auto operator--(int) {
    +
    147 auto iter(*this);
    +
    148 rng_iter_--;
    +
    149 offset_--;
    +
    150 return iter;
    +
    151 }
    +
    152
    +
    153 bool operator==(zip_iterator other) const {
    +
    154 return rng_iter_ == other.rng_iter_;
    +
    155 }
    +
    156 auto operator<=>(zip_iterator other) const {
    +
    157 return offset_ <=> other.offset_;
    +
    158 }
    +
    159
    +
    160 // Underlying zip_iterator does not return a reference
    +
    161 auto operator*() const { return *rng_iter_; }
    +
    162 auto operator[](difference_type n) const { return rng_iter_[n]; }
    +
    163
    +
    164 //
    +
    165 // Distributed Ranges support
    +
    166 //
    +
    167 auto segments() const
    +
    168 requires(distributed_iterator<BaseIters> || ...)
    +
    169 {
    +
    170 return dr::__detail::drop_segments(__detail::base_to_segments(base_),
    +
    171 offset_);
    +
    172 }
    +
    173
    +
    174 auto rank() const
    +
    175 requires(remote_iterator<BaseIters> || ...)
    +
    176 {
    +
    177 return dr::ranges::rank(std::get<0>(base_));
    +
    178 }
    +
    179
    +
    180 auto local() const
    + +
    182 {
    +
    183 // Create a temporary zip_view and return the iterator. This code
    +
    184 // assumes the iterator is valid even if the underlying zip_view
    +
    185 // is destroyed.
    +
    186 auto zip = [this]<typename... Iters>(Iters &&...iters) {
    +
    187 return rng::begin(rng::views::zip(
    +
    188 rng::subrange(base_local(std::forward<Iters>(iters)) + this->offset_,
    +
    189 decltype(base_local(iters)){})...));
    +
    190 };
    +
    191
    +
    192 return std::apply(zip, base_);
    +
    193 }
    +
    194
    +
    195private:
    +
    196 // If it is not a remote iterator, assume it is a local iterator
    +
    197 auto static base_local(auto iter) { return iter; }
    +
    198
    +
    199 auto static base_local(dr::ranges::__detail::has_local auto iter) {
    +
    200 return dr::ranges::local(iter);
    +
    201 }
    +
    202
    +
    203 RngIter rng_iter_;
    +
    204 std::tuple<BaseIters...> base_;
    +
    205 difference_type offset_ = 0;
    +
    206};
    +
    207
    +
    208template <__detail::zipable... Rs>
    +
    209class zip_view : public rng::view_interface<zip_view<Rs...>> {
    +
    210private:
    +
    211 using rng_zip = rng::zip_view<Rs...>;
    +
    212 using rng_zip_iterator = rng::iterator_t<rng_zip>;
    +
    213 using difference_type = std::iter_difference_t<rng_zip_iterator>;
    +
    214
    +
    215public:
    +
    216 zip_view(Rs... rs)
    +
    217 : rng_zip_(rng::views::all(rs)...), base_(rng::views::all(rs)...) {}
    +
    218
    +
    219 auto begin() const {
    +
    220 auto make_begin = [this](auto &&...bases) {
    +
    221 return zip_iterator(rng::begin(this->rng_zip_), rng::begin(bases)...);
    +
    222 };
    +
    223 return std::apply(make_begin, base_);
    +
    224 }
    +
    225 auto end() const
    +
    226 requires(rng::common_range<rng_zip>)
    +
    227 {
    +
    228 auto make_end = [this](auto &&...bases) {
    +
    229 return zip_iterator(rng::end(this->rng_zip_), rng::end(bases)...);
    +
    230 };
    +
    231 return std::apply(make_end, base_);
    +
    232 }
    +
    233 auto size() const { return rng::size(rng_zip_); }
    +
    234
    +
    235 auto operator[](difference_type n) const { return rng_zip_[n]; }
    +
    236
    +
    237 auto base() const { return base_; }
    +
    238
    +
    239 //
    +
    240 // Distributed Ranges support
    +
    241 //
    +
    242 auto segments() const
    +
    243 requires(distributed_range<Rs> || ...)
    +
    244 {
    +
    245 return __detail::base_to_segments(base_);
    +
    246 }
    +
    247
    +
    248 auto rank() const
    +
    249 requires(remote_range<Rs> || ...)
    +
    250 {
    +
    251 return dr::ranges::rank(std::get<0>(base_));
    +
    252 }
    +
    253
    +
    254 auto local() const
    +
    255 requires(remote_range<Rs> || ...)
    +
    256 {
    +
    257 auto zip = []<typename... Vs>(Vs &&...bases) {
    +
    258 return rng::views::zip(dr::ranges::local(std::forward<Vs>(bases))...);
    +
    259 };
    +
    260
    +
    261 return std::apply(zip, base_);
    +
    262 }
    +
    263
    +
    264private:
    +
    265 rng_zip rng_zip_;
    +
    266 std::tuple<rng::views::all_t<Rs>...> base_;
    +
    267};
    +
    268
    +
    269template <typename... Rs>
    + +
    271
    +
    272} // namespace dr::mhp
    +
    Definition: zip.hpp:90
    +
    Definition: zip.hpp:209
    +
    Definition: concepts.hpp:31
    +
    Definition: concepts.hpp:20
    +
    Definition: zip.hpp:39
    +
    Definition: zip.hpp:20
    +
    Definition: ranges.hpp:242
    +
    Definition: concepts.hpp:12
    +
    Definition: concepts.hpp:16
    +
    + + + + diff --git a/doxygen/zip__view_8hpp_source.html b/doxygen/zip__view_8hpp_source.html new file mode 100644 index 0000000000..fb9b2a7e77 --- /dev/null +++ b/doxygen/zip__view_8hpp_source.html @@ -0,0 +1,442 @@ + + + + + + + +Distributed Ranges: /opt/actions-runner/_work/distributed-ranges/distributed-ranges/include/dr/shp/zip_view.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Distributed Ranges +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    zip_view.hpp
    +
    +
    +
    1// SPDX-FileCopyrightText: Intel Corporation
    +
    2//
    +
    3// SPDX-License-Identifier: BSD-3-Clause
    +
    4
    +
    5#pragma once
    +
    6
    +
    7#include <oneapi/dpl/iterator>
    +
    8
    +
    9#include <dr/detail/iterator_adaptor.hpp>
    +
    10#include <dr/detail/owning_view.hpp>
    +
    11#include <dr/detail/ranges_shim.hpp>
    +
    12#include <dr/detail/view_detectors.hpp>
    +
    13#include <dr/shp/device_span.hpp>
    +
    14
    +
    15namespace dr {
    +
    16
    +
    17template <typename T> struct is_owning_view : std::false_type {};
    +
    18// template <rng::range R>
    +
    19// struct is_owning_view<rng::owning_view<R>> : std::true_type {};
    +
    20
    +
    21template <typename T>
    +
    22inline constexpr bool is_owning_view_v = is_owning_view<T>{};
    +
    23
    +
    24}; // namespace dr
    +
    25
    +
    26namespace dr::shp {
    +
    27
    +
    28namespace __detail {
    +
    29
    +
    30template <typename... Args> struct tuple_or_pair {
    +
    31 using type = std::tuple<Args...>;
    +
    32};
    +
    33
    +
    34template <typename T, typename U> struct tuple_or_pair<T, U> {
    +
    35 using type = std::pair<T, U>;
    +
    36};
    +
    37
    +
    38template <typename... Args>
    +
    39using tuple_or_pair_t = typename tuple_or_pair<Args...>::type;
    +
    40
    +
    41}; // namespace __detail
    +
    42
    +
    43template <rng::random_access_iterator... Iters> class zip_accessor {
    +
    44public:
    +
    45 using element_type = __detail::tuple_or_pair_t<std::iter_value_t<Iters>...>;
    +
    46 using value_type = element_type;
    +
    47 using size_type = std::size_t;
    +
    48 using difference_type = std::ptrdiff_t;
    +
    49 using reference = __detail::tuple_or_pair_t<std::iter_reference_t<Iters>...>;
    +
    50
    +
    51 using iterator_category = std::random_access_iterator_tag;
    +
    52
    + + + +
    56
    +
    57 constexpr zip_accessor() noexcept = default;
    +
    58 constexpr ~zip_accessor() noexcept = default;
    +
    59 constexpr zip_accessor(const zip_accessor &) noexcept = default;
    +
    60 constexpr zip_accessor &operator=(const zip_accessor &) noexcept = default;
    +
    61
    +
    62 constexpr zip_accessor(Iters... iters) : iterators_(iters...) {}
    +
    63
    +
    64 zip_accessor &operator+=(difference_type offset) {
    +
    65 auto increment = [&](auto &&iter) { iter += offset; };
    +
    66 iterators_apply_impl_<0>(increment);
    +
    67 return *this;
    +
    68 }
    +
    69
    +
    70 constexpr bool operator==(const iterator_accessor &other) const noexcept {
    +
    71 return std::get<0>(iterators_) == std::get<0>(other.iterators_);
    +
    72 }
    +
    73
    +
    74 constexpr difference_type
    +
    75 operator-(const iterator_accessor &other) const noexcept {
    +
    76 return std::get<0>(iterators_) - std::get<0>(other.iterators_);
    +
    77 }
    +
    78
    +
    79 constexpr bool operator<(const iterator_accessor &other) const noexcept {
    +
    80 return std::get<0>(iterators_) < std::get<0>(other.iterators_);
    +
    81 }
    +
    82
    +
    83 constexpr reference operator*() const noexcept {
    +
    84 return get_impl_(std::make_index_sequence<sizeof...(Iters)>{});
    +
    85 }
    +
    86
    +
    87private:
    +
    88 template <std::size_t... Ints>
    +
    89 reference get_impl_(std::index_sequence<Ints...>) const noexcept {
    +
    90 return reference(*std::get<Ints>(iterators_)...);
    +
    91 }
    +
    92
    +
    93 template <std::size_t I, typename Fn> void iterators_apply_impl_(Fn &&fn) {
    +
    94 fn(std::get<I>(iterators_));
    +
    95 if constexpr (I + 1 < sizeof...(Iters)) {
    +
    96 iterators_apply_impl_<I + 1>(fn);
    +
    97 }
    +
    98 }
    +
    99
    +
    100 std::tuple<Iters...> iterators_;
    +
    101};
    +
    102
    +
    103template <rng::random_access_iterator... Iters>
    + +
    105
    +
    107template <rng::random_access_range... Rs>
    +
    108class zip_view : public rng::view_interface<zip_view<Rs...>> {
    +
    109public:
    +
    110 using size_type = std::size_t;
    +
    111 using difference_type = std::ptrdiff_t;
    +
    112
    +
    113 zip_view(Rs... rs) : views_(rng::views::all(std::forward<Rs>(rs))...) {
    +
    114 std::array<std::size_t, sizeof...(Rs)> sizes = {
    +
    115 std::size_t(rng::distance(rs))...};
    +
    116
    +
    117 // TODO: support zipped views with some ranges shorter than others
    +
    118 size_ = sizes[0];
    +
    119
    +
    120 for (auto &&size : sizes) {
    +
    121 size_ = std::min(size_, size);
    +
    122 }
    +
    123 }
    +
    124
    +
    125 std::size_t size() const noexcept { return size_; }
    +
    126
    +
    127 auto begin() const {
    +
    128 return begin_impl_(std::make_index_sequence<sizeof...(Rs)>{});
    +
    129 }
    +
    130
    +
    131 auto end() const { return begin() + size(); }
    +
    132
    +
    133 auto operator[](std::size_t idx) const { return *(begin() + idx); }
    +
    134
    +
    135 static constexpr bool num_views = sizeof...(Rs);
    +
    136
    +
    137 template <std::size_t I> decltype(auto) get_view() const {
    +
    138 auto &&view = std::get<I>(views_);
    +
    139
    +
    140 if constexpr (dr::is_ref_view_v<std::remove_cvref_t<decltype(view)>> ||
    +
    141 dr::is_owning_view_v<std::remove_cvref_t<decltype(view)>>) {
    +
    142 return view.base();
    +
    143 } else {
    +
    144 return view;
    +
    145 }
    +
    146 }
    +
    147
    +
    148 // If there is at least one distributed range, expose segments
    +
    149 // of overlapping remote ranges.
    +
    150 auto segments() const
    +
    151 requires(dr::distributed_range<Rs> || ...)
    +
    152 {
    +
    153 std::array<std::size_t, sizeof...(Rs)> segment_ids;
    +
    154 std::array<std::size_t, sizeof...(Rs)> local_idx;
    +
    155 segment_ids.fill(0);
    +
    156 local_idx.fill(0);
    +
    157
    +
    158 std::size_t cumulative_size = 0;
    +
    159
    +
    160 using segment_view_type = decltype(get_zipped_view_impl_(
    +
    161 segment_ids, local_idx, 0, std::make_index_sequence<sizeof...(Rs)>{}));
    +
    162 std::vector<segment_view_type> segment_views;
    +
    163
    +
    164 while (cumulative_size < size()) {
    +
    165 auto size = get_next_segment_size(segment_ids, local_idx);
    +
    166
    +
    167 cumulative_size += size;
    +
    168
    +
    169 // Create zipped segment with
    +
    170 // zip_view(segments()[Is].subspan(local_idx[Is], size)...) And some rank
    +
    171 // (e.g. get_view<0>.rank())
    +
    172 auto segment_view =
    +
    173 get_zipped_view_impl_(segment_ids, local_idx, size,
    +
    174 std::make_index_sequence<sizeof...(Rs)>{});
    +
    175
    +
    176 segment_views.push_back(std::move(segment_view));
    +
    177
    +
    178 increment_local_idx(segment_ids, local_idx, size);
    +
    179 }
    +
    180
    +
    181 return dr::__detail::owning_view(std::move(segment_views));
    +
    182 }
    +
    183
    +
    184 // Return a range corresponding to each segment in `segments()`,
    +
    185 // but with a tuple of the constituent ranges instead of a
    +
    186 // `zip_view` of the ranges.
    +
    187 auto zipped_segments() const
    +
    188 requires(dr::distributed_range<Rs> || ...)
    +
    189 {
    +
    190 std::array<std::size_t, sizeof...(Rs)> segment_ids;
    +
    191 std::array<std::size_t, sizeof...(Rs)> local_idx;
    +
    192 segment_ids.fill(0);
    +
    193 local_idx.fill(0);
    +
    194
    +
    195 std::size_t cumulative_size = 0;
    +
    196
    +
    197 using segment_view_type = decltype(get_zipped_segments_impl_(
    +
    198 segment_ids, local_idx, 0, std::make_index_sequence<sizeof...(Rs)>{}));
    +
    199 std::vector<segment_view_type> segment_views;
    +
    200
    +
    201 while (cumulative_size < size()) {
    +
    202 auto size = get_next_segment_size(segment_ids, local_idx);
    +
    203
    +
    204 cumulative_size += size;
    +
    205
    +
    206 // Get zipped segments with
    +
    207 // std::tuple(segments()[Is].subspan(local_idx[Is], size)...)
    +
    208 auto segment_view =
    +
    209 get_zipped_segments_impl_(segment_ids, local_idx, size,
    +
    210 std::make_index_sequence<sizeof...(Rs)>{});
    +
    211
    +
    212 segment_views.push_back(std::move(segment_view));
    +
    213
    +
    214 increment_local_idx(segment_ids, local_idx, size);
    +
    215 }
    +
    216
    +
    217 return dr::__detail::owning_view(std::move(segment_views));
    +
    218 }
    +
    219
    +
    220 auto local() const noexcept
    +
    221 requires(!(dr::distributed_range<Rs> || ...))
    +
    222 {
    +
    223 return local_impl_(std::make_index_sequence<sizeof...(Rs)>());
    +
    224 }
    +
    225
    +
    226 // If:
    +
    227 // - There is at least one remote range in the zip
    +
    228 // - There are no distributed ranges in the zip
    +
    229 // Expose a rank.
    +
    230 std::size_t rank() const
    +
    231 requires((dr::remote_range<Rs> || ...) &&
    + +
    233 {
    +
    234 return get_rank_impl_<0, Rs...>();
    +
    235 }
    +
    236
    +
    237private:
    +
    238 template <std::size_t... Ints>
    +
    239 auto local_impl_(std::index_sequence<Ints...>) const noexcept {
    +
    240 return rng::views::zip(__detail::local(std::get<Ints>(views_))...);
    +
    241 }
    +
    242
    +
    243 template <std::size_t I, typename R> std::size_t get_rank_impl_() const {
    +
    244 static_assert(I < sizeof...(Rs));
    +
    245 return dr::ranges::rank(get_view<I>());
    +
    246 }
    +
    247
    +
    248 template <std::size_t I, typename R, typename... Rs_>
    +
    249 requires(sizeof...(Rs_) > 0)
    +
    250 std::size_t get_rank_impl_() const {
    +
    251 static_assert(I < sizeof...(Rs));
    +
    252 if constexpr (dr::remote_range<R>) {
    +
    253 return dr::ranges::rank(get_view<I>());
    +
    254 } else {
    +
    255 return get_rank_impl_<I + 1, Rs_...>();
    +
    256 }
    +
    257 }
    +
    258
    +
    259 template <typename T> auto create_view_impl_(T &&t) const {
    +
    260 if constexpr (dr::remote_range<T>) {
    +
    261 return dr::shp::device_span(std::forward<T>(t));
    +
    262 } else {
    +
    263 return dr::shp::span(std::forward<T>(t));
    +
    264 }
    +
    265 }
    +
    266
    +
    267 template <std::size_t... Is>
    +
    268 auto get_zipped_view_impl_(auto &&segment_ids, auto &&local_idx,
    +
    269 std::size_t size,
    +
    270 std::index_sequence<Is...>) const {
    +
    271 return zip_view<decltype(create_view_impl_(
    +
    272 segment_or_orig_(get_view<Is>(),
    +
    273 segment_ids[Is]))
    +
    274 .subspan(local_idx[Is], size))...>(
    +
    275 create_view_impl_(segment_or_orig_(get_view<Is>(), segment_ids[Is]))
    +
    276 .subspan(local_idx[Is], size)...);
    +
    277 }
    +
    278
    +
    279 template <std::size_t... Is>
    +
    280 auto get_zipped_segments_impl_(auto &&segment_ids, auto &&local_idx,
    +
    281 std::size_t size,
    +
    282 std::index_sequence<Is...>) const {
    +
    283 return std::tuple(
    +
    284 create_view_impl_(segment_or_orig_(get_view<Is>(), segment_ids[Is]))
    +
    285 .subspan(local_idx[Is], size)...);
    +
    286 }
    +
    287
    +
    288 template <std::size_t I = 0>
    +
    289 void increment_local_idx(auto &&segment_ids, auto &&local_idx,
    +
    290 std::size_t size) const {
    +
    291 local_idx[I] += size;
    +
    292
    +
    293 if (local_idx[I] >=
    +
    294 rng::distance(segment_or_orig_(get_view<I>(), segment_ids[I]))) {
    +
    295 local_idx[I] = 0;
    +
    296 segment_ids[I]++;
    +
    297 }
    +
    298
    +
    299 if constexpr (I + 1 < sizeof...(Rs)) {
    +
    300 increment_local_idx<I + 1>(segment_ids, local_idx, size);
    +
    301 }
    +
    302 }
    +
    303
    +
    304 template <std::size_t... Is>
    +
    305 auto begin_impl_(std::index_sequence<Is...>) const {
    + +
    307 rng::begin(std::get<Is>(views_))...);
    +
    308 }
    +
    309
    +
    310 template <dr::distributed_range T>
    +
    311 decltype(auto) segment_or_orig_(T &&t, std::size_t idx) const {
    +
    312 return dr::ranges::segments(t)[idx];
    +
    313 }
    +
    314
    +
    315 template <typename T>
    +
    316 decltype(auto) segment_or_orig_(T &&t, std::size_t idx) const {
    +
    317 return t;
    +
    318 }
    +
    319
    +
    320 template <std::size_t... Is>
    +
    321 std::size_t get_next_segment_size_impl_(auto &&segment_ids, auto &&local_idx,
    +
    322 std::index_sequence<Is...>) const {
    +
    323 return std::min({std::size_t(rng::distance(
    +
    324 segment_or_orig_(get_view<Is>(), segment_ids[Is]))) -
    +
    325 local_idx[Is]...});
    +
    326 }
    +
    327
    +
    328 std::size_t get_next_segment_size(auto &&segment_ids,
    +
    329 auto &&local_idx) const {
    +
    330 return get_next_segment_size_impl_(
    +
    331 segment_ids, local_idx, std::make_index_sequence<sizeof...(Rs)>{});
    +
    332 }
    +
    333
    +
    334 std::tuple<rng::views::all_t<Rs>...> views_;
    +
    335 std::size_t size_;
    +
    336};
    +
    337
    +
    338template <typename... Rs> zip_view(Rs &&...rs) -> zip_view<Rs...>;
    +
    339
    +
    340namespace views {
    +
    341
    +
    343template <rng::random_access_range... Rs> auto zip(Rs &&...rs) {
    +
    344 return dr::shp::zip_view(std::forward<Rs>(rs)...);
    +
    345}
    +
    346
    +
    347} // namespace views
    +
    348
    +
    349} // namespace dr::shp
    +
    Definition: owning_view.hpp:18
    +
    Definition: iterator_adaptor.hpp:23
    +
    Definition: device_span.hpp:44
    +
    Definition: span.hpp:14
    +
    Definition: zip_view.hpp:43
    +
    zip
    Definition: zip_view.hpp:108
    +
    Definition: concepts.hpp:20
    +
    Definition: concepts.hpp:16
    +
    Definition: zip_view.hpp:17
    +
    Definition: zip_view.hpp:30
    +
    + + + + diff --git a/spec/.buildinfo b/spec/.buildinfo new file mode 100644 index 0000000000..94b325a39d --- /dev/null +++ b/spec/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: 237842a580050ea7318fec37e96a9a67 +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/spec/_sources/algorithms/algorithms.rst b/spec/_sources/algorithms/algorithms.rst new file mode 100644 index 0000000000..e1b584196d --- /dev/null +++ b/spec/_sources/algorithms/algorithms.rst @@ -0,0 +1,32 @@ +.. SPDX-FileCopyrightText: Intel Corporation +.. +.. SPDX-License-Identifier: BSD-3-Clause + +============ + Algorithms +============ + +Algorithms on distributed ranges. + +.. toctree:: + :maxdepth: 1 + + copy + exclusive_scan + fill + for_each + inclusive_scan + iota + reduce + sort + transform + +# transform_reduce + +Algorithms on matrices, dense and sparse + +.. toctree:: + :maxdepth: 1 + + shp_matrix_gemm + shp_matrix_gemv diff --git a/spec/_sources/algorithms/copy.rst b/spec/_sources/algorithms/copy.rst new file mode 100644 index 0000000000..ee0ef8299d --- /dev/null +++ b/spec/_sources/algorithms/copy.rst @@ -0,0 +1,45 @@ +.. SPDX-FileCopyrightText: Intel Corporation +.. +.. SPDX-License-Identifier: BSD-3-Clause + +.. include:: ../include/distributed-ranges.rst + +.. _copy: + +========== + ``copy`` +========== + +Interface +========= + +MHP +--- + +.. doxygenfunction:: dr::mhp::copy(rng::forward_range auto &&in, dr::distributed_iterator auto out) + :outline: +.. doxygenfunction:: dr::mhp::copy(DI_IN &&first, DI_IN &&last, dr::distributed_iterator auto &&out) + :outline: +.. doxygenfunction:: dr::mhp::copy(std::size_t root, dr::distributed_contiguous_range auto &&in, std::contiguous_iterator auto out) + :outline: +.. doxygenfunction:: dr::mhp::copy(std::size_t root, rng::contiguous_range auto &&in, dr::distributed_contiguous_iterator auto out) + :outline: + +SHP +--- + +.. doxygenfunction:: dr::shp::copy(InputIt first, InputIt last, OutputIt d_first) + :outline: +.. doxygenfunction:: dr::shp::copy(device_ptr first, device_ptr last, Iter d_first) + :outline: + + +Description +=========== + +.. seealso:: + + `std::ranges::copy`_ + Standard C++ algorithm + `std::copy`_ + Standard C++ algorithm diff --git a/spec/_sources/algorithms/exclusive_scan.rst b/spec/_sources/algorithms/exclusive_scan.rst new file mode 100644 index 0000000000..2f5f7fd5d2 --- /dev/null +++ b/spec/_sources/algorithms/exclusive_scan.rst @@ -0,0 +1,46 @@ +.. SPDX-FileCopyrightText: Intel Corporation +.. +.. SPDX-License-Identifier: BSD-3-Clause + +.. include:: ../include/distributed-ranges.rst + +.. _exclusive_scan: + +============================ + ``exclusive_scan`` +============================ + +Interface +========= +MHP +--- + +SHP +--- + +.. doxygenfunction:: dr::shp::exclusive_scan(ExecutionPolicy &&policy, R &&r, O &&o, T init, BinaryOp &&binary_op) + :outline: +.. doxygenfunction:: dr::shp::exclusive_scan(ExecutionPolicy &&policy, R &&r, O &&o, T init) + :outline: +.. doxygenfunction:: dr::shp::exclusive_scan(R &&r, O &&o, T init, BinaryOp &&binary_op) + :outline: +.. doxygenfunction:: dr::shp::exclusive_scan(R &&r, O &&o, T init) + :outline: +.. doxygenfunction:: dr::shp::exclusive_scan(ExecutionPolicy &&policy, Iter first, Iter last, OutputIter d_first, T init, BinaryOp &&binary_op) + :outline: +.. doxygenfunction:: dr::shp::exclusive_scan(ExecutionPolicy &&policy, Iter first, Iter last, OutputIter d_first, T init) + :outline: +.. doxygenfunction:: dr::shp::exclusive_scan(Iter first, Iter last, OutputIter d_first, T init, BinaryOp &&binary_op) + :outline: +.. doxygenfunction:: dr::shp::exclusive_scan(Iter first, Iter last, OutputIter d_first, T init) + :outline + +Description +=========== + +.. seealso:: + + 'std::exclusive_scan'_ + +Examples +======== diff --git a/spec/_sources/algorithms/fill.rst b/spec/_sources/algorithms/fill.rst new file mode 100644 index 0000000000..7f5362bb54 --- /dev/null +++ b/spec/_sources/algorithms/fill.rst @@ -0,0 +1,57 @@ +.. SPDX-FileCopyrightText: Intel Corporation +.. +.. SPDX-License-Identifier: BSD-3-Clause + +.. include:: ../include/distributed-ranges.rst + +.. _fill: + +========== + ``fill`` +========== + +Interface +========= + +MHP +--- + +.. doxygenfunction:: dr::mhp::fill(dr::distributed_contiguous_range auto &&dr, auto value); + :outline: +.. doxygenfunction:: dr::mhp::fill(DI first, DI last, auto value) + :outline: + +SHP +--- + +.. doxygenfunction:: dr::shp::fill_async(Iter first, Iter last, const std::iter_value_t &value) + :outline: +.. doxygenfunction:: dr::shp::fill(Iter first, Iter last, const std::iter_value_t &value) + :outline: +.. doxygenfunction:: dr::shp::fill_async(device_ptr first, device_ptr last, const U &value) + :outline: +.. doxygenfunction:: dr::shp::fill(device_ptr first, device_ptr last, const U &value) + :outline: +.. doxygenfunction:: dr::shp::fill_async(R &&r, const T &value) + :outline: +.. doxygenfunction:: dr::shp::fill(R &&r, const T &value) + :outline: +.. doxygenfunction:: dr::shp::fill_async(DR &&r, const T &value) + :outline: +.. doxygenfunction:: dr::shp::fill(DR &&r, const T &value) + :outline: +.. doxygenfunction:: dr::shp::fill(Iter first, Iter last, const T &value) + :outline: + +Description +=========== + +.. seealso:: + + C++ model + `std::fill`_ + C++ model + `std::ranges::fill`_ + +Usage +===== diff --git a/spec/_sources/algorithms/for_each.rst b/spec/_sources/algorithms/for_each.rst new file mode 100644 index 0000000000..4539c10df9 --- /dev/null +++ b/spec/_sources/algorithms/for_each.rst @@ -0,0 +1,45 @@ +.. SPDX-FileCopyrightText: Intel Corporation +.. +.. SPDX-License-Identifier: BSD-3-Clause + +.. include:: ../include/distributed-ranges.rst + +.. _for_each: + +============== + ``for_each`` +============== + +Interface +========= +MHP +--- +.. doxygenfunction:: dr::mhp::for_each(dr::distributed_range auto &&dr, auto op) + :outline: +.. doxygenfunction:: dr::mhp::for_each(DI first, DI last, auto op) + :outline: + +SHP +--- + +.. doxygenfunction:: dr::shp::for_each(ExecutionPolicy &&policy, R &&r, Fn &&fn) + :outline: +.. doxygenfunction:: dr::shp::for_each(ExecutionPolicy &&policy, Iter begin, Iter end, Fn &&fn) + :outline: +.. doxygenfunction:: dr::shp::for_each(R &&r, Fn &&fn) + :outline: +.. doxygenfunction:: dr::shp::for_each(Iter begin, Iter end, Fn &&fn) + :outline: + +Description +=========== + +.. seealso:: + + `std::ranges::for_each`_ + Standard C++ algorithm + `std::for_each`_ + Standard C++ algorithm + +Examples +======== diff --git a/spec/_sources/algorithms/inclusive_scan.rst b/spec/_sources/algorithms/inclusive_scan.rst new file mode 100644 index 0000000000..8520cc759e --- /dev/null +++ b/spec/_sources/algorithms/inclusive_scan.rst @@ -0,0 +1,61 @@ +.. SPDX-FileCopyrightText: Intel Corporation +.. +.. SPDX-License-Identifier: BSD-3-Clause + +.. include:: ../include/distributed-ranges.rst + +.. _inclusive_scan: + +============================ + ``inclusive_scan`` +============================ + +Interface +========= + +MHP +--- + +SHP +--- + +.. doxygenfunction:: dr::shp::inclusive_scan(ExecutionPolicy &&policy, R &&r, O &&o, BinaryOp &&binary_op, T init) + :outline: +.. doxygenfunction:: dr::shp::inclusive_scan(ExecutionPolicy &&policy, R &&r, O &&o, BinaryOp &&binary_op) + :outline: +.. doxygenfunction:: dr::shp::inclusive_scan(ExecutionPolicy &&policy, R &&r, O &&o) + :outline: +.. doxygenfunction:: dr::shp::inclusive_scan(ExecutionPolicy &&policy, Iter first, Iter last, OutputIter d_first, BinaryOp &&binary_op, T init) + :outline: +.. doxygenfunction:: dr::shp::inclusive_scan(ExecutionPolicy &&policy, Iter first, Iter last, OutputIter d_first, BinaryOp &&binary_op) + :outline: +.. doxygenfunction:: dr::shp::inclusive_scan(ExecutionPolicy &&policy, Iter first, Iter last, OutputIter d_first) + :outline: + +Execution policy-less versions + +.. doxygenfunction:: dr::shp::inclusive_scan(R &&r, O &&o) + :outline: +.. doxygenfunction:: dr::shp::inclusive_scan(R &&r, O &&o, BinaryOp &&binary_op) + :outline: +.. doxygenfunction:: dr::shp::inclusive_scan(R &&r, O &&o, BinaryOp &&binary_op, T init) + :outline: + +Distributed iterator versions + +.. doxygenfunction:: dr::shp::inclusive_scan(Iter first, Iter last, OutputIter d_first) + :outline: +.. doxygenfunction:: dr::shp::inclusive_scan(Iter first, Iter last, OutputIter d_first, BinaryOp &&binary_op) + :outline: +.. doxygenfunction:: dr::shp::inclusive_scan(Iter first, Iter last, OutputIter d_first, BinaryOp &&binary_op, T init) + :outline: + +Description +=========== + +.. seealso:: + + 'std::inclusive_scan'_ + +Examples +======== diff --git a/spec/_sources/algorithms/iota.rst b/spec/_sources/algorithms/iota.rst new file mode 100644 index 0000000000..cb1b4cae41 --- /dev/null +++ b/spec/_sources/algorithms/iota.rst @@ -0,0 +1,45 @@ +.. SPDX-FileCopyrightText: Intel Corporation +.. +.. SPDX-License-Identifier: BSD-3-Clause + +.. include:: ../include/distributed-ranges.rst + +.. _iota: + +========== + ``iota`` +========== + +Interface +========= + +MHP +--- + +.. doxygenfunction:: dr::mhp::iota(R &&r, T value) + :outline: +.. doxygenfunction:: dr::mhp::iota(Iter begin, Iter end, T value) + :outline: + +SHP +--- + +.. doxygenfunction:: dr::shp::iota(R &&r, T value) + :outline: +.. doxygenfunction:: dr::shp::iota(Iter begin, Iter end, T value) + :outline: + + + +Description +=========== + +.. seealso:: + + `std::ranges::iota`_ + Standard C++ algorithm + `std::iota`_ + Standard C++ algorithm + +Usage +===== diff --git a/spec/_sources/algorithms/reduce.rst b/spec/_sources/algorithms/reduce.rst new file mode 100644 index 0000000000..41df3f06d2 --- /dev/null +++ b/spec/_sources/algorithms/reduce.rst @@ -0,0 +1,78 @@ +.. SPDX-FileCopyrightText: Intel Corporation +.. +.. SPDX-License-Identifier: BSD-3-Clause + +.. include:: ../include/distributed-ranges.rst + +.. _reduce: + +============ + ``reduce`` +============ + +Interface +========= + +MHP +--- + +.. doxygenfunction:: dr::mhp::reduce(std::size_t root, DR &&dr, T init, auto &&binary_op) + :outline: +.. doxygenfunction:: dr::mhp::reduce(DR &&dr, T init, auto &&binary_op) + :outline: +.. doxygenfunction:: dr::mhp::reduce(std::size_t root, DR &&dr, T init) + :outline: +.. doxygenfunction:: dr::mhp::reduce(DR &&dr, T init) + :outline: +.. doxygenfunction:: dr::mhp::reduce(std::size_t root, DR &&dr) + :outline: +.. doxygenfunction:: dr::mhp::reduce(DR &&dr) + :outline: +.. doxygenfunction:: dr::mhp::reduce(std::size_t root, DI first, DI last, T init, auto &&binary_op) + :outline: +.. doxygenfunction:: dr::mhp::reduce(DI first, DI last, T init, auto &&binary_op) + :outline: +.. doxygenfunction:: dr::mhp::reduce(std::size_t root, DI first, DI last, T init) + :outline: +.. doxygenfunction:: dr::mhp::reduce(DI first, DI last, T init) + :outline: +.. doxygenfunction:: dr::mhp::reduce(std::size_t root, DI first, DI last) + :outline: +.. doxygenfunction:: dr::mhp::reduce(DI first, DI last) + :outline: + +SHP +--- + +.. doxygenfunction:: dr::shp::reduce(ExecutionPolicy &&policy, R &&r, T init, BinaryOp &&binary_op) + :outline: +.. doxygenfunction:: dr::shp::reduce(ExecutionPolicy &&policy, R &&r, T init) + :outline: +.. doxygenfunction:: dr::shp::reduce(ExecutionPolicy &&policy, R &&r) + :outline: + +Iterator versions + +.. doxygenfunction:: dr::shp::reduce(ExecutionPolicy &&policy, Iter first, Iter last) + :outline: +.. doxygenfunction:: dr::shp::reduce(ExecutionPolicy &&policy, Iter first, Iter last, T init) + :outline: +.. doxygenfunction:: dr::shp::reduce(ExecutionPolicy &&policy, Iter first, Iter last, T init, BinaryOp &&binary_op) + :outline: + +Execution policy-less algorithms + +.. doxygenfunction:: dr::shp::reduce(R &&r) + :outline: +.. doxygenfunction:: dr::shp::reduce(R &&r, T init) + :outline: +.. doxygenfunction:: dr::shp::reduce(R &&r, T init, BinaryOp &&binary_op) + :outline: + +Description +=========== + +.. seealso:: `std::reduce`_ + +Examples +======== diff --git a/spec/_sources/algorithms/shp_matrix_gemm.rst b/spec/_sources/algorithms/shp_matrix_gemm.rst new file mode 100644 index 0000000000..4db975ca71 --- /dev/null +++ b/spec/_sources/algorithms/shp_matrix_gemm.rst @@ -0,0 +1,23 @@ +.. SPDX-FileCopyrightText: Intel Corporation +.. +.. SPDX-License-Identifier: BSD-3-Clause + +.. include:: ../include/distributed-ranges.rst + +.. _gemm: + +====================== + ``gemm`` +====================== + +Interface +========= + +.. doxygenfunction:: dr::shp::gemm(distributed_dense_matrix &a, distributed_dense_matrix &b, distributed_dense_matrix &c) + +Description +=========== + + +Examples +======== diff --git a/spec/_sources/algorithms/shp_matrix_gemv.rst b/spec/_sources/algorithms/shp_matrix_gemv.rst new file mode 100644 index 0000000000..aa8bba7eba --- /dev/null +++ b/spec/_sources/algorithms/shp_matrix_gemv.rst @@ -0,0 +1,27 @@ +.. SPDX-FileCopyrightText: Intel Corporation +.. +.. SPDX-License-Identifier: BSD-3-Clause + +.. include:: ../include/distributed-ranges.rst + +.. _gemv: + +====================== + ``gemv`` +====================== + +Interface +========= + +.. doxygenfunction:: dr::shp::flat_gemv(C &&c, dr::shp::sparse_matrix &a, B &&b) +.. doxygenfunction:: dr::shp::gemv(C &&c, dr::shp::sparse_matrix &a, B &&b, shp::duplicated_vector> &scratch) +.. doxygenfunction:: dr::shp::gemv(C &&c, dr::shp::sparse_matrix &a, B &&b) +.. doxygenfunction:: dr::shp::gemv_square(C &&c, dr::shp::sparse_matrix &a, B &&b) +.. doxygenfunction:: dr::shp::gemv_square_copy(C &&c, dr::shp::sparse_matrix &a, B &&b) + +Description +=========== + + +Examples +======== diff --git a/spec/_sources/algorithms/sort.rst b/spec/_sources/algorithms/sort.rst new file mode 100644 index 0000000000..699c1d73c3 --- /dev/null +++ b/spec/_sources/algorithms/sort.rst @@ -0,0 +1,38 @@ +.. SPDX-FileCopyrightText: Intel Corporation +.. +.. SPDX-License-Identifier: BSD-3-Clause + +.. include:: ../include/distributed-ranges.rst + +.. _sort: + +========== + ``sort`` +========== + +Interface +========= + +MHP +--- + +SHP +--- + +.. doxygenfunction:: dr::shp::sort(R &&r, Compare comp = Compare()) + :outline: +.. doxygenfunction:: dr::shp::sort(RandomIt first, RandomIt last, Compare comp = Compare()) + :outline: + +Description +=========== + +.. seealso:: + + C++ model + `std::sort`_ + C++ model + `std::ranges::sort`_ + +Usage +===== diff --git a/spec/_sources/algorithms/transform.rst b/spec/_sources/algorithms/transform.rst new file mode 100644 index 0000000000..c02a18481e --- /dev/null +++ b/spec/_sources/algorithms/transform.rst @@ -0,0 +1,44 @@ +.. SPDX-FileCopyrightText: Intel Corporation +.. +.. SPDX-License-Identifier: BSD-3-Clause + +.. include:: ../include/distributed-ranges.rst + +.. _transform: + +=============== + ``transform`` +=============== + +Interface +========= + +MHP +--- + +.. doxygenfunction:: dr::mhp::transform(rng::forward_range auto &&in, dr::distributed_iterator auto out, auto op) +.. doxygenfunction:: dr::mhp::transform(DI_IN &&first, DI_IN &&last, dr::distributed_iterator auto &&out, auto op) + +SHP +--- + +.. doxygenfunction:: dr::shp::transform(ExecutionPolicy &&policy, dr::distributed_range auto &&in, dr::distributed_iterator auto out, auto &&fn) +.. doxygenfunction:: dr::shp::transform(R &&in, Iter out, Fn &&fn) +.. doxygenfunction:: dr::shp::transform(ExecutionPolicy &&policy, Iter1 in_begin, Iter1 in_end, Iter2 out_end, Fn &&fn) +.. doxygenfunction:: dr::shp::transform(Iter1 in_begin, Iter1 in_end, Iter2 out_end, Fn &&fn) + + +Description +=========== + +.. seealso:: + + `std::transform`_ + C++ model + `std::ranges::transform`_ + C++ range-based model + :ref:`reduce` + related algorithm + +Usage +===== diff --git a/spec/_sources/arch.rst b/spec/_sources/arch.rst new file mode 100644 index 0000000000..cad22a6423 --- /dev/null +++ b/spec/_sources/arch.rst @@ -0,0 +1,7 @@ +.. SPDX-FileCopyrightText: Intel Corporation +.. +.. SPDX-License-Identifier: BSD-3-Clause + +============== + Architecture +============== diff --git a/spec/_sources/concepts.rst b/spec/_sources/concepts.rst new file mode 100644 index 0000000000..cca429cc38 --- /dev/null +++ b/spec/_sources/concepts.rst @@ -0,0 +1,177 @@ +.. SPDX-FileCopyrightText: Intel Corporation +.. +.. SPDX-License-Identifier: BSD-3-Clause + +.. _concepts: + +======== +Concepts +======== + +``remote_iterator`` +=================== + +.. doxygenconcept:: dr::remote_iterator + +Defined in ``concepts.hpp`` +:: + + template + concept remote_iterator = + std::forward_iterator && requires(I &iter) { dr::ranges::rank(iter); }; + +Requirements +"""""""""""" +1. ``I`` fulfills ``std::forward_iterator`` +2. ``i`` has a method ``rank`` returning the rank on which the memory + ``i`` references is located. + +``remote_range`` +================ + +.. doxygenconcept:: dr::remote_range + +Defined in ``concepts.hpp`` +:: + + template + concept remote_range = + rng::forward_range && requires(R &r) { dr::ranges::rank(r); }; + +Requirements +"""""""""""" +1. ``R`` fulfills ``rng::forward_range`` +2. ``r`` has a method ``rank`` returning the rank on which the memory + ``r`` references is located. + +``distributed_range`` +===================== + +.. doxygenconcept:: dr::distributed_range + +Defined in ``concepts.hpp`` +:: + + template + concept distributed_range = + rng::forward_range && requires(R &r) { dr::ranges::segments(r); }; + +Requirements +"""""""""""" +1. ``R`` fulfills ``rng::forward_range`` +2. ``r`` has a method ``segments`` + +``remote_contiguous_iterator`` +============================== + +.. doxygenconcept:: dr::remote_contiguous_iterator + +A remote contiguous iterator acts as a pointer to some contiguous piece +of remote memory. + +Defined in ``concepts.hpp`` +:: + + template + concept remote_contiguous_iterator = std::random_access_iterator && + requires(I i) { + { i.rank() } -> std::convertible_to; + { i.local() } -> std::contiguous_iterator; + }; + + +Requirements +"""""""""""" + +An object `i` of type ``I`` fulfills ``remote_contiguous_iterator`` +if and only if: + +1. ``I`` fulfills ``std::random_access_iterator`` +2. ``i`` has a method ``rank`` returning the rank on which the memory + ``i`` references is located. +3. ``i`` has a method ``local`` returning an object ``l`` whose type + fulfills ``std::contiguous_iterator``. Dereferencing ``l`` is + well-defined if the current rank is equal ``i.rank()``. + +Remarks +""""""" +Instantiations of `remote_ptr`, `device_ptr`, and `BCL::GlobalPtr` should all +fulfill ``remote_contiguous_iterator``. + + +``remote_contiguous_range`` +=========================== + +.. doxygenconcept:: dr::remote_contiguous_range + +A remote contiguous range is a range located in a contiguous piece of remote +memory. + +Defined in ``concepts.hpp`` + +:: + + template + concept remote_contiguous_range = std::ranges::random_access_range && + remote_contiguous_iterator> && requires(T t) { + { t.rank() } -> std::convertible_to; + }; + + +Requirements +"""""""""""" + +An object `t` of type ``T`` fulfills ``remote_contiguous_range`` if and only +if: + +1. ``T`` fulfills ``std::ranges::random_access_range``. +2. ``T``'s iterator type fulfills ``remote_contiguous_iterator``. +3. ``t`` has a method ``rank`` returning the rank on which the range is + located. For all iterators ``iter`` ``t.rank() == t.begin().rank()``. + +Remarks +""""""" +All of the iterators in ``[begin(), end())`` should be contiguous iterators +with the same rank, and ``[begin().local(), end().local())`` should form a +contiguous range referencing the same memory, but locally. Not quite sure how +to express that concisely. + +``distributed_contiguous_range`` +================================ + +.. doxygenconcept:: dr::distributed_contiguous_range + +A distributed contiguous range is a range consisting of multiple segments +distributed over multiple processes, where each each segment is a +remote contiguous range. + +Defined in ``concepts.hpp`` + +:: + + template + concept distributed_contiguous_range = std::ranges::random_access_range && + requires(T t) { + { t.segments() } -> std::ranges::random_access_range; + { + std::declval>() + } -> remote_contiguous_range; + }; + + +Requirements +"""""""""""" + +An object ``t`` of type ``T`` fulfills ``distributed_contiguous_range`` if and +only if: + +1. ``T`` fulfills `std::ranges::random_access_range` +2. ``t`` has a method ``segments`` such that the ``t.segments()`` returns an + ``std::ranges::random_access_range`` where each element is a + ``remote_contiguous_range``. + +Remarks +""""""" +Should there be other requirements, other than ``segments``? Perhaps a +``distribution`` method to return an implementation-defined type describing the +distribution? diff --git a/spec/_sources/containers/containers.rst b/spec/_sources/containers/containers.rst new file mode 100644 index 0000000000..81d9f50600 --- /dev/null +++ b/spec/_sources/containers/containers.rst @@ -0,0 +1,22 @@ +.. SPDX-FileCopyrightText: Intel Corporation +.. +.. SPDX-License-Identifier: BSD-3-Clause + +============ + Containers +============ + +*Containers* own storage. + +The storage for a *distributed container* is divided over multiple +processes and can be accessed by any process in the team. + +.. toctree:: + :maxdepth: 1 + + mhp_distributed_vector + mhp_distributed_dense_matrix + + shp_distributed_vector + shp_dense_matrix + shp_sparse_matrix diff --git a/spec/_sources/containers/mhp_distributed_dense_matrix.rst b/spec/_sources/containers/mhp_distributed_dense_matrix.rst new file mode 100644 index 0000000000..a916587aa7 --- /dev/null +++ b/spec/_sources/containers/mhp_distributed_dense_matrix.rst @@ -0,0 +1,26 @@ +.. SPDX-FileCopyrightText: Intel Corporation +.. +.. SPDX-License-Identifier: BSD-3-Clause + +.. include:: ../include/distributed-ranges.rst + +.. _distributed_dense_matrix: + +===================================== +``dr::mhp::distributed_dense_matrix`` +===================================== + +Interface +========= + +.. code-block:: cpp + + template class distributed_dense_matrix; + +The class will be merged and documented soon + + +Description +=========== + +Dense matrix class, distributed over MPI nodes diff --git a/spec/_sources/containers/mhp_distributed_vector.rst b/spec/_sources/containers/mhp_distributed_vector.rst new file mode 100644 index 0000000000..05f3db016e --- /dev/null +++ b/spec/_sources/containers/mhp_distributed_vector.rst @@ -0,0 +1,27 @@ +.. SPDX-FileCopyrightText: Intel Corporation +.. +.. SPDX-License-Identifier: BSD-3-Clause + +.. include:: ../include/distributed-ranges.rst + +.. _mhp_distributed_vector: + +=============================== +``dr::mhp::distributed_vector`` +=============================== + +Interface +========= + +.. doxygenclass:: dr::mhp::distributed_vector + :members: + +Description +=========== + +Vector distributed among MPI nodes, with support +for data exchange at segment edges (halo) + +.. seealso:: + + `std::vector`_ diff --git a/spec/_sources/containers/shp_dense_matrix.rst b/spec/_sources/containers/shp_dense_matrix.rst new file mode 100644 index 0000000000..7c49c94472 --- /dev/null +++ b/spec/_sources/containers/shp_dense_matrix.rst @@ -0,0 +1,20 @@ +.. SPDX-FileCopyrightText: Intel Corporation +.. +.. SPDX-License-Identifier: BSD-3-Clause + +.. include:: ../include/distributed-ranges.rst + +.. _shp_dense_matrix: + +=============================== +``dr::shp::dense_matrix`` +=============================== + +Interface +========= + +.. doxygenclass:: dr::shp::dense_matrix + :members: + +Description +=========== diff --git a/spec/_sources/containers/shp_distributed_vector.rst b/spec/_sources/containers/shp_distributed_vector.rst new file mode 100644 index 0000000000..9a5fb3be33 --- /dev/null +++ b/spec/_sources/containers/shp_distributed_vector.rst @@ -0,0 +1,24 @@ +.. SPDX-FileCopyrightText: Intel Corporation +.. +.. SPDX-License-Identifier: BSD-3-Clause + +.. include:: ../include/distributed-ranges.rst + +.. _shp_distributed_vector: + +=============================== +``dr::shp::distributed_vector`` +=============================== + +Interface +========= + +.. doxygenstruct:: dr::shp::distributed_vector + :members: + +Description +=========== + +.. seealso:: + + `std::vector`_ diff --git a/spec/_sources/containers/shp_sparse_matrix.rst b/spec/_sources/containers/shp_sparse_matrix.rst new file mode 100644 index 0000000000..1f7466ad31 --- /dev/null +++ b/spec/_sources/containers/shp_sparse_matrix.rst @@ -0,0 +1,20 @@ +.. SPDX-FileCopyrightText: Intel Corporation +.. +.. SPDX-License-Identifier: BSD-3-Clause + +.. include:: ../include/distributed-ranges.rst + +.. _shp_sparse_matrix: + +=============================== +``dr::shp::sparse_matrix`` +=============================== + +Interface +========= + +.. doxygenclass:: dr::shp::sparse_matrix + :members: + +Description +=========== diff --git a/spec/_sources/include/distributed-ranges.rst b/spec/_sources/include/distributed-ranges.rst new file mode 100644 index 0000000000..08da383a41 --- /dev/null +++ b/spec/_sources/include/distributed-ranges.rst @@ -0,0 +1,41 @@ +.. SPDX-FileCopyrightText: Intel Corporation +.. +.. SPDX-License-Identifier: BSD-3-Clause + +.. cppreference links + +.. _`C++ execution policies`: https://en.cppreference.com/w/cpp/algorithm/execution_policy_tag_t + +.. _`std::copy`: https://en.cppreference.com/w/cpp/algorithm/copy +.. _`std::exclusive_scan`: https://en.cppreference.com/w/cpp/algorithm/exclusive_scan +.. _`std::fill`: https://en.cppreference.com/w/cpp/algorithm/fill +.. _`std::for_each`: https://en.cppreference.com/w/cpp/algorithm/for_each +.. _`std::inclusive_scan`: https://en.cppreference.com/w/cpp/algorithm/inclusive_scan +.. _`std::iota`: https://en.cppreference.com/w/cpp/algorithm/iota +.. _`std::mdspan`: https://en.cppreference.com/w/cpp/container/mdspan +.. _`std::reduce`: https://en.cppreference.com/w/cpp/algorithm/reduce +.. _`std::span`: https://en.cppreference.com/w/cpp/container/span +.. _`std::sort`: https://en.cppreference.com/w/cpp/algorithm/sort +.. _`std::transform`: https://en.cppreference.com/w/cpp/algorithm/transform +.. _`std::transform_reduce`: https://en.cppreference.com/w/cpp/algorithm/transform_reduce +.. _`std::vector`: https://en.cppreference.com/w/cpp/container/vector + +.. _`std::ranges::copy`: https://en.cppreference.com/w/cpp/algorithm/ranges/copy +.. _`std::ranges::fill`: https://en.cppreference.com/w/cpp/algorithm/ranges/fill +.. _`std::ranges::for_each`: https://en.cppreference.com/w/cpp/algorithm/ranges/for_each +.. _`std::ranges::iota`: https://en.cppreference.com/w/cpp/algorithm/ranges/iota +.. _`std::ranges::sort`: https://en.cppreference.com/w/cpp/algorithm/ranges/sort +.. _`std::ranges::transform`: https://en.cppreference.com/w/cpp/algorithm/ranges/transform + +.. _`std::ranges::views::all`: https://en.cppreference.com/w/cpp/ranges/all_view +.. _`std::ranges::views::counted`: https://en.cppreference.com/w/cpp/ranges/view_counted +.. _`std::ranges::views::drop`: https://en.cppreference.com/w/cpp/ranges/drop_view +.. _`std::ranges::views::iota`: https://en.cppreference.com/w/cpp/ranges/iota_view +.. _`std::ranges::views::slide`: https://en.cppreference.com/w/cpp/ranges/slide_view +.. _`std::ranges::views::take`: https://en.cppreference.com/w/cpp/ranges/take_view +.. _`std::ranges::views::transform`: https://en.cppreference.com/w/cpp/ranges/transform_view +.. _`std::ranges::views::zip`: https://en.cppreference.com/w/cpp/ranges/zip_view + +.. C++ paper links + +.. _`std::mdarray`: https://www.open-std.org/JTC1/SC22/WG21/docs/papers/2022/p1684r2.html diff --git a/spec/_sources/index.rst b/spec/_sources/index.rst new file mode 100644 index 0000000000..f580e54175 --- /dev/null +++ b/spec/_sources/index.rst @@ -0,0 +1,31 @@ +.. SPDX-FileCopyrightText: Intel Corporation +.. +.. SPDX-License-Identifier: BSD-3-Clause + +.. distributed-ranges documentation master file, created by + sphinx-quickstart on Wed Sep 7 15:21:53 2022. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Distributed Ranges +================== + +Welcome to the Distributed Ranges Specification. + +.. toctree:: + :maxdepth: 1 + + intro + arch + concepts + containers/containers + algorithms/algorithms + views/views + + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/spec/_sources/intro.rst b/spec/_sources/intro.rst new file mode 100644 index 0000000000..d305771c88 --- /dev/null +++ b/spec/_sources/intro.rst @@ -0,0 +1,7 @@ +.. SPDX-FileCopyrightText: Intel Corporation +.. +.. SPDX-License-Identifier: BSD-3-Clause + +============== + Introduction +============== diff --git a/spec/_sources/views/all_view.rst b/spec/_sources/views/all_view.rst new file mode 100644 index 0000000000..d4dc3db4d8 --- /dev/null +++ b/spec/_sources/views/all_view.rst @@ -0,0 +1,21 @@ +.. SPDX-FileCopyrightText: Intel Corporation +.. +.. SPDX-License-Identifier: BSD-3-Clause + +.. include:: ../include/distributed-ranges.rst + +.. _all_view: + +============= + ``all_view`` +============= + +Interface +========= + +.. code-block:: cpp + + dr::mhp::views::all + dr::shp::views::all + +For interface, see `std::ranges::views::all`_ diff --git a/spec/_sources/views/counted_view.rst b/spec/_sources/views/counted_view.rst new file mode 100644 index 0000000000..435af0281b --- /dev/null +++ b/spec/_sources/views/counted_view.rst @@ -0,0 +1,21 @@ +.. SPDX-FileCopyrightText: Intel Corporation +.. +.. SPDX-License-Identifier: BSD-3-Clause + +.. include:: ../include/distributed-ranges.rst + +.. _counted_view: + +================= + ``counted_view`` +================= + +Interface +========= + +.. code-block:: cpp + + dr::mhp::views::counted + dr::shp::views::counted + +For interface, see `std::ranges::views::counted`_ diff --git a/spec/_sources/views/drop_view.rst b/spec/_sources/views/drop_view.rst new file mode 100644 index 0000000000..af1b1b1d7f --- /dev/null +++ b/spec/_sources/views/drop_view.rst @@ -0,0 +1,21 @@ +.. SPDX-FileCopyrightText: Intel Corporation +.. +.. SPDX-License-Identifier: BSD-3-Clause + +.. include:: ../include/distributed-ranges.rst + +.. _drop_view: + +============== + ``drop_view`` +============== + +Interface +========= + +.. code-block:: cpp + + dr::mhp::views::drop + dr::shp::views::drop + +For interface, see `std::ranges::views::drop`_ diff --git a/spec/_sources/views/iota_view.rst b/spec/_sources/views/iota_view.rst new file mode 100644 index 0000000000..25775651d3 --- /dev/null +++ b/spec/_sources/views/iota_view.rst @@ -0,0 +1,21 @@ +.. SPDX-FileCopyrightText: Intel Corporation +.. +.. SPDX-License-Identifier: BSD-3-Clause + +.. include:: ../include/distributed-ranges.rst + +.. _iota_view: + +============== + ``iota_view`` +============== + +Interface +========= + +.. code-block:: cpp + + dr::mhp::views::all + dr::shp::views::all + +For interface, see `std::ranges::views::all`_ diff --git a/spec/_sources/views/sliding_view.rst b/spec/_sources/views/sliding_view.rst new file mode 100644 index 0000000000..316023640d --- /dev/null +++ b/spec/_sources/views/sliding_view.rst @@ -0,0 +1,28 @@ +.. SPDX-FileCopyrightText: Intel Corporation +.. +.. SPDX-License-Identifier: BSD-3-Clause + +.. include:: ../include/distributed-ranges.rst + +.. _sliding_view: + +================= + ``sliding_view`` +================= + +Interface +========= + + +.. code-block:: cpp + + dr::mhp::views::sliding + dr::shp::views::sliding + +Description +=========== + +.. seealso:: + + `std::ranges::views::slide`_ + Standard C++ view diff --git a/spec/_sources/views/take_view.rst b/spec/_sources/views/take_view.rst new file mode 100644 index 0000000000..942931c6da --- /dev/null +++ b/spec/_sources/views/take_view.rst @@ -0,0 +1,21 @@ +.. SPDX-FileCopyrightText: Intel Corporation +.. +.. SPDX-License-Identifier: BSD-3-Clause + +.. include:: ../include/distributed-ranges.rst + +.. _take_view: + +============== + ``take_view`` +============== + +Interface +========= + +.. code-block:: cpp + + dr::mhp::views::take + dr::shp::views::take + +For interface, see `std::ranges::views::take`_ diff --git a/spec/_sources/views/transform_view.rst b/spec/_sources/views/transform_view.rst new file mode 100644 index 0000000000..f3c9a948ea --- /dev/null +++ b/spec/_sources/views/transform_view.rst @@ -0,0 +1,21 @@ +.. SPDX-FileCopyrightText: Intel Corporation +.. +.. SPDX-License-Identifier: BSD-3-Clause + +.. include:: ../include/distributed-ranges.rst + +.. _transform_view: + +=================== + ``transform_view`` +=================== + +Interface +========= + +.. code-block:: cpp + + dr::mhp::views::transform + dr::shp::views::transform + +For interface, see `std::ranges::views::transform`_ diff --git a/spec/_sources/views/views.rst b/spec/_sources/views/views.rst new file mode 100644 index 0000000000..6dd677b7d4 --- /dev/null +++ b/spec/_sources/views/views.rst @@ -0,0 +1,21 @@ +.. SPDX-FileCopyrightText: Intel Corporation +.. +.. SPDX-License-Identifier: BSD-3-Clause + +======= + Views +======= + +Views can reference collections of objects but do not own the storage. + +.. toctree:: + :maxdepth: 1 + + all_view + counted_view + drop_view + iota_view + take_view + sliding_view + transform_view + zip_view diff --git a/spec/_sources/views/zip_view.rst b/spec/_sources/views/zip_view.rst new file mode 100644 index 0000000000..d24c0eae47 --- /dev/null +++ b/spec/_sources/views/zip_view.rst @@ -0,0 +1,39 @@ +.. SPDX-FileCopyrightText: Intel Corporation +.. +.. SPDX-License-Identifier: BSD-3-Clause + + +.. include:: ../include/distributed-ranges.rst + +.. _zip_view: + +============= + ``zip_view`` +============= + +Interface +========= + +MHP +--- + +.. doxygenclass:: dr::mhp::zip_view + :members: +.. doxygenfunction:: dr::mhp::views::zip + :outline: + +SHP +--- + +.. doxygenclass:: dr::shp::zip_view + :members: +.. doxygenfunction:: dr::shp::views::zip + :outline: + +Description +=========== + +.. seealso:: + + `std::ranges::views::zip`_ + Standard C++ view diff --git a/spec/_static/basic.css b/spec/_static/basic.css new file mode 100644 index 0000000000..61572969d1 --- /dev/null +++ b/spec/_static/basic.css @@ -0,0 +1,903 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +div.section::after { + display: block; + content: ''; + clear: left; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 270px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li p.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 360px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, figure.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, figure.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar, +aside.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px; + background-color: #ffe; + width: 40%; + float: right; + clear: right; + overflow-x: auto; +} + +p.sidebar-title { + font-weight: bold; +} + +nav.contents, +aside.topic, +div.admonition, div.topic, blockquote { + clear: left; +} + +/* -- topics ---------------------------------------------------------------- */ + +nav.contents, +aside.topic, +div.topic { + border: 1px solid #ccc; + padding: 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +nav.contents > :last-child, +aside.topic > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +nav.contents::after, +aside.topic::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + margin-top: 10px; + margin-bottom: 10px; + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure, figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption, figcaption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number, +figcaption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text, +figcaption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist { + margin: 1em 0; +} + +table.hlist td { + vertical-align: top; +} + +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} + +aside.footnote > span, +div.citation > span { + float: left; +} +aside.footnote > span:last-of-type, +div.citation > span:last-of-type { + padding-right: 0.5em; +} +aside.footnote > p { + margin-left: 2em; +} +div.citation > p { + margin-left: 4em; +} +aside.footnote > p:last-of-type, +div.citation > p:last-of-type { + margin-bottom: 0em; +} +aside.footnote > p:last-of-type:after, +div.citation > p:last-of-type:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > :first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +.classifier:before { + font-style: normal; + margin: 0 0.5em; + content: ":"; + display: inline-block; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +pre, div[class*="highlight-"] { + clear: both; +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; + white-space: nowrap; +} + +div[class*="highlight-"] { + margin: 1em 0; +} + +td.linenos pre { + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; +} + +table.highlighttable td { + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; +} + +div.code-block-caption { + margin-top: 1em; + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + margin: 1em 0; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: absolute; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/spec/_static/doctools.js b/spec/_static/doctools.js new file mode 100644 index 0000000000..d06a71d751 --- /dev/null +++ b/spec/_static/doctools.js @@ -0,0 +1,156 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Base JavaScript utilities for all Sphinx HTML documentation. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + +const _ready = (callback) => { + if (document.readyState !== "loading") { + callback(); + } else { + document.addEventListener("DOMContentLoaded", callback); + } +}; + +/** + * Small JavaScript module for the documentation. + */ +const Documentation = { + init: () => { + Documentation.initDomainIndexTable(); + Documentation.initOnKeyListeners(); + }, + + /** + * i18n support + */ + TRANSLATIONS: {}, + PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), + LOCALE: "unknown", + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext: (string) => { + const translated = Documentation.TRANSLATIONS[string]; + switch (typeof translated) { + case "undefined": + return string; // no translation + case "string": + return translated; // translation exists + default: + return translated[0]; // (singular, plural) translation tuple exists + } + }, + + ngettext: (singular, plural, n) => { + const translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated !== "undefined") + return translated[Documentation.PLURAL_EXPR(n)]; + return n === 1 ? singular : plural; + }, + + addTranslations: (catalog) => { + Object.assign(Documentation.TRANSLATIONS, catalog.messages); + Documentation.PLURAL_EXPR = new Function( + "n", + `return (${catalog.plural_expr})` + ); + Documentation.LOCALE = catalog.locale; + }, + + /** + * helper function to focus on search bar + */ + focusSearchBar: () => { + document.querySelectorAll("input[name=q]")[0]?.focus(); + }, + + /** + * Initialise the domain index toggle buttons + */ + initDomainIndexTable: () => { + const toggler = (el) => { + const idNumber = el.id.substr(7); + const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); + if (el.src.substr(-9) === "minus.png") { + el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; + toggledRows.forEach((el) => (el.style.display = "none")); + } else { + el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; + toggledRows.forEach((el) => (el.style.display = "")); + } + }; + + const togglerElements = document.querySelectorAll("img.toggler"); + togglerElements.forEach((el) => + el.addEventListener("click", (event) => toggler(event.currentTarget)) + ); + togglerElements.forEach((el) => (el.style.display = "")); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); + }, + + initOnKeyListeners: () => { + // only install a listener if it is really needed + if ( + !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && + !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS + ) + return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; + + if (!event.shiftKey) { + switch (event.key) { + case "ArrowLeft": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const prevLink = document.querySelector('link[rel="prev"]'); + if (prevLink && prevLink.href) { + window.location.href = prevLink.href; + event.preventDefault(); + } + break; + case "ArrowRight": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const nextLink = document.querySelector('link[rel="next"]'); + if (nextLink && nextLink.href) { + window.location.href = nextLink.href; + event.preventDefault(); + } + break; + } + } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case "/": + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; + Documentation.focusSearchBar(); + event.preventDefault(); + } + }); + }, +}; + +// quick alias for translations +const _ = Documentation.gettext; + +_ready(Documentation.init); diff --git a/spec/_static/documentation_options.js b/spec/_static/documentation_options.js new file mode 100644 index 0000000000..03c0d01dcb --- /dev/null +++ b/spec/_static/documentation_options.js @@ -0,0 +1,14 @@ +var DOCUMENTATION_OPTIONS = { + URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), + VERSION: '', + LANGUAGE: 'en', + COLLAPSE_INDEX: false, + BUILDER: 'html', + FILE_SUFFIX: '.html', + LINK_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '', + NAVIGATION_WITH_KEYS: true, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: true, +}; \ No newline at end of file diff --git a/spec/_static/file.png b/spec/_static/file.png new file mode 100644 index 0000000000000000000000000000000000000000..a858a410e4faa62ce324d814e4b816fff83a6fb3 GIT binary patch literal 286 zcmV+(0pb3MP)s`hMrGg#P~ix$^RISR_I47Y|r1 z_CyJOe}D1){SET-^Amu_i71Lt6eYfZjRyw@I6OQAIXXHDfiX^GbOlHe=Ae4>0m)d(f|Me07*qoM6N<$f}vM^LjV8( literal 0 HcmV?d00001 diff --git a/spec/_static/images/logo_binder.svg b/spec/_static/images/logo_binder.svg new file mode 100644 index 0000000000..45fecf7511 --- /dev/null +++ b/spec/_static/images/logo_binder.svg @@ -0,0 +1,19 @@ + + + + +logo + + + + + + + + diff --git a/spec/_static/images/logo_colab.png b/spec/_static/images/logo_colab.png new file mode 100644 index 0000000000000000000000000000000000000000..b7560ec216b2d1b6f77855525fe966c741833428 GIT binary patch literal 7601 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 diff --git a/spec/_static/images/logo_jupyterhub.svg b/spec/_static/images/logo_jupyterhub.svg new file mode 100644 index 0000000000..60cfe9f222 --- /dev/null +++ b/spec/_static/images/logo_jupyterhub.svg @@ -0,0 +1 @@ +logo_jupyterhubHub diff --git a/spec/_static/language_data.js b/spec/_static/language_data.js new file mode 100644 index 0000000000..250f5665fa --- /dev/null +++ b/spec/_static/language_data.js @@ -0,0 +1,199 @@ +/* + * language_data.js + * ~~~~~~~~~~~~~~~~ + * + * This script contains the language-specific data used by searchtools.js, + * namely the list of stopwords, stemmer, scorer and splitter. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +var stopwords = ["a", "and", "are", "as", "at", "be", "but", "by", "for", "if", "in", "into", "is", "it", "near", "no", "not", "of", "on", "or", "such", "that", "the", "their", "then", "there", "these", "they", "this", "to", "was", "will", "with"]; + + +/* Non-minified version is copied as a separate JS file, is available */ + +/** + * Porter Stemmer + */ +var Stemmer = function() { + + var step2list = { + ational: 'ate', + tional: 'tion', + enci: 'ence', + anci: 'ance', + izer: 'ize', + bli: 'ble', + alli: 'al', + entli: 'ent', + eli: 'e', + ousli: 'ous', + ization: 'ize', + ation: 'ate', + ator: 'ate', + alism: 'al', + iveness: 'ive', + fulness: 'ful', + ousness: 'ous', + aliti: 'al', + iviti: 'ive', + biliti: 'ble', + logi: 'log' + }; + + var step3list = { + icate: 'ic', + ative: '', + alize: 'al', + iciti: 'ic', + ical: 'ic', + ful: '', + ness: '' + }; + + var c = "[^aeiou]"; // consonant + var v = "[aeiouy]"; // vowel + var C = c + "[^aeiouy]*"; // consonant sequence + var V = v + "[aeiou]*"; // vowel sequence + + var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 + var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 + var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 + var s_v = "^(" + C + ")?" + v; // vowel in stem + + this.stemWord = function (w) { + var stem; + var suffix; + var firstch; + var origword = w; + + if (w.length < 3) + return w; + + var re; + var re2; + var re3; + var re4; + + firstch = w.substr(0,1); + if (firstch == "y") + w = firstch.toUpperCase() + w.substr(1); + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) + w = w.replace(re,"$1$2"); + else if (re2.test(w)) + w = w.replace(re2,"$1$2"); + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) + w = w + "e"; + else if (re3.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + else if (re4.test(w)) + w = w + "e"; + } + } + + // Step 1c + re = /^(.+?)y$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(s_v); + if (re.test(stem)) + w = stem + "i"; + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step2list[suffix]; + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step3list[suffix]; + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) + w = stem; + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) + w = stem; + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) + w = stem; + } + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + if (firstch == "y") + w = firstch.toLowerCase() + w.substr(1); + return w; + } +} + diff --git a/spec/_static/locales/ar/LC_MESSAGES/booktheme.mo b/spec/_static/locales/ar/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..15541a6a375f93efed3f410c2f892174ba91aaa0 GIT binary patch literal 1541 zcmZvaJ!}+56vrn40$lhsA5n;v39lh z&UUPnK|(?lfROD&7suGxxK0yMQ@o*|gesy+5vu&(?mBh?qn-WTn|=G<|NZw~b#1&Y zus*}?#(shQ752{`;fA&4V5qyTPS`e-!60i}(%5{r(0^;D!zP`#V66yFspV7<>kvF5*86z5`j$ z=8ez}?gu^a8}Li;DtHLIQScsk0P*i2&-V)CK7WC%Q*07qAJ7GU4juvd{a%p0tQWim zeu4N7$oY#!{2XK-Ul-?ZLAIP{VE@?5Oee^5uV0WLc46~8yjT}6*2P}4uiOhI#i!V; zXZ>RTx%Xyl*phu;(K~`m+PV^FjkZeL1V5sYI1K7moHI9c!}v9+ja5U&{2;G|4YhWh zm^7}c{~g+Tn8?Tvl<2F47Nu9i{l>4L9=6uy?FAD0FiY3w(=eiIKTWvQbqOe&{(Wd5^qM9YH}dGcsaNzja& zq-k29Wt#nO;9At7wwrWQc-|J&abpO^Bu%@f8>dB@7kE5QPu!GiO4q{asH8bJN^P3Y zvv7uYJM=8C@P0OzYSB}gLot+ZNt#(-bAo@Zj6?Yfp?anYnoPQR?;I# z{we#%LHPn31obOfkF`-+I9KUX>gUj zW@~ literal 0 HcmV?d00001 diff --git a/spec/_static/locales/ar/LC_MESSAGES/booktheme.po b/spec/_static/locales/ar/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000000..2e8d682024 --- /dev/null +++ b/spec/_static/locales/ar/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ar\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "suggest edit" +msgstr "أقترح تحرير" + +msgid "Last updated on" +msgstr "آخر تحديث في" + +msgid "Edit this page" +msgstr "قم بتحرير هذه الصفحة" + +msgid "Launch" +msgstr "إطلاق" + +msgid "Print to PDF" +msgstr "طباعة إلى PDF" + +msgid "open issue" +msgstr "قضية مفتوحة" + +msgid "Download notebook file" +msgstr "تنزيل ملف دفتر الملاحظات" + +msgid "Toggle navigation" +msgstr "تبديل التنقل" + +msgid "Source repository" +msgstr "مستودع المصدر" + +msgid "By the" +msgstr "بواسطة" + +msgid "next page" +msgstr "الصفحة التالية" + +msgid "repository" +msgstr "مخزن" + +msgid "Sphinx Book Theme" +msgstr "موضوع كتاب أبو الهول" + +msgid "Download source file" +msgstr "تنزيل ملف المصدر" + +msgid "Contents" +msgstr "محتويات" + +msgid "By" +msgstr "بواسطة" + +msgid "Copyright" +msgstr "حقوق النشر" + +msgid "Fullscreen mode" +msgstr "وضع ملء الشاشة" + +msgid "Open an issue" +msgstr "افتح قضية" + +msgid "previous page" +msgstr "الصفحة السابقة" + +msgid "Download this page" +msgstr "قم بتنزيل هذه الصفحة" + +msgid "Theme by the" +msgstr "موضوع بواسطة" diff --git a/spec/_static/locales/bg/LC_MESSAGES/booktheme.mo b/spec/_static/locales/bg/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..da95120037f8d7c52ad1f166a7682ea55ca47a01 GIT binary patch literal 1708 zcmaKqOKcQJ5QaOv0vkhkhC?jT2nh&cNkBwFYxY90B_t3AOpcMpyUpy7b@wpSL+}lZ zc_s=RKte*|C2`<_7URcy7jLdPR->G9h;qvTamgjhjlX8bj}R-P?fIs=y6dm{dw*ZQ z?5@DG8KWEHSBxzfKYoB0o|Q|4z)!5gYX#T^t^_xLtH5sX6L34Y5iEo2!IR(`P=OzV zHs>hFdG3I#!TVqr_zYYJPUie2U;izi{|U0*KVSh|x->h#2IP4+$a!{vO>jTB41AmO zFOci|8~haPLhws)C%7B@Hs=rEKFpioR`3nD2VA{8JAV*le@=j0?>TT6cp2OVJ_ot4 z*WiBe50LY0LeuQ=S0K-igY45ea0fUFvgOv1JgO3NWrRpO`@TbYDa&#J04 z8uLU~YT|f^4W5=k94AWjM}bBXBl{2ciBp+gq(T!1)p!vCDOMX z%z7FyzF${Td*=h+vjIf3x?r>F4C`bfVWiFnCdtcQkUma)U!h8cPEd+Dt17m5q+0w& zMKQ9KWTsza{bH(IICkV%?|gjko-YcyvBiPmP?e-b0iTC;FVH=*QuCr%+4AXuzT$!T zeUYc*Gb$?f>WZlb+AqligMlp^^|YVB*ODCc3;p#Z^6JGt6Ai^Bsl#*{m-qF^?6bU6 z%dKU(_p_dYpa*V5&_n77dhBk}xVz~t(j+x#hMF`X=r)bH5$d>$?h>`ABk5bs2r;-dTfq#Q2#?t@q|9teP3*uNPWy^ACfqd~8<8}Y{+a1%CJzCK zxEruG6KALRIVJ-U$3Yy!~NpG7AK|w8QyPuG1485SvTmo%i zrHNb3JL61fEcXDLQBPwL`;mLLOPayeL#0F0B5ju4Yr5-c6aTq5cjf(V=MS}!0~aLI KlK*|VZ0$SA#iddJ literal 0 HcmV?d00001 diff --git a/spec/_static/locales/bg/LC_MESSAGES/booktheme.po b/spec/_static/locales/bg/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000000..56ef0ebdfa --- /dev/null +++ b/spec/_static/locales/bg/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: bg\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "suggest edit" +msgstr "предложи редактиране" + +msgid "Last updated on" +msgstr "Последна актуализация на" + +msgid "Edit this page" +msgstr "Редактирайте тази страница" + +msgid "Launch" +msgstr "Стартиране" + +msgid "Print to PDF" +msgstr "Печат в PDF" + +msgid "open issue" +msgstr "отворен брой" + +msgid "Download notebook file" +msgstr "Изтеглете файла на бележника" + +msgid "Toggle navigation" +msgstr "Превключване на навигацията" + +msgid "Source repository" +msgstr "Хранилище на източника" + +msgid "By the" +msgstr "По" + +msgid "next page" +msgstr "Следваща страница" + +msgid "repository" +msgstr "хранилище" + +msgid "Sphinx Book Theme" +msgstr "Тема на книгата Sphinx" + +msgid "Download source file" +msgstr "Изтеглете изходния файл" + +msgid "Contents" +msgstr "Съдържание" + +msgid "By" +msgstr "От" + +msgid "Copyright" +msgstr "Авторско право" + +msgid "Fullscreen mode" +msgstr "Режим на цял екран" + +msgid "Open an issue" +msgstr "Отворете проблем" + +msgid "previous page" +msgstr "предишна страница" + +msgid "Download this page" +msgstr "Изтеглете тази страница" + +msgid "Theme by the" +msgstr "Тема от" diff --git a/spec/_static/locales/bn/LC_MESSAGES/booktheme.mo b/spec/_static/locales/bn/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..6b96639b726a2fa959a6419b6f8b7e0dfcce33ae GIT binary patch literal 1646 zcmbV~&5IOA7>8S2xE{WN>)mqrjbP_+ zD|`%n|9`+8@Gtlc{Cs5;eF=|2zkdOGUHYZ{3U0$*$xxrd?Ipj1NbvXay{#>+)sQwK zLc@BGr=Q8s@3s2pVyti%e$UVEm)Gmv@K$Kxb@iIkGQ)QH3Dc6%KAm>6q}ejje*L3r z>$oA5HgZzyAH?ybE$6p$-O1{5(WYr7xk%%tj7A!XA>+Uti*qA7X(KkWA+(Cd;*P4f zqC=@vB32^F^Nx(hvqTZ3#rXcw=x~uglc~-VqqA;wIBg~Bl-TQgnP|xqG73*IS+qW( zo6WWqDn6MsW0O!s$y282M*BKNku;Mh6WuA>9MAOkvTmve8r7pR%ZaLqqE6Ml~R{3$6RYz1^ zHxkvXiQSWlsf@*{*+H+Gm{gVVb|;J5)lr?D$ZJBS!OVxh8WP3p@HQnr8y3617^+0h zTGzYm>~GFKb#|8L(pyu`-gfp`;o|IhXQy$z<$9NR^WnYI&Q1wu?}S90&tc32?JEMg4wtZV(;LB0u<-^*y2)npB|JLL@f}SDrcO%Hi&xc%8I{oPgE$%7j?Kgl1>Fz ze@F9IjWZ|r@GsvuUE*t^AN05zoTs2{kFZmI~m25V-8`&>S^dPTx z$^cEyl^jJ+?oOKAsWhagj`qI>dC8~bzq_0hZSgC)LsF@U6+9F=tR`Ky;!WHMs_vF; z;&hv=3*2(}kGreju(wh1_KV>qMpKtu5HHORr>y#KY7MM6T^uJ&R^K(T z4hABYyJ6tQiOxVI^L*F1qO_S8am=vBunT>6i=$ATZdb3f&v8VJ2BK9Ft@hoIsQAhin!}wxzs(N*6pVu~DVqb08$hD1)Yjm|` zLS;tVxWMJrDAJYrr0_baPC1|EHL_WMn2%o?qrvC+h@~^*GMofV4`)o0LtLbidwpll9h6X)!5Y za@FKiW0X*mn3iX1k|l^w_?&_QX>NDCJM7-fGBbN{ zu90Yv ze2zJT`3vTkm``?L!Pxha5O~CXEFXgh!F}K{a6dQ$o&?W;$H6Xm6ub={0u}ff7#cnT z+0QfZQ*aGD2(E)iz#kj_+}M9>_J4vL?;Y3zckiz69|Czl1G1m9;7jl_xEK7Z;olA4 zfrnxL7yKGLyhn&Hz$@Tsa2Y%S-Uqp^$KWaO2ax0Z1af_E!2{s0AfNlAvHt_IJ_it- z&m9L@hqKN83dlMwfSm7Lkn7GsmYi+Vd*Crl_RV$g90)P3f&KE}ym+u5)|z$Y8sKu8 zBlmXaVEsAAPcR|Fw7=ro7!QS1iR;z`WrD|#V(fI1264kaFu9d685`8V+Kg6ouC~qI zmM&5s7(=Q(6*5s`F4h6A|KHA+dF~^pl%b)GmAEN=pt6W%P%&A9eQBapEEYH*4QcO7 zC3;R9II+~bF)xtNkjEETCX59u1`)=$+?iRns%x~9HOl3bCIBb~^g5yYs6 zq0Y{7oH|J1)JWU1NqdKTUnYq{mI{?16?;!bp}i2dzgNz~TZiiSZI0ibMsD3&xHY%^ z{^Gd{twz{(e_W^z1tf63$fY*36s6L66}rp)`S#WAb50t+qFj5Cn}I4y~Kg zBqen1P~=;^ymT^e&s#V29Wupq>${g`ss7ph#?V(?y7=vEOZ04vuGQ<}z{^y~66*P^ zno!}Y$w-Q&P)$-}%RuPqz&a}Is;MT!%#Nz{)Y2fgS=pT0Tnmc4rqvjN;Qj07&Ihjp zVvrB;Z*XvQD zxu;CEAr^xgZM{%PrEqqD`$N&!KBKt)RPHp%tyA?Xw}`Se37c!8k8_eTqth`htw3AZ zm~1S1a92z`@RU9C@Xu~NJj63$#L LZS{&p7>oY^Ev$2? literal 0 HcmV?d00001 diff --git a/spec/_static/locales/cs/LC_MESSAGES/booktheme.po b/spec/_static/locales/cs/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000000..3818df9765 --- /dev/null +++ b/spec/_static/locales/cs/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: cs\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "suggest edit" +msgstr "navrhnout úpravy" + +msgid "Last updated on" +msgstr "Naposledy aktualizováno" + +msgid "Edit this page" +msgstr "Upravit tuto stránku" + +msgid "Launch" +msgstr "Zahájení" + +msgid "Print to PDF" +msgstr "Tisk do PDF" + +msgid "open issue" +msgstr "otevřené číslo" + +msgid "Download notebook file" +msgstr "Stáhnout soubor poznámkového bloku" + +msgid "Toggle navigation" +msgstr "Přepnout navigaci" + +msgid "Source repository" +msgstr "Zdrojové úložiště" + +msgid "By the" +msgstr "Podle" + +msgid "next page" +msgstr "další strana" + +msgid "repository" +msgstr "úložiště" + +msgid "Sphinx Book Theme" +msgstr "Téma knihy Sfinga" + +msgid "Download source file" +msgstr "Stáhněte si zdrojový soubor" + +msgid "Contents" +msgstr "Obsah" + +msgid "By" +msgstr "Podle" + +msgid "Copyright" +msgstr "autorská práva" + +msgid "Fullscreen mode" +msgstr "Režim celé obrazovky" + +msgid "Open an issue" +msgstr "Otevřete problém" + +msgid "previous page" +msgstr "předchozí stránka" + +msgid "Download this page" +msgstr "Stáhněte si tuto stránku" + +msgid "Theme by the" +msgstr "Téma od" diff --git a/spec/_static/locales/da/LC_MESSAGES/booktheme.mo b/spec/_static/locales/da/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..f43157d70c63ff21b4385dc36cb73f5b14eb6b01 GIT binary patch literal 1304 zcmZ9KyKmG$5XKi02pkaJ&;+qGJPH$nD9}aMKoTh;K$JVu@15uDO?nzn&U>A+XM4Phfw-zKH#7 zA8uHO_6vba9LDV+coaMYo(2zt6W}@UGI$1TfTzGEa2zD?I2bB!f*j{Lcno|A9tB^6 zC&9NBKUV%PmHi!Ly?>3CQ(qR(uY!{wt8{eFL)2d+-GK0XzbJ2D#pEAm_OQa=bqv z>yEt{#_?I3XFI&O|2#v^6KxpGSKQga zB|}Q$t~G&7@Oa2KoKDgpX6$2=SrtoT1GTMPm0g|DuG`zfb!d+>q}t0|B_w8J9T57T zIag$v?>HhOdp0JqpnQ-;9;-mHv<7xzI;nV=;{#=+_P!vo=(Ir)D;H<{wy4q`3h#>~ zA!JFY1gY2+>V#-Mj+V)JM61hEKVto8pj^8@e}8uO{nYgvwW_gEYa^$+3`k%y&y+UP zvXd(3DKs9n=AzrX-#KM`ms~V!IyTlOsmt4K9cl~8BnA3fm$9lXW`$E(G-qAU*QLn^ zrf=MwmgQsPs*#r(a_ZW2O)OJ9*z+b%Z59igr)teR+B0C^wn>Bm@6LBsXEFWfiOCp} zUSoVqXi7p(4!JPl*su1tkyFr_56Z-%sbe(I4#o^g{#-PJazXT;wvB`*ceb5TPdvg| zr`IHo4yJvN)iV_A{*4(42I?u%!cD5KXs+sR7@qEf{)q=$-v3Mo~pNRgs6dB45A_~g;fK07nJ@Atd!PtN@)FuuTCzw-;3=>No&-0+;~;^bfwAQikaeDcpMpPw z$G{ih3Gh|R-`o9n?fMUp?fnCGz(a>7-ya8gy#TV#x8N_}HSiTa&9^9*#YUsChPKG9Ug3-wb>5ahNSoell`9^ zoCmHU$Afe<^%ebHTryT9ZaN#u#(;-<*Xy#1V#z(Q#;HPD7is9+wj60gd)vV!pVPk0 zSm_{ZRgzdPbcFPDxsr?txhJx6>8J8fdK zt=*csGQxpNwNctG%DhrOQ0(2=TFGwgz2}t;Bl6j@&0V2w*_AhjI(F8SEfezEl?8P+ zO!CTPE6$HYSK7K+hThdhIeF}TXXUw`ymDc&BbHF5O7u~OM`4rK)5Mn;Zwdn zburuA-y2y!aDY4^_ YHT)aX(-~_xf`&nTEYd88)4;9x4>RdeS^xk5 literal 0 HcmV?d00001 diff --git a/spec/_static/locales/de/LC_MESSAGES/booktheme.po b/spec/_static/locales/de/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000000..c0027d3ab0 --- /dev/null +++ b/spec/_static/locales/de/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: de\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "suggest edit" +msgstr "vorschlagen zu bearbeiten" + +msgid "Last updated on" +msgstr "Zuletzt aktualisiert am" + +msgid "Edit this page" +msgstr "Bearbeite diese Seite" + +msgid "Launch" +msgstr "Starten" + +msgid "Print to PDF" +msgstr "In PDF drucken" + +msgid "open issue" +msgstr "offenes Thema" + +msgid "Download notebook file" +msgstr "Notebook-Datei herunterladen" + +msgid "Toggle navigation" +msgstr "Navigation umschalten" + +msgid "Source repository" +msgstr "Quell-Repository" + +msgid "By the" +msgstr "Bis zum" + +msgid "next page" +msgstr "Nächste Seite" + +msgid "repository" +msgstr "Repository" + +msgid "Sphinx Book Theme" +msgstr "Sphinx-Buch-Thema" + +msgid "Download source file" +msgstr "Quelldatei herunterladen" + +msgid "Contents" +msgstr "Inhalt" + +msgid "By" +msgstr "Durch" + +msgid "Copyright" +msgstr "Urheberrechte ©" + +msgid "Fullscreen mode" +msgstr "Vollbildmodus" + +msgid "Open an issue" +msgstr "Öffnen Sie ein Problem" + +msgid "previous page" +msgstr "vorherige Seite" + +msgid "Download this page" +msgstr "Laden Sie diese Seite herunter" + +msgid "Theme by the" +msgstr "Thema von der" diff --git a/spec/_static/locales/el/LC_MESSAGES/booktheme.mo b/spec/_static/locales/el/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..fca6e9355f314677f2890f5679fd79dd67a7a5a2 GIT binary patch literal 1722 zcmZ{iPiS047{Euewt4U5n=fkKPHMz8X+JKcS{dGGPw+nU_c zCZPt>L)D-XMN9P{m<`*yO}BBoS3#I}@#Mj)Cp~!cBL2SFE!h-0?96ZHoA3Yk{@Ax; zMX{b{53_$`KhIu%fP=N`L8bVq-5d|WJ#ZJ?4|l_1_!N8@J_(C(AAASyg$6zb(>@oV z`1uSz3RmGC_yc?b-t6<2zWn$8{ZAG}N=-3*|lx#m@-51&_iV@GtlX{0B;& z|G|Us0FOuETkutwLXlsEZ^B>UVYqXrQitFhQ0g-9MK}YWfvbJC;B(wFD1G=Fz66IT z_E|X6=LsnC_o4J>9*)3IptM|SkT~LFKU;E^x(64jsmIx3FH7o|CH<3LOJ5JLNx{`F zvmIQ7ax;7w(hfIYb$phePOCsWALdpYv;G zOPqxDxMc1Trd2=DkykNltn8<_zIz?7*J?>AHYU*1VcDqDUXtp1RQ6I+)?vWC9+ax; z?Fa=g(0-ECjhcx404JfII61D)_Tt4R3KKsK<5_h!s`|lJua|GifioP~!B0M6o&VhxLBi1MZW0rDDj^PzkAoADB{_KUL1ZXW|5J z1>K9Em-u-XId|sNnX#?+BZm&>`i;#`&PJx7QxbSBs(F4es!LTbPE1;ScXB*`Y)dcp zg5;cu^J76NEc-#FppQ-YY3{TaRO_9ar-jjaZW8iNR~zWhPCd z!IGORj47br#qth1q_-xG*Y+m$QJl1ldYsi|#&y>pn)3O}2r<588%%~cb6DJv&M0zR z6Ju?!Gpp;aJ2H>n=Q;4)9QX)UBsQv>oVXExo49XqkvY35v_#)clq&D(UelG*<`bgE k?KNN}BbD^J+2#A$4_2dkCejtU)5(_TEbrUqDh*fv19*CpTMYflop9djWEuuR*>)1Ua4$Am958?gqbuT!-Hv=RLl? ztm83|e|Hk(lCvi7xt0eoxwahd<^hR9n|*n(9}lh{d$2y|1j)ji^V&Q(5ANYkOq8Lh zleoHqM}{7WYt{rZ!Q&-caXRS*F>UXd)T&q-8)(7WzFgEPZ5(@>yDt567<$^vOeG|m zu?~=4-?s8J^<76~z&terQmeydOn{H3s$Z$a!slCrhw4F8(v9dkg67!{> zqs)38tXmQDSx=k0@+!yH>Cu2hvC4%qr;bgMl%!G1I#EHx#L(SPMrYZlG|3z-YnxYL zZ<6X6Bk3-!Gg!U#kimbyhN}%YXpR zWvS9;N_Kn7c?ykNomO;Zym7(o#sxZQOml4 zuS=5^Ti>`iCCk^wX(LZG)Bqh@I0@tnvqcu0^K+ literal 0 HcmV?d00001 diff --git a/spec/_static/locales/eo/LC_MESSAGES/booktheme.po b/spec/_static/locales/eo/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000000..6749f3a34a --- /dev/null +++ b/spec/_static/locales/eo/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: eo\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "suggest edit" +msgstr "sugesti redaktadon" + +msgid "Last updated on" +msgstr "Laste ĝisdatigita la" + +msgid "Edit this page" +msgstr "Redaktu ĉi tiun paĝon" + +msgid "Launch" +msgstr "Lanĉo" + +msgid "Print to PDF" +msgstr "Presi al PDF" + +msgid "open issue" +msgstr "malferma numero" + +msgid "Download notebook file" +msgstr "Elŝutu kajeran dosieron" + +msgid "Toggle navigation" +msgstr "Ŝalti navigadon" + +msgid "Source repository" +msgstr "Fonto-deponejo" + +msgid "By the" +msgstr "Per la" + +msgid "next page" +msgstr "sekva paĝo" + +msgid "repository" +msgstr "deponejo" + +msgid "Sphinx Book Theme" +msgstr "Sfinksa Libro-Temo" + +msgid "Download source file" +msgstr "Elŝutu fontodosieron" + +msgid "Contents" +msgstr "Enhavo" + +msgid "By" +msgstr "De" + +msgid "Copyright" +msgstr "Kopirajto" + +msgid "Fullscreen mode" +msgstr "Plenekrana reĝimo" + +msgid "Open an issue" +msgstr "Malfermu numeron" + +msgid "previous page" +msgstr "antaŭa paĝo" + +msgid "Download this page" +msgstr "Elŝutu ĉi tiun paĝon" + +msgid "Theme by the" +msgstr "Temo de la" diff --git a/spec/_static/locales/es/LC_MESSAGES/booktheme.mo b/spec/_static/locales/es/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..ba2ee4dc22148ed53f2aeba32c5965654d4a5a2f GIT binary patch literal 1396 zcmZ9Kzi$;s5XU#z;m3pU!zKwxjKJWQQZ~wEO{|$=X8*l*5%yj3EgEC(L#m|@E3-CIKPyLHQ^!@|o{A*Bj z4$La`8F(5z16~6q{%=5u|2}vYjQ#o}@F?a_K{@|BDEE2^ehj_>C4c{bvhUD`U0&uv z*?$p~_`U+=+!`qRz6aYpfs%6BBl;4{Ji6po;@;mNp-!U9Icai#X`&;(C9e__T(%nW zw)>mpL*DQZy5tBcRcdJ)pH3yKo8BdMDdMNz4yGuRTJ{f|^^|Mp6HmSWQEwW{d*1tzb%mTC1mCsq-qL_43=ae|t-eKOjtW>vaY#^sij18-e zU>uxyy|KKi?sj^CYadPWVO!m;OXD8uC5dfPa>c40^|ZUw#21BS?P$vslng{1KTKV8 zUUWKW55MCO;ccWl{h{a&Tjjy}+WN}g`qfKU z27O|OlkJ*EIw63|wI$;gbyiY{oW}PitHT?6`vSSR$zizSGM^h)jP#AENrPMDiUxTd zX^w*p+XS-1RUfK2(ynf&aeQr2cfaHFPM;g=s}~jrYQqQVnr;8cCiiNY181d=I%iD{ zk_k)9C=?Vlg{(ANUY4?kat==RzrVWKpj=Q5{Q{y&B&juy+NY=9viqbpt^2(7Sd&X+ zE$PfxwdF+Wo=v7AO<8KlnjOl_?lY%ZD#GnhWgz3#*VABvZk(=zpIWX+tyOg}6^wXC zsg65u%fhre9yJUf6KusrthQzv+672++(cecEV5X4sri<+xahTU@tQ2Tj8rs5BN4#T iU!*-mQ^Nsab@xTRCJqKkd{;ciD^w4Rh!536LH!R)!cyS? literal 0 HcmV?d00001 diff --git a/spec/_static/locales/es/LC_MESSAGES/booktheme.po b/spec/_static/locales/es/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000000..71dde37f27 --- /dev/null +++ b/spec/_static/locales/es/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "suggest edit" +msgstr "sugerir editar" + +msgid "Last updated on" +msgstr "Ultima actualización en" + +msgid "Edit this page" +msgstr "Edita esta página" + +msgid "Launch" +msgstr "Lanzamiento" + +msgid "Print to PDF" +msgstr "Imprimir en PDF" + +msgid "open issue" +msgstr "Tema abierto" + +msgid "Download notebook file" +msgstr "Descargar archivo de cuaderno" + +msgid "Toggle navigation" +msgstr "Navegación de palanca" + +msgid "Source repository" +msgstr "Repositorio de origen" + +msgid "By the" +msgstr "Por el" + +msgid "next page" +msgstr "siguiente página" + +msgid "repository" +msgstr "repositorio" + +msgid "Sphinx Book Theme" +msgstr "Tema del libro de la esfinge" + +msgid "Download source file" +msgstr "Descargar archivo fuente" + +msgid "Contents" +msgstr "Contenido" + +msgid "By" +msgstr "Por" + +msgid "Copyright" +msgstr "Derechos de autor" + +msgid "Fullscreen mode" +msgstr "Modo de pantalla completa" + +msgid "Open an issue" +msgstr "Abrir un problema" + +msgid "previous page" +msgstr "pagina anterior" + +msgid "Download this page" +msgstr "Descarga esta pagina" + +msgid "Theme by the" +msgstr "Tema por el" diff --git a/spec/_static/locales/et/LC_MESSAGES/booktheme.mo b/spec/_static/locales/et/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..983b82391f499b67a9046c15d0dd8744650ad925 GIT binary patch literal 1341 zcmZ9Kzi%8x6vqb=^5gOYNC*@$VrY^ev%C-5~0q6cNoSQvQHcDIz*5N(ux8-*>yj7Nec{?37 zm@hCt!hG}w7K~$WDuqWK$8rQb2_6H_g2%xn@O|(C_#QX{&wyWnr$GYW22;<6py+%D zo&tXWPl7*z?}ESdeBSTB?Csw{@%I-v01qANzCR6$y#$KRMeqsu1$Y$v1AGho6Fdz5 z4az++J_JsIlKZFNIq(K3aoh#Zg45o90E(Y)LCNb!P;`Fo`2>{wpMm1IA0b zcW{Vb>7mpIdO`vjME%rCbb#Z zLB#9Ln`>&T^B1V~k&_R*YOAf;-PhM8wsB1jsl}?dyPU?psw`<|W?Y%XaN_8G>Z0@F zr*qN&8_XbscI- zgH4-*vBjDXO&n_1F3dRkd|7v|qf1VIJknP`Sstj{^T%OktXj#ancCu*yH}n+<|;=N z-jrOCj`OFMOqk`wddINU##;0GR19tBdvzi?e7zruw52+Aw>NT5Q%F&X%h*Lj=6f7z z8jNuq=-IE#jk<#c{m?m+L;rJ$825O_Nq(D^8CKl}zio+{#UD_z^uJ)WVl7Wi?YTr` zTRZHgk)aH+jLK4D)OfM3BNeE1ohJ(1utQX6H>rE`y-+P|2~e4t1fZw$r;!^}gUIe5 P_MW2m5}a<3ol*Y+f5$~k literal 0 HcmV?d00001 diff --git a/spec/_static/locales/et/LC_MESSAGES/booktheme.po b/spec/_static/locales/et/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000000..cdcd07c7d8 --- /dev/null +++ b/spec/_static/locales/et/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: et\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "suggest edit" +msgstr "soovita muuta" + +msgid "Last updated on" +msgstr "Viimati uuendatud" + +msgid "Edit this page" +msgstr "Muutke seda lehte" + +msgid "Launch" +msgstr "Käivitage" + +msgid "Print to PDF" +msgstr "Prindi PDF-i" + +msgid "open issue" +msgstr "avatud küsimus" + +msgid "Download notebook file" +msgstr "Laadige sülearvuti fail alla" + +msgid "Toggle navigation" +msgstr "Lülita navigeerimine sisse" + +msgid "Source repository" +msgstr "Allikahoidla" + +msgid "By the" +msgstr "Autor" + +msgid "next page" +msgstr "järgmine leht" + +msgid "repository" +msgstr "hoidla" + +msgid "Sphinx Book Theme" +msgstr "Sfinksiraamatu teema" + +msgid "Download source file" +msgstr "Laadige alla lähtefail" + +msgid "Contents" +msgstr "Sisu" + +msgid "By" +msgstr "Kõrval" + +msgid "Copyright" +msgstr "Autoriõigus" + +msgid "Fullscreen mode" +msgstr "Täisekraanirežiim" + +msgid "Open an issue" +msgstr "Avage probleem" + +msgid "previous page" +msgstr "eelmine leht" + +msgid "Download this page" +msgstr "Laadige see leht alla" + +msgid "Theme by the" +msgstr "Teema" diff --git a/spec/_static/locales/fi/LC_MESSAGES/booktheme.mo b/spec/_static/locales/fi/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..d8ac054597c924e3010f629caeac1c748b7211cd GIT binary patch literal 1368 zcmZ9KJ#5r46vquMU&lA4Af!r|g^wXX5kqz52B58kprWEjclYv|xbfLh>>S*}#K;Cr ztS2O9B*cCTVrBw~l?gF1AR)y6B`K}2;{5K}=lB1=7k@o5`BGq<#+lRCrOA1CaQ!^kKlhsTrZJIH9K_^ryK`_q_#3i5+EIO9achW2 zhLpr@X9L;b@gpA=I!S|AaF48UDwfs-T6Zp!8`{wJvUg?CqyH8|s=drrLSix20jamb zrP3JRD~PP@yO_j1<%2BqSOtouvxrOEOU3;he^6Fx?@JOZg|3?XUWo3*(Ha#V+1j$!k61sdlv~SpmKV48XD?rEHI0qB!<^bOz`&KTmRqe+kV}^cf!#bT&>G1)AQnFuaA9SXR zO>~T6=Ywl@%y^W>^xt9_kNV@0^m3c4B9BMrgfh( zuVp?S>46Ru!ccTe7eieYS*GF0;G*3eAeplXnZCllffvOWA=>i5w+5yH-zgk~ao1dl zs44(@M0}Rt9Mp|iQ#yrKbuAq3msY|P`l$x0E<_Em{7-o?CS$aPMpfmO5T&sTb;r2u H66VBTf3Z^G literal 0 HcmV?d00001 diff --git a/spec/_static/locales/fi/LC_MESSAGES/booktheme.po b/spec/_static/locales/fi/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000000..3c3dd08962 --- /dev/null +++ b/spec/_static/locales/fi/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fi\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "suggest edit" +msgstr "ehdottaa muokkausta" + +msgid "Last updated on" +msgstr "Viimeksi päivitetty" + +msgid "Edit this page" +msgstr "Muokkaa tätä sivua" + +msgid "Launch" +msgstr "Tuoda markkinoille" + +msgid "Print to PDF" +msgstr "Tulosta PDF-tiedostoon" + +msgid "open issue" +msgstr "avoin ongelma" + +msgid "Download notebook file" +msgstr "Lataa muistikirjatiedosto" + +msgid "Toggle navigation" +msgstr "Vaihda navigointia" + +msgid "Source repository" +msgstr "Lähteen arkisto" + +msgid "By the" +msgstr "Mukaan" + +msgid "next page" +msgstr "seuraava sivu" + +msgid "repository" +msgstr "arkisto" + +msgid "Sphinx Book Theme" +msgstr "Sphinx-kirjan teema" + +msgid "Download source file" +msgstr "Lataa lähdetiedosto" + +msgid "Contents" +msgstr "Sisällys" + +msgid "By" +msgstr "Tekijä" + +msgid "Copyright" +msgstr "Tekijänoikeus" + +msgid "Fullscreen mode" +msgstr "Koko näytön tila" + +msgid "Open an issue" +msgstr "Avaa ongelma" + +msgid "previous page" +msgstr "Edellinen sivu" + +msgid "Download this page" +msgstr "Lataa tämä sivu" + +msgid "Theme by the" +msgstr "Teeman tekijä" diff --git a/spec/_static/locales/fr/LC_MESSAGES/booktheme.mo b/spec/_static/locales/fr/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..f663d39f0faa76c5b9bd504c51252eef74cca5de GIT binary patch literal 1412 zcmZ{jJ!}+56vv0pm9t{vhm&8^IIO`h6wqyy*798~B-FLeKdo!!~aIl*+ zlr)i&DosjGX-Sm+nxs!ffzqWyh>mpmzuUEJBQe_9-_FOq|NFX^vnPL27*{aoG5^N= z4D;zRyf9{tD}_g$!Rs`57MuYuf@i>a@G^KEoCEvdEO-|@2Qqjbj4hvlV&_NjBk*VN zEI0-~27hn)XS@HRUH=P;-hW^RJaMA={W(z9^Pt$d0saAg1L9Gy@DjZ@;0NGaQ2bFR zmAVF8043f<@DuPZcoBRAia+0jpMpPtqW^1q{u?N9{{>2%|FrAZpu~0hRC7KD%K8iN z5_lUFyPKf+qrt170VU-UgXB+gDSn8C=pG)BP!}*oSBAtdL+nayq9N(OOB9IrIvT`P%K$}>uh8j13v0qZ;CRi75AO3oX*L*$lK06qM@nyU^}?vGk#|? zmL^cG3s$SSi7>stTuW6IGS6&j2uDVy3#y+NH@oiA@h}HB>+f7UZR}>YK)jOup(LluVV6L*Ln| zlGjyt&G}L2k*%l8&|h4l=Cgm((zQMpFVk1~#tn>=qIhM|}`x`)$>jU}ieUbVvBn#nWIG%|r{ z@(VpgvBl*|+YE)ZQEjFj&wG?C)!uDalV>RR`l$A11nWA{5XsPS+9@lOaXon+Y2Ue0 zE>oVUGO*E>4ZSkmuAAH}>yV{N!q_?5zAzp!&O#! TA2+cw{Vw>h7Yg+MtLz81? literal 0 HcmV?d00001 diff --git a/spec/_static/locales/fr/LC_MESSAGES/booktheme.po b/spec/_static/locales/fr/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000000..b57d2fe745 --- /dev/null +++ b/spec/_static/locales/fr/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fr\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "suggest edit" +msgstr "suggestion de modification" + +msgid "Last updated on" +msgstr "Dernière mise à jour le" + +msgid "Edit this page" +msgstr "Modifier cette page" + +msgid "Launch" +msgstr "lancement" + +msgid "Print to PDF" +msgstr "Imprimer au format PDF" + +msgid "open issue" +msgstr "signaler un problème" + +msgid "Download notebook file" +msgstr "Télécharger le fichier notebook" + +msgid "Toggle navigation" +msgstr "Basculer la navigation" + +msgid "Source repository" +msgstr "Dépôt source" + +msgid "By the" +msgstr "Par le" + +msgid "next page" +msgstr "page suivante" + +msgid "repository" +msgstr "dépôt" + +msgid "Sphinx Book Theme" +msgstr "Thème du livre Sphinx" + +msgid "Download source file" +msgstr "Télécharger le fichier source" + +msgid "Contents" +msgstr "Contenu" + +msgid "By" +msgstr "Par" + +msgid "Copyright" +msgstr "droits d'auteur" + +msgid "Fullscreen mode" +msgstr "Mode plein écran" + +msgid "Open an issue" +msgstr "Ouvrez un problème" + +msgid "previous page" +msgstr "page précédente" + +msgid "Download this page" +msgstr "Téléchargez cette page" + +msgid "Theme by the" +msgstr "Thème par le" diff --git a/spec/_static/locales/hr/LC_MESSAGES/booktheme.mo b/spec/_static/locales/hr/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..eca4a1a2842830f06bd5f6235bf01d07bdd313d2 GIT binary patch literal 1402 zcmZ9KJ!~9B6vu}+kmLvh)-Bbu!YZ&sL*)#Wq0oOW>)iY z#I7UJKoJQlD$3MIh{}~uqNJdrprN2bqC$d-|Jz;1r;K*?xAU?8_kVBZ_tmrCDzsP8 z*U*1Oe;xg+XYfKhe?}=h>H=QRffvE^;1%!!xCXugz6HJv4#8FMQ}7bV;EQ1F_z)DG zZ@?G8@4$=TWAG*L$BsXD^S^cDKS7E2FW3WDR@(nBfihkLMdxksC-6Fmt?DmO{`(sg z-~WN)YvpX4?<)8j#_OQu@i8cQeBP}`P-^oC6rIQ5W$*{^dGHvNe1GZqM>qcuD0MvZ zY`gv@DF5B)#v@RCe+FI!b5KeyIf$NkxPmU8B<^y9bfYDCNE01tQa`D+)KxSg*?1KH z%T4MpwK#{4ax`^Pw+`@7ELnZzY-Ae)KI#K+iZZI(?h9Kvos)Hu_nn*4eN*x2ba2UM z{M2MDO`uvAtTuBKA$>9&rK$>r--+ODxdTQVUeRy*EU zh&bB0JyN@EJkPZYCOUthcI(pE2XsrkjZ2=fYTmTp<}`LiQ88IPH-(M{K`cLrtve@i z+90*(xpAqpy(Aw}Q7~LGGJzF0;VkyI^8P*c0crzk0e zJ5}W`eCg#p>R8HV8p8`ORd-?8+@kgmPE(NjB4ZRZpsbXo1{+%JywM17c0!7$ZS zdp+04j?>}H5RL>u+?)6`B(!QC;nQ(E%YYHwOi5)9EgF2Tundr{ymsm2Z;f2mKh k(#nYgw(f}olqHrfw@Z7L48TfWxy6y8Q4`jSBkXa^hFIaGO(a}_Drr&ngPIpyPhwkKtCW1zS zxtWoenhB;xBBn-yn24D8zwTalu&Ao9Uv<5s{`Yli#|wdR9BT&a6V_?0r`xb$Ol}tf zQ|!UE3)}}zg45t0a0WaEo&}G9U2qD#3myOoJP3w{Pe6|I9NZ7S1owfj!NcI&h98>q z&yD>JoIl_+xD%H+@5zQ2!9%dS z4R3=dU_S)+f*T;`dD8G1$o{WD_Im?z{P&Ih5#&5yK-S?0$ohz#wGPuD`<((=a*oaa zSxfd~Z8_ffK#0nR_2t3u=fQPw4%YQ37D84vb8p87>(4#hjm4TkQX%F>m@;G}=B){2 zg2zWWayrd|Sg?;xZdD?U4b-=GDA#mOTgTo;H=zFxL#DkfRZ3zp(E*`1&83*aj(wjsI*=O>qg>UnQ5~j z=eV|BMg@s#m;L%pJ)5RENuwU=R0WMBhBiW7o#i}rlG4#5ZDUjRSa=`Plu#w%B`C$N z(;&2$llB909??3o&fn(z?J9F?WqD;KhDS6Yp*?cS)QjtnT^a+xb_X5}DL&Qs{# z?=7`&Y~6Fp_%(9vMKiF8HfcxR=o0auv z_q>s3y7KCU*_ODI6J+IW*=v!hp&aNkC~@B;F{`@wufgMIJ{Em)%}J(mRd82~uKPNE zu!45VT#b~I5H)6^M@|hh?PQ`$a((5ZmR_kKRwzf4qZ=wC=HgJvLU}~a#5@JmHKeM~ zcQ+dhueyjH6-vS(Hi{zy4lKXvX09`YYnog=urAe8uFQH2W~4-u2I{*$(n5sIJAG7C T@Rc+s5Lgrh10CRyRonjp5+F85 literal 0 HcmV?d00001 diff --git a/spec/_static/locales/id/LC_MESSAGES/booktheme.po b/spec/_static/locales/id/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000000..5db2ae1474 --- /dev/null +++ b/spec/_static/locales/id/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: id\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "suggest edit" +msgstr "menyarankan edit" + +msgid "Last updated on" +msgstr "Terakhir diperbarui saat" + +msgid "Edit this page" +msgstr "Edit halaman ini" + +msgid "Launch" +msgstr "Meluncurkan" + +msgid "Print to PDF" +msgstr "Cetak ke PDF" + +msgid "open issue" +msgstr "masalah terbuka" + +msgid "Download notebook file" +msgstr "Unduh file notebook" + +msgid "Toggle navigation" +msgstr "Alihkan navigasi" + +msgid "Source repository" +msgstr "Repositori sumber" + +msgid "By the" +msgstr "Oleh" + +msgid "next page" +msgstr "halaman selanjutnya" + +msgid "repository" +msgstr "gudang" + +msgid "Sphinx Book Theme" +msgstr "Tema Buku Sphinx" + +msgid "Download source file" +msgstr "Unduh file sumber" + +msgid "Contents" +msgstr "Isi" + +msgid "By" +msgstr "Oleh" + +msgid "Copyright" +msgstr "hak cipta" + +msgid "Fullscreen mode" +msgstr "Mode layar penuh" + +msgid "Open an issue" +msgstr "Buka masalah" + +msgid "previous page" +msgstr "halaman sebelumnya" + +msgid "Download this page" +msgstr "Unduh halaman ini" + +msgid "Theme by the" +msgstr "Tema oleh" diff --git a/spec/_static/locales/it/LC_MESSAGES/booktheme.mo b/spec/_static/locales/it/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..53ba476edd2df2a802917e9df402257ceca1a130 GIT binary patch literal 1403 zcmZXSJ&aXF6vsyafhY1QYQiQS8W$5EU!j1vc?Gb$351Os-eM!oynD~ycVOPkWoGWm zTH9#}m5qrNiM6q@vN55xvLLatGO@6+(D*<1-gP%Hxii0e=Htvc|2Z#C?tf~~-bG(P z{{{Vh^sipSfOhD0WAK^77~TMnfQP_S;9+n9db5tC&9bmQINr7VD9+^sD7S+ zZ-HNfN5E&`3Gn-#Klk&$_V(|f-uE{+0Qc?d&L0KUUI5k4BKQM%1;keK2Z+!7i9yf* z1s(_g1vTGe`;B=I{0KY^u7H})r~P~cRhutC&HGzW&wmGM{6B(v?m2h{{0%$^{sW!` z4;<+7S_JjnwcfrBYTWn1Q(y(ER@tjRN(zMHIBUF`R@^(uqn+2D6ew@4L zg5J|zQb*pB(DY&Nai5y1VnoTv1fhfnT;$=ca`*|y1aBki?jP#?!}jLE+O4&f-Stc7 zFAjQPha1~9k0>L63$?T2m#CQ8m^hE`ZLAKj?(U1$r%jH-6<>r>d^Mu0Q^|un)>jR5 z9TALm*F@`vt0B(QhBFUgSr)TwUH`yMh9yxlG%Xix0~y&& z3LB-cB(8l-D%nxCMbU^4uPmkzD-_D^sYeYovZ|_hYt|6+raF6N+B(TUeM703ahwOj z!*UGfp34HuR+WV4?HsPL=1>m45R2fh*HNhPRL3xNJhx_&?Yu^?zAcKo|5pQ*LIIU4 z9%X=yZ5mFd5t*`cmL{7}b7xJ=^_*qP(gmDLw)@AXu2??D^RnquqSO=xr-aR>O-k3u a)*Q3l*@6-(xNK#4xqhOgLbT*tS;gN$Zm<*V0gr*F!6RT6JPeM4`#}XB0Byp@Am^!p`@mOV z7q|)@0zW4Fn)rVt_HU5uZGb6o$Bx$f{UF;tAm=#)eg-dtd%-^-*V_PDx7aDf37`|? zeoukD;5CqS=MqLB_wxkgxVgmt1?-0X4dj{qO1J@X+@W2qe$Rs(cQvs`6FUcTpOYZ# zd6M|6Adj4TU>#hW-}7v_@AidK;vhE9mlyZXi}UiVd9FvXkushE>ug^<53aoj8)J$8 zzT$crKWU3f+%VcIZ9^RVa^Sf|D{h)8T{2EVYGYN-m<~=w|xXST6$p^DKQdw8cB>C zxj87tTJ-|uo6xf+D2p+_=;?>@I%^v*stG0HugtZ28aJ+6Qc^pUp6gf-MYMWoTj~tg zX%+DUHR+isk=>R)j9gbir9vl=V(zQFO%D~)cU2G~TSm6(r@4MQuACYk8XnlX?>m1n zl?*mLUiMW+S_rt{mmE*`%Y4xZLS?ge#s||^w&DUuhxb&F9?*GH@U)weS8|?B-Ey=W zVXhhJO{GRkQQ(x)gC>{=GgAAp8D=l_%hoY_R?FV3>^s+=67+^$;pPAU literal 0 HcmV?d00001 diff --git a/spec/_static/locales/iw/LC_MESSAGES/booktheme.po b/spec/_static/locales/iw/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000000..32b017cf69 --- /dev/null +++ b/spec/_static/locales/iw/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: iw\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "suggest edit" +msgstr "מציע לערוך" + +msgid "Last updated on" +msgstr "עודכן לאחרונה ב" + +msgid "Edit this page" +msgstr "ערוך דף זה" + +msgid "Launch" +msgstr "לְהַשִׁיק" + +msgid "Print to PDF" +msgstr "הדפס לקובץ PDF" + +msgid "open issue" +msgstr "בעיה פתוחה" + +msgid "Download notebook file" +msgstr "הורד קובץ מחברת" + +msgid "Toggle navigation" +msgstr "החלף ניווט" + +msgid "Source repository" +msgstr "מאגר המקורות" + +msgid "By the" +msgstr "דרך" + +msgid "next page" +msgstr "עמוד הבא" + +msgid "repository" +msgstr "מאגר" + +msgid "Sphinx Book Theme" +msgstr "נושא ספר ספינקס" + +msgid "Download source file" +msgstr "הורד את קובץ המקור" + +msgid "Contents" +msgstr "תוכן" + +msgid "By" +msgstr "על ידי" + +msgid "Copyright" +msgstr "זכויות יוצרים" + +msgid "Fullscreen mode" +msgstr "מצב מסך מלא" + +msgid "Open an issue" +msgstr "פתח גיליון" + +msgid "previous page" +msgstr "עמוד קודם" + +msgid "Download this page" +msgstr "הורד דף זה" + +msgid "Theme by the" +msgstr "נושא מאת" diff --git a/spec/_static/locales/ja/LC_MESSAGES/booktheme.mo b/spec/_static/locales/ja/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..1cefd29ce3cc08792667a82dc7ff47e9843107be GIT binary patch literal 1471 zcma))U2GIp6vr=uT2=%temyktnh+I|RZ$+uHv1sbO-LX%QhlH9-p&qe?;Yo((zoth z!EFJNkCxzqu~zx0SU`c+ubA-Uv++eAe7Tv~_Q5w};+y|7GulOC;?11-%{lkn^L6K! z-gVOq>v2dQu6IDn_Xk)2*RIXZZv;v211Zik;1ak4q&&ao z_TO@S&AKd35BL)Hd%6F@2|fYNfYiq|km|n!QoJ8>{U?y}t$^hJJGcehbZ=(g z0h0bQNasgDiZ_<)lR3|UkHUThq>)oh@}pU9hR|%O@9u?E>>&uvmlpL;i{?kUXs#3! zA=v{Ey4&tWeb61=55ZW{`(?Yv@$jH7*egl~LIyrQ+;Pvb>jB%X-jWSv)wooF7*^^a zA8{ID)$FU#tBQXZgSz8$*Rlm0s5t>b|D{&KM#HaqLP$QUYJ%;x{D6mU%?d<~D+xW6 z)jE6Cg@Yxz75=BO|)yDPjO+O|NI0-c}~bwE^u;+|UZ4dMBS zR^nOyBIPfpnG5^&>>F6!-~QYSg?zBZp>bD~cz^<)cN>-?`+2o)dAX*25Q`IlO*w3@i^0SgZ zRp#5b_7~Xl$+OE7hnZ=9YND2D&Y9*#)@d&!S7*EK+UR$U{>JE*(KAMC6J0ZU+C;M^ z`q*e3JZ1ERi7p!bh0&j-o|DW(-_lp~<^OPPo;J+|qu);tEd58ke>rs)FR!$Zu=w!h z&Y7=QE_`G(9#lEWlJgUtTT#-!nao^I&VIs{Z!N}0r&&CGVrBLi!p9%ph)+&2{5I%2 zK7KuJEq2#CZ}bHdEv5a=V6`%k-R^d(Xw}Jf>8QN5e!h zBbA`3bkQ)WS=dVKSy@;~B<{I88!P_b+$$|{a=-hV^ZNe(@4NG5)%+^MSdZvHd_rtS zROaA?v3M?Hcvu@=3&Ew}VsJIs26lk!z^&jKFbl2%PlD~B0GES0VHu=655Q&M6L2Xw z0j>n66Mjh6KPU5VAnE-CQ{cRL@%?s?<{cpA*#_Ef2kG3A zWc>t4Ehi1?A9+}fAZZd{dqh6EFS_D$EB?$Vqvj_EszTqMS+R^&H z>|hBG*9E~2DXE3jK7P0*&#?=d9aa}*QCWE|l@|R-n>7qsZZHEJ ziA7vbTyRv7*q)W%4{Te&r9dUHqRxq&PWR-~XN2b?TZYH_Y0^)(lvBrgj&;rK@7cLK zl{7ZpS8_#$YZ%z&7A;41@?634e4(?a`?}KyX3lw*^v?<}-6eA>??^kt5A-`ab<~n} zfWBto^Y9)w_0g!> zVBythE}X>$!Q{z_su`ZeFjL;phL~syBFa zXVlaiX8iI$xBl9S?ljH#2qeqqHLg5*5Kc5=W8s^|_vRD}$A^$29KXrU!@=^_j5Dv6%;4cA#sHtggl>eA))${_687xQDk?6`Kc@OWFO}WOS!3uO( zjPOmFMc3|`Ymgi(M~_AsRb8*l6oj5N!k1G#oNSsg^a1i?<=NZRz?N8C9`e*ob%^~2 D6Q!<* literal 0 HcmV?d00001 diff --git a/spec/_static/locales/ko/LC_MESSAGES/booktheme.po b/spec/_static/locales/ko/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000000..69dd18f773 --- /dev/null +++ b/spec/_static/locales/ko/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ko\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "suggest edit" +msgstr "편집 제안" + +msgid "Last updated on" +msgstr "마지막 업데이트" + +msgid "Edit this page" +msgstr "이 페이지 편집" + +msgid "Launch" +msgstr "시작하다" + +msgid "Print to PDF" +msgstr "PDF로 인쇄" + +msgid "open issue" +msgstr "열린 문제" + +msgid "Download notebook file" +msgstr "노트북 파일 다운로드" + +msgid "Toggle navigation" +msgstr "탐색 전환" + +msgid "Source repository" +msgstr "소스 저장소" + +msgid "By the" +msgstr "에 의해" + +msgid "next page" +msgstr "다음 페이지" + +msgid "repository" +msgstr "저장소" + +msgid "Sphinx Book Theme" +msgstr "스핑크스 도서 테마" + +msgid "Download source file" +msgstr "소스 파일 다운로드" + +msgid "Contents" +msgstr "내용" + +msgid "By" +msgstr "으로" + +msgid "Copyright" +msgstr "저작권" + +msgid "Fullscreen mode" +msgstr "전체 화면으로보기" + +msgid "Open an issue" +msgstr "이슈 열기" + +msgid "previous page" +msgstr "이전 페이지" + +msgid "Download this page" +msgstr "이 페이지 다운로드" + +msgid "Theme by the" +msgstr "테마별" diff --git a/spec/_static/locales/lt/LC_MESSAGES/booktheme.mo b/spec/_static/locales/lt/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..4468ba04bc134a84fea5e3c973461cf02c9c2da3 GIT binary patch literal 1413 zcmZvaJ*-qk6vsyag_RElKVp1=p+SgQ1!6(=Ws8Trm%IpJ!!Cq&-rn=>&feLX$$UJx zy>yfs3mYDtv7j(9R@&?)#@fol&{Y(AbXL(_rUwj`9qL(er@8vgIw=pko$cKo&XOVSm=ES z^8O^qK3oL({z?6$1#4Nz2(054oJ;=;JiGzE*_kpy=GszcBB+< zVRAov2m8<3><4U^|G(mLjYp;ti7%W@WK+ZsUk6=|lDOjTSmRV7txL4wTqQTPq1|wF zISlEQU>fNty(&qp7CIsI&UP&u6NiDw%84sTTvaj2>KHSL zUeFdvoa|j$6a9r=An&41F4Us$N7~+%m$|mVh$bZFtK3-hG;n2UNLsa}OO-T4EZt3u z>KyAVM0}tv?Q&E0p7b%7C80_}Cn&{@X_(sUMf(ENwtj7O_x!@A z=Ua`j?LqCSBNGbv%p0ZcvK)?7h?KfF2W#z1yZ3^!ag#!O)ec>uZP}5RHgsxTRkqCV zwIfYx^-K=RwAWmi#E!InzKz|B%X0Cvd)CU+U3uZ$a!agNntg;f8E)25tYny{XFsAC z9jD(SkfM$V#H6LA*|v6LHF0AnD>v~vCkoohO{LBB-b;69+sY(u|L3sMiR5g1`bhd5 zjq=k+;szC}%nlMS$9vjXC#gc)P6nF&q9-bfo{CjQZe*xbNYi^#C9ConpM%1oLFKH0 za&)0WJ=gQWZ5W!M$i7!O!aIl|0e?HQ2Ro%kmCL#^O7u6its3{(8W!QLNCjg(=>2Jsvw ClWZvf literal 0 HcmV?d00001 diff --git a/spec/_static/locales/lt/LC_MESSAGES/booktheme.po b/spec/_static/locales/lt/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000000..9f037752c0 --- /dev/null +++ b/spec/_static/locales/lt/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: lt\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "suggest edit" +msgstr "pasiūlyti redaguoti" + +msgid "Last updated on" +msgstr "Paskutinį kartą atnaujinta" + +msgid "Edit this page" +msgstr "Redaguoti šį puslapį" + +msgid "Launch" +msgstr "Paleiskite" + +msgid "Print to PDF" +msgstr "Spausdinti į PDF" + +msgid "open issue" +msgstr "atviras klausimas" + +msgid "Download notebook file" +msgstr "Atsisiųsti nešiojamojo kompiuterio failą" + +msgid "Toggle navigation" +msgstr "Perjungti naršymą" + +msgid "Source repository" +msgstr "Šaltinio saugykla" + +msgid "By the" +msgstr "Prie" + +msgid "next page" +msgstr "Kitas puslapis" + +msgid "repository" +msgstr "saugykla" + +msgid "Sphinx Book Theme" +msgstr "Sfinkso knygos tema" + +msgid "Download source file" +msgstr "Atsisiųsti šaltinio failą" + +msgid "Contents" +msgstr "Turinys" + +msgid "By" +msgstr "Iki" + +msgid "Copyright" +msgstr "Autorių teisės" + +msgid "Fullscreen mode" +msgstr "Pilno ekrano režimas" + +msgid "Open an issue" +msgstr "Atidarykite problemą" + +msgid "previous page" +msgstr "Ankstesnis puslapis" + +msgid "Download this page" +msgstr "Atsisiųskite šį puslapį" + +msgid "Theme by the" +msgstr "Tema" diff --git a/spec/_static/locales/lv/LC_MESSAGES/booktheme.mo b/spec/_static/locales/lv/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..74aa4d8985d96a07c4c9be96f006f3b58d884342 GIT binary patch literal 1404 zcmZ9K&5ImG7{*_dsL7ZQP5eMvump*E7&XB|oMjFhcNYS?IAk~8Yi8c*sqUVtras2( zdKwT<9)#7Cr{GC*^B|r)^?-kXCk3y9;7t%O;`2^-vdb1-{p+f(exK)k=-;oN`-(7L z!d%1r1@l$R&!4~zPs;uHG2 zUH=1$um8Z;!As|eUIA~m+y%w|6qJ5G0bd5c0G|fGYu|qlzJT=-lzP8`lHs4A_&D=q zlgkxQ>Rkt~f$z861tmufO5Zssk;}JoUbN-BWGj829FU-AF-2E~^e;o|NY;|8ctc5g z22*^U9FmJ@OFxKVl@HxMz@_4p=>umY+Zgar9e9&XBW=2mZRzw_Sr>WeT%jhWmHkCxl1EW^k%TQzfIrX3xkO4V3L9xG?DPIfe<4=WtdR+$hI z)4&^xB2Eo9w`s4@^IW-LqVor|S51w*uWpOC{VC6wR(CaQdfIncRMGG) zBv*eURUdB+Oli45Wvi9v9Ia6vne84ZIht?0o$f< A2mk;8 literal 0 HcmV?d00001 diff --git a/spec/_static/locales/lv/LC_MESSAGES/booktheme.po b/spec/_static/locales/lv/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000000..c9633b545c --- /dev/null +++ b/spec/_static/locales/lv/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: lv\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "suggest edit" +msgstr "ieteikt rediģēt" + +msgid "Last updated on" +msgstr "Pēdējoreiz atjaunināts" + +msgid "Edit this page" +msgstr "Rediģēt šo lapu" + +msgid "Launch" +msgstr "Uzsākt" + +msgid "Print to PDF" +msgstr "Drukāt PDF formātā" + +msgid "open issue" +msgstr "atklāts jautājums" + +msgid "Download notebook file" +msgstr "Lejupielādēt piezīmju grāmatiņu" + +msgid "Toggle navigation" +msgstr "Pārslēgt navigāciju" + +msgid "Source repository" +msgstr "Avota krātuve" + +msgid "By the" +msgstr "Ar" + +msgid "next page" +msgstr "nākamā lapaspuse" + +msgid "repository" +msgstr "krātuve" + +msgid "Sphinx Book Theme" +msgstr "Sfinksa grāmatas tēma" + +msgid "Download source file" +msgstr "Lejupielādēt avota failu" + +msgid "Contents" +msgstr "Saturs" + +msgid "By" +msgstr "Autors" + +msgid "Copyright" +msgstr "Autortiesības" + +msgid "Fullscreen mode" +msgstr "Pilnekrāna režīms" + +msgid "Open an issue" +msgstr "Atveriet problēmu" + +msgid "previous page" +msgstr "iepriekšējā lapa" + +msgid "Download this page" +msgstr "Lejupielādējiet šo lapu" + +msgid "Theme by the" +msgstr "Autora tēma" diff --git a/spec/_static/locales/ml/LC_MESSAGES/booktheme.mo b/spec/_static/locales/ml/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..2736e8fcf6f9e923c2403307f0b366086d37b335 GIT binary patch literal 1883 zcmbW0%ZnUE9LGydG>*^22ObnFl0!U=*`!Gj=35eWDu@Vn6%SYIC#v~L=<+PV8oUUd{}t%`e}*gYclZSS_^!ZZxSjb`_!_(p zTd=uFh;ewl;wqeG{x{qKTbqR#gE5?hpTno&U(oq&;Si6(7JLc50p0#-xD$R4pMlrl zez^G_At=eHx!OEj&F+K95`^|`3%xs|tB0$dYp$lQaXj&eABB3jp*ug}eRDN&btbLg zC_?O6*AzH~{-A|&9)JdV{ljJRVAnvQRl4{_?&D7b7KD1k z&HJ`jzT)e&M4gbqlB?mhqaXMpAZg<;-hlh5ZiX1=e36nUswzgb&SN${bnp4Gv=IQ6$P05hgaiFop^2w W+5FkQ^s?wV7=JSkIl3Km4aE({iDO&< literal 0 HcmV?d00001 diff --git a/spec/_static/locales/ml/LC_MESSAGES/booktheme.po b/spec/_static/locales/ml/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000000..9a6a41e8ec --- /dev/null +++ b/spec/_static/locales/ml/LC_MESSAGES/booktheme.po @@ -0,0 +1,66 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ml\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "suggest edit" +msgstr "എഡിറ്റുചെയ്യാൻ നിർദ്ദേശിക്കുക" + +msgid "Last updated on" +msgstr "അവസാനം അപ്‌ഡേറ്റുചെയ്‌തത്" + +msgid "Edit this page" +msgstr "ഈ പേജ് എഡിറ്റുചെയ്യുക" + +msgid "Launch" +msgstr "സമാരംഭിക്കുക" + +msgid "Print to PDF" +msgstr "PDF- ലേക്ക് പ്രിന്റുചെയ്യുക" + +msgid "open issue" +msgstr "തുറന്ന പ്രശ്നം" + +msgid "Download notebook file" +msgstr "നോട്ട്ബുക്ക് ഫയൽ ഡൺലോഡ് ചെയ്യുക" + +msgid "Toggle navigation" +msgstr "നാവിഗേഷൻ ടോഗിൾ ചെയ്യുക" + +msgid "Source repository" +msgstr "ഉറവിട ശേഖരം" + +msgid "By the" +msgstr "എഴുതിയത്" + +msgid "next page" +msgstr "അടുത്ത പേജ്" + +msgid "Sphinx Book Theme" +msgstr "സ്ഫിങ്ക്സ് പുസ്തക തീം" + +msgid "Download source file" +msgstr "ഉറവിട ഫയൽ ഡൗൺലോഡുചെയ്യുക" + +msgid "By" +msgstr "എഴുതിയത്" + +msgid "Copyright" +msgstr "പകർപ്പവകാശം" + +msgid "Open an issue" +msgstr "ഒരു പ്രശ്നം തുറക്കുക" + +msgid "previous page" +msgstr "മുൻപത്തെ താൾ" + +msgid "Download this page" +msgstr "ഈ പേജ് ഡൗൺലോഡുചെയ്യുക" + +msgid "Theme by the" +msgstr "പ്രമേയം" diff --git a/spec/_static/locales/mr/LC_MESSAGES/booktheme.mo b/spec/_static/locales/mr/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..fe530100d7715cdc19a6f9db33a971665835f3c4 GIT binary patch literal 1674 zcma))-D_M$7>7rVU#qnriYO?KB2uYGt)hetL1>ylCBZ;a@uD{;yVJ8rH#3KG&bG~6 zRisua;ze5NO^wW!;71IF+EldSwKo+61wrPsjrLTQ<5nO9X$iPPmDi?R5_3f- z*T>{OU(0+)Eh-V7av_#JZ?debq)w0ISz70aXmzZP)flf6MT$}#$xUxiX4T6wMQMt1 z(Km0ZR-GJZC$ForB1Kb1(Zq`;L9Q`#U}kc-zxUba8xuy?O4rH!QlXl%M)kR(o922< zwmNB9se1h2{8TbJJXfZ=I;_fMQnySy*I84JF64D%I@MVZ^O|z8Y|M6hW!g=qOu1M! zr7ps>8h>F-#@F%PT0TB5_dY$=5YC=={Zr0fboPp~>pX9~wCwsPo&DVPkH=Hao^bXY zXIEYSL*AVI()HhVc3C?6MacEOvlp1GgbA^$%){9gR+l%mHiEnj&-JixH&Y;SGbt{+ z{t03z?p+g;%KlU0jXnJ;6hm+E zO4d<`2T4o{Hn?Oyg$)#jm)Q^UYaHJCp>S-t$!CBi7ej)}A>Wy>@(p%y@Lc$O&cyp1 zdP#?v^I4GaH+|g|B8k!Ldl%Wfwrg(}`)i>kl#a*D@zz$^*>a1%2AcIZ5x;fu4@Sqm A6951J literal 0 HcmV?d00001 diff --git a/spec/_static/locales/mr/LC_MESSAGES/booktheme.po b/spec/_static/locales/mr/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000000..ef72d8c6bc --- /dev/null +++ b/spec/_static/locales/mr/LC_MESSAGES/booktheme.po @@ -0,0 +1,66 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: mr\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "suggest edit" +msgstr "संपादन सुचवा" + +msgid "Last updated on" +msgstr "अखेरचे अद्यतनित" + +msgid "Edit this page" +msgstr "हे पृष्ठ संपादित करा" + +msgid "Launch" +msgstr "लाँच करा" + +msgid "Print to PDF" +msgstr "पीडीएफवर मुद्रित करा" + +msgid "open issue" +msgstr "खुला मुद्दा" + +msgid "Download notebook file" +msgstr "नोटबुक फाईल डाउनलोड करा" + +msgid "Toggle navigation" +msgstr "नेव्हिगेशन टॉगल करा" + +msgid "Source repository" +msgstr "स्त्रोत भांडार" + +msgid "By the" +msgstr "द्वारा" + +msgid "next page" +msgstr "पुढील पृष्ठ" + +msgid "Sphinx Book Theme" +msgstr "स्फिंक्स बुक थीम" + +msgid "Download source file" +msgstr "स्त्रोत फाइल डाउनलोड करा" + +msgid "By" +msgstr "द्वारा" + +msgid "Copyright" +msgstr "कॉपीराइट" + +msgid "Open an issue" +msgstr "एक मुद्दा उघडा" + +msgid "previous page" +msgstr "मागील पान" + +msgid "Download this page" +msgstr "हे पृष्ठ डाउनलोड करा" + +msgid "Theme by the" +msgstr "द्वारा थीम" diff --git a/spec/_static/locales/ms/LC_MESSAGES/booktheme.mo b/spec/_static/locales/ms/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..f02603fa2522a40060bd3f1b5d65052c77530de6 GIT binary patch literal 1213 zcmZXRJ8Km|6vs!6uj@1M0TG1}Eworov@58TBL2_ajS)TU%x`DrywA6>k!K8Y7V9F`8>~xM5BFh% zd;s@@AHhT5C-5lv6+91q2g&v)I0lYF`6PH1JO$nc$*v2Y0Pldu!3W?dC>w4z_m7+N zHb`+^fGzM9NcL|*vVRZ02ETwK;L`&&w?VSo0ms4TAm#b4;b-tP&Og8l;4hH$$Kizh zUTHW1Qhptf^p`=>djwK_>)<(X03HLMfK>lZ^ZpV{}g%EROCaZxzWLzM_G6K*tH6hX%sTdt($LUZL@kZi>& z4I{%>X6M;z?cd7EIOUBUu+=J4dW+9cF1<{ak_~s>uT$@tG%Y08Vne0ED+JMU%h%Z$ zic<%vtlUs0G-K1wUB*6INTU1FI=E=_I%q^eqhYw#(!$c*-uvW@iB{KW zFSU<)gG#o!N7S2DA(WoxaVD&jzH_fPA5HD)S)tvUw9%Z7O`>$#=2Ly;TZ=-c0nKak z(zRBKU_}wl8(X?I*VXXoI=7~I{oA>w`Q;9uyguDx%Y{TQY0E^;V^w*;2yki7=)(TYV{?8_pQ^c*8Iog%4v$iD&q$RjNP literal 0 HcmV?d00001 diff --git a/spec/_static/locales/ms/LC_MESSAGES/booktheme.po b/spec/_static/locales/ms/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000000..e29cbe2ec2 --- /dev/null +++ b/spec/_static/locales/ms/LC_MESSAGES/booktheme.po @@ -0,0 +1,66 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ms\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "suggest edit" +msgstr "cadangkan edit" + +msgid "Last updated on" +msgstr "Terakhir dikemas kini pada" + +msgid "Edit this page" +msgstr "Edit halaman ini" + +msgid "Launch" +msgstr "Lancarkan" + +msgid "Print to PDF" +msgstr "Cetak ke PDF" + +msgid "open issue" +msgstr "isu terbuka" + +msgid "Download notebook file" +msgstr "Muat turun fail buku nota" + +msgid "Toggle navigation" +msgstr "Togol navigasi" + +msgid "Source repository" +msgstr "Repositori sumber" + +msgid "By the" +msgstr "Oleh" + +msgid "next page" +msgstr "muka surat seterusnya" + +msgid "Sphinx Book Theme" +msgstr "Tema Buku Sphinx" + +msgid "Download source file" +msgstr "Muat turun fail sumber" + +msgid "By" +msgstr "Oleh" + +msgid "Copyright" +msgstr "hak cipta" + +msgid "Open an issue" +msgstr "Buka masalah" + +msgid "previous page" +msgstr "halaman sebelumnya" + +msgid "Download this page" +msgstr "Muat turun halaman ini" + +msgid "Theme by the" +msgstr "Tema oleh" diff --git a/spec/_static/locales/nl/LC_MESSAGES/booktheme.mo b/spec/_static/locales/nl/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..e59e7ecb308a7648cd23aa6342a9ad98a61d0009 GIT binary patch literal 1356 zcmZXTJ5Los6vqcag)1TtUj+$cqf)Gju^^CJh(JODkqBZvyL;~La`(<`W@dTSmfC47 z`~-XfW8nv|v9q$Ewb8~-3*-OXUAP1%JNw%?Gxz+@WA4%Tz*~WF19KAdE9MmDt3JFi z2G0qBM-1V00UQPg!3l5(oCL3fx52Am6C4Mhfg>P+S3qC$CCGl>fS1Ad;4pXyj)5O) zey;7`>h*V!^?rj5u)n|h{RqhGNs#^A0Y8F|zya_lcoF;svhE*{ng4G|2HU zfE@n|kmKI2*9Rc$zXmzZceVWx9L4%m%`YJ5bp-OcA0YetTieIZSNl^S#~pwZ;4H`` z=N$Mv$HI25E$f~haMji1Jb17l9<0YPv;H+qxD=N#xwoeW*MWP;bwN40{S^!Qc%)BB zJTcmn_6{G#zRi--xzS!`5#mI~uCZ|uI< zDAG*t$pwyWGo=oR?puacPMao4a*|r@WQp<_L^SRBDmueDl}KS}Co^Ro_9^$SOcFwr zgiH{M*`~+`D{-(z*1_AHtn>rc54y^YwUxD{-u}$J2aUS0!RCHJbJ8P#`$euYJujnF zSx3J4d~-RN?VYnqyB67CNk=BmbTTJr!^}5Ul}<|3bx!KMv7VP!<-xMC9S1|vUApGO zd0Bln?`nCgDQBkV8|as@-IqkwS9EI1Sg6udX`Q7gMb~>RJ??afw3Uu~8!34iTBHBl zi0Od1qM24Aq+POY$n;EGCeKm6M7k&?+d-F=M@18=IxkHDla2^|PO9GX1u3ivbE1xT z+=^}4Zo{ONva*On--8-OUjI=r94V1Y}`N=IHv19Ut jbWAeLReX?b<52fDoT%;?`~gm~I(s23S;SN2irW1H>^?=m literal 0 HcmV?d00001 diff --git a/spec/_static/locales/nl/LC_MESSAGES/booktheme.po b/spec/_static/locales/nl/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000000..e4844d7c98 --- /dev/null +++ b/spec/_static/locales/nl/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: nl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "suggest edit" +msgstr "suggereren bewerken" + +msgid "Last updated on" +msgstr "Laatst geupdate op" + +msgid "Edit this page" +msgstr "bewerk deze pagina" + +msgid "Launch" +msgstr "Lancering" + +msgid "Print to PDF" +msgstr "Afdrukken naar pdf" + +msgid "open issue" +msgstr "open probleem" + +msgid "Download notebook file" +msgstr "Download notebookbestand" + +msgid "Toggle navigation" +msgstr "Schakel navigatie" + +msgid "Source repository" +msgstr "Bronopslagplaats" + +msgid "By the" +msgstr "Door de" + +msgid "next page" +msgstr "volgende bladzijde" + +msgid "repository" +msgstr "repository" + +msgid "Sphinx Book Theme" +msgstr "Sphinx-boekthema" + +msgid "Download source file" +msgstr "Download het bronbestand" + +msgid "Contents" +msgstr "Inhoud" + +msgid "By" +msgstr "Door" + +msgid "Copyright" +msgstr "auteursrechten" + +msgid "Fullscreen mode" +msgstr "Volledig scherm" + +msgid "Open an issue" +msgstr "Open een probleem" + +msgid "previous page" +msgstr "vorige pagina" + +msgid "Download this page" +msgstr "Download deze pagina" + +msgid "Theme by the" +msgstr "Thema door de" diff --git a/spec/_static/locales/no/LC_MESSAGES/booktheme.mo b/spec/_static/locales/no/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..6cd15c88de675226c00ca4d0430171075e5559ff GIT binary patch literal 1317 zcmZ9KJ#5r46vxeXdz6pzxm3a|d<+2!3{|TeDD*@{E2`eX#NxZWChjG6WIIQ@F#r=I zh=CaiW+cQ+7sSlefekSsA;E&g!2exRwZe-1i=UnMe;@gJZ0`$!aT;?1^9$w~%xAl> zV2tb*0*@HQvL74+N5JFYC^!M00?&abz$SPMTm}z=1ReoH&Bq}7c@7=|Ux8!bTW}nF zU-MIK->moFLDu^NHo!f5s_zejyq^Hs&w20zcpb!5@dLyoequQQ{ss?%e?g9WWG`|7 z&ww2NwR(RWJc|7Tkn_pGec+?o{vnrOx2I^Ydmn%A>ZL_zf>(PJ4kZLarm5`W=b%5)w zZL7>O-*ZGp<~Am=pnQ;J5vxG4v+R9LTr zb?c&Cq}r^>S&prfQchyH%5IfY$0kWe(x`z>RL~GHv=*x9EbCMvg`Y>jh2AfB-HRnbKxP z_EP0Mh336ZE1KHA=alg)i!%*zV<7HREar_#Z59h#6sa0`M0_gBf~5&B$u(bn(=RqnJ4d{?xCazSi7Dd36F5NEp? z<)YnpdLTAmS7{(1PP{Mcl94asi9}+1PF;uA{A!sWqQCgLP1e#J@rEvuCjIeG)u_ z_zHL&oC3+mBarlB@FchjQl1we?OzAU{{~3=--1+!&*l7gkoNrokAjC_hW4EWNq-dF z2i^p!UUxt$Ipw67YDs=blg_=fL9(w&^`%C>sF5z^AYYUllKnH&-R^8uf4W1;k81~m7!h)9ylfZ~^CgwY?O|s!8_53#eN#D}ib%4l zPdl`G0* zrR^Q^E{h@wml7v|6|*b@U!4i752bZbtMMX#mGW2nnJcq1vs2siW24t9Wnrs}c`9q% z!@$)v5lT<+ped}AzW!iwx;nnS&I;|8q^(Zrz=TRiH9p=@zH(RSC_`OqJWVR|NoGY- zoi?`RYFwxN(ABR`V3KC)moz_L=VO;ADlp!Wow9!{+QNF%d)$vmWXUlwR2&%HTrgJW19E;7l zzACcDJ`;)Rh+tW;2Q~|urlsI%&bL2qk_T%ViEOb+o5j!ziwCfPoA2cCtFji~wj$ZA z@p+raPIaI5KE$fLmvXo`p>N|Ts6=nA`!wj_O|+>xW d^Crc{P^+yKEfI-Mu31OGXlgVp$}sP%{Q=l!SrY&N literal 0 HcmV?d00001 diff --git a/spec/_static/locales/pl/LC_MESSAGES/booktheme.po b/spec/_static/locales/pl/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000000..fcac51d329 --- /dev/null +++ b/spec/_static/locales/pl/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "suggest edit" +msgstr "zaproponuj edycję" + +msgid "Last updated on" +msgstr "Ostatnia aktualizacja" + +msgid "Edit this page" +msgstr "Edytuj tę strone" + +msgid "Launch" +msgstr "Uruchomić" + +msgid "Print to PDF" +msgstr "Drukuj do PDF" + +msgid "open issue" +msgstr "otwarty problem" + +msgid "Download notebook file" +msgstr "Pobierz plik notatnika" + +msgid "Toggle navigation" +msgstr "Przełącz nawigację" + +msgid "Source repository" +msgstr "Repozytorium źródłowe" + +msgid "By the" +msgstr "Przez" + +msgid "next page" +msgstr "Następna strona" + +msgid "repository" +msgstr "magazyn" + +msgid "Sphinx Book Theme" +msgstr "Motyw książki Sphinx" + +msgid "Download source file" +msgstr "Pobierz plik źródłowy" + +msgid "Contents" +msgstr "Zawartość" + +msgid "By" +msgstr "Przez" + +msgid "Copyright" +msgstr "prawa autorskie" + +msgid "Fullscreen mode" +msgstr "Pełny ekran" + +msgid "Open an issue" +msgstr "Otwórz problem" + +msgid "previous page" +msgstr "Poprzednia strona" + +msgid "Download this page" +msgstr "Pobierz tę stronę" + +msgid "Theme by the" +msgstr "Motyw autorstwa" diff --git a/spec/_static/locales/pt/LC_MESSAGES/booktheme.mo b/spec/_static/locales/pt/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..d0ddb8728e1d5ef72dddc1537f66aa32251a83c8 GIT binary patch literal 1364 zcmZ9KJ!lj`6vsyszs~RYi3A)AKVkhsL@peXm>dKW4Dqy|yM5Uk-JMxyXV09qrC4bb zE3pu<6hyS##>&dd!p6cz!N$T$|8I9gLWZ0D-MpQB@BjWY-^NCt35+9{h16S(zZ$SR;BglC^gY3_DkUjkg^8V2+RlY+YuTO%k z_iDYq0kY*B<9wX!0496Oy4Me+EOW5GJh*=z>>q1pUk_m-WvQ8UtRL(@Yuttj8%m$V z)DS=E`y_5yrAF9A~6$c zkJPKnb{@xB&k-4!*pS4W%Dl|ePxSZ1+Sg`TPO-L5pAr(~Q+BJKIyQ=8l12@5q`XEEL(9HWXSq&QBy}{>iJ+c4DOK2kgX}J`T^Gu%F2!T+4-5Z_m|FJY}CdEoncB%=^@}k z8Y^ukWUsGWM!t2s(+;k!?Q_axOXPwX)3c#AQBz*)YTuYsCd%P!Q>MPL5a&+CLEE|{ zYf6)r%dB;ILRNoUXN)}2l9$d-G{iJ)q}Wy`Tzm+v2(=>^C{+#@RV=2IURF*jcR$wy zD??aTpZLaCOMFYpAW1l*WLmt4v{B_@b0}L2&D+qT-&mnh(n=I7vDb-`%I7N94^{E1 zcxfdiIC)dNQVDLK6_Z`3WS+>>*=|gU60=F_bfO(LmX~0$I{o6U(^gh;I@l*sE7k*N z>oXB$Fttuh#-5x(d)$^9P*fEbsVm+tv!2x!?&s);C8;hsuS6ZkWkdpvO!dtuOAFi$ LL?J8GWh3H0!r)O_ literal 0 HcmV?d00001 diff --git a/spec/_static/locales/pt/LC_MESSAGES/booktheme.po b/spec/_static/locales/pt/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000000..1761db08ae --- /dev/null +++ b/spec/_static/locales/pt/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pt\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "suggest edit" +msgstr "sugerir edição" + +msgid "Last updated on" +msgstr "Última atualização em" + +msgid "Edit this page" +msgstr "Edite essa página" + +msgid "Launch" +msgstr "Lançamento" + +msgid "Print to PDF" +msgstr "Imprimir em PDF" + +msgid "open issue" +msgstr "questão aberta" + +msgid "Download notebook file" +msgstr "Baixar arquivo de notebook" + +msgid "Toggle navigation" +msgstr "Alternar de navegação" + +msgid "Source repository" +msgstr "Repositório fonte" + +msgid "By the" +msgstr "Pelo" + +msgid "next page" +msgstr "próxima página" + +msgid "repository" +msgstr "repositório" + +msgid "Sphinx Book Theme" +msgstr "Tema do livro Sphinx" + +msgid "Download source file" +msgstr "Baixar arquivo fonte" + +msgid "Contents" +msgstr "Conteúdo" + +msgid "By" +msgstr "De" + +msgid "Copyright" +msgstr "direito autoral" + +msgid "Fullscreen mode" +msgstr "Modo tela cheia" + +msgid "Open an issue" +msgstr "Abra um problema" + +msgid "previous page" +msgstr "página anterior" + +msgid "Download this page" +msgstr "Baixe esta página" + +msgid "Theme by the" +msgstr "Tema por" diff --git a/spec/_static/locales/ro/LC_MESSAGES/booktheme.mo b/spec/_static/locales/ro/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..3c36ab1df7c589ad82614599b8c91f072a25d4a6 GIT binary patch literal 1390 zcmZ{jxo;Ce6vhX_5zG}5ZUr$kT#~s&fgHI>97~Z1L||yB#=9@;f%VL44!~(cNeM!T zzkmW7Bt%b&NVHTGv{Xn`NHmD=truc}813$F=kWX9`}X8CsJNO-Bou44rIk82E zW8ekwD0mG#0%~vyTm=t+&p?jz3S_U|fL!MXkn8*mPJmxQ*7*st&Nlprc^KsLXDc>A z&U>kv-vQZju7S_7m#oj;a^0f?p-U~+<-u`yunv38zH-h8DR$!Kd`AcS&)<;qgbk%n zVs?N_h8~GIYXX_z@lp(&&U!(#>;scql}cj+b*;T8mvv4X%iczp&|iz8r@bsxMq)nI z0il0S+cD35;)smw+mysr<%5hxssg3b8qA|fdg6M41IkG4eI&8uv_TLnms)LcbExO2 zuwDo22I6MX)8?U^<=i?w>XRs+vOBD)W3wzLY1Dn4sh}ZZ=wTRUXIW<`QaHM=ZLHEB z3GZW;5wavyf>i8XN#8^5U79nrN}tCR1WA7O>Nc7D^1!X_=B#5k}&OPu5mlqSjw% ze9!ggnq18PeE0wD`{?}IYPqW%0!Wn*zA9eO0NP-Sd!P*Z&(5Mvp+E_$mG57h;3yNf z@}T<)Q9@L?UQv!@t~hzGN|ByUi8HjaaJHLM9|{Y76xA;^5T@*t78+y)y;r5zA;cW% z6j3gq1Ltf%1{N7Mh$B&^tz>kF94xj(C8Xe$PteOytPUysU!2AvEWuE6Fj7Z>o*_qS K1txIYaExD}s9q8P literal 0 HcmV?d00001 diff --git a/spec/_static/locales/ro/LC_MESSAGES/booktheme.po b/spec/_static/locales/ro/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000000..db865c8f65 --- /dev/null +++ b/spec/_static/locales/ro/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ro\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "suggest edit" +msgstr "sugerează editare" + +msgid "Last updated on" +msgstr "Ultima actualizare la" + +msgid "Edit this page" +msgstr "Editați această pagină" + +msgid "Launch" +msgstr "Lansa" + +msgid "Print to PDF" +msgstr "Imprimați în PDF" + +msgid "open issue" +msgstr "problema deschisă" + +msgid "Download notebook file" +msgstr "Descărcați fișierul notebook" + +msgid "Toggle navigation" +msgstr "Comutare navigare" + +msgid "Source repository" +msgstr "Depozit sursă" + +msgid "By the" +msgstr "Langa" + +msgid "next page" +msgstr "pagina următoare" + +msgid "repository" +msgstr "repertoriu" + +msgid "Sphinx Book Theme" +msgstr "Tema Sphinx Book" + +msgid "Download source file" +msgstr "Descărcați fișierul sursă" + +msgid "Contents" +msgstr "Cuprins" + +msgid "By" +msgstr "De" + +msgid "Copyright" +msgstr "Drepturi de autor" + +msgid "Fullscreen mode" +msgstr "Modul ecran întreg" + +msgid "Open an issue" +msgstr "Deschideți o problemă" + +msgid "previous page" +msgstr "pagina anterioară" + +msgid "Download this page" +msgstr "Descarcă această pagină" + +msgid "Theme by the" +msgstr "Tema de" diff --git a/spec/_static/locales/ru/LC_MESSAGES/booktheme.mo b/spec/_static/locales/ru/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..6b8ca41f36ebf869818399a9584cdb15619bea78 GIT binary patch literal 1722 zcmZ{iPiz!b9LJx6N>>C0{~WCHj6uL;MNkv6buUP3NFY{Oy-#-^yQABg$;>R!8?=By zpk6eZkcjo>ZEd^jw#)9`jK?>LiHQeq#*-Is-2D7zrnWZnvTr^!zxmDY_x*j}{=RSL zmx}cqdz}3X`vCjaLtI$99#)E<8sqXP+zofZ{csG9!)M_u@M&0v```y~4>WKujB{Rv zQs)c!1iS-x!|&l!u$%MeJpNn${3n!t_hA9<*pYp|2g>s}lsboC555U^!oQ&C`x}bB zF@i6^7vWp*ZFm@l@KtyR9)~}{gYZ5)1P?rt)qfX0&vOMzodC-FMW|sH%3Qy~Bk&LS zGTh71lK%!g2;Ya|(?xg`eg?&InL*;Bbw69Q%iLQRlGKxI@mH42FH8IruciMpY+9?w z*>bj97p>AWd<Owguyc8|lEQ8#P&TV@hv4PPLlNs2UpM=~=&K)EOs=bt|Yjv8id_3$EYFWp61Twd!?)O2Z^b@jo`zxOlo&{K$k6 z)k-?+UzGmEv~%I?>9doY?~lFqdLcKqSeXk!s4V?^=qzIFXM1NyDcB~ z^h;%Z?8rnx*}Ha_UXm-xW!tfr6}wJC zN81q@gr(9Fv3Bw)dp^0PldHtnY+u_Sxf$6W-wgO>O_L_|y0EwXD@jYPrM(BqO_Ddt zDEk#lk9`p%b*uDr%Zu6PU zG_bh>@urJlTp^1w`f2$AR}2{1AJVy&({OH-XdNXBVw1Appn{Ug&D59FU~!E~qO?uY z2%}Tqa+P*D{a@R!x0@kSMzqWv;2@B-rtEiw@7eZ-vn#fz?Gn!QP_`~@{!JJr^D>2; zYX|@P$s&z$lLI4H4zg!gP;s5$q8v^-E0ZiHHwb^e&1~CN%&|G1oY;Q{yqk7fcCfJk literal 0 HcmV?d00001 diff --git a/spec/_static/locales/ru/LC_MESSAGES/booktheme.po b/spec/_static/locales/ru/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000000..84ab6eb531 --- /dev/null +++ b/spec/_static/locales/ru/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ru\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "suggest edit" +msgstr "предложить редактировать" + +msgid "Last updated on" +msgstr "Последнее обновление" + +msgid "Edit this page" +msgstr "Редактировать эту страницу" + +msgid "Launch" +msgstr "Запуск" + +msgid "Print to PDF" +msgstr "Распечатать в PDF" + +msgid "open issue" +msgstr "открытый вопрос" + +msgid "Download notebook file" +msgstr "Скачать файл записной книжки" + +msgid "Toggle navigation" +msgstr "Переключить навигацию" + +msgid "Source repository" +msgstr "Исходный репозиторий" + +msgid "By the" +msgstr "Посредством" + +msgid "next page" +msgstr "Следующая страница" + +msgid "repository" +msgstr "хранилище" + +msgid "Sphinx Book Theme" +msgstr "Тема книги Сфинкс" + +msgid "Download source file" +msgstr "Скачать исходный файл" + +msgid "Contents" +msgstr "Содержание" + +msgid "By" +msgstr "По" + +msgid "Copyright" +msgstr "авторское право" + +msgid "Fullscreen mode" +msgstr "Полноэкранный режим" + +msgid "Open an issue" +msgstr "Открыть вопрос" + +msgid "previous page" +msgstr "Предыдущая страница" + +msgid "Download this page" +msgstr "Загрузите эту страницу" + +msgid "Theme by the" +msgstr "Тема от" diff --git a/spec/_static/locales/sk/LC_MESSAGES/booktheme.mo b/spec/_static/locales/sk/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..59bd0ddfa341477cf5ccfdc88f4c3e6127046f7a GIT binary patch literal 1393 zcmZ9KKWrRD6vijSKyrit=ARHoJeoj?1A-``v#uc6mLesxmAg<-Am(Iw==v>7a08THd<;rm`=IpY4k&eh2g>u`gW~ryD0Tk|O5J~fa_(Nc zzXDUK|0PiBy9|o{Iw-jZpgi{xC@mLFS&OFRlMGV#=>h3w2I;R1(UBqg;w6239ut!4 z2~6=jJ)|#^@o`MFWBGp7wHbaCb5`#=8`;KyKjqAuERSl#ePRozQ?f4d$hk4?nu1TZ zgR6YP4{gTW1S)mLYBMzv(*G~Fs-g&qXSOtPDXSYgM5@YEM^4FEtSg)3YP-Y%ZOMdC zvD)#*Ld4O|#+Dj1ex6GgOmu#x24!ySK3$V+!<;9qmRA}zH4R;s6--u7O{SxPiRJy+ zq;ulan3SHU##L?XQ}Ut8GDb>9C5YnoIEmfsY4-#60ct&J{JY}cT{?GeUcb3{a{tPk zZ+F_pc89Z)dlV7it+LR@u2Yh0A2{}J54XBkPtJL5!!G;orcGRGY}TWzBNIC}w9P8? zwMSvx*(oZoi|&^5lh7kuE|;PI&N?-J`)^o!txs1juXogY6?)ZEJ1#xCtJU@>=)Bnr zU1l0t--9arjh>CyA! zZ|R}^TYP-iOeo=k_sEUBK5*0V4ADZtsjcUv$Fb6dIjHA}(Ucy4hGb%cXdqT-thpkjw8w z94mEnM;EAFODWoF<;0UM`ZS%T+8S2)Skfe~=jnmos~5@rll9m4U7_dmM!H@|Co1(H Di}h+h literal 0 HcmV?d00001 diff --git a/spec/_static/locales/sk/LC_MESSAGES/booktheme.po b/spec/_static/locales/sk/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000000..e44878b50e --- /dev/null +++ b/spec/_static/locales/sk/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sk\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "suggest edit" +msgstr "navrhnúť úpravu" + +msgid "Last updated on" +msgstr "Posledná aktualizácia dňa" + +msgid "Edit this page" +msgstr "Upraviť túto stránku" + +msgid "Launch" +msgstr "Spustiť" + +msgid "Print to PDF" +msgstr "Tlač do PDF" + +msgid "open issue" +msgstr "otvorené vydanie" + +msgid "Download notebook file" +msgstr "Stiahnite si zošit" + +msgid "Toggle navigation" +msgstr "Prepnúť navigáciu" + +msgid "Source repository" +msgstr "Zdrojové úložisko" + +msgid "By the" +msgstr "Podľa" + +msgid "next page" +msgstr "ďalšia strana" + +msgid "repository" +msgstr "Úložisko" + +msgid "Sphinx Book Theme" +msgstr "Téma knihy Sfinga" + +msgid "Download source file" +msgstr "Stiahnite si zdrojový súbor" + +msgid "Contents" +msgstr "Obsah" + +msgid "By" +msgstr "Autor:" + +msgid "Copyright" +msgstr "Autorské práva" + +msgid "Fullscreen mode" +msgstr "Režim celej obrazovky" + +msgid "Open an issue" +msgstr "Otvorte problém" + +msgid "previous page" +msgstr "predchádzajúca strana" + +msgid "Download this page" +msgstr "Stiahnite si túto stránku" + +msgid "Theme by the" +msgstr "Téma od" diff --git a/spec/_static/locales/sl/LC_MESSAGES/booktheme.mo b/spec/_static/locales/sl/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..87bf26de683cb18c73bd23c2b4c57ef6a02545ec GIT binary patch literal 1374 zcmZ9KyKfXR5XQ}$9PjWFC=#aOAvj*5h%UN@MVlwf1j4YtMW$vtK7Sz7QA(F{dy;VIIMJx(*A* z*7ZW*5ffN8gWJKa;9hV7oB|Jk$H0AH8=M61fIC3~cY(3y6OjEp2X}z4!0q5`a1Z#l z=EvIprQUx7Io@xu0dCk(-QNlFehOqi$H8~tMQ{`NqvlU=3--Uk-Qc>7LL34o!NcHb zkab@J`TGNq^T|Ly_ZVc|FG1Eh0$KkXa4+~CYpSj^k88a!&*8idy!V z`%t7QK_wv*NO67Y#^!v|yiY#BTT52)n;gGcMsD1kzd5`1{rs78jk>VS#g&{|GD5)F z+$e2lWVfe$pxC~*IM2jgT5~@lP4MDpz zCx-(XW@_w<9uAzh?%#>APv}sH5H9X{E*5diD#H~rZm5EBHe?#D`0z|yaZ3$VV*3d1 zf=gV-^ojji64%jMWljW5^x#&@4 literal 0 HcmV?d00001 diff --git a/spec/_static/locales/sl/LC_MESSAGES/booktheme.po b/spec/_static/locales/sl/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000000..228939bcdd --- /dev/null +++ b/spec/_static/locales/sl/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "suggest edit" +msgstr "predlagajte urejanje" + +msgid "Last updated on" +msgstr "Nazadnje posodobljeno dne" + +msgid "Edit this page" +msgstr "Uredite to stran" + +msgid "Launch" +msgstr "Kosilo" + +msgid "Print to PDF" +msgstr "Natisni v PDF" + +msgid "open issue" +msgstr "odprto vprašanje" + +msgid "Download notebook file" +msgstr "Prenesite datoteko zvezka" + +msgid "Toggle navigation" +msgstr "Preklopi navigacijo" + +msgid "Source repository" +msgstr "Izvorno skladišče" + +msgid "By the" +msgstr "Avtor" + +msgid "next page" +msgstr "Naslednja stran" + +msgid "repository" +msgstr "odlagališče" + +msgid "Sphinx Book Theme" +msgstr "Tema knjige Sphinx" + +msgid "Download source file" +msgstr "Prenesite izvorno datoteko" + +msgid "Contents" +msgstr "Vsebina" + +msgid "By" +msgstr "Avtor" + +msgid "Copyright" +msgstr "avtorske pravice" + +msgid "Fullscreen mode" +msgstr "Celozaslonski način" + +msgid "Open an issue" +msgstr "Odprite številko" + +msgid "previous page" +msgstr "Prejšnja stran" + +msgid "Download this page" +msgstr "Prenesite to stran" + +msgid "Theme by the" +msgstr "Tema avtorja" diff --git a/spec/_static/locales/sr/LC_MESSAGES/booktheme.mo b/spec/_static/locales/sr/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..ec740f4852f3973fa72ed0c7f7cf59273b8dba41 GIT binary patch literal 1679 zcmZ{i&2Jk;7>5TMpf#n12FigTrXZCM$qB70R5|j2(nPA%iiifpt=iZVd#SU#+K*9wix4UV%CCk|YD;tzleJn!xzyAg~$`^-$R zf|BP7d;(sF`{57pDcCFcOL6{NvA++c-k-1p_w32;FeHVeLgQ7^hJ zGdzy`B&?ZThjG)5bl^0MnyI@nssG*1CaqRf3ytygl3zFKtP{mL3F=O4>e~0%Ctj_o z-VO+GJncqNV$@vddL;4n-04|$KCc&=z>nP650};Xpy_&-^(oOd-!w}`WnaCJdz$wf zjh4}#bIENuu}cxpT#j>fzSPN!1fjX)`bi;sBz=@L8U~dHCrI%>FtxaRre1!}gb~>) zID-xfGsC|hn|!@gG`2jy9GHrZ5ik|B9M_xHwWbqBCa%6aKU+RIj0+tv zS~OvK#;f^t*K1Vt$ptqqoproMLSHL73QKdXBy?KkSwCEgD%uOOZB#uzt@CB|6;B_j z>SM1?mz2F>J33uW*U}Z+wmY_)ohZA>uESZ+w$lw|zev~9H9JUG(p9@{2io4t;AJmR@7g|5U2Qwul5jS5J6+fI7K$b?*B^Gym(vvm#N%kCu@EWomq3c>6awm HD*E*gL}ZXP literal 0 HcmV?d00001 diff --git a/spec/_static/locales/sr/LC_MESSAGES/booktheme.po b/spec/_static/locales/sr/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000000..1a712a18d8 --- /dev/null +++ b/spec/_static/locales/sr/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sr\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "suggest edit" +msgstr "предложи уређивање" + +msgid "Last updated on" +msgstr "Последње ажурирање" + +msgid "Edit this page" +msgstr "Уредите ову страницу" + +msgid "Launch" +msgstr "Лансирање" + +msgid "Print to PDF" +msgstr "Испис у ПДФ" + +msgid "open issue" +msgstr "отворено издање" + +msgid "Download notebook file" +msgstr "Преузмите датотеку бележнице" + +msgid "Toggle navigation" +msgstr "Укључи / искључи навигацију" + +msgid "Source repository" +msgstr "Изворно спремиште" + +msgid "By the" +msgstr "Од" + +msgid "next page" +msgstr "Следећа страна" + +msgid "repository" +msgstr "спремиште" + +msgid "Sphinx Book Theme" +msgstr "Тема књиге Спхинк" + +msgid "Download source file" +msgstr "Преузми изворну датотеку" + +msgid "Contents" +msgstr "Садржај" + +msgid "By" +msgstr "Од стране" + +msgid "Copyright" +msgstr "Ауторско право" + +msgid "Fullscreen mode" +msgstr "Режим целог екрана" + +msgid "Open an issue" +msgstr "Отворите издање" + +msgid "previous page" +msgstr "Претходна страница" + +msgid "Download this page" +msgstr "Преузмите ову страницу" + +msgid "Theme by the" +msgstr "Тхеме би" diff --git a/spec/_static/locales/sv/LC_MESSAGES/booktheme.mo b/spec/_static/locales/sv/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..be951bec201ccd86d534499749af1df8938a14e3 GIT binary patch literal 1349 zcmZ9KF>Dk^6ow}lVsj7(m^c(h3{4=#1{0;Q&N?YF_DNQZu<*qa<=pM_?&RiXHZ!vq zyG4|gNfap!#koiw$x6S9lsZb4B2p?uK}P|i;eWel+45*-zMVHS@BQ=U{de{3PXg^z z^hNZ4&~KtY`v3#l+!-P8iSrmf1TTVf;5>L9Tm%=u&%kS72fPYC0xy9CUIycoPeJzc zBlr>cD|iw74ZH##PWji={_k}D0_1pa!4^0()11Eq@_Z3wKexd@z^_1#^9sZ#USr_% zZ$RF6=ByAmz{?=(O~C8m*C6NOG59g~J@^Uu1e^tb0eSy(koEo!vcEq;zVF{4@B4qc z{t~=^`Mc@*?78OL0?7OBfSk7_kWCc-)qQ+2<|OVr8_C9ipJLzZERSN%{a}q#skAOq-?^dO)rOAE z!IgeMr;IVzK^7__v7YJ(*GJQCX-pV+A}dEOC9$bOlx2~sNU3xd^U@A-@vy)KWu*?G zB(deSg%c;Y*1BT5iRY(iF%a%=1x7AWrn0xW1Xp}5yaA7 zY}7f9(*!9zjkPPMvQM}VWtI_C5^e%1?mHU9WFt*>$Om|9%O-xp@sm1o>%qo@_2cz> zUo5qziA{R@1+`^_fV+iJ+OEh!u6&@_`L@?hmXG&&Wy3D{WZe#2s%_Sm%Y7YNo62S- z^4gYR+}bjwS0?E?KMHMWi+UP5U#`gJw{yqJTOE1t^Oct9R)@Z?#g0zJhP9Me2gZo9 zC~`LrzM8~{)TgPEmOK(4X)v^i8v1U?&&>~Wv^uON#=v;Olp>3HHSsd&R9W!|smjPJ zdCFctK8{1KsU|3nZL-b#*9G8FWH;fu2BfNV<5 S2DY&GdIic4q;D?Bp56m!5lvG7 literal 0 HcmV?d00001 diff --git a/spec/_static/locales/sv/LC_MESSAGES/booktheme.po b/spec/_static/locales/sv/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000000..7d2b56d949 --- /dev/null +++ b/spec/_static/locales/sv/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sv\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "suggest edit" +msgstr "föreslå redigering" + +msgid "Last updated on" +msgstr "Senast uppdaterad den" + +msgid "Edit this page" +msgstr "Redigera den här sidan" + +msgid "Launch" +msgstr "Lansera" + +msgid "Print to PDF" +msgstr "Skriv ut till PDF" + +msgid "open issue" +msgstr "öppet problem" + +msgid "Download notebook file" +msgstr "Ladda ner anteckningsbokfilen" + +msgid "Toggle navigation" +msgstr "Växla navigering" + +msgid "Source repository" +msgstr "Källförvar" + +msgid "By the" +msgstr "Vid" + +msgid "next page" +msgstr "nästa sida" + +msgid "repository" +msgstr "förvar" + +msgid "Sphinx Book Theme" +msgstr "Sphinx boktema" + +msgid "Download source file" +msgstr "Ladda ner källfil" + +msgid "Contents" +msgstr "Innehåll" + +msgid "By" +msgstr "Förbi" + +msgid "Copyright" +msgstr "upphovsrätt" + +msgid "Fullscreen mode" +msgstr "Fullskärmsläge" + +msgid "Open an issue" +msgstr "Öppna ett problem" + +msgid "previous page" +msgstr "föregående sida" + +msgid "Download this page" +msgstr "Ladda ner den här sidan" + +msgid "Theme by the" +msgstr "Tema av" diff --git a/spec/_static/locales/ta/LC_MESSAGES/booktheme.mo b/spec/_static/locales/ta/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..29f52e1f6f1ec96aceb0f883d8ccc82c23eb35c2 GIT binary patch literal 1928 zcmbW0%ZnUE9LGzIuko2E;=xEoRN`S0qn9x23T7V=+2G=?qL54POr@uFQq^?#B-xX0 zK#htA4J0RHRwJIJFG|WNq7Z50sn;0!@U&o7(5PV;9F4M{{RobKj41& z@a;;?!xtbeX@>OX{(5y6M3y47A9wJS8l@l7I~meb8I-3U@UzelnM(bH_d|LjeI~u4 zB&Ck5^3z4%s2P{8W=Y&H)T}#g2QKPq>k6~t+?)DDGB7*axf^C(bKPdqPja0`u~Boq zq#)vWxe(=r9;UshFg@+8T8M_W+gC58#_GuGB+rLNEoOcl%M6n_~Kv<@xsE9lI>D`3aM?=WN&Y5*v5);gzIlEkrgR(mY~Bt;NAGiw5m^ zmz~Tz+NOS)Pd_uI!*qJT)%&LPp{J%=sw%gu@~f)+wA%QnDo0iMT~%)Q%}sWAT~-@s zt8&XvWPPzJFLmFFj3kCLZVZKXbJg6qObpgpYXhKc{dPQvXD4*l1`&-oR|ZVWnD5S zLMPGk+4yL_MW)wWJ7GI+sWh)Cq}dE7ao%TGqX8uPK%$P%oUIVNaozG6uhIA~XTs-( z77E8j3VKIkNhd=@QrBItuMs9x^kr3kK4HautE;{2cexG}GQN=#P4;o6q{&7}8xZ++ zl w$ZZQ&WaeX;?9mtGBq&}escqTfGyJc(*W8(47(T)#0?{xcP9tpFr||Or2L57y?*IS* literal 0 HcmV?d00001 diff --git a/spec/_static/locales/ta/LC_MESSAGES/booktheme.po b/spec/_static/locales/ta/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000000..c75ffe192c --- /dev/null +++ b/spec/_static/locales/ta/LC_MESSAGES/booktheme.po @@ -0,0 +1,66 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ta\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "suggest edit" +msgstr "திருத்த பரிந்துரைக்கவும்" + +msgid "Last updated on" +msgstr "கடைசியாக புதுப்பிக்கப்பட்டது" + +msgid "Edit this page" +msgstr "இந்தப் பக்கத்தைத் திருத்தவும்" + +msgid "Launch" +msgstr "தொடங்க" + +msgid "Print to PDF" +msgstr "PDF இல் அச்சிடுக" + +msgid "open issue" +msgstr "திறந்த பிரச்சினை" + +msgid "Download notebook file" +msgstr "நோட்புக் கோப்பைப் பதிவிறக்கவும்" + +msgid "Toggle navigation" +msgstr "வழிசெலுத்தலை நிலைமாற்று" + +msgid "Source repository" +msgstr "மூல களஞ்சியம்" + +msgid "By the" +msgstr "மூலம்" + +msgid "next page" +msgstr "அடுத்த பக்கம்" + +msgid "Sphinx Book Theme" +msgstr "ஸ்பிங்க்ஸ் புத்தக தீம்" + +msgid "Download source file" +msgstr "மூல கோப்பைப் பதிவிறக்குக" + +msgid "By" +msgstr "வழங்கியவர்" + +msgid "Copyright" +msgstr "பதிப்புரிமை" + +msgid "Open an issue" +msgstr "சிக்கலைத் திறக்கவும்" + +msgid "previous page" +msgstr "முந்தைய பக்கம்" + +msgid "Download this page" +msgstr "இந்தப் பக்கத்தைப் பதிவிறக்கவும்" + +msgid "Theme by the" +msgstr "வழங்கிய தீம்" diff --git a/spec/_static/locales/te/LC_MESSAGES/booktheme.mo b/spec/_static/locales/te/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..0a5f4b46adfda1551ae6791c3c3782525b61be04 GIT binary patch literal 1806 zcmbu8?`s@I7{^DgzpiR+74e1QD2kPOYU&G1LO_}((2{DPsaEjK=5D&TdYxHz_mbva zT2L$M3z1kXg(AcfwAS4~Neb5f0lujqQV?VieD5FN3qLcn=UrpK7cRH^*?DH3U*CQ1 zw_V$o1=qvek8yv`{W$mAxAEY*0dI#t!Motk@Lu>Ud<6aho$p_87u?C=2jJ6i2YeYi zzX^ChJOuB9$KXz=YA)3F59{^k(B)Z$4Y&rK|263Re}o(GCUki}y(4f1KFWF>z6o!@ z*Wm7LLQKL1xEEf7ufjj!vvA~2A@;zx;Pdc3_zYZw?)**o1l&$Dhu|Lg6r6|7{snaU zU4^f}Um%kFbGaHHtXJD1WeGz1>mHu2N2iC=&RtGZchR1B$iD?W+^g&V?%L)waXOPu z(25ZI7x~Geqr`+s7qcYp6yktc&|MR?r8b3{Gv-}+Jn5=|IXAtmr8XIhPLj(sij|mb zCj}Av%jqaDWG`(;g=$Nq#dOrut&Vs-Ra!<`CVAddVkS#8PDaigm=Z@q{7j`LPYRPQ ziX&+!(I@48SIcZiolwF*xU=VM^?@zFv*l@L zDz6jwvaMLG-4f{crQm*REN}ghN#a8coKPu>p z%YTFt$m|qAXTDh&g5gT~hljsJ*ry=A+<9Nb1sA(o5-xGw{Z;?6OlS@gI#jemLQG%z zrpf6>XY=H3-bW;Qrf>v2>%ZN4n4aM|U<|2-ZBn^mBghuhM0)Dv2+@ei()B(V2&(za uuMrF7ToguSy%w`N&3+IHSt#2LVBfiP)B5iT;9Jx)h5&elIS4O(ZT|-CPABOA literal 0 HcmV?d00001 diff --git a/spec/_static/locales/te/LC_MESSAGES/booktheme.po b/spec/_static/locales/te/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000000..2595c03590 --- /dev/null +++ b/spec/_static/locales/te/LC_MESSAGES/booktheme.po @@ -0,0 +1,66 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: te\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "suggest edit" +msgstr "సవరించమని సూచించండి" + +msgid "Last updated on" +msgstr "చివరిగా నవీకరించబడింది" + +msgid "Edit this page" +msgstr "ఈ పేజీని సవరించండి" + +msgid "Launch" +msgstr "ప్రారంభించండి" + +msgid "Print to PDF" +msgstr "PDF కి ముద్రించండి" + +msgid "open issue" +msgstr "ఓపెన్ ఇష్యూ" + +msgid "Download notebook file" +msgstr "నోట్బుక్ ఫైల్ను డౌన్లోడ్ చేయండి" + +msgid "Toggle navigation" +msgstr "నావిగేషన్‌ను టోగుల్ చేయండి" + +msgid "Source repository" +msgstr "మూల రిపోజిటరీ" + +msgid "By the" +msgstr "ద్వారా" + +msgid "next page" +msgstr "తరువాతి పేజీ" + +msgid "Sphinx Book Theme" +msgstr "సింహిక పుస్తక థీమ్" + +msgid "Download source file" +msgstr "మూల ఫైల్‌ను డౌన్‌లోడ్ చేయండి" + +msgid "By" +msgstr "ద్వారా" + +msgid "Copyright" +msgstr "కాపీరైట్" + +msgid "Open an issue" +msgstr "సమస్యను తెరవండి" + +msgid "previous page" +msgstr "ముందు పేజి" + +msgid "Download this page" +msgstr "ఈ పేజీని డౌన్‌లోడ్ చేయండి" + +msgid "Theme by the" +msgstr "ద్వారా థీమ్" diff --git a/spec/_static/locales/tg/LC_MESSAGES/booktheme.mo b/spec/_static/locales/tg/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..b21c6c6340194fdf35f7e5660deb42479c8dbff9 GIT binary patch literal 1628 zcmaiyO^6gn6vxZY=tNE8S5Q|hA#9RE$8XSGCI@vF1jR*HLCB?drtIlBTh(+|t9#pZ z_b^Dr#19Y@K@`-J?Yg?{x;qOwd8{6D@{o&%oP^*d#K?f}Wpw_pnH1Q&v@ z3%&tK*FWF}u!PNBU}wRfz%8&Zfe!dP_zn0sxE@@yD9?KJ9kAteKMU^WF zJC>CiI~?GEE4d#GJ20M-!R?)~ z>>S<1-6l7a<}oHySZKVs&CQhc{Mbyqb88w7X3RqzI{&F#*USvhMoiLrM6s>Hk4E|6 zc@o%qM9F2t?V4KSrinZf?58}t0JXzb84{b#Mr}$-{y{=+V#Xn)X(lNzTPtR6wl32O zGdJL5Bs-5oxB+T`zIGRrAt`^lPLZT?M?g!0angPB{%GR5vxHp0oR8Arqi zbZiRp&%w__8!lf*NbDpe;WA2%r?Xi$atSF8VXr;q_FB@_W_A(5kPfr&0p+;^8?eY= pg1vVOUqyoB&tBYSn9xh&7BjPW`v%MukJU629MMs5Ow+8v{s(GpYQg{j literal 0 HcmV?d00001 diff --git a/spec/_static/locales/tg/LC_MESSAGES/booktheme.po b/spec/_static/locales/tg/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000000..73cd30ea97 --- /dev/null +++ b/spec/_static/locales/tg/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: tg\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "suggest edit" +msgstr "пешниҳод вироиш" + +msgid "Last updated on" +msgstr "Last навсозӣ дар" + +msgid "Edit this page" +msgstr "Ин саҳифаро таҳрир кунед" + +msgid "Launch" +msgstr "Оғоз" + +msgid "Print to PDF" +msgstr "Чоп ба PDF" + +msgid "open issue" +msgstr "барориши кушод" + +msgid "Download notebook file" +msgstr "Файли дафтарро зеркашӣ кунед" + +msgid "Toggle navigation" +msgstr "Гузаришро иваз кунед" + +msgid "Source repository" +msgstr "Анбори манбаъ" + +msgid "By the" +msgstr "Бо" + +msgid "next page" +msgstr "саҳифаи оянда" + +msgid "repository" +msgstr "анбор" + +msgid "Sphinx Book Theme" +msgstr "Сфинкс Мавзӯи китоб" + +msgid "Download source file" +msgstr "Файли манбаъро зеркашӣ кунед" + +msgid "Contents" +msgstr "Мундариҷа" + +msgid "By" +msgstr "Бо" + +msgid "Copyright" +msgstr "Ҳуқуқи муаллиф" + +msgid "Fullscreen mode" +msgstr "Ҳолати экрани пурра" + +msgid "Open an issue" +msgstr "Масъаларо кушоед" + +msgid "previous page" +msgstr "саҳифаи қаблӣ" + +msgid "Download this page" +msgstr "Ин саҳифаро зеркашӣ кунед" + +msgid "Theme by the" +msgstr "Мавзӯъи аз" diff --git a/spec/_static/locales/th/LC_MESSAGES/booktheme.mo b/spec/_static/locales/th/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..abede98aa11b163e580a26b545980ace31e61ccf GIT binary patch literal 1766 zcma)*-)|K~6vqcarB^@&)CU_K663GrYB9uM>wQ7mgal$EMW46#4trN`XEwWgD~&H; zNI=2(Qi7!k28|(VOaz2Z{{sC3d@_d21Bp*Q8{hn#*{fZQQ8%6a%*>u2-*e9G?VVdL zD4xeyEM|9;NtGW4!Kz+u&BX3y#5Y_$YiD?uH$>6TSg=Km#9y)rhB| z#94;h;VRq)zl0CNTOLHf&S01Tf9_gR-TKX!nk)j@8 z$!wbssp1UphqNWmR~=a5Pgi}TUURlGwkp}=OGTFUD|OJlYX>grY3nL8@7z23cs4K_ z*QFa4UGulgs-KlQPg0|%ds#*3KaVrR!JzCG##p`JdPW^i%1RIOUQ(H!c9!$dcKhn} z9D~H_tSpB{%@&y@h|{wNXVlR;Utw}rW|b?J)X}`3*%SJJXq)Ss1*76y&(}50xilRZ zZIi_;O{$C})|{wnbx!isN%F!hW^Oo=-3VU})6}5SPzh4p+ooH!5B1t_nxZ7yq^|R~ zC4W0+ZXG#vWP0QK-WMiXqsF%9mU1(xD+Iil50cDI>25zMN>g=?&CRs;Z`c)yEsvX` zJ#D+Lm)Ueu@1M`A*5SmaL;6aLert9xERsQc#uW?Yq_%lHmYtWTbiM67YxSOv-uv8C zONI6KgI^B*v*yl!75w$!KM(#=@YjO>NCp2z@ZSZGG2hr+4E__@te@u_{+M44euZ<4 z_;qwx4(q3b|5Wzei|3W#eYCFwuf#yNf&j$Yu0#;+cXcn64J%wUT=~$4O>SO5=h=^

    cLPeiV0|6qlnFzL#U0qn`*`iT?nxl@xb2Mx-{rpyeF$L|PmGL73Xj zjT&US*r9DL+Oc6=XyNi4J`IP)4~3RpiSp}N5WkMWZ=`O(hjnrBo?i;ppCMASYj{fI qV*6MBqwc03(drtRAFXAoSBd=B?a4S*sk|OB^ZqtY{YJQZ;_45RC*i9A literal 0 HcmV?d00001 diff --git a/spec/_static/locales/th/LC_MESSAGES/booktheme.po b/spec/_static/locales/th/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000000..0392b4ad39 --- /dev/null +++ b/spec/_static/locales/th/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: th\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "suggest edit" +msgstr "แนะนำแก้ไข" + +msgid "Last updated on" +msgstr "ปรับปรุงล่าสุดเมื่อ" + +msgid "Edit this page" +msgstr "แก้ไขหน้านี้" + +msgid "Launch" +msgstr "เปิด" + +msgid "Print to PDF" +msgstr "พิมพ์เป็น PDF" + +msgid "open issue" +msgstr "เปิดปัญหา" + +msgid "Download notebook file" +msgstr "ดาวน์โหลดไฟล์สมุดบันทึก" + +msgid "Toggle navigation" +msgstr "ไม่ต้องสลับช่องทาง" + +msgid "Source repository" +msgstr "ที่เก็บซอร์ส" + +msgid "By the" +msgstr "โดย" + +msgid "next page" +msgstr "หน้าต่อไป" + +msgid "repository" +msgstr "ที่เก็บ" + +msgid "Sphinx Book Theme" +msgstr "ธีมหนังสือสฟิงซ์" + +msgid "Download source file" +msgstr "ดาวน์โหลดไฟล์ต้นฉบับ" + +msgid "Contents" +msgstr "สารบัญ" + +msgid "By" +msgstr "โดย" + +msgid "Copyright" +msgstr "ลิขสิทธิ์" + +msgid "Fullscreen mode" +msgstr "โหมดเต็มหน้าจอ" + +msgid "Open an issue" +msgstr "เปิดปัญหา" + +msgid "previous page" +msgstr "หน้าที่แล้ว" + +msgid "Download this page" +msgstr "ดาวน์โหลดหน้านี้" + +msgid "Theme by the" +msgstr "ธีมโดย" diff --git a/spec/_static/locales/tl/LC_MESSAGES/booktheme.mo b/spec/_static/locales/tl/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..8df1b73310e0c606251d1abff7e6033d1f6b273f GIT binary patch literal 1273 zcmZ{iJ#P~+7{?8ixA4}MHz7bWh@lJz6qYJggw!_(YD=U9)PcpxxsJ)jKAr8h8TbH< zl>mt^fEW=h3@|dWP{DwN#01}fk%9knmnKyup2YV%`|Ricw;%r;A9>CYr_e5-eL%a2 z_Gk|th%ew?a0@&DeghAKKfp8KZ;;mh1;@cLOg;`?0Z)LpKw38o9s}=zN5K_v43vGY z_s5_1`!7J!c@37pw;-+m2-5n`;Ct{ph(FuhSLAyJ(z;h52j75~!7cDS_y;@-j*b-m zC%}W~-v&p)J0SUA0Z)SpJPAGlY2GGy4txoc|92qy`UKMYuOOYrFAzsE2s#`3PH_Yc zHrRgZAP%9?9w{GbQ&0{H+8gOp(7q^W|Kx>&wCSAbj3LR`Ob>tV+mg-Nw3lhs_H53s zo5YHk8|!7$+74gUi5w0)8?u(%HR#*g@l+_u=40)Val5-HoaZ5pg_kk6hAoOEtD7`fpKHxt1^q`P0PmGs4|~w zYF}CuMg<%mawMf%5;BoQ3pVSzGB;`7b(Ndbym+ll7=Ee3C$CPI*s^AIft_~oQ`+M| zjoMMlC845tP)?QC3^N9mW&fLyY9mxPB*L)jFaumd3$>sZlm_4E_)y1P<99=X&7mSu zQF#bj7^^11I1!U-GjxO_E86t}@}&6i_@% literal 0 HcmV?d00001 diff --git a/spec/_static/locales/tl/LC_MESSAGES/booktheme.po b/spec/_static/locales/tl/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000000..c8375b5431 --- /dev/null +++ b/spec/_static/locales/tl/LC_MESSAGES/booktheme.po @@ -0,0 +1,66 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: tl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "suggest edit" +msgstr "iminumungkahi i-edit" + +msgid "Last updated on" +msgstr "Huling na-update noong" + +msgid "Edit this page" +msgstr "I-edit ang pahinang ito" + +msgid "Launch" +msgstr "Ilunsad" + +msgid "Print to PDF" +msgstr "I-print sa PDF" + +msgid "open issue" +msgstr "bukas na isyu" + +msgid "Download notebook file" +msgstr "Mag-download ng file ng notebook" + +msgid "Toggle navigation" +msgstr "I-toggle ang pag-navigate" + +msgid "Source repository" +msgstr "Pinagmulan ng imbakan" + +msgid "By the" +msgstr "Sa pamamagitan ng" + +msgid "next page" +msgstr "Susunod na pahina" + +msgid "Sphinx Book Theme" +msgstr "Tema ng Sphinx Book" + +msgid "Download source file" +msgstr "Mag-download ng file ng pinagmulan" + +msgid "By" +msgstr "Ni" + +msgid "Copyright" +msgstr "Copyright" + +msgid "Open an issue" +msgstr "Magbukas ng isyu" + +msgid "previous page" +msgstr "Nakaraang pahina" + +msgid "Download this page" +msgstr "I-download ang pahinang ito" + +msgid "Theme by the" +msgstr "Tema ng" diff --git a/spec/_static/locales/tr/LC_MESSAGES/booktheme.mo b/spec/_static/locales/tr/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..029ae18afb5360a8c238a052e8d3971761759d3d GIT binary patch literal 1373 zcmZ{izi%8x6vqdWKynFz!~~?sQXUOIiX{o62)3@sVLOWA2n!$dC&=i7J19yL{j6T0W2%?d)gY?96-L@67yl{`g~s z_CESD`XA_*&>y~r7uw0!mBOP=;q?Z120RHafv3P_@ICND@LjMEo(I1M&w>oT4aSc5 zLCNz7d<%R6o&kRZ&w(7D`FN2cjBk&jSbMQ3yvf}|L z^-dgb=PiL35fdohSHUH48x$WIDEhw##oq%^>ihtT&YwW>`D+*d4$8W}!FRxeF7BOZ z>s|syPtwI-fS96gfHHp*lr0wzl2>wx9;q$97n`h;HKI?N=#nP7WUs~N1$3mG*A#z? zP4-{T@J)1V%lv%Rpus~iXZ5ACk!=k4s2XpwJgPPKoh_YC$-2lp&J{E^B_9n3SNjqF zXE5d_P^B|g>#2!IeHd=kWf?}E+0w+NtTuIsR9C5voRYJMYdgx-R~05`OD2Sx)s{CF zNgQphZK&MIp`-&XC zw^i0&m&u0nldwXznunqP*($Z4{f{ku(5I`PtoGDUdp(}*+f>_seb0WLJ~cMw0*C6= zkV`YBTo=V`U#;;tvZvIAMh7gN?Gt7i9EQ538>@@sDR7=_PxgBv?;s7aXZ*rps`o&(U<3tx~U_1rqYg?0^K7|^E%RsJ#t%4f8 zo6h$Ap{&BCl*;`;;xXGI&@B^nMMIv5kwyPFiiuV?c-PnoHwMdQd*;PnG+qT~k=xL= f7*f}zXhDUuwVFPIQ2d!&RZ>YE8iRKH#ZJBgJpfrQ literal 0 HcmV?d00001 diff --git a/spec/_static/locales/tr/LC_MESSAGES/booktheme.po b/spec/_static/locales/tr/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000000..47d7bdf7f5 --- /dev/null +++ b/spec/_static/locales/tr/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: tr\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "suggest edit" +msgstr "düzenleme öner" + +msgid "Last updated on" +msgstr "Son güncelleme tarihi" + +msgid "Edit this page" +msgstr "Bu sayfayı düzenle" + +msgid "Launch" +msgstr "Başlatmak" + +msgid "Print to PDF" +msgstr "PDF olarak yazdır" + +msgid "open issue" +msgstr "Açık konu" + +msgid "Download notebook file" +msgstr "Defter dosyasını indirin" + +msgid "Toggle navigation" +msgstr "Gezinmeyi değiştir" + +msgid "Source repository" +msgstr "Kaynak kod deposu" + +msgid "By the" +msgstr "Tarafından" + +msgid "next page" +msgstr "sonraki Sayfa" + +msgid "repository" +msgstr "depo" + +msgid "Sphinx Book Theme" +msgstr "Sfenks Kitap Teması" + +msgid "Download source file" +msgstr "Kaynak dosyayı indirin" + +msgid "Contents" +msgstr "İçindekiler" + +msgid "By" +msgstr "Tarafından" + +msgid "Copyright" +msgstr "Telif hakkı" + +msgid "Fullscreen mode" +msgstr "Tam ekran modu" + +msgid "Open an issue" +msgstr "Bir sorunu açın" + +msgid "previous page" +msgstr "önceki sayfa" + +msgid "Download this page" +msgstr "Bu sayfayı indirin" + +msgid "Theme by the" +msgstr "Tarafından tema" diff --git a/spec/_static/locales/uk/LC_MESSAGES/booktheme.mo b/spec/_static/locales/uk/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..16ab78909cfbaba7fa199f47fdfc2934426ac699 GIT binary patch literal 1681 zcmZvaO>7%Q6vv0QKx#^WmXAw-X;52=V^7yhotb5Kwlue- zPJ@uD1fdWPh|e20*TKPc;zZ)a@r}d@A+B8DUJjM|f4dvvq>McK+j;xuef*#QJbLI0 zf%O{p5cY4_Z(`qj3JD;1Tdg@Fj3P=dZc__x$`9$oc*S3*fo^agnKo4Zexd+ydwLFH++H&9h3nhscvH3nP?w=Ry$GKV8 zSFn*%JcrG*?O#Zh&hS|fa-{PW7iaO4wx+~;Mq8zAjF)gW3jCTCm(0hyZoI10#;R#! zZps@$UG17A`bVb!y$DvicD z(UqEbKZJv)We~@S5))CN5yZ%eOXK2NmM>DFi34k*S#d3_1^TwU$hA$?)Ql48Q%+|+ zO&Q;>E2+I(f$!M>Nwm6cv+4}z$&!STx)qotFS{>%ocO*%l?t7p6!W2~*y81C@dFjb zh*pwW{vziurkM*@FJB$o{eEubY#|r6I5iuplC&t`Oj!2O`(TSv<;z`$dL~;A5u^%qBgBK^s=!h>rLI6)qdpT zRwLUoA{Qc+BL{@CNd#$~fM}{TM=rgzQV%n0sfS7&;BP2WpLe~9L#0ZLy!)G(eLtS} z@uTBCHyGACc;3gei{}G8S6;vi>pu7*_yBwvdd_{ zw7^~PH24qrDR`oXv3~FiknZO|ioXGV2*%(?;Gf{z;NRf8;J+FBUg~@w04eVRNO2|b zJ#Z2H7+e8i$-yFT-pWp-6LJ_r(sdMXnvv>}ceKb;S{N^_PkZu%7R~=ky6bpCK9k3g z$k@3h{CHRvY(#lWzU!1jHmVk6McE}TRVZeZy2@wWis)VkD)Nisnai;32Hdk9!Ny8% zh>H8iNjnI6>?(vD=Y%)au3|&?BFFX~vq4Jm5 zMX&72MShO7Oqazq!O}OM=}4bej#Cj_+Vieshc22(u^4vLDC*N`;`w6URZ%80h#W^i znt)vNS978mS`#JfvhV|x$n#E9i<(+#yWIJS^JCrbgJ(X=jVKuk8Cugzp2+hMT?f31 z?aE=i4%v6}~kli>l;GC(nmw+%Pw3ODBSPc^>(>sY>MA6>D7i z*MdBkUV01)pAYlSw$Ly6$pRnzWH`t4n!cr5?Pa~wuCipkz0CC=x@BmuW3xx+mX7tR z*NZtNFp)tbr@2L4}dj%B? z$~?F1e_~CYdU3r0$=I6uq5ePVO_Bn=P}riFSZ}qf6oE57w5w3K+FoX+hEW?y<4|&p zx|p)Aw=sGx%}Vw#el49X^(ARiaRizwH+vA!fH?=_BQ=JATO9Uo!rm6_g(Z9Fvrf~J ziFzY}!KTjO`w9hS|3mkKY2Z8hBsWpwH*$FgF5fip{lMp#&N|*Vkp4MHrJJsNw1%8D c^9?3>eEmE8GP@z_uy-`khW>?G>aA{%rxd0lq5uE@ literal 0 HcmV?d00001 diff --git a/spec/_static/locales/ur/LC_MESSAGES/booktheme.po b/spec/_static/locales/ur/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000000..0f90726c12 --- /dev/null +++ b/spec/_static/locales/ur/LC_MESSAGES/booktheme.po @@ -0,0 +1,66 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ur\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "suggest edit" +msgstr "ترمیم کی تجویز کریں" + +msgid "Last updated on" +msgstr "آخری بار تازہ کاری ہوئی" + +msgid "Edit this page" +msgstr "اس صفحے میں ترمیم کریں" + +msgid "Launch" +msgstr "لانچ کریں" + +msgid "Print to PDF" +msgstr "پی ڈی ایف پرنٹ کریں" + +msgid "open issue" +msgstr "کھلا مسئلہ" + +msgid "Download notebook file" +msgstr "نوٹ بک فائل ڈاؤن لوڈ کریں" + +msgid "Toggle navigation" +msgstr "نیویگیشن ٹوگل کریں" + +msgid "Source repository" +msgstr "ماخذ ذخیرہ" + +msgid "By the" +msgstr "کی طرف" + +msgid "next page" +msgstr "اگلا صفحہ" + +msgid "Sphinx Book Theme" +msgstr "سپنکس بک تھیم" + +msgid "Download source file" +msgstr "سورس فائل ڈاؤن لوڈ کریں" + +msgid "By" +msgstr "بذریعہ" + +msgid "Copyright" +msgstr "کاپی رائٹ" + +msgid "Open an issue" +msgstr "ایک مسئلہ کھولیں" + +msgid "previous page" +msgstr "سابقہ ​​صفحہ" + +msgid "Download this page" +msgstr "اس صفحے کو ڈاؤن لوڈ کریں" + +msgid "Theme by the" +msgstr "کے ذریعہ تھیم" diff --git a/spec/_static/locales/vi/LC_MESSAGES/booktheme.mo b/spec/_static/locales/vi/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..2bb32555c3ea0dab08ed37b71cb863fbe75698c6 GIT binary patch literal 1431 zcmZvb&x;&I6vr#s{2bR9catc(#OK8%htWiG2(!#(H#@MntBVvV&v#)!JFr^_{KP>F`@nJV05}OA1gF4b;9KAkunA6pAA*NK z3BCmSiq}An^CkEqxCxGf--9oMKUe&tTK}_}KL%Ov30MQi#>)GLK%P&59Onf13wRdX z3;qSN-ajCp`xj*0y?e@hC&AY-KMlSLE>x7&{%7EEtZ#xGrw?+zzkx4+4=O$aInLi8 z=P?fP6X0=>=PmFs_%X6t9{djXqq7H;REU`#e&m%Dv(|WNyu(A%OLe5YIB!2Su?;$8te4By zUZxct%bjIsvow_dS@cRfN`gp=xsLV-{cPIG;@E|$l!jJqM~a2OdCHPb;AMxb!8|je z5+5Wu5E#l0;esOMR|IFK`YgJ+E?Oq}qlDRK7TFmDND~hLNUKno*_5*I#duC ze1pUH?uya95XS7fK6vqb$6da&5d>$e(Tqr%5FL8(*`2r*YiH`^Z>aE(?ll6i#v)Y{nLNAmS zVZLM|@+Cqff{+L(H9>+X*h#n|&YXJarQWrDsNf1G{?EIRgwekJ?VFu>|Np%Cx20*2 zVQfXTBHkmmBW^Fl3uEes3ZOb zQk?;C9XJZE1)qXHfzuJ+M)Utfc@-qRPhbpOu_D~R9;Cb#q&h!?W$*w<>pw>P43chB zQ^;m;Gx8RY{OyX^7V!v3^?n6uod9Y7@6r5Kko@OC(isEk+)qHNR|2Y~glBh97KqDQIoyw}Q#g=trLPD*?? zsWX<#ZNn6-BW-Dv{+f1r*{qv#gpj;Xr3E`?xSD%*+R!4+l|=5zREC|jvA~era$Qfb zF2|B6qIlQgPIfxfbA+v2ODm_JowhTUyu=TZx9*JS6Rh#(J>i+Um1$-Lm&OIlG_(Z~ zDK6>Iog$r3#CF65OL>v)Mde-3GzDA=oCH?XIg!%wqv`lr;kc-l;Guq;^y3ZX*zu#s zI~M-$+r2jyH8$SeZ;J%iFtEqY8kTJ5sf^*cLMP93cgEWm);WfBdxaD4kSUe6q?zDt zJ(i9gGoRpuVl zu3Y;tdw+Y?BAIRa)rh7%Q6vqb|O6z_>OFs^gI=uiz7%1XUIrvhVNR?8ES{E)zXk$;;3!9nM?rdo| zg(?BJNt;NGU78fyR1pmy`2barI!U>5;l_yr7d&hG1XmCT{?EI?hS9$L&6|(+{`20i zd%MaE;~=aX_A~4-Y~m68Ft$C)7(TWgzpda-a2vP}+zxhw2f(Mnr@$<@7d!**1_ihW z)CosHiZc!F0%yUU;1}SN;CBgsOxAx%{5nYa{sdFtmM!u9-5~khAjNqGTmxSL>HHrF z{{ks*S695g10>!1LDKhp!dDaaCwv>+k9`-U`l4+X18A zb`E+6_3&{R%F^mDJ28xp>!M(W-N{d0I-s9&TSG1P{ z75aJczeQbi0`6J1V7&!LBlM=*7rJhc_l1yrNEHO@w*t*WuV86W;7Y;|WxmMX@NmGA z+zEnEumRtZ2%`AF$v$>A&gTnH1&&t!FgxoN9eI(TAZ@v#7!s`Y=Y#Q^a>}+{!KHP< zu`TT&i4+%gtWHs$IEm+r3yumC*&X47(6$9s3cLhT)Vm_D)29mQH-#S{T878@)098m z%A7iV>U3{=|JVyJrINy?bHkpi>0X&v z1xMN$etgi;seVh^A?ljp9~9roy_FhpL*H`KeaasSGF*BsH^{!+!{cf8S;>!N`LUxt zDOTIK)fgH3eSM~5R-avJPKqIR9T5`UTRjZlMYk9ZN|&2 zSsBNyvAEKln_#AN!(3g7N>iJPqMOUL)it`->9il( zoLjEXSEEv;IrB~9#-v%f*7$q_8AyL^bp+y>8T%Uf>ocRKJlP7gdS!Fx->lK(l=-+? P`(Y`Xeqh$BP|E%Rvo4ks literal 0 HcmV?d00001 diff --git a/spec/_static/locales/zh_TW/LC_MESSAGES/booktheme.po b/spec/_static/locales/zh_TW/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000000..7833d90432 --- /dev/null +++ b/spec/_static/locales/zh_TW/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zh_TW\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "suggest edit" +msgstr "提出修改建議" + +msgid "Last updated on" +msgstr "最後更新時間:" + +msgid "Edit this page" +msgstr "編輯此頁面" + +msgid "Launch" +msgstr "啟動" + +msgid "Print to PDF" +msgstr "列印成 PDF" + +msgid "open issue" +msgstr "公開的問題" + +msgid "Download notebook file" +msgstr "下載 Notebook 檔案" + +msgid "Toggle navigation" +msgstr "顯示或隱藏導覽列" + +msgid "Source repository" +msgstr "來源儲存庫" + +msgid "By the" +msgstr "作者:" + +msgid "next page" +msgstr "下一頁" + +msgid "repository" +msgstr "儲存庫" + +msgid "Sphinx Book Theme" +msgstr "Sphinx Book 佈景主題" + +msgid "Download source file" +msgstr "下載原始檔" + +msgid "Contents" +msgstr "目錄" + +msgid "By" +msgstr "作者:" + +msgid "Copyright" +msgstr "Copyright" + +msgid "Fullscreen mode" +msgstr "全螢幕模式" + +msgid "Open an issue" +msgstr "開啟議題" + +msgid "previous page" +msgstr "上一頁" + +msgid "Download this page" +msgstr "下載此頁面" + +msgid "Theme by the" +msgstr "佈景主題作者:" diff --git a/spec/_static/minus.png b/spec/_static/minus.png new file mode 100644 index 0000000000000000000000000000000000000000..d96755fdaf8bb2214971e0db9c1fd3077d7c419d GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^+#t*WBp7;*Yy1LIik>cxAr*|t7R?Mi>2?kWtu=nj kDsEF_5m^0CR;1wuP-*O&G^0G}KYk!hp00i_>zopr08q^qX#fBK literal 0 HcmV?d00001 diff --git a/spec/_static/plus.png b/spec/_static/plus.png new file mode 100644 index 0000000000000000000000000000000000000000..7107cec93a979b9a5f64843235a16651d563ce2d GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^+#t*WBp7;*Yy1LIik>cxAr*|t7R?Mi>2?kWtu>-2 m3q%Vub%g%s<8sJhVPMczOq}xhg9DJoz~JfX=d#Wzp$Pyb1r*Kz literal 0 HcmV?d00001 diff --git a/spec/_static/pygments.css b/spec/_static/pygments.css new file mode 100644 index 0000000000..997797f270 --- /dev/null +++ b/spec/_static/pygments.css @@ -0,0 +1,152 @@ +html[data-theme="light"] .highlight pre { line-height: 125%; } +html[data-theme="light"] .highlight td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +html[data-theme="light"] .highlight span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +html[data-theme="light"] .highlight td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +html[data-theme="light"] .highlight span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +html[data-theme="light"] .highlight .hll { background-color: #7971292e } +html[data-theme="light"] .highlight { background: #fefefe; color: #545454 } +html[data-theme="light"] .highlight .c { color: #797129 } /* Comment */ +html[data-theme="light"] .highlight .err { color: #d91e18 } /* Error */ +html[data-theme="light"] .highlight .k { color: #7928a1 } /* Keyword */ +html[data-theme="light"] .highlight .l { color: #797129 } /* Literal */ +html[data-theme="light"] .highlight .n { color: #545454 } /* Name */ +html[data-theme="light"] .highlight .o { color: #008000 } /* Operator */ +html[data-theme="light"] .highlight .p { color: #545454 } /* Punctuation */ +html[data-theme="light"] .highlight .ch { color: #797129 } /* Comment.Hashbang */ +html[data-theme="light"] .highlight .cm { color: #797129 } /* Comment.Multiline */ +html[data-theme="light"] .highlight .cp { color: #797129 } /* Comment.Preproc */ +html[data-theme="light"] .highlight .cpf { color: #797129 } /* Comment.PreprocFile */ +html[data-theme="light"] .highlight .c1 { color: #797129 } /* Comment.Single */ +html[data-theme="light"] .highlight .cs { color: #797129 } /* Comment.Special */ +html[data-theme="light"] .highlight .gd { color: #007faa } /* Generic.Deleted */ +html[data-theme="light"] .highlight .ge { font-style: italic } /* Generic.Emph */ +html[data-theme="light"] .highlight .gh { color: #007faa } /* Generic.Heading */ +html[data-theme="light"] .highlight .gs { font-weight: bold } /* Generic.Strong */ +html[data-theme="light"] .highlight .gu { color: #007faa } /* Generic.Subheading */ +html[data-theme="light"] .highlight .kc { color: #7928a1 } /* Keyword.Constant */ +html[data-theme="light"] .highlight .kd { color: #7928a1 } /* Keyword.Declaration */ +html[data-theme="light"] .highlight .kn { color: #7928a1 } /* Keyword.Namespace */ +html[data-theme="light"] .highlight .kp { color: #7928a1 } /* Keyword.Pseudo */ +html[data-theme="light"] .highlight .kr { color: #7928a1 } /* Keyword.Reserved */ +html[data-theme="light"] .highlight .kt { color: #797129 } /* Keyword.Type */ +html[data-theme="light"] .highlight .ld { color: #797129 } /* Literal.Date */ +html[data-theme="light"] .highlight .m { color: #797129 } /* Literal.Number */ +html[data-theme="light"] .highlight .s { color: #008000 } /* Literal.String */ +html[data-theme="light"] .highlight .na { color: #797129 } /* Name.Attribute */ +html[data-theme="light"] .highlight .nb { color: #797129 } /* Name.Builtin */ +html[data-theme="light"] .highlight .nc { color: #007faa } /* Name.Class */ +html[data-theme="light"] .highlight .no { color: #007faa } /* Name.Constant */ +html[data-theme="light"] .highlight .nd { color: #797129 } /* Name.Decorator */ +html[data-theme="light"] .highlight .ni { color: #008000 } /* Name.Entity */ +html[data-theme="light"] .highlight .ne { color: #7928a1 } /* Name.Exception */ +html[data-theme="light"] .highlight .nf { color: #007faa } /* Name.Function */ +html[data-theme="light"] .highlight .nl { color: #797129 } /* Name.Label */ +html[data-theme="light"] .highlight .nn { color: #545454 } /* Name.Namespace */ +html[data-theme="light"] .highlight .nx { color: #545454 } /* Name.Other */ +html[data-theme="light"] .highlight .py { color: #007faa } /* Name.Property */ +html[data-theme="light"] .highlight .nt { color: #007faa } /* Name.Tag */ +html[data-theme="light"] .highlight .nv { color: #d91e18 } /* Name.Variable */ +html[data-theme="light"] .highlight .ow { color: #7928a1 } /* Operator.Word */ +html[data-theme="light"] .highlight .pm { color: #545454 } /* Punctuation.Marker */ +html[data-theme="light"] .highlight .w { color: #545454 } /* Text.Whitespace */ +html[data-theme="light"] .highlight .mb { color: #797129 } /* Literal.Number.Bin */ +html[data-theme="light"] .highlight .mf { color: #797129 } /* Literal.Number.Float */ +html[data-theme="light"] .highlight .mh { color: #797129 } /* Literal.Number.Hex */ +html[data-theme="light"] .highlight .mi { color: #797129 } /* Literal.Number.Integer */ +html[data-theme="light"] .highlight .mo { color: #797129 } /* Literal.Number.Oct */ +html[data-theme="light"] .highlight .sa { color: #008000 } /* Literal.String.Affix */ +html[data-theme="light"] .highlight .sb { color: #008000 } /* Literal.String.Backtick */ +html[data-theme="light"] .highlight .sc { color: #008000 } /* Literal.String.Char */ +html[data-theme="light"] .highlight .dl { color: #008000 } /* Literal.String.Delimiter */ +html[data-theme="light"] .highlight .sd { color: #008000 } /* Literal.String.Doc */ +html[data-theme="light"] .highlight .s2 { color: #008000 } /* Literal.String.Double */ +html[data-theme="light"] .highlight .se { color: #008000 } /* Literal.String.Escape */ +html[data-theme="light"] .highlight .sh { color: #008000 } /* Literal.String.Heredoc */ +html[data-theme="light"] .highlight .si { color: #008000 } /* Literal.String.Interpol */ +html[data-theme="light"] .highlight .sx { color: #008000 } /* Literal.String.Other */ +html[data-theme="light"] .highlight .sr { color: #d91e18 } /* Literal.String.Regex */ +html[data-theme="light"] .highlight .s1 { color: #008000 } /* Literal.String.Single */ +html[data-theme="light"] .highlight .ss { color: #007faa } /* Literal.String.Symbol */ +html[data-theme="light"] .highlight .bp { color: #797129 } /* Name.Builtin.Pseudo */ +html[data-theme="light"] .highlight .fm { color: #007faa } /* Name.Function.Magic */ +html[data-theme="light"] .highlight .vc { color: #d91e18 } /* Name.Variable.Class */ +html[data-theme="light"] .highlight .vg { color: #d91e18 } /* Name.Variable.Global */ +html[data-theme="light"] .highlight .vi { color: #d91e18 } /* Name.Variable.Instance */ +html[data-theme="light"] .highlight .vm { color: #797129 } /* Name.Variable.Magic */ +html[data-theme="light"] .highlight .il { color: #797129 } /* Literal.Number.Integer.Long */ +html[data-theme="dark"] .highlight pre { line-height: 125%; } +html[data-theme="dark"] .highlight td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +html[data-theme="dark"] .highlight span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +html[data-theme="dark"] .highlight td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +html[data-theme="dark"] .highlight span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +html[data-theme="dark"] .highlight .hll { background-color: #ffd9002e } +html[data-theme="dark"] .highlight { background: #2b2b2b; color: #f8f8f2 } +html[data-theme="dark"] .highlight .c { color: #ffd900 } /* Comment */ +html[data-theme="dark"] .highlight .err { color: #ffa07a } /* Error */ +html[data-theme="dark"] .highlight .k { color: #dcc6e0 } /* Keyword */ +html[data-theme="dark"] .highlight .l { color: #ffd900 } /* Literal */ +html[data-theme="dark"] .highlight .n { color: #f8f8f2 } /* Name */ +html[data-theme="dark"] .highlight .o { color: #abe338 } /* Operator */ +html[data-theme="dark"] .highlight .p { color: #f8f8f2 } /* Punctuation */ +html[data-theme="dark"] .highlight .ch { color: #ffd900 } /* Comment.Hashbang */ +html[data-theme="dark"] .highlight .cm { color: #ffd900 } /* Comment.Multiline */ +html[data-theme="dark"] .highlight .cp { color: #ffd900 } /* Comment.Preproc */ +html[data-theme="dark"] .highlight .cpf { color: #ffd900 } /* Comment.PreprocFile */ +html[data-theme="dark"] .highlight .c1 { color: #ffd900 } /* Comment.Single */ +html[data-theme="dark"] .highlight .cs { color: #ffd900 } /* Comment.Special */ +html[data-theme="dark"] .highlight .gd { color: #00e0e0 } /* Generic.Deleted */ +html[data-theme="dark"] .highlight .ge { font-style: italic } /* Generic.Emph */ +html[data-theme="dark"] .highlight .gh { color: #00e0e0 } /* Generic.Heading */ +html[data-theme="dark"] .highlight .gs { font-weight: bold } /* Generic.Strong */ +html[data-theme="dark"] .highlight .gu { color: #00e0e0 } /* Generic.Subheading */ +html[data-theme="dark"] .highlight .kc { color: #dcc6e0 } /* Keyword.Constant */ +html[data-theme="dark"] .highlight .kd { color: #dcc6e0 } /* Keyword.Declaration */ +html[data-theme="dark"] .highlight .kn { color: #dcc6e0 } /* Keyword.Namespace */ +html[data-theme="dark"] .highlight .kp { color: #dcc6e0 } /* Keyword.Pseudo */ +html[data-theme="dark"] .highlight .kr { color: #dcc6e0 } /* Keyword.Reserved */ +html[data-theme="dark"] .highlight .kt { color: #ffd900 } /* Keyword.Type */ +html[data-theme="dark"] .highlight .ld { color: #ffd900 } /* Literal.Date */ +html[data-theme="dark"] .highlight .m { color: #ffd900 } /* Literal.Number */ +html[data-theme="dark"] .highlight .s { color: #abe338 } /* Literal.String */ +html[data-theme="dark"] .highlight .na { color: #ffd900 } /* Name.Attribute */ +html[data-theme="dark"] .highlight .nb { color: #ffd900 } /* Name.Builtin */ +html[data-theme="dark"] .highlight .nc { color: #00e0e0 } /* Name.Class */ +html[data-theme="dark"] .highlight .no { color: #00e0e0 } /* Name.Constant */ +html[data-theme="dark"] .highlight .nd { color: #ffd900 } /* Name.Decorator */ +html[data-theme="dark"] .highlight .ni { color: #abe338 } /* Name.Entity */ +html[data-theme="dark"] .highlight .ne { color: #dcc6e0 } /* Name.Exception */ +html[data-theme="dark"] .highlight .nf { color: #00e0e0 } /* Name.Function */ +html[data-theme="dark"] .highlight .nl { color: #ffd900 } /* Name.Label */ +html[data-theme="dark"] .highlight .nn { color: #f8f8f2 } /* Name.Namespace */ +html[data-theme="dark"] .highlight .nx { color: #f8f8f2 } /* Name.Other */ +html[data-theme="dark"] .highlight .py { color: #00e0e0 } /* Name.Property */ +html[data-theme="dark"] .highlight .nt { color: #00e0e0 } /* Name.Tag */ +html[data-theme="dark"] .highlight .nv { color: #ffa07a } /* Name.Variable */ +html[data-theme="dark"] .highlight .ow { color: #dcc6e0 } /* Operator.Word */ +html[data-theme="dark"] .highlight .pm { color: #f8f8f2 } /* Punctuation.Marker */ +html[data-theme="dark"] .highlight .w { color: #f8f8f2 } /* Text.Whitespace */ +html[data-theme="dark"] .highlight .mb { color: #ffd900 } /* Literal.Number.Bin */ +html[data-theme="dark"] .highlight .mf { color: #ffd900 } /* Literal.Number.Float */ +html[data-theme="dark"] .highlight .mh { color: #ffd900 } /* Literal.Number.Hex */ +html[data-theme="dark"] .highlight .mi { color: #ffd900 } /* Literal.Number.Integer */ +html[data-theme="dark"] .highlight .mo { color: #ffd900 } /* Literal.Number.Oct */ +html[data-theme="dark"] .highlight .sa { color: #abe338 } /* Literal.String.Affix */ +html[data-theme="dark"] .highlight .sb { color: #abe338 } /* Literal.String.Backtick */ +html[data-theme="dark"] .highlight .sc { color: #abe338 } /* Literal.String.Char */ +html[data-theme="dark"] .highlight .dl { color: #abe338 } /* Literal.String.Delimiter */ +html[data-theme="dark"] .highlight .sd { color: #abe338 } /* Literal.String.Doc */ +html[data-theme="dark"] .highlight .s2 { color: #abe338 } /* Literal.String.Double */ +html[data-theme="dark"] .highlight .se { color: #abe338 } /* Literal.String.Escape */ +html[data-theme="dark"] .highlight .sh { color: #abe338 } /* Literal.String.Heredoc */ +html[data-theme="dark"] .highlight .si { color: #abe338 } /* Literal.String.Interpol */ +html[data-theme="dark"] .highlight .sx { color: #abe338 } /* Literal.String.Other */ +html[data-theme="dark"] .highlight .sr { color: #ffa07a } /* Literal.String.Regex */ +html[data-theme="dark"] .highlight .s1 { color: #abe338 } /* Literal.String.Single */ +html[data-theme="dark"] .highlight .ss { color: #00e0e0 } /* Literal.String.Symbol */ +html[data-theme="dark"] .highlight .bp { color: #ffd900 } /* Name.Builtin.Pseudo */ +html[data-theme="dark"] .highlight .fm { color: #00e0e0 } /* Name.Function.Magic */ +html[data-theme="dark"] .highlight .vc { color: #ffa07a } /* Name.Variable.Class */ +html[data-theme="dark"] .highlight .vg { color: #ffa07a } /* Name.Variable.Global */ +html[data-theme="dark"] .highlight .vi { color: #ffa07a } /* Name.Variable.Instance */ +html[data-theme="dark"] .highlight .vm { color: #ffd900 } /* Name.Variable.Magic */ +html[data-theme="dark"] .highlight .il { color: #ffd900 } /* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/spec/_static/sbt-webpack-macros.html b/spec/_static/sbt-webpack-macros.html new file mode 100644 index 0000000000..6cbf559faa --- /dev/null +++ b/spec/_static/sbt-webpack-macros.html @@ -0,0 +1,11 @@ + +{% macro head_pre_bootstrap() %} + +{% endmacro %} + +{% macro body_post() %} + +{% endmacro %} diff --git a/spec/_static/scripts/bootstrap.js b/spec/_static/scripts/bootstrap.js new file mode 100644 index 0000000000..bda8a60272 --- /dev/null +++ b/spec/_static/scripts/bootstrap.js @@ -0,0 +1,3 @@ +/*! For license information please see bootstrap.js.LICENSE.txt */ +(()=>{"use strict";var t={d:(e,i)=>{for(var n in i)t.o(i,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:i[n]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{afterMain:()=>w,afterRead:()=>b,afterWrite:()=>T,applyStyles:()=>D,arrow:()=>G,auto:()=>r,basePlacements:()=>a,beforeMain:()=>v,beforeRead:()=>g,beforeWrite:()=>E,bottom:()=>n,clippingParents:()=>h,computeStyles:()=>et,createPopper:()=>St,createPopperBase:()=>Lt,createPopperLite:()=>Dt,detectOverflow:()=>gt,end:()=>c,eventListeners:()=>nt,flip:()=>_t,hide:()=>yt,left:()=>o,main:()=>y,modifierPhases:()=>C,offset:()=>wt,placements:()=>m,popper:()=>u,popperGenerator:()=>kt,popperOffsets:()=>Et,preventOverflow:()=>At,read:()=>_,reference:()=>f,right:()=>s,start:()=>l,top:()=>i,variationPlacements:()=>p,viewport:()=>d,write:()=>A});var i="top",n="bottom",s="right",o="left",r="auto",a=[i,n,s,o],l="start",c="end",h="clippingParents",d="viewport",u="popper",f="reference",p=a.reduce((function(t,e){return t.concat([e+"-"+l,e+"-"+c])}),[]),m=[].concat(a,[r]).reduce((function(t,e){return t.concat([e,e+"-"+l,e+"-"+c])}),[]),g="beforeRead",_="read",b="afterRead",v="beforeMain",y="main",w="afterMain",E="beforeWrite",A="write",T="afterWrite",C=[g,_,b,v,y,w,E,A,T];function O(t){return t?(t.nodeName||"").toLowerCase():null}function x(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function k(t){return t instanceof x(t).Element||t instanceof Element}function L(t){return t instanceof x(t).HTMLElement||t instanceof HTMLElement}function S(t){return"undefined"!=typeof ShadowRoot&&(t instanceof x(t).ShadowRoot||t instanceof ShadowRoot)}const D={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var i=e.styles[t]||{},n=e.attributes[t]||{},s=e.elements[t];L(s)&&O(s)&&(Object.assign(s.style,i),Object.keys(n).forEach((function(t){var e=n[t];!1===e?s.removeAttribute(t):s.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,i={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach((function(t){var n=e.elements[t],s=e.attributes[t]||{},o=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:i[t]).reduce((function(t,e){return t[e]="",t}),{});L(n)&&O(n)&&(Object.assign(n.style,o),Object.keys(s).forEach((function(t){n.removeAttribute(t)})))}))}},requires:["computeStyles"]};function $(t){return t.split("-")[0]}var I=Math.max,N=Math.min,P=Math.round;function M(){var t=navigator.userAgentData;return null!=t&&t.brands&&Array.isArray(t.brands)?t.brands.map((function(t){return t.brand+"/"+t.version})).join(" "):navigator.userAgent}function j(){return!/^((?!chrome|android).)*safari/i.test(M())}function F(t,e,i){void 0===e&&(e=!1),void 0===i&&(i=!1);var n=t.getBoundingClientRect(),s=1,o=1;e&&L(t)&&(s=t.offsetWidth>0&&P(n.width)/t.offsetWidth||1,o=t.offsetHeight>0&&P(n.height)/t.offsetHeight||1);var r=(k(t)?x(t):window).visualViewport,a=!j()&&i,l=(n.left+(a&&r?r.offsetLeft:0))/s,c=(n.top+(a&&r?r.offsetTop:0))/o,h=n.width/s,d=n.height/o;return{width:h,height:d,top:c,right:l+h,bottom:c+d,left:l,x:l,y:c}}function H(t){var e=F(t),i=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:n}}function B(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&&S(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function W(t){return x(t).getComputedStyle(t)}function z(t){return["table","td","th"].indexOf(O(t))>=0}function R(t){return((k(t)?t.ownerDocument:t.document)||window.document).documentElement}function q(t){return"html"===O(t)?t:t.assignedSlot||t.parentNode||(S(t)?t.host:null)||R(t)}function V(t){return L(t)&&"fixed"!==W(t).position?t.offsetParent:null}function Y(t){for(var e=x(t),i=V(t);i&&z(i)&&"static"===W(i).position;)i=V(i);return i&&("html"===O(i)||"body"===O(i)&&"static"===W(i).position)?e:i||function(t){var e=/firefox/i.test(M());if(/Trident/i.test(M())&&L(t)&&"fixed"===W(t).position)return null;var i=q(t);for(S(i)&&(i=i.host);L(i)&&["html","body"].indexOf(O(i))<0;){var n=W(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||e&&"filter"===n.willChange||e&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(t)||e}function K(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Q(t,e,i){return I(t,N(e,i))}function X(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function U(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}const G={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,r=t.state,l=t.name,c=t.options,h=r.elements.arrow,d=r.modifiersData.popperOffsets,u=$(r.placement),f=K(u),p=[o,s].indexOf(u)>=0?"height":"width";if(h&&d){var m=function(t,e){return X("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:U(t,a))}(c.padding,r),g=H(h),_="y"===f?i:o,b="y"===f?n:s,v=r.rects.reference[p]+r.rects.reference[f]-d[f]-r.rects.popper[p],y=d[f]-r.rects.reference[f],w=Y(h),E=w?"y"===f?w.clientHeight||0:w.clientWidth||0:0,A=v/2-y/2,T=m[_],C=E-g[p]-m[b],O=E/2-g[p]/2+A,x=Q(T,O,C),k=f;r.modifiersData[l]=((e={})[k]=x,e.centerOffset=x-O,e)}},effect:function(t){var e=t.state,i=t.options.element,n=void 0===i?"[data-popper-arrow]":i;null!=n&&("string"!=typeof n||(n=e.elements.popper.querySelector(n)))&&B(e.elements.popper,n)&&(e.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function J(t){return t.split("-")[1]}var Z={top:"auto",right:"auto",bottom:"auto",left:"auto"};function tt(t){var e,r=t.popper,a=t.popperRect,l=t.placement,h=t.variation,d=t.offsets,u=t.position,f=t.gpuAcceleration,p=t.adaptive,m=t.roundOffsets,g=t.isFixed,_=d.x,b=void 0===_?0:_,v=d.y,y=void 0===v?0:v,w="function"==typeof m?m({x:b,y}):{x:b,y};b=w.x,y=w.y;var E=d.hasOwnProperty("x"),A=d.hasOwnProperty("y"),T=o,C=i,O=window;if(p){var k=Y(r),L="clientHeight",S="clientWidth";k===x(r)&&"static"!==W(k=R(r)).position&&"absolute"===u&&(L="scrollHeight",S="scrollWidth"),(l===i||(l===o||l===s)&&h===c)&&(C=n,y-=(g&&k===O&&O.visualViewport?O.visualViewport.height:k[L])-a.height,y*=f?1:-1),l!==o&&(l!==i&&l!==n||h!==c)||(T=s,b-=(g&&k===O&&O.visualViewport?O.visualViewport.width:k[S])-a.width,b*=f?1:-1)}var D,$=Object.assign({position:u},p&&Z),I=!0===m?function(t,e){var i=t.x,n=t.y,s=e.devicePixelRatio||1;return{x:P(i*s)/s||0,y:P(n*s)/s||0}}({x:b,y},x(r)):{x:b,y};return b=I.x,y=I.y,f?Object.assign({},$,((D={})[C]=A?"0":"",D[T]=E?"0":"",D.transform=(O.devicePixelRatio||1)<=1?"translate("+b+"px, "+y+"px)":"translate3d("+b+"px, "+y+"px, 0)",D)):Object.assign({},$,((e={})[C]=A?y+"px":"",e[T]=E?b+"px":"",e.transform="",e))}const et={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,i=t.options,n=i.gpuAcceleration,s=void 0===n||n,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:$(e.placement),variation:J(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,tt(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:r,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,tt(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}};var it={passive:!0};const nt={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,i=t.instance,n=t.options,s=n.scroll,o=void 0===s||s,r=n.resize,a=void 0===r||r,l=x(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",i.update,it)})),a&&l.addEventListener("resize",i.update,it),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",i.update,it)})),a&&l.removeEventListener("resize",i.update,it)}},data:{}};var st={left:"right",right:"left",bottom:"top",top:"bottom"};function ot(t){return t.replace(/left|right|bottom|top/g,(function(t){return st[t]}))}var rt={start:"end",end:"start"};function at(t){return t.replace(/start|end/g,(function(t){return rt[t]}))}function lt(t){var e=x(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function ct(t){return F(R(t)).left+lt(t).scrollLeft}function ht(t){var e=W(t),i=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function dt(t){return["html","body","#document"].indexOf(O(t))>=0?t.ownerDocument.body:L(t)&&ht(t)?t:dt(q(t))}function ut(t,e){var i;void 0===e&&(e=[]);var n=dt(t),s=n===(null==(i=t.ownerDocument)?void 0:i.body),o=x(n),r=s?[o].concat(o.visualViewport||[],ht(n)?n:[]):n,a=e.concat(r);return s?a:a.concat(ut(q(r)))}function ft(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function pt(t,e,i){return e===d?ft(function(t,e){var i=x(t),n=R(t),s=i.visualViewport,o=n.clientWidth,r=n.clientHeight,a=0,l=0;if(s){o=s.width,r=s.height;var c=j();(c||!c&&"fixed"===e)&&(a=s.offsetLeft,l=s.offsetTop)}return{width:o,height:r,x:a+ct(t),y:l}}(t,i)):k(e)?function(t,e){var i=F(t,!1,"fixed"===e);return i.top=i.top+t.clientTop,i.left=i.left+t.clientLeft,i.bottom=i.top+t.clientHeight,i.right=i.left+t.clientWidth,i.width=t.clientWidth,i.height=t.clientHeight,i.x=i.left,i.y=i.top,i}(e,i):ft(function(t){var e,i=R(t),n=lt(t),s=null==(e=t.ownerDocument)?void 0:e.body,o=I(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=I(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+ct(t),l=-n.scrollTop;return"rtl"===W(s||i).direction&&(a+=I(i.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(R(t)))}function mt(t){var e,r=t.reference,a=t.element,h=t.placement,d=h?$(h):null,u=h?J(h):null,f=r.x+r.width/2-a.width/2,p=r.y+r.height/2-a.height/2;switch(d){case i:e={x:f,y:r.y-a.height};break;case n:e={x:f,y:r.y+r.height};break;case s:e={x:r.x+r.width,y:p};break;case o:e={x:r.x-a.width,y:p};break;default:e={x:r.x,y:r.y}}var m=d?K(d):null;if(null!=m){var g="y"===m?"height":"width";switch(u){case l:e[m]=e[m]-(r[g]/2-a[g]/2);break;case c:e[m]=e[m]+(r[g]/2-a[g]/2)}}return e}function gt(t,e){void 0===e&&(e={});var o=e,r=o.placement,l=void 0===r?t.placement:r,c=o.strategy,p=void 0===c?t.strategy:c,m=o.boundary,g=void 0===m?h:m,_=o.rootBoundary,b=void 0===_?d:_,v=o.elementContext,y=void 0===v?u:v,w=o.altBoundary,E=void 0!==w&&w,A=o.padding,T=void 0===A?0:A,C=X("number"!=typeof T?T:U(T,a)),x=y===u?f:u,S=t.rects.popper,D=t.elements[E?x:y],$=function(t,e,i,n){var s="clippingParents"===e?function(t){var e=ut(q(t)),i=["absolute","fixed"].indexOf(W(t).position)>=0&&L(t)?Y(t):t;return k(i)?e.filter((function(t){return k(t)&&B(t,i)&&"body"!==O(t)})):[]}(t):[].concat(e),o=[].concat(s,[i]),r=o[0],a=o.reduce((function(e,i){var s=pt(t,i,n);return e.top=I(s.top,e.top),e.right=N(s.right,e.right),e.bottom=N(s.bottom,e.bottom),e.left=I(s.left,e.left),e}),pt(t,r,n));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}(k(D)?D:D.contextElement||R(t.elements.popper),g,b,p),P=F(t.elements.reference),M=mt({reference:P,element:S,strategy:"absolute",placement:l}),j=ft(Object.assign({},S,M)),H=y===u?j:P,z={top:$.top-H.top+C.top,bottom:H.bottom-$.bottom+C.bottom,left:$.left-H.left+C.left,right:H.right-$.right+C.right},V=t.modifiersData.offset;if(y===u&&V){var K=V[l];Object.keys(z).forEach((function(t){var e=[s,n].indexOf(t)>=0?1:-1,o=[i,n].indexOf(t)>=0?"y":"x";z[t]+=K[o]*e}))}return z}const _t={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,c=t.options,h=t.name;if(!e.modifiersData[h]._skip){for(var d=c.mainAxis,u=void 0===d||d,f=c.altAxis,g=void 0===f||f,_=c.fallbackPlacements,b=c.padding,v=c.boundary,y=c.rootBoundary,w=c.altBoundary,E=c.flipVariations,A=void 0===E||E,T=c.allowedAutoPlacements,C=e.options.placement,O=$(C),x=_||(O!==C&&A?function(t){if($(t)===r)return[];var e=ot(t);return[at(t),e,at(e)]}(C):[ot(C)]),k=[C].concat(x).reduce((function(t,i){return t.concat($(i)===r?function(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,l=i.flipVariations,c=i.allowedAutoPlacements,h=void 0===c?m:c,d=J(n),u=d?l?p:p.filter((function(t){return J(t)===d})):a,f=u.filter((function(t){return h.indexOf(t)>=0}));0===f.length&&(f=u);var g=f.reduce((function(e,i){return e[i]=gt(t,{placement:i,boundary:s,rootBoundary:o,padding:r})[$(i)],e}),{});return Object.keys(g).sort((function(t,e){return g[t]-g[e]}))}(e,{placement:i,boundary:v,rootBoundary:y,padding:b,flipVariations:A,allowedAutoPlacements:T}):i)}),[]),L=e.rects.reference,S=e.rects.popper,D=new Map,I=!0,N=k[0],P=0;P=0,B=H?"width":"height",W=gt(e,{placement:M,boundary:v,rootBoundary:y,altBoundary:w,padding:b}),z=H?F?s:o:F?n:i;L[B]>S[B]&&(z=ot(z));var R=ot(z),q=[];if(u&&q.push(W[j]<=0),g&&q.push(W[z]<=0,W[R]<=0),q.every((function(t){return t}))){N=M,I=!1;break}D.set(M,q)}if(I)for(var V=function(t){var e=k.find((function(e){var i=D.get(e);if(i)return i.slice(0,t).every((function(t){return t}))}));if(e)return N=e,"break"},Y=A?3:1;Y>0&&"break"!==V(Y);Y--);e.placement!==N&&(e.modifiersData[h]._skip=!0,e.placement=N,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function bt(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function vt(t){return[i,s,n,o].some((function(e){return t[e]>=0}))}const yt={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,i=t.name,n=e.rects.reference,s=e.rects.popper,o=e.modifiersData.preventOverflow,r=gt(e,{elementContext:"reference"}),a=gt(e,{altBoundary:!0}),l=bt(r,n),c=bt(a,s,o),h=vt(l),d=vt(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:d},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":d})}},wt={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,n=t.options,r=t.name,a=n.offset,l=void 0===a?[0,0]:a,c=m.reduce((function(t,n){return t[n]=function(t,e,n){var r=$(t),a=[o,i].indexOf(r)>=0?-1:1,l="function"==typeof n?n(Object.assign({},e,{placement:t})):n,c=l[0],h=l[1];return c=c||0,h=(h||0)*a,[o,s].indexOf(r)>=0?{x:h,y:c}:{x:c,y:h}}(n,e.rects,l),t}),{}),h=c[e.placement],d=h.x,u=h.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=d,e.modifiersData.popperOffsets.y+=u),e.modifiersData[r]=c}},Et={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=mt({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}},At={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,r=t.options,a=t.name,c=r.mainAxis,h=void 0===c||c,d=r.altAxis,u=void 0!==d&&d,f=r.boundary,p=r.rootBoundary,m=r.altBoundary,g=r.padding,_=r.tether,b=void 0===_||_,v=r.tetherOffset,y=void 0===v?0:v,w=gt(e,{boundary:f,rootBoundary:p,padding:g,altBoundary:m}),E=$(e.placement),A=J(e.placement),T=!A,C=K(E),O="x"===C?"y":"x",x=e.modifiersData.popperOffsets,k=e.rects.reference,L=e.rects.popper,S="function"==typeof y?y(Object.assign({},e.rects,{placement:e.placement})):y,D="number"==typeof S?{mainAxis:S,altAxis:S}:Object.assign({mainAxis:0,altAxis:0},S),P=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,M={x:0,y:0};if(x){if(h){var j,F="y"===C?i:o,B="y"===C?n:s,W="y"===C?"height":"width",z=x[C],R=z+w[F],q=z-w[B],V=b?-L[W]/2:0,X=A===l?k[W]:L[W],U=A===l?-L[W]:-k[W],G=e.elements.arrow,Z=b&&G?H(G):{width:0,height:0},tt=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},et=tt[F],it=tt[B],nt=Q(0,k[W],Z[W]),st=T?k[W]/2-V-nt-et-D.mainAxis:X-nt-et-D.mainAxis,ot=T?-k[W]/2+V+nt+it+D.mainAxis:U+nt+it+D.mainAxis,rt=e.elements.arrow&&Y(e.elements.arrow),at=rt?"y"===C?rt.clientTop||0:rt.clientLeft||0:0,lt=null!=(j=null==P?void 0:P[C])?j:0,ct=z+ot-lt,ht=Q(b?N(R,z+st-lt-at):R,z,b?I(q,ct):q);x[C]=ht,M[C]=ht-z}if(u){var dt,ut="x"===C?i:o,ft="x"===C?n:s,pt=x[O],mt="y"===O?"height":"width",_t=pt+w[ut],bt=pt-w[ft],vt=-1!==[i,o].indexOf(E),yt=null!=(dt=null==P?void 0:P[O])?dt:0,wt=vt?_t:pt-k[mt]-L[mt]-yt+D.altAxis,Et=vt?pt+k[mt]+L[mt]-yt-D.altAxis:bt,At=b&&vt?function(t,e,i){var n=Q(t,e,i);return n>i?i:n}(wt,pt,Et):Q(b?wt:_t,pt,b?Et:bt);x[O]=At,M[O]=At-pt}e.modifiersData[a]=M}},requiresIfExists:["offset"]};function Tt(t,e,i){void 0===i&&(i=!1);var n,s,o=L(e),r=L(e)&&function(t){var e=t.getBoundingClientRect(),i=P(e.width)/t.offsetWidth||1,n=P(e.height)/t.offsetHeight||1;return 1!==i||1!==n}(e),a=R(e),l=F(t,r,i),c={scrollLeft:0,scrollTop:0},h={x:0,y:0};return(o||!o&&!i)&&(("body"!==O(e)||ht(a))&&(c=(n=e)!==x(n)&&L(n)?{scrollLeft:(s=n).scrollLeft,scrollTop:s.scrollTop}:lt(n)),L(e)?((h=F(e,!0)).x+=e.clientLeft,h.y+=e.clientTop):a&&(h.x=ct(a))),{x:l.left+c.scrollLeft-h.x,y:l.top+c.scrollTop-h.y,width:l.width,height:l.height}}function Ct(t){var e=new Map,i=new Set,n=[];function s(t){i.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!i.has(t)){var n=e.get(t);n&&s(n)}})),n.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){i.has(t.name)||s(t)})),n}var Ot={placement:"bottom",modifiers:[],strategy:"absolute"};function xt(){for(var t=arguments.length,e=new Array(t),i=0;i$t.has(t)&&$t.get(t).get(e)||null,remove(t,e){if(!$t.has(t))return;const i=$t.get(t);i.delete(e),0===i.size&&$t.delete(t)}},Nt="transitionend",Pt=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,((t,e)=>`#${CSS.escape(e)}`))),t),Mt=t=>{t.dispatchEvent(new Event(Nt))},jt=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),Ft=t=>jt(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(Pt(t)):null,Ht=t=>{if(!jt(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),i=t.closest("details:not([open])");if(!i)return e;if(i!==t){const e=t.closest("summary");if(e&&e.parentNode!==i)return!1;if(null===e)return!1}return e},Bt=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),Wt=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?Wt(t.parentNode):null},zt=()=>{},Rt=t=>{t.offsetHeight},qt=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,Vt=[],Yt=()=>"rtl"===document.documentElement.dir,Kt=t=>{var e;e=()=>{const e=qt();if(e){const i=t.NAME,n=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=n,t.jQueryInterface)}},"loading"===document.readyState?(Vt.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of Vt)t()})),Vt.push(e)):e()},Qt=(t,e=[],i=t)=>"function"==typeof t?t(...e):i,Xt=(t,e,i=!0)=>{if(!i)return void Qt(t);const n=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(i);return n||s?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(e)+5;let s=!1;const o=({target:i})=>{i===e&&(s=!0,e.removeEventListener(Nt,o),Qt(t))};e.addEventListener(Nt,o),setTimeout((()=>{s||Mt(e)}),n)},Ut=(t,e,i,n)=>{const s=t.length;let o=t.indexOf(e);return-1===o?!i&&n?t[s-1]:t[0]:(o+=i?1:-1,n&&(o=(o+s)%s),t[Math.max(0,Math.min(o,s-1))])},Gt=/[^.]*(?=\..*)\.|.*/,Jt=/\..*/,Zt=/::\d+$/,te={};let ee=1;const ie={mouseenter:"mouseover",mouseleave:"mouseout"},ne=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function se(t,e){return e&&`${e}::${ee++}`||t.uidEvent||ee++}function oe(t){const e=se(t);return t.uidEvent=e,te[e]=te[e]||{},te[e]}function re(t,e,i=null){return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===i))}function ae(t,e,i){const n="string"==typeof e,s=n?i:e||i;let o=de(t);return ne.has(o)||(o=t),[n,s,o]}function le(t,e,i,n,s){if("string"!=typeof e||!t)return;let[o,r,a]=ae(e,i,n);if(e in ie){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};r=t(r)}const l=oe(t),c=l[a]||(l[a]={}),h=re(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=se(r,e.replace(Gt,"")),u=o?function(t,e,i){return function n(s){const o=t.querySelectorAll(e);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(const a of o)if(a===r)return fe(s,{delegateTarget:r}),n.oneOff&&ue.off(t,s.type,e,i),i.apply(r,[s])}}(t,i,r):function(t,e){return function i(n){return fe(n,{delegateTarget:t}),i.oneOff&&ue.off(t,n.type,e),e.apply(t,[n])}}(t,r);u.delegationSelector=o?i:null,u.callable=r,u.oneOff=s,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function ce(t,e,i,n,s){const o=re(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function he(t,e,i,n){const s=e[i]||{};for(const[o,r]of Object.entries(s))o.includes(n)&&ce(t,e,i,r.callable,r.delegationSelector)}function de(t){return t=t.replace(Jt,""),ie[t]||t}const ue={on(t,e,i,n){le(t,e,i,n,!1)},one(t,e,i,n){le(t,e,i,n,!0)},off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=ae(e,i,n),a=r!==e,l=oe(t),c=l[r]||{},h=e.startsWith(".");if(void 0===o){if(h)for(const i of Object.keys(l))he(t,l,i,e.slice(1));for(const[i,n]of Object.entries(c)){const s=i.replace(Zt,"");a&&!e.includes(s)||ce(t,l,r,n.callable,n.delegationSelector)}}else{if(!Object.keys(c).length)return;ce(t,l,r,o,s?i:null)}},trigger(t,e,i){if("string"!=typeof e||!t)return null;const n=qt();let s=null,o=!0,r=!0,a=!1;e!==de(e)&&n&&(s=n.Event(e,i),n(t).trigger(s),o=!s.isPropagationStopped(),r=!s.isImmediatePropagationStopped(),a=s.isDefaultPrevented());const l=fe(new Event(e,{bubbles:o,cancelable:!0}),i);return a&&l.preventDefault(),r&&t.dispatchEvent(l),l.defaultPrevented&&s&&s.preventDefault(),l}};function fe(t,e={}){for(const[i,n]of Object.entries(e))try{t[i]=n}catch(e){Object.defineProperty(t,i,{configurable:!0,get:()=>n})}return t}function pe(t){if("true"===t)return!0;if("false"===t)return!1;if(t===Number(t).toString())return Number(t);if(""===t||"null"===t)return null;if("string"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch(e){return t}}function me(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const ge={setDataAttribute(t,e,i){t.setAttribute(`data-bs-${me(e)}`,i)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${me(e)}`)},getDataAttributes(t){if(!t)return{};const e={},i=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const n of i){let i=n.replace(/^bs/,"");i=i.charAt(0).toLowerCase()+i.slice(1,i.length),e[i]=pe(t.dataset[n])}return e},getDataAttribute:(t,e)=>pe(t.getAttribute(`data-bs-${me(e)}`))};class _e{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const i=jt(e)?ge.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof i?i:{},...jt(e)?ge.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(const[n,s]of Object.entries(e)){const e=t[n],o=jt(e)?"element":null==(i=e)?`${i}`:Object.prototype.toString.call(i).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(s).test(o))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${o}" but expected type "${s}".`)}var i}}class be extends _e{constructor(t,e){super(),(t=Ft(t))&&(this._element=t,this._config=this._getConfig(e),It.set(this._element,this.constructor.DATA_KEY,this))}dispose(){It.remove(this._element,this.constructor.DATA_KEY),ue.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e,i=!0){Xt(t,e,i)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return It.get(Ft(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.3.2"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const ve=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i=`#${i.split("#")[1]}`),e=i&&"#"!==i?Pt(i.trim()):null}return e},ye={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const i=[];let n=t.parentNode.closest(e);for(;n;)i.push(n),n=n.parentNode.closest(e);return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(",");return this.find(e,t).filter((t=>!Bt(t)&&Ht(t)))},getSelectorFromElement(t){const e=ve(t);return e&&ye.findOne(e)?e:null},getElementFromSelector(t){const e=ve(t);return e?ye.findOne(e):null},getMultipleElementsFromSelector(t){const e=ve(t);return e?ye.find(e):[]}},we=(t,e="hide")=>{const i=`click.dismiss${t.EVENT_KEY}`,n=t.NAME;ue.on(document,i,`[data-bs-dismiss="${n}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),Bt(this))return;const s=ye.getElementFromSelector(this)||this.closest(`.${n}`);t.getOrCreateInstance(s)[e]()}))},Ee=".bs.alert",Ae=`close${Ee}`,Te=`closed${Ee}`;class Ce extends be{static get NAME(){return"alert"}close(){if(ue.trigger(this._element,Ae).defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback((()=>this._destroyElement()),this._element,t)}_destroyElement(){this._element.remove(),ue.trigger(this._element,Te),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=Ce.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}we(Ce,"close"),Kt(Ce);const Oe='[data-bs-toggle="button"]';class xe extends be{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=xe.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}ue.on(document,"click.bs.button.data-api",Oe,(t=>{t.preventDefault();const e=t.target.closest(Oe);xe.getOrCreateInstance(e).toggle()})),Kt(xe);const ke=".bs.swipe",Le=`touchstart${ke}`,Se=`touchmove${ke}`,De=`touchend${ke}`,$e=`pointerdown${ke}`,Ie=`pointerup${ke}`,Ne={endCallback:null,leftCallback:null,rightCallback:null},Pe={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class Me extends _e{constructor(t,e){super(),this._element=t,t&&Me.isSupported()&&(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return Ne}static get DefaultType(){return Pe}static get NAME(){return"swipe"}dispose(){ue.off(this._element,ke)}_start(t){this._supportPointerEvents?this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX):this._deltaX=t.touches[0].clientX}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),Qt(this._config.endCallback)}_move(t){this._deltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this._deltaX}_handleSwipe(){const t=Math.abs(this._deltaX);if(t<=40)return;const e=t/this._deltaX;this._deltaX=0,e&&Qt(e>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(ue.on(this._element,$e,(t=>this._start(t))),ue.on(this._element,Ie,(t=>this._end(t))),this._element.classList.add("pointer-event")):(ue.on(this._element,Le,(t=>this._start(t))),ue.on(this._element,Se,(t=>this._move(t))),ue.on(this._element,De,(t=>this._end(t))))}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&("pen"===t.pointerType||"touch"===t.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const je=".bs.carousel",Fe=".data-api",He="next",Be="prev",We="left",ze="right",Re=`slide${je}`,qe=`slid${je}`,Ve=`keydown${je}`,Ye=`mouseenter${je}`,Ke=`mouseleave${je}`,Qe=`dragstart${je}`,Xe=`load${je}${Fe}`,Ue=`click${je}${Fe}`,Ge="carousel",Je="active",Ze=".active",ti=".carousel-item",ei=Ze+ti,ii={ArrowLeft:ze,ArrowRight:We},ni={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},si={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class oi extends be{constructor(t,e){super(t,e),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=ye.findOne(".carousel-indicators",this._element),this._addEventListeners(),this._config.ride===Ge&&this.cycle()}static get Default(){return ni}static get DefaultType(){return si}static get NAME(){return"carousel"}next(){this._slide(He)}nextWhenVisible(){!document.hidden&&Ht(this._element)&&this.next()}prev(){this._slide(Be)}pause(){this._isSliding&&Mt(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval((()=>this.nextWhenVisible()),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?ue.one(this._element,qe,(()=>this.cycle())):this.cycle())}to(t){const e=this._getItems();if(t>e.length-1||t<0)return;if(this._isSliding)return void ue.one(this._element,qe,(()=>this.to(t)));const i=this._getItemIndex(this._getActive());if(i===t)return;const n=t>i?He:Be;this._slide(n,e[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&ue.on(this._element,Ve,(t=>this._keydown(t))),"hover"===this._config.pause&&(ue.on(this._element,Ye,(()=>this.pause())),ue.on(this._element,Ke,(()=>this._maybeEnableCycle()))),this._config.touch&&Me.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const t of ye.find(".carousel-item img",this._element))ue.on(t,Qe,(t=>t.preventDefault()));const t={leftCallback:()=>this._slide(this._directionToOrder(We)),rightCallback:()=>this._slide(this._directionToOrder(ze)),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((()=>this._maybeEnableCycle()),500+this._config.interval))}};this._swipeHelper=new Me(this._element,t)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=ii[t.key];e&&(t.preventDefault(),this._slide(this._directionToOrder(e)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){if(!this._indicatorsElement)return;const e=ye.findOne(Ze,this._indicatorsElement);e.classList.remove(Je),e.removeAttribute("aria-current");const i=ye.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);i&&(i.classList.add(Je),i.setAttribute("aria-current","true"))}_updateInterval(){const t=this._activeElement||this._getActive();if(!t)return;const e=Number.parseInt(t.getAttribute("data-bs-interval"),10);this._config.interval=e||this._config.defaultInterval}_slide(t,e=null){if(this._isSliding)return;const i=this._getActive(),n=t===He,s=e||Ut(this._getItems(),i,n,this._config.wrap);if(s===i)return;const o=this._getItemIndex(s),r=e=>ue.trigger(this._element,e,{relatedTarget:s,direction:this._orderToDirection(t),from:this._getItemIndex(i),to:o});if(r(Re).defaultPrevented)return;if(!i||!s)return;const a=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=s;const l=n?"carousel-item-start":"carousel-item-end",c=n?"carousel-item-next":"carousel-item-prev";s.classList.add(c),Rt(s),i.classList.add(l),s.classList.add(l),this._queueCallback((()=>{s.classList.remove(l,c),s.classList.add(Je),i.classList.remove(Je,c,l),this._isSliding=!1,r(qe)}),i,this._isAnimated()),a&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return ye.findOne(ei,this._element)}_getItems(){return ye.find(ti,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return Yt()?t===We?Be:He:t===We?He:Be}_orderToDirection(t){return Yt()?t===Be?We:ze:t===Be?ze:We}static jQueryInterface(t){return this.each((function(){const e=oi.getOrCreateInstance(this,t);if("number"!=typeof t){if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}else e.to(t)}))}}ue.on(document,Ue,"[data-bs-slide], [data-bs-slide-to]",(function(t){const e=ye.getElementFromSelector(this);if(!e||!e.classList.contains(Ge))return;t.preventDefault();const i=oi.getOrCreateInstance(e),n=this.getAttribute("data-bs-slide-to");return n?(i.to(n),void i._maybeEnableCycle()):"next"===ge.getDataAttribute(this,"slide")?(i.next(),void i._maybeEnableCycle()):(i.prev(),void i._maybeEnableCycle())})),ue.on(window,Xe,(()=>{const t=ye.find('[data-bs-ride="carousel"]');for(const e of t)oi.getOrCreateInstance(e)})),Kt(oi);const ri=".bs.collapse",ai=`show${ri}`,li=`shown${ri}`,ci=`hide${ri}`,hi=`hidden${ri}`,di=`click${ri}.data-api`,ui="show",fi="collapse",pi="collapsing",mi=`:scope .${fi} .${fi}`,gi='[data-bs-toggle="collapse"]',_i={parent:null,toggle:!0},bi={parent:"(null|element)",toggle:"boolean"};class vi extends be{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const i=ye.find(gi);for(const t of i){const e=ye.getSelectorFromElement(t),i=ye.find(e).filter((t=>t===this._element));null!==e&&i.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return _i}static get DefaultType(){return bi}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>vi.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(ue.trigger(this._element,ai).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(fi),this._element.classList.add(pi),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const i=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(pi),this._element.classList.add(fi,ui),this._element.style[e]="",ue.trigger(this._element,li)}),this._element,!0),this._element.style[e]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(ue.trigger(this._element,ci).defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,Rt(this._element),this._element.classList.add(pi),this._element.classList.remove(fi,ui);for(const t of this._triggerArray){const e=ye.getElementFromSelector(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0,this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(pi),this._element.classList.add(fi),ue.trigger(this._element,hi)}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(ui)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=Ft(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(gi);for(const e of t){const t=ye.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=ye.find(mi,this._config.parent);return ye.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const i of t)i.classList.toggle("collapsed",!e),i.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const i=vi.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}}))}}ue.on(document,di,gi,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of ye.getMultipleElementsFromSelector(this))vi.getOrCreateInstance(t,{toggle:!1}).toggle()})),Kt(vi);const yi="dropdown",wi=".bs.dropdown",Ei=".data-api",Ai="ArrowUp",Ti="ArrowDown",Ci=`hide${wi}`,Oi=`hidden${wi}`,xi=`show${wi}`,ki=`shown${wi}`,Li=`click${wi}${Ei}`,Si=`keydown${wi}${Ei}`,Di=`keyup${wi}${Ei}`,$i="show",Ii='[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)',Ni=`${Ii}.${$i}`,Pi=".dropdown-menu",Mi=Yt()?"top-end":"top-start",ji=Yt()?"top-start":"top-end",Fi=Yt()?"bottom-end":"bottom-start",Hi=Yt()?"bottom-start":"bottom-end",Bi=Yt()?"left-start":"right-start",Wi=Yt()?"right-start":"left-start",zi={autoClose:!0,boundary:"clippingParents",display:"dynamic",offset:[0,2],popperConfig:null,reference:"toggle"},Ri={autoClose:"(boolean|string)",boundary:"(string|element)",display:"string",offset:"(array|string|function)",popperConfig:"(null|object|function)",reference:"(string|element|object)"};class qi extends be{constructor(t,e){super(t,e),this._popper=null,this._parent=this._element.parentNode,this._menu=ye.next(this._element,Pi)[0]||ye.prev(this._element,Pi)[0]||ye.findOne(Pi,this._parent),this._inNavbar=this._detectNavbar()}static get Default(){return zi}static get DefaultType(){return Ri}static get NAME(){return yi}toggle(){return this._isShown()?this.hide():this.show()}show(){if(Bt(this._element)||this._isShown())return;const t={relatedTarget:this._element};if(!ue.trigger(this._element,xi,t).defaultPrevented){if(this._createPopper(),"ontouchstart"in document.documentElement&&!this._parent.closest(".navbar-nav"))for(const t of[].concat(...document.body.children))ue.on(t,"mouseover",zt);this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add($i),this._element.classList.add($i),ue.trigger(this._element,ki,t)}}hide(){if(Bt(this._element)||!this._isShown())return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(t){if(!ue.trigger(this._element,Ci,t).defaultPrevented){if("ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))ue.off(t,"mouseover",zt);this._popper&&this._popper.destroy(),this._menu.classList.remove($i),this._element.classList.remove($i),this._element.setAttribute("aria-expanded","false"),ge.removeDataAttribute(this._menu,"popper"),ue.trigger(this._element,Oi,t)}}_getConfig(t){if("object"==typeof(t=super._getConfig(t)).reference&&!jt(t.reference)&&"function"!=typeof t.reference.getBoundingClientRect)throw new TypeError(`${yi.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return t}_createPopper(){if(void 0===e)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let t=this._element;"parent"===this._config.reference?t=this._parent:jt(this._config.reference)?t=Ft(this._config.reference):"object"==typeof this._config.reference&&(t=this._config.reference);const i=this._getPopperConfig();this._popper=St(t,this._menu,i)}_isShown(){return this._menu.classList.contains($i)}_getPlacement(){const t=this._parent;if(t.classList.contains("dropend"))return Bi;if(t.classList.contains("dropstart"))return Wi;if(t.classList.contains("dropup-center"))return"top";if(t.classList.contains("dropdown-center"))return"bottom";const e="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return t.classList.contains("dropup")?e?ji:Mi:e?Hi:Fi}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||"static"===this._config.display)&&(ge.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,...Qt(this._config.popperConfig,[t])}}_selectMenuItem({key:t,target:e}){const i=ye.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter((t=>Ht(t)));i.length&&Ut(i,e,t===Ti,!i.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=qi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}static clearMenus(t){if(2===t.button||"keyup"===t.type&&"Tab"!==t.key)return;const e=ye.find(Ni);for(const i of e){const e=qi.getInstance(i);if(!e||!1===e._config.autoClose)continue;const n=t.composedPath(),s=n.includes(e._menu);if(n.includes(e._element)||"inside"===e._config.autoClose&&!s||"outside"===e._config.autoClose&&s)continue;if(e._menu.contains(t.target)&&("keyup"===t.type&&"Tab"===t.key||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;const o={relatedTarget:e._element};"click"===t.type&&(o.clickEvent=t),e._completeHide(o)}}static dataApiKeydownHandler(t){const e=/input|textarea/i.test(t.target.tagName),i="Escape"===t.key,n=[Ai,Ti].includes(t.key);if(!n&&!i)return;if(e&&!i)return;t.preventDefault();const s=this.matches(Ii)?this:ye.prev(this,Ii)[0]||ye.next(this,Ii)[0]||ye.findOne(Ii,t.delegateTarget.parentNode),o=qi.getOrCreateInstance(s);if(n)return t.stopPropagation(),o.show(),void o._selectMenuItem(t);o._isShown()&&(t.stopPropagation(),o.hide(),s.focus())}}ue.on(document,Si,Ii,qi.dataApiKeydownHandler),ue.on(document,Si,Pi,qi.dataApiKeydownHandler),ue.on(document,Li,qi.clearMenus),ue.on(document,Di,qi.clearMenus),ue.on(document,Li,Ii,(function(t){t.preventDefault(),qi.getOrCreateInstance(this).toggle()})),Kt(qi);const Vi="backdrop",Yi="show",Ki=`mousedown.bs.${Vi}`,Qi={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},Xi={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class Ui extends _e{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return Qi}static get DefaultType(){return Xi}static get NAME(){return Vi}show(t){if(!this._config.isVisible)return void Qt(t);this._append();const e=this._getElement();this._config.isAnimated&&Rt(e),e.classList.add(Yi),this._emulateAnimation((()=>{Qt(t)}))}hide(t){this._config.isVisible?(this._getElement().classList.remove(Yi),this._emulateAnimation((()=>{this.dispose(),Qt(t)}))):Qt(t)}dispose(){this._isAppended&&(ue.off(this._element,Ki),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_configAfterMerge(t){return t.rootElement=Ft(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),ue.on(t,Ki,(()=>{Qt(this._config.clickCallback)})),this._isAppended=!0}_emulateAnimation(t){Xt(t,this._getElement(),this._config.isAnimated)}}const Gi=".bs.focustrap",Ji=`focusin${Gi}`,Zi=`keydown.tab${Gi}`,tn="backward",en={autofocus:!0,trapElement:null},nn={autofocus:"boolean",trapElement:"element"};class sn extends _e{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return en}static get DefaultType(){return nn}static get NAME(){return"focustrap"}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),ue.off(document,Gi),ue.on(document,Ji,(t=>this._handleFocusin(t))),ue.on(document,Zi,(t=>this._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,ue.off(document,Gi))}_handleFocusin(t){const{trapElement:e}=this._config;if(t.target===document||t.target===e||e.contains(t.target))return;const i=ye.focusableChildren(e);0===i.length?e.focus():this._lastTabNavDirection===tn?i[i.length-1].focus():i[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?tn:"forward")}}const on=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",rn=".sticky-top",an="padding-right",ln="margin-right";class cn{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,an,(e=>e+t)),this._setElementAttributes(on,an,(e=>e+t)),this._setElementAttributes(rn,ln,(e=>e-t))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,an),this._resetElementAttributes(on,an),this._resetElementAttributes(rn,ln)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const n=this.getWidth();this._applyManipulationCallback(t,(t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+n)return;this._saveInitialAttribute(t,e);const s=window.getComputedStyle(t).getPropertyValue(e);t.style.setProperty(e,`${i(Number.parseFloat(s))}px`)}))}_saveInitialAttribute(t,e){const i=t.style.getPropertyValue(e);i&&ge.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=>{const i=ge.getDataAttribute(t,e);null!==i?(ge.removeDataAttribute(t,e),t.style.setProperty(e,i)):t.style.removeProperty(e)}))}_applyManipulationCallback(t,e){if(jt(t))e(t);else for(const i of ye.find(t,this._element))e(i)}}const hn=".bs.modal",dn=`hide${hn}`,un=`hidePrevented${hn}`,fn=`hidden${hn}`,pn=`show${hn}`,mn=`shown${hn}`,gn=`resize${hn}`,_n=`click.dismiss${hn}`,bn=`mousedown.dismiss${hn}`,vn=`keydown.dismiss${hn}`,yn=`click${hn}.data-api`,wn="modal-open",En="show",An="modal-static",Tn={backdrop:!0,focus:!0,keyboard:!0},Cn={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class On extends be{constructor(t,e){super(t,e),this._dialog=ye.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new cn,this._addEventListeners()}static get Default(){return Tn}static get DefaultType(){return Cn}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||ue.trigger(this._element,pn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(wn),this._adjustDialog(),this._backdrop.show((()=>this._showElement(t))))}hide(){this._isShown&&!this._isTransitioning&&(ue.trigger(this._element,dn).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(En),this._queueCallback((()=>this._hideModal()),this._element,this._isAnimated())))}dispose(){ue.off(window,hn),ue.off(this._dialog,hn),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new Ui({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new sn({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const e=ye.findOne(".modal-body",this._dialog);e&&(e.scrollTop=0),Rt(this._element),this._element.classList.add(En),this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,ue.trigger(this._element,mn,{relatedTarget:t})}),this._dialog,this._isAnimated())}_addEventListeners(){ue.on(this._element,vn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():this._triggerBackdropTransition())})),ue.on(window,gn,(()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()})),ue.on(this._element,bn,(t=>{ue.one(this._element,_n,(e=>{this._element===t.target&&this._element===e.target&&("static"!==this._config.backdrop?this._config.backdrop&&this.hide():this._triggerBackdropTransition())}))}))}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide((()=>{document.body.classList.remove(wn),this._resetAdjustments(),this._scrollBar.reset(),ue.trigger(this._element,fn)}))}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(ue.trigger(this._element,un).defaultPrevented)return;const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._element.style.overflowY;"hidden"===e||this._element.classList.contains(An)||(t||(this._element.style.overflowY="hidden"),this._element.classList.add(An),this._queueCallback((()=>{this._element.classList.remove(An),this._queueCallback((()=>{this._element.style.overflowY=e}),this._dialog)}),this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;if(i&&!t){const t=Yt()?"paddingLeft":"paddingRight";this._element.style[t]=`${e}px`}if(!i&&t){const t=Yt()?"paddingRight":"paddingLeft";this._element.style[t]=`${e}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=On.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}ue.on(document,yn,'[data-bs-toggle="modal"]',(function(t){const e=ye.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),ue.one(e,pn,(t=>{t.defaultPrevented||ue.one(e,fn,(()=>{Ht(this)&&this.focus()}))}));const i=ye.findOne(".modal.show");i&&On.getInstance(i).hide(),On.getOrCreateInstance(e).toggle(this)})),we(On),Kt(On);const xn=".bs.offcanvas",kn=".data-api",Ln=`load${xn}${kn}`,Sn="show",Dn="showing",$n="hiding",In=".offcanvas.show",Nn=`show${xn}`,Pn=`shown${xn}`,Mn=`hide${xn}`,jn=`hidePrevented${xn}`,Fn=`hidden${xn}`,Hn=`resize${xn}`,Bn=`click${xn}${kn}`,Wn=`keydown.dismiss${xn}`,zn={backdrop:!0,keyboard:!0,scroll:!1},Rn={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class qn extends be{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return zn}static get DefaultType(){return Rn}static get NAME(){return"offcanvas"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||ue.trigger(this._element,Nn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||(new cn).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(Dn),this._queueCallback((()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add(Sn),this._element.classList.remove(Dn),ue.trigger(this._element,Pn,{relatedTarget:t})}),this._element,!0))}hide(){this._isShown&&(ue.trigger(this._element,Mn).defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add($n),this._backdrop.hide(),this._queueCallback((()=>{this._element.classList.remove(Sn,$n),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new cn).reset(),ue.trigger(this._element,Fn)}),this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=Boolean(this._config.backdrop);return new Ui({className:"offcanvas-backdrop",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?()=>{"static"!==this._config.backdrop?this.hide():ue.trigger(this._element,jn)}:null})}_initializeFocusTrap(){return new sn({trapElement:this._element})}_addEventListeners(){ue.on(this._element,Wn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():ue.trigger(this._element,jn))}))}static jQueryInterface(t){return this.each((function(){const e=qn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}ue.on(document,Bn,'[data-bs-toggle="offcanvas"]',(function(t){const e=ye.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),Bt(this))return;ue.one(e,Fn,(()=>{Ht(this)&&this.focus()}));const i=ye.findOne(In);i&&i!==e&&qn.getInstance(i).hide(),qn.getOrCreateInstance(e).toggle(this)})),ue.on(window,Ln,(()=>{for(const t of ye.find(In))qn.getOrCreateInstance(t).show()})),ue.on(window,Hn,(()=>{for(const t of ye.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(t).position&&qn.getOrCreateInstance(t).hide()})),we(qn),Kt(qn);const Vn={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},Yn=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Kn=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,Qn=(t,e)=>{const i=t.nodeName.toLowerCase();return e.includes(i)?!Yn.has(i)||Boolean(Kn.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(i)))},Xn={allowList:Vn,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"

    "},Un={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Gn={entry:"(string|element|function|null)",selector:"(string|element)"};class Jn extends _e{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return Xn}static get DefaultType(){return Un}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,i]of Object.entries(this._config.content))this._setContent(t,i,e);const e=t.children[0],i=this._resolvePossibleFunction(this._config.extraClass);return i&&e.classList.add(...i.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,i]of Object.entries(t))super._typeCheckConfig({selector:e,entry:i},Gn)}_setContent(t,e,i){const n=ye.findOne(i,t);n&&((e=this._resolvePossibleFunction(e))?jt(e)?this._putElementInTemplate(Ft(e),n):this._config.html?n.innerHTML=this._maybeSanitize(e):n.textContent=e:n.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,i){if(!t.length)return t;if(i&&"function"==typeof i)return i(t);const n=(new window.DOMParser).parseFromString(t,"text/html"),s=[].concat(...n.body.querySelectorAll("*"));for(const t of s){const i=t.nodeName.toLowerCase();if(!Object.keys(e).includes(i)){t.remove();continue}const n=[].concat(...t.attributes),s=[].concat(e["*"]||[],e[i]||[]);for(const e of n)Qn(e,s)||t.removeAttribute(e.nodeName)}return n.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return Qt(t,[this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const Zn=new Set(["sanitize","allowList","sanitizeFn"]),ts="fade",es="show",is=".modal",ns="hide.bs.modal",ss="hover",os="focus",rs={AUTO:"auto",TOP:"top",RIGHT:Yt()?"left":"right",BOTTOM:"bottom",LEFT:Yt()?"right":"left"},as={allowList:Vn,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},ls={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class cs extends be{constructor(t,i){if(void 0===e)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,i),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return as}static get DefaultType(){return ls}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),ue.off(this._element.closest(is),ns,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=ue.trigger(this._element,this.constructor.eventName("show")),e=(Wt(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const i=this._getTipElement();this._element.setAttribute("aria-describedby",i.getAttribute("id"));const{container:n}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(n.append(i),ue.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(i),i.classList.add(es),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))ue.on(t,"mouseover",zt);this._queueCallback((()=>{ue.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(this._isShown()&&!ue.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){if(this._getTipElement().classList.remove(es),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))ue.off(t,"mouseover",zt);this._activeTrigger.click=!1,this._activeTrigger[os]=!1,this._activeTrigger[ss]=!1,this._isHovered=null,this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),ue.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(ts,es),e.classList.add(`bs-${this.constructor.NAME}-auto`);const i=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",i),this._isAnimated()&&e.classList.add(ts),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Jn({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{".tooltip-inner":this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(ts)}_isShown(){return this.tip&&this.tip.classList.contains(es)}_createPopper(t){const e=Qt(this._config.placement,[this,t,this._element]),i=rs[e.toUpperCase()];return St(this._element,t,this._getPopperConfig(i))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return Qt(t,[this._element])}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return{...e,...Qt(this._config.popperConfig,[e])}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)ue.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===ss?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),i=e===ss?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");ue.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?os:ss]=!0,e._enter()})),ue.on(this._element,i,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?os:ss]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},ue.on(this._element.closest(is),ns,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=ge.getDataAttributes(this._element);for(const t of Object.keys(e))Zn.has(t)&&delete e[t];return t={...e,..."object"==typeof t&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:Ft(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const[e,i]of Object.entries(this._config))this.constructor.Default[e]!==i&&(t[e]=i);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each((function(){const e=cs.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}Kt(cs);const hs={...cs.Default,content:"",offset:[0,8],placement:"right",template:'',trigger:"click"},ds={...cs.DefaultType,content:"(null|string|element|function)"};class us extends cs{static get Default(){return hs}static get DefaultType(){return ds}static get NAME(){return"popover"}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{".popover-header":this._getTitle(),".popover-body":this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(t){return this.each((function(){const e=us.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}Kt(us);const fs=".bs.scrollspy",ps=`activate${fs}`,ms=`click${fs}`,gs=`load${fs}.data-api`,_s="active",bs="[href]",vs=".nav-link",ys=`${vs}, .nav-item > ${vs}, .list-group-item`,ws={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},Es={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class As extends be{constructor(t,e){super(t,e),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return ws}static get DefaultType(){return Es}static get NAME(){return"scrollspy"}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const t of this._observableSections.values())this._observer.observe(t)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(t){return t.target=Ft(t.target)||document.body,t.rootMargin=t.offset?`${t.offset}px 0px -30%`:t.rootMargin,"string"==typeof t.threshold&&(t.threshold=t.threshold.split(",").map((t=>Number.parseFloat(t)))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(ue.off(this._config.target,ms),ue.on(this._config.target,ms,bs,(t=>{const e=this._observableSections.get(t.target.hash);if(e){t.preventDefault();const i=this._rootElement||window,n=e.offsetTop-this._element.offsetTop;if(i.scrollTo)return void i.scrollTo({top:n,behavior:"smooth"});i.scrollTop=n}})))}_getNewObserver(){const t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver((t=>this._observerCallback(t)),t)}_observerCallback(t){const e=t=>this._targetLinks.get(`#${t.target.id}`),i=t=>{this._previousScrollData.visibleEntryTop=t.target.offsetTop,this._process(e(t))},n=(this._rootElement||document.documentElement).scrollTop,s=n>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=n;for(const o of t){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(e(o));continue}const t=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(s&&t){if(i(o),!n)return}else s||t||i(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=ye.find(bs,this._config.target);for(const e of t){if(!e.hash||Bt(e))continue;const t=ye.findOne(decodeURI(e.hash),this._element);Ht(t)&&(this._targetLinks.set(decodeURI(e.hash),e),this._observableSections.set(e.hash,t))}}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(_s),this._activateParents(t),ue.trigger(this._element,ps,{relatedTarget:t}))}_activateParents(t){if(t.classList.contains("dropdown-item"))ye.findOne(".dropdown-toggle",t.closest(".dropdown")).classList.add(_s);else for(const e of ye.parents(t,".nav, .list-group"))for(const t of ye.prev(e,ys))t.classList.add(_s)}_clearActiveClass(t){t.classList.remove(_s);const e=ye.find(`${bs}.${_s}`,t);for(const t of e)t.classList.remove(_s)}static jQueryInterface(t){return this.each((function(){const e=As.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}ue.on(window,gs,(()=>{for(const t of ye.find('[data-bs-spy="scroll"]'))As.getOrCreateInstance(t)})),Kt(As);const Ts=".bs.tab",Cs=`hide${Ts}`,Os=`hidden${Ts}`,xs=`show${Ts}`,ks=`shown${Ts}`,Ls=`click${Ts}`,Ss=`keydown${Ts}`,Ds=`load${Ts}`,$s="ArrowLeft",Is="ArrowRight",Ns="ArrowUp",Ps="ArrowDown",Ms="Home",js="End",Fs="active",Hs="fade",Bs="show",Ws=".dropdown-toggle",zs=`:not(${Ws})`,Rs='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',qs=`.nav-link${zs}, .list-group-item${zs}, [role="tab"]${zs}, ${Rs}`,Vs=`.${Fs}[data-bs-toggle="tab"], .${Fs}[data-bs-toggle="pill"], .${Fs}[data-bs-toggle="list"]`;class Ys extends be{constructor(t){super(t),this._parent=this._element.closest('.list-group, .nav, [role="tablist"]'),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),ue.on(this._element,Ss,(t=>this._keydown(t))))}static get NAME(){return"tab"}show(){const t=this._element;if(this._elemIsActive(t))return;const e=this._getActiveElem(),i=e?ue.trigger(e,Cs,{relatedTarget:t}):null;ue.trigger(t,xs,{relatedTarget:e}).defaultPrevented||i&&i.defaultPrevented||(this._deactivate(e,t),this._activate(t,e))}_activate(t,e){t&&(t.classList.add(Fs),this._activate(ye.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),ue.trigger(t,ks,{relatedTarget:e})):t.classList.add(Bs)}),t,t.classList.contains(Hs)))}_deactivate(t,e){t&&(t.classList.remove(Fs),t.blur(),this._deactivate(ye.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),ue.trigger(t,Os,{relatedTarget:e})):t.classList.remove(Bs)}),t,t.classList.contains(Hs)))}_keydown(t){if(![$s,Is,Ns,Ps,Ms,js].includes(t.key))return;t.stopPropagation(),t.preventDefault();const e=this._getChildren().filter((t=>!Bt(t)));let i;if([Ms,js].includes(t.key))i=e[t.key===Ms?0:e.length-1];else{const n=[Is,Ps].includes(t.key);i=Ut(e,t.target,n,!0)}i&&(i.focus({preventScroll:!0}),Ys.getOrCreateInstance(i).show())}_getChildren(){return ye.find(qs,this._parent)}_getActiveElem(){return this._getChildren().find((t=>this._elemIsActive(t)))||null}_setInitialAttributes(t,e){this._setAttributeIfNotExists(t,"role","tablist");for(const t of e)this._setInitialAttributesOnChild(t)}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);const e=this._elemIsActive(t),i=this._getOuterElement(t);t.setAttribute("aria-selected",e),i!==t&&this._setAttributeIfNotExists(i,"role","presentation"),e||t.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(t,"role","tab"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){const e=ye.getElementFromSelector(t);e&&(this._setAttributeIfNotExists(e,"role","tabpanel"),t.id&&this._setAttributeIfNotExists(e,"aria-labelledby",`${t.id}`))}_toggleDropDown(t,e){const i=this._getOuterElement(t);if(!i.classList.contains("dropdown"))return;const n=(t,n)=>{const s=ye.findOne(t,i);s&&s.classList.toggle(n,e)};n(Ws,Fs),n(".dropdown-menu",Bs),i.setAttribute("aria-expanded",e)}_setAttributeIfNotExists(t,e,i){t.hasAttribute(e)||t.setAttribute(e,i)}_elemIsActive(t){return t.classList.contains(Fs)}_getInnerElement(t){return t.matches(qs)?t:ye.findOne(qs,t)}_getOuterElement(t){return t.closest(".nav-item, .list-group-item")||t}static jQueryInterface(t){return this.each((function(){const e=Ys.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}ue.on(document,Ls,Rs,(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),Bt(this)||Ys.getOrCreateInstance(this).show()})),ue.on(window,Ds,(()=>{for(const t of ye.find(Vs))Ys.getOrCreateInstance(t)})),Kt(Ys);const Ks=".bs.toast",Qs=`mouseover${Ks}`,Xs=`mouseout${Ks}`,Us=`focusin${Ks}`,Gs=`focusout${Ks}`,Js=`hide${Ks}`,Zs=`hidden${Ks}`,to=`show${Ks}`,eo=`shown${Ks}`,io="hide",no="show",so="showing",oo={animation:"boolean",autohide:"boolean",delay:"number"},ro={animation:!0,autohide:!0,delay:5e3};class ao extends be{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return ro}static get DefaultType(){return oo}static get NAME(){return"toast"}show(){ue.trigger(this._element,to).defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove(io),Rt(this._element),this._element.classList.add(no,so),this._queueCallback((()=>{this._element.classList.remove(so),ue.trigger(this._element,eo),this._maybeScheduleHide()}),this._element,this._config.animation))}hide(){this.isShown()&&(ue.trigger(this._element,Js).defaultPrevented||(this._element.classList.add(so),this._queueCallback((()=>{this._element.classList.add(io),this._element.classList.remove(so,no),ue.trigger(this._element,Zs)}),this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(no),super.dispose()}isShown(){return this._element.classList.contains(no)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=>{this.hide()}),this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){ue.on(this._element,Qs,(t=>this._onInteraction(t,!0))),ue.on(this._element,Xs,(t=>this._onInteraction(t,!1))),ue.on(this._element,Us,(t=>this._onInteraction(t,!0))),ue.on(this._element,Gs,(t=>this._onInteraction(t,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=ao.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}function lo(t){"loading"!=document.readyState?t():document.addEventListener("DOMContentLoaded",t)}we(ao),Kt(ao),lo((function(){[].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]')).map((function(t){return new cs(t,{delay:{show:500,hide:100}})}))})),lo((function(){document.getElementById("pst-back-to-top").addEventListener("click",(function(){document.body.scrollTop=0,document.documentElement.scrollTop=0}))})),lo((function(){var t=document.getElementById("pst-back-to-top"),e=document.getElementsByClassName("bd-header")[0].getBoundingClientRect();window.addEventListener("scroll",(function(){this.oldScroll>this.scrollY&&this.scrollY>e.bottom?t.style.display="block":t.style.display="none",this.oldScroll=this.scrollY}))}))})(); +//# sourceMappingURL=bootstrap.js.map \ No newline at end of file diff --git a/spec/_static/scripts/bootstrap.js.LICENSE.txt b/spec/_static/scripts/bootstrap.js.LICENSE.txt new file mode 100644 index 0000000000..10f979d078 --- /dev/null +++ b/spec/_static/scripts/bootstrap.js.LICENSE.txt @@ -0,0 +1,5 @@ +/*! + * Bootstrap v5.3.2 (https://getbootstrap.com/) + * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ diff --git a/spec/_static/scripts/bootstrap.js.map b/spec/_static/scripts/bootstrap.js.map new file mode 100644 index 0000000000..e5bc15752d --- /dev/null +++ b/spec/_static/scripts/bootstrap.js.map @@ -0,0 +1 @@ +{"version":3,"file":"scripts/bootstrap.js","mappings":"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","sources":["webpack://pydata_sphinx_theme/webpack/bootstrap","webpack://pydata_sphinx_theme/webpack/runtime/define property getters","webpack://pydata_sphinx_theme/webpack/runtime/hasOwnProperty shorthand","webpack://pydata_sphinx_theme/webpack/runtime/make namespace object","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/enums.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getWindow.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/applyStyles.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/getBasePlacement.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/math.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/userAgent.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/contains.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/within.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/expandToHashMap.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/arrow.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/getVariation.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/computeStyles.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/eventListeners.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/rectToClientRect.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/computeOffsets.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/detectOverflow.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/flip.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/hide.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/offset.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/getAltAxis.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/orderModifiers.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/createPopper.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/debounce.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/mergeByName.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/popper.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/popper-lite.js","webpack://pydata_sphinx_theme/./node_modules/bootstrap/dist/js/bootstrap.esm.js","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/scripts/mixin.js","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/scripts/bootstrap.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };","/*!\n * Bootstrap v5.3.2 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\nimport * as Popper from '@popperjs/core';\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst elementMap = new Map();\nconst Data = {\n set(element, key, instance) {\n if (!elementMap.has(element)) {\n elementMap.set(element, new Map());\n }\n const instanceMap = elementMap.get(element);\n\n // make it clear we only want one instance per element\n // can be removed later when multiple key/instances are fine to be used\n if (!instanceMap.has(key) && instanceMap.size !== 0) {\n // eslint-disable-next-line no-console\n console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`);\n return;\n }\n instanceMap.set(key, instance);\n },\n get(element, key) {\n if (elementMap.has(element)) {\n return elementMap.get(element).get(key) || null;\n }\n return null;\n },\n remove(element, key) {\n if (!elementMap.has(element)) {\n return;\n }\n const instanceMap = elementMap.get(element);\n instanceMap.delete(key);\n\n // free up element references if there are no instances left for an element\n if (instanceMap.size === 0) {\n elementMap.delete(element);\n }\n }\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1000000;\nconst MILLISECONDS_MULTIPLIER = 1000;\nconst TRANSITION_END = 'transitionend';\n\n/**\n * Properly escape IDs selectors to handle weird IDs\n * @param {string} selector\n * @returns {string}\n */\nconst parseSelector = selector => {\n if (selector && window.CSS && window.CSS.escape) {\n // document.querySelector needs escaping to handle IDs (html5+) containing for instance /\n selector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`);\n }\n return selector;\n};\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = object => {\n if (object === null || object === undefined) {\n return `${object}`;\n }\n return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase();\n};\n\n/**\n * Public Util API\n */\n\nconst getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID);\n } while (document.getElementById(prefix));\n return prefix;\n};\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0;\n }\n\n // Get transition-duration of the element\n let {\n transitionDuration,\n transitionDelay\n } = window.getComputedStyle(element);\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay);\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n};\nconst triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END));\n};\nconst isElement = object => {\n if (!object || typeof object !== 'object') {\n return false;\n }\n if (typeof object.jquery !== 'undefined') {\n object = object[0];\n }\n return typeof object.nodeType !== 'undefined';\n};\nconst getElement = object => {\n // it's a jQuery object or a node element\n if (isElement(object)) {\n return object.jquery ? object[0] : object;\n }\n if (typeof object === 'string' && object.length > 0) {\n return document.querySelector(parseSelector(object));\n }\n return null;\n};\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false;\n }\n const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible';\n // Handle `details` element as its content may falsie appear visible when it is closed\n const closedDetails = element.closest('details:not([open])');\n if (!closedDetails) {\n return elementIsVisible;\n }\n if (closedDetails !== element) {\n const summary = element.closest('summary');\n if (summary && summary.parentNode !== closedDetails) {\n return false;\n }\n if (summary === null) {\n return false;\n }\n }\n return elementIsVisible;\n};\nconst isDisabled = element => {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return true;\n }\n if (element.classList.contains('disabled')) {\n return true;\n }\n if (typeof element.disabled !== 'undefined') {\n return element.disabled;\n }\n return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';\n};\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null;\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode();\n return root instanceof ShadowRoot ? root : null;\n }\n if (element instanceof ShadowRoot) {\n return element;\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null;\n }\n return findShadowRoot(element.parentNode);\n};\nconst noop = () => {};\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n element.offsetHeight; // eslint-disable-line no-unused-expressions\n};\n\nconst getjQuery = () => {\n if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return window.jQuery;\n }\n return null;\n};\nconst DOMContentLoadedCallbacks = [];\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n for (const callback of DOMContentLoadedCallbacks) {\n callback();\n }\n });\n }\n DOMContentLoadedCallbacks.push(callback);\n } else {\n callback();\n }\n};\nconst isRTL = () => document.documentElement.dir === 'rtl';\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery();\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME;\n const JQUERY_NO_CONFLICT = $.fn[name];\n $.fn[name] = plugin.jQueryInterface;\n $.fn[name].Constructor = plugin;\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT;\n return plugin.jQueryInterface;\n };\n }\n });\n};\nconst execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {\n return typeof possibleCallback === 'function' ? possibleCallback(...args) : defaultValue;\n};\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback);\n return;\n }\n const durationPadding = 5;\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;\n let called = false;\n const handler = ({\n target\n }) => {\n if (target !== transitionElement) {\n return;\n }\n called = true;\n transitionElement.removeEventListener(TRANSITION_END, handler);\n execute(callback);\n };\n transitionElement.addEventListener(TRANSITION_END, handler);\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement);\n }\n }, emulatedDuration);\n};\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n const listLength = list.length;\n let index = list.indexOf(activeElement);\n\n // if the element does not exist in the list return an element\n // depending on the direction and if cycle is allowed\n if (index === -1) {\n return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0];\n }\n index += shouldGetNext ? 1 : -1;\n if (isCycleAllowed) {\n index = (index + listLength) % listLength;\n }\n return list[Math.max(0, Math.min(index, listLength - 1))];\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/;\nconst stripNameRegex = /\\..*/;\nconst stripUidRegex = /::\\d+$/;\nconst eventRegistry = {}; // Events storage\nlet uidEvent = 1;\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n};\nconst nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']);\n\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++;\n}\nfunction getElementEvents(element) {\n const uid = makeEventUid(element);\n element.uidEvent = uid;\n eventRegistry[uid] = eventRegistry[uid] || {};\n return eventRegistry[uid];\n}\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n hydrateObj(event, {\n delegateTarget: element\n });\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn);\n }\n return fn.apply(element, [event]);\n };\n}\nfunction bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector);\n for (let {\n target\n } = event; target && target !== this; target = target.parentNode) {\n for (const domElement of domElements) {\n if (domElement !== target) {\n continue;\n }\n hydrateObj(event, {\n delegateTarget: target\n });\n if (handler.oneOff) {\n EventHandler.off(element, event.type, selector, fn);\n }\n return fn.apply(target, [event]);\n }\n }\n };\n}\nfunction findHandler(events, callable, delegationSelector = null) {\n return Object.values(events).find(event => event.callable === callable && event.delegationSelector === delegationSelector);\n}\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n const isDelegated = typeof handler === 'string';\n // TODO: tooltip passes `false` instead of selector, so we need to check\n const callable = isDelegated ? delegationFunction : handler || delegationFunction;\n let typeEvent = getTypeEvent(originalTypeEvent);\n if (!nativeEvents.has(typeEvent)) {\n typeEvent = originalTypeEvent;\n }\n return [isDelegated, callable, typeEvent];\n}\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return;\n }\n let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);\n\n // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n if (originalTypeEvent in customEvents) {\n const wrapFunction = fn => {\n return function (event) {\n if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) {\n return fn.call(this, event);\n }\n };\n };\n callable = wrapFunction(callable);\n }\n const events = getElementEvents(element);\n const handlers = events[typeEvent] || (events[typeEvent] = {});\n const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);\n if (previousFunction) {\n previousFunction.oneOff = previousFunction.oneOff && oneOff;\n return;\n }\n const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''));\n const fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable);\n fn.delegationSelector = isDelegated ? handler : null;\n fn.callable = callable;\n fn.oneOff = oneOff;\n fn.uidEvent = uid;\n handlers[uid] = fn;\n element.addEventListener(typeEvent, fn, isDelegated);\n}\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector);\n if (!fn) {\n return;\n }\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));\n delete events[typeEvent][fn.uidEvent];\n}\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {};\n for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n if (handlerKey.includes(namespace)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n }\n }\n}\nfunction getTypeEvent(event) {\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n event = event.replace(stripNameRegex, '');\n return customEvents[event] || event;\n}\nconst EventHandler = {\n on(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, false);\n },\n one(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, true);\n },\n off(element, originalTypeEvent, handler, delegationFunction) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return;\n }\n const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);\n const inNamespace = typeEvent !== originalTypeEvent;\n const events = getElementEvents(element);\n const storeElementEvent = events[typeEvent] || {};\n const isNamespace = originalTypeEvent.startsWith('.');\n if (typeof callable !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!Object.keys(storeElementEvent).length) {\n return;\n }\n removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null);\n return;\n }\n if (isNamespace) {\n for (const elementEvent of Object.keys(events)) {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));\n }\n }\n for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {\n const handlerKey = keyHandlers.replace(stripUidRegex, '');\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n }\n }\n },\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null;\n }\n const $ = getjQuery();\n const typeEvent = getTypeEvent(event);\n const inNamespace = event !== typeEvent;\n let jQueryEvent = null;\n let bubbles = true;\n let nativeDispatch = true;\n let defaultPrevented = false;\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args);\n $(element).trigger(jQueryEvent);\n bubbles = !jQueryEvent.isPropagationStopped();\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();\n defaultPrevented = jQueryEvent.isDefaultPrevented();\n }\n const evt = hydrateObj(new Event(event, {\n bubbles,\n cancelable: true\n }), args);\n if (defaultPrevented) {\n evt.preventDefault();\n }\n if (nativeDispatch) {\n element.dispatchEvent(evt);\n }\n if (evt.defaultPrevented && jQueryEvent) {\n jQueryEvent.preventDefault();\n }\n return evt;\n }\n};\nfunction hydrateObj(obj, meta = {}) {\n for (const [key, value] of Object.entries(meta)) {\n try {\n obj[key] = value;\n } catch (_unused) {\n Object.defineProperty(obj, key, {\n configurable: true,\n get() {\n return value;\n }\n });\n }\n }\n return obj;\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(value) {\n if (value === 'true') {\n return true;\n }\n if (value === 'false') {\n return false;\n }\n if (value === Number(value).toString()) {\n return Number(value);\n }\n if (value === '' || value === 'null') {\n return null;\n }\n if (typeof value !== 'string') {\n return value;\n }\n try {\n return JSON.parse(decodeURIComponent(value));\n } catch (_unused) {\n return value;\n }\n}\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`);\n}\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value);\n },\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`);\n },\n getDataAttributes(element) {\n if (!element) {\n return {};\n }\n const attributes = {};\n const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'));\n for (const key of bsKeys) {\n let pureKey = key.replace(/^bs/, '');\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);\n attributes[pureKey] = normalizeData(element.dataset[key]);\n }\n return attributes;\n },\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`));\n }\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Class definition\n */\n\nclass Config {\n // Getters\n static get Default() {\n return {};\n }\n static get DefaultType() {\n return {};\n }\n static get NAME() {\n throw new Error('You have to implement the static method \"NAME\", for each component!');\n }\n _getConfig(config) {\n config = this._mergeConfigObj(config);\n config = this._configAfterMerge(config);\n this._typeCheckConfig(config);\n return config;\n }\n _configAfterMerge(config) {\n return config;\n }\n _mergeConfigObj(config, element) {\n const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {}; // try to parse\n\n return {\n ...this.constructor.Default,\n ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n ...(typeof config === 'object' ? config : {})\n };\n }\n _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n for (const [property, expectedTypes] of Object.entries(configTypes)) {\n const value = config[property];\n const valueType = isElement(value) ? 'element' : toType(value);\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`);\n }\n }\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst VERSION = '5.3.2';\n\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n constructor(element, config) {\n super();\n element = getElement(element);\n if (!element) {\n return;\n }\n this._element = element;\n this._config = this._getConfig(config);\n Data.set(this._element, this.constructor.DATA_KEY, this);\n }\n\n // Public\n dispose() {\n Data.remove(this._element, this.constructor.DATA_KEY);\n EventHandler.off(this._element, this.constructor.EVENT_KEY);\n for (const propertyName of Object.getOwnPropertyNames(this)) {\n this[propertyName] = null;\n }\n }\n _queueCallback(callback, element, isAnimated = true) {\n executeAfterTransition(callback, element, isAnimated);\n }\n _getConfig(config) {\n config = this._mergeConfigObj(config, this._element);\n config = this._configAfterMerge(config);\n this._typeCheckConfig(config);\n return config;\n }\n\n // Static\n static getInstance(element) {\n return Data.get(getElement(element), this.DATA_KEY);\n }\n static getOrCreateInstance(element, config = {}) {\n return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null);\n }\n static get VERSION() {\n return VERSION;\n }\n static get DATA_KEY() {\n return `bs.${this.NAME}`;\n }\n static get EVENT_KEY() {\n return `.${this.DATA_KEY}`;\n }\n static eventName(name) {\n return `${name}${this.EVENT_KEY}`;\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-bs-target');\n if (!selector || selector === '#') {\n let hrefAttribute = element.getAttribute('href');\n\n // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n if (!hrefAttribute || !hrefAttribute.includes('#') && !hrefAttribute.startsWith('.')) {\n return null;\n }\n\n // Just in case some CMS puts out a full URL with the anchor appended\n if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n hrefAttribute = `#${hrefAttribute.split('#')[1]}`;\n }\n selector = hrefAttribute && hrefAttribute !== '#' ? parseSelector(hrefAttribute.trim()) : null;\n }\n return selector;\n};\nconst SelectorEngine = {\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector));\n },\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector);\n },\n children(element, selector) {\n return [].concat(...element.children).filter(child => child.matches(selector));\n },\n parents(element, selector) {\n const parents = [];\n let ancestor = element.parentNode.closest(selector);\n while (ancestor) {\n parents.push(ancestor);\n ancestor = ancestor.parentNode.closest(selector);\n }\n return parents;\n },\n prev(element, selector) {\n let previous = element.previousElementSibling;\n while (previous) {\n if (previous.matches(selector)) {\n return [previous];\n }\n previous = previous.previousElementSibling;\n }\n return [];\n },\n // TODO: this is now unused; remove later along with prev()\n next(element, selector) {\n let next = element.nextElementSibling;\n while (next) {\n if (next.matches(selector)) {\n return [next];\n }\n next = next.nextElementSibling;\n }\n return [];\n },\n focusableChildren(element) {\n const focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable=\"true\"]'].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',');\n return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el));\n },\n getSelectorFromElement(element) {\n const selector = getSelector(element);\n if (selector) {\n return SelectorEngine.findOne(selector) ? selector : null;\n }\n return null;\n },\n getElementFromSelector(element) {\n const selector = getSelector(element);\n return selector ? SelectorEngine.findOne(selector) : null;\n },\n getMultipleElementsFromSelector(element) {\n const selector = getSelector(element);\n return selector ? SelectorEngine.find(selector) : [];\n }\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n const clickEvent = `click.dismiss${component.EVENT_KEY}`;\n const name = component.NAME;\n EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n if (isDisabled(this)) {\n return;\n }\n const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`);\n const instance = component.getOrCreateInstance(target);\n\n // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n instance[method]();\n });\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$f = 'alert';\nconst DATA_KEY$a = 'bs.alert';\nconst EVENT_KEY$b = `.${DATA_KEY$a}`;\nconst EVENT_CLOSE = `close${EVENT_KEY$b}`;\nconst EVENT_CLOSED = `closed${EVENT_KEY$b}`;\nconst CLASS_NAME_FADE$5 = 'fade';\nconst CLASS_NAME_SHOW$8 = 'show';\n\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME$f;\n }\n\n // Public\n close() {\n const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE);\n if (closeEvent.defaultPrevented) {\n return;\n }\n this._element.classList.remove(CLASS_NAME_SHOW$8);\n const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5);\n this._queueCallback(() => this._destroyElement(), this._element, isAnimated);\n }\n\n // Private\n _destroyElement() {\n this._element.remove();\n EventHandler.trigger(this._element, EVENT_CLOSED);\n this.dispose();\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Alert.getOrCreateInstance(this);\n if (typeof config !== 'string') {\n return;\n }\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config](this);\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Alert, 'close');\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Alert);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$e = 'button';\nconst DATA_KEY$9 = 'bs.button';\nconst EVENT_KEY$a = `.${DATA_KEY$9}`;\nconst DATA_API_KEY$6 = '.data-api';\nconst CLASS_NAME_ACTIVE$3 = 'active';\nconst SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle=\"button\"]';\nconst EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$a}${DATA_API_KEY$6}`;\n\n/**\n * Class definition\n */\n\nclass Button extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME$e;\n }\n\n // Public\n toggle() {\n // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE$3));\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Button.getOrCreateInstance(this);\n if (config === 'toggle') {\n data[config]();\n }\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, event => {\n event.preventDefault();\n const button = event.target.closest(SELECTOR_DATA_TOGGLE$5);\n const data = Button.getOrCreateInstance(button);\n data.toggle();\n});\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Button);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$d = 'swipe';\nconst EVENT_KEY$9 = '.bs.swipe';\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY$9}`;\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$9}`;\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY$9}`;\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$9}`;\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY$9}`;\nconst POINTER_TYPE_TOUCH = 'touch';\nconst POINTER_TYPE_PEN = 'pen';\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event';\nconst SWIPE_THRESHOLD = 40;\nconst Default$c = {\n endCallback: null,\n leftCallback: null,\n rightCallback: null\n};\nconst DefaultType$c = {\n endCallback: '(function|null)',\n leftCallback: '(function|null)',\n rightCallback: '(function|null)'\n};\n\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n constructor(element, config) {\n super();\n this._element = element;\n if (!element || !Swipe.isSupported()) {\n return;\n }\n this._config = this._getConfig(config);\n this._deltaX = 0;\n this._supportPointerEvents = Boolean(window.PointerEvent);\n this._initEvents();\n }\n\n // Getters\n static get Default() {\n return Default$c;\n }\n static get DefaultType() {\n return DefaultType$c;\n }\n static get NAME() {\n return NAME$d;\n }\n\n // Public\n dispose() {\n EventHandler.off(this._element, EVENT_KEY$9);\n }\n\n // Private\n _start(event) {\n if (!this._supportPointerEvents) {\n this._deltaX = event.touches[0].clientX;\n return;\n }\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX;\n }\n }\n _end(event) {\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX - this._deltaX;\n }\n this._handleSwipe();\n execute(this._config.endCallback);\n }\n _move(event) {\n this._deltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this._deltaX;\n }\n _handleSwipe() {\n const absDeltaX = Math.abs(this._deltaX);\n if (absDeltaX <= SWIPE_THRESHOLD) {\n return;\n }\n const direction = absDeltaX / this._deltaX;\n this._deltaX = 0;\n if (!direction) {\n return;\n }\n execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback);\n }\n _initEvents() {\n if (this._supportPointerEvents) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event));\n EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event));\n this._element.classList.add(CLASS_NAME_POINTER_EVENT);\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event));\n EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event));\n EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event));\n }\n }\n _eventIsPointerPenTouch(event) {\n return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH);\n }\n\n // Static\n static isSupported() {\n return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$c = 'carousel';\nconst DATA_KEY$8 = 'bs.carousel';\nconst EVENT_KEY$8 = `.${DATA_KEY$8}`;\nconst DATA_API_KEY$5 = '.data-api';\nconst ARROW_LEFT_KEY$1 = 'ArrowLeft';\nconst ARROW_RIGHT_KEY$1 = 'ArrowRight';\nconst TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\nconst ORDER_NEXT = 'next';\nconst ORDER_PREV = 'prev';\nconst DIRECTION_LEFT = 'left';\nconst DIRECTION_RIGHT = 'right';\nconst EVENT_SLIDE = `slide${EVENT_KEY$8}`;\nconst EVENT_SLID = `slid${EVENT_KEY$8}`;\nconst EVENT_KEYDOWN$1 = `keydown${EVENT_KEY$8}`;\nconst EVENT_MOUSEENTER$1 = `mouseenter${EVENT_KEY$8}`;\nconst EVENT_MOUSELEAVE$1 = `mouseleave${EVENT_KEY$8}`;\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY$8}`;\nconst EVENT_LOAD_DATA_API$3 = `load${EVENT_KEY$8}${DATA_API_KEY$5}`;\nconst EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$8}${DATA_API_KEY$5}`;\nconst CLASS_NAME_CAROUSEL = 'carousel';\nconst CLASS_NAME_ACTIVE$2 = 'active';\nconst CLASS_NAME_SLIDE = 'slide';\nconst CLASS_NAME_END = 'carousel-item-end';\nconst CLASS_NAME_START = 'carousel-item-start';\nconst CLASS_NAME_NEXT = 'carousel-item-next';\nconst CLASS_NAME_PREV = 'carousel-item-prev';\nconst SELECTOR_ACTIVE = '.active';\nconst SELECTOR_ITEM = '.carousel-item';\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM;\nconst SELECTOR_ITEM_IMG = '.carousel-item img';\nconst SELECTOR_INDICATORS = '.carousel-indicators';\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]';\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]';\nconst KEY_TO_DIRECTION = {\n [ARROW_LEFT_KEY$1]: DIRECTION_RIGHT,\n [ARROW_RIGHT_KEY$1]: DIRECTION_LEFT\n};\nconst Default$b = {\n interval: 5000,\n keyboard: true,\n pause: 'hover',\n ride: false,\n touch: true,\n wrap: true\n};\nconst DefaultType$b = {\n interval: '(number|boolean)',\n // TODO:v6 remove boolean support\n keyboard: 'boolean',\n pause: '(string|boolean)',\n ride: '(boolean|string)',\n touch: 'boolean',\n wrap: 'boolean'\n};\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._interval = null;\n this._activeElement = null;\n this._isSliding = false;\n this.touchTimeout = null;\n this._swipeHelper = null;\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element);\n this._addEventListeners();\n if (this._config.ride === CLASS_NAME_CAROUSEL) {\n this.cycle();\n }\n }\n\n // Getters\n static get Default() {\n return Default$b;\n }\n static get DefaultType() {\n return DefaultType$b;\n }\n static get NAME() {\n return NAME$c;\n }\n\n // Public\n next() {\n this._slide(ORDER_NEXT);\n }\n nextWhenVisible() {\n // FIXME TODO use `document.visibilityState`\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && isVisible(this._element)) {\n this.next();\n }\n }\n prev() {\n this._slide(ORDER_PREV);\n }\n pause() {\n if (this._isSliding) {\n triggerTransitionEnd(this._element);\n }\n this._clearInterval();\n }\n cycle() {\n this._clearInterval();\n this._updateInterval();\n this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval);\n }\n _maybeEnableCycle() {\n if (!this._config.ride) {\n return;\n }\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.cycle());\n return;\n }\n this.cycle();\n }\n to(index) {\n const items = this._getItems();\n if (index > items.length - 1 || index < 0) {\n return;\n }\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.to(index));\n return;\n }\n const activeIndex = this._getItemIndex(this._getActive());\n if (activeIndex === index) {\n return;\n }\n const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV;\n this._slide(order, items[index]);\n }\n dispose() {\n if (this._swipeHelper) {\n this._swipeHelper.dispose();\n }\n super.dispose();\n }\n\n // Private\n _configAfterMerge(config) {\n config.defaultInterval = config.interval;\n return config;\n }\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler.on(this._element, EVENT_KEYDOWN$1, event => this._keydown(event));\n }\n if (this._config.pause === 'hover') {\n EventHandler.on(this._element, EVENT_MOUSEENTER$1, () => this.pause());\n EventHandler.on(this._element, EVENT_MOUSELEAVE$1, () => this._maybeEnableCycle());\n }\n if (this._config.touch && Swipe.isSupported()) {\n this._addTouchEventListeners();\n }\n }\n _addTouchEventListeners() {\n for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {\n EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault());\n }\n const endCallBack = () => {\n if (this._config.pause !== 'hover') {\n return;\n }\n\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause();\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout);\n }\n this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval);\n };\n const swipeConfig = {\n leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),\n rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),\n endCallback: endCallBack\n };\n this._swipeHelper = new Swipe(this._element, swipeConfig);\n }\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return;\n }\n const direction = KEY_TO_DIRECTION[event.key];\n if (direction) {\n event.preventDefault();\n this._slide(this._directionToOrder(direction));\n }\n }\n _getItemIndex(element) {\n return this._getItems().indexOf(element);\n }\n _setActiveIndicatorElement(index) {\n if (!this._indicatorsElement) {\n return;\n }\n const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement);\n activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2);\n activeIndicator.removeAttribute('aria-current');\n const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement);\n if (newActiveIndicator) {\n newActiveIndicator.classList.add(CLASS_NAME_ACTIVE$2);\n newActiveIndicator.setAttribute('aria-current', 'true');\n }\n }\n _updateInterval() {\n const element = this._activeElement || this._getActive();\n if (!element) {\n return;\n }\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10);\n this._config.interval = elementInterval || this._config.defaultInterval;\n }\n _slide(order, element = null) {\n if (this._isSliding) {\n return;\n }\n const activeElement = this._getActive();\n const isNext = order === ORDER_NEXT;\n const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap);\n if (nextElement === activeElement) {\n return;\n }\n const nextElementIndex = this._getItemIndex(nextElement);\n const triggerEvent = eventName => {\n return EventHandler.trigger(this._element, eventName, {\n relatedTarget: nextElement,\n direction: this._orderToDirection(order),\n from: this._getItemIndex(activeElement),\n to: nextElementIndex\n });\n };\n const slideEvent = triggerEvent(EVENT_SLIDE);\n if (slideEvent.defaultPrevented) {\n return;\n }\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n // TODO: change tests that use empty divs to avoid this check\n return;\n }\n const isCycling = Boolean(this._interval);\n this.pause();\n this._isSliding = true;\n this._setActiveIndicatorElement(nextElementIndex);\n this._activeElement = nextElement;\n const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END;\n const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV;\n nextElement.classList.add(orderClassName);\n reflow(nextElement);\n activeElement.classList.add(directionalClassName);\n nextElement.classList.add(directionalClassName);\n const completeCallBack = () => {\n nextElement.classList.remove(directionalClassName, orderClassName);\n nextElement.classList.add(CLASS_NAME_ACTIVE$2);\n activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName);\n this._isSliding = false;\n triggerEvent(EVENT_SLID);\n };\n this._queueCallback(completeCallBack, activeElement, this._isAnimated());\n if (isCycling) {\n this.cycle();\n }\n }\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_SLIDE);\n }\n _getActive() {\n return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);\n }\n _getItems() {\n return SelectorEngine.find(SELECTOR_ITEM, this._element);\n }\n _clearInterval() {\n if (this._interval) {\n clearInterval(this._interval);\n this._interval = null;\n }\n }\n _directionToOrder(direction) {\n if (isRTL()) {\n return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT;\n }\n return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV;\n }\n _orderToDirection(order) {\n if (isRTL()) {\n return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT;\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Carousel.getOrCreateInstance(this, config);\n if (typeof config === 'number') {\n data.to(config);\n return;\n }\n if (typeof config === 'string') {\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n }\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, function (event) {\n const target = SelectorEngine.getElementFromSelector(this);\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return;\n }\n event.preventDefault();\n const carousel = Carousel.getOrCreateInstance(target);\n const slideIndex = this.getAttribute('data-bs-slide-to');\n if (slideIndex) {\n carousel.to(slideIndex);\n carousel._maybeEnableCycle();\n return;\n }\n if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n carousel.next();\n carousel._maybeEnableCycle();\n return;\n }\n carousel.prev();\n carousel._maybeEnableCycle();\n});\nEventHandler.on(window, EVENT_LOAD_DATA_API$3, () => {\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);\n for (const carousel of carousels) {\n Carousel.getOrCreateInstance(carousel);\n }\n});\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Carousel);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$b = 'collapse';\nconst DATA_KEY$7 = 'bs.collapse';\nconst EVENT_KEY$7 = `.${DATA_KEY$7}`;\nconst DATA_API_KEY$4 = '.data-api';\nconst EVENT_SHOW$6 = `show${EVENT_KEY$7}`;\nconst EVENT_SHOWN$6 = `shown${EVENT_KEY$7}`;\nconst EVENT_HIDE$6 = `hide${EVENT_KEY$7}`;\nconst EVENT_HIDDEN$6 = `hidden${EVENT_KEY$7}`;\nconst EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$7}${DATA_API_KEY$4}`;\nconst CLASS_NAME_SHOW$7 = 'show';\nconst CLASS_NAME_COLLAPSE = 'collapse';\nconst CLASS_NAME_COLLAPSING = 'collapsing';\nconst CLASS_NAME_COLLAPSED = 'collapsed';\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`;\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal';\nconst WIDTH = 'width';\nconst HEIGHT = 'height';\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';\nconst SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle=\"collapse\"]';\nconst Default$a = {\n parent: null,\n toggle: true\n};\nconst DefaultType$a = {\n parent: '(null|element)',\n toggle: 'boolean'\n};\n\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._isTransitioning = false;\n this._triggerArray = [];\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4);\n for (const elem of toggleList) {\n const selector = SelectorEngine.getSelectorFromElement(elem);\n const filterElement = SelectorEngine.find(selector).filter(foundElement => foundElement === this._element);\n if (selector !== null && filterElement.length) {\n this._triggerArray.push(elem);\n }\n }\n this._initializeChildren();\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._triggerArray, this._isShown());\n }\n if (this._config.toggle) {\n this.toggle();\n }\n }\n\n // Getters\n static get Default() {\n return Default$a;\n }\n static get DefaultType() {\n return DefaultType$a;\n }\n static get NAME() {\n return NAME$b;\n }\n\n // Public\n toggle() {\n if (this._isShown()) {\n this.hide();\n } else {\n this.show();\n }\n }\n show() {\n if (this._isTransitioning || this._isShown()) {\n return;\n }\n let activeChildren = [];\n\n // find active children\n if (this._config.parent) {\n activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(element => element !== this._element).map(element => Collapse.getOrCreateInstance(element, {\n toggle: false\n }));\n }\n if (activeChildren.length && activeChildren[0]._isTransitioning) {\n return;\n }\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$6);\n if (startEvent.defaultPrevented) {\n return;\n }\n for (const activeInstance of activeChildren) {\n activeInstance.hide();\n }\n const dimension = this._getDimension();\n this._element.classList.remove(CLASS_NAME_COLLAPSE);\n this._element.classList.add(CLASS_NAME_COLLAPSING);\n this._element.style[dimension] = 0;\n this._addAriaAndCollapsedClass(this._triggerArray, true);\n this._isTransitioning = true;\n const complete = () => {\n this._isTransitioning = false;\n this._element.classList.remove(CLASS_NAME_COLLAPSING);\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);\n this._element.style[dimension] = '';\n EventHandler.trigger(this._element, EVENT_SHOWN$6);\n };\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n const scrollSize = `scroll${capitalizedDimension}`;\n this._queueCallback(complete, this._element, true);\n this._element.style[dimension] = `${this._element[scrollSize]}px`;\n }\n hide() {\n if (this._isTransitioning || !this._isShown()) {\n return;\n }\n const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$6);\n if (startEvent.defaultPrevented) {\n return;\n }\n const dimension = this._getDimension();\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;\n reflow(this._element);\n this._element.classList.add(CLASS_NAME_COLLAPSING);\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);\n for (const trigger of this._triggerArray) {\n const element = SelectorEngine.getElementFromSelector(trigger);\n if (element && !this._isShown(element)) {\n this._addAriaAndCollapsedClass([trigger], false);\n }\n }\n this._isTransitioning = true;\n const complete = () => {\n this._isTransitioning = false;\n this._element.classList.remove(CLASS_NAME_COLLAPSING);\n this._element.classList.add(CLASS_NAME_COLLAPSE);\n EventHandler.trigger(this._element, EVENT_HIDDEN$6);\n };\n this._element.style[dimension] = '';\n this._queueCallback(complete, this._element, true);\n }\n _isShown(element = this._element) {\n return element.classList.contains(CLASS_NAME_SHOW$7);\n }\n\n // Private\n _configAfterMerge(config) {\n config.toggle = Boolean(config.toggle); // Coerce string values\n config.parent = getElement(config.parent);\n return config;\n }\n _getDimension() {\n return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT;\n }\n _initializeChildren() {\n if (!this._config.parent) {\n return;\n }\n const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$4);\n for (const element of children) {\n const selected = SelectorEngine.getElementFromSelector(element);\n if (selected) {\n this._addAriaAndCollapsedClass([element], this._isShown(selected));\n }\n }\n }\n _getFirstLevelChildren(selector) {\n const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent);\n // remove children if greater depth\n return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element));\n }\n _addAriaAndCollapsedClass(triggerArray, isOpen) {\n if (!triggerArray.length) {\n return;\n }\n for (const element of triggerArray) {\n element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen);\n element.setAttribute('aria-expanded', isOpen);\n }\n }\n\n // Static\n static jQueryInterface(config) {\n const _config = {};\n if (typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false;\n }\n return this.each(function () {\n const data = Collapse.getOrCreateInstance(this, _config);\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n }\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function (event) {\n // preventDefault only for elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') {\n event.preventDefault();\n }\n for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {\n Collapse.getOrCreateInstance(element, {\n toggle: false\n }).toggle();\n }\n});\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Collapse);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$a = 'dropdown';\nconst DATA_KEY$6 = 'bs.dropdown';\nconst EVENT_KEY$6 = `.${DATA_KEY$6}`;\nconst DATA_API_KEY$3 = '.data-api';\nconst ESCAPE_KEY$2 = 'Escape';\nconst TAB_KEY$1 = 'Tab';\nconst ARROW_UP_KEY$1 = 'ArrowUp';\nconst ARROW_DOWN_KEY$1 = 'ArrowDown';\nconst RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button\n\nconst EVENT_HIDE$5 = `hide${EVENT_KEY$6}`;\nconst EVENT_HIDDEN$5 = `hidden${EVENT_KEY$6}`;\nconst EVENT_SHOW$5 = `show${EVENT_KEY$6}`;\nconst EVENT_SHOWN$5 = `shown${EVENT_KEY$6}`;\nconst EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst CLASS_NAME_SHOW$6 = 'show';\nconst CLASS_NAME_DROPUP = 'dropup';\nconst CLASS_NAME_DROPEND = 'dropend';\nconst CLASS_NAME_DROPSTART = 'dropstart';\nconst CLASS_NAME_DROPUP_CENTER = 'dropup-center';\nconst CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center';\nconst SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle=\"dropdown\"]:not(.disabled):not(:disabled)';\nconst SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE$3}.${CLASS_NAME_SHOW$6}`;\nconst SELECTOR_MENU = '.dropdown-menu';\nconst SELECTOR_NAVBAR = '.navbar';\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav';\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start';\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end';\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start';\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end';\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start';\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start';\nconst PLACEMENT_TOPCENTER = 'top';\nconst PLACEMENT_BOTTOMCENTER = 'bottom';\nconst Default$9 = {\n autoClose: true,\n boundary: 'clippingParents',\n display: 'dynamic',\n offset: [0, 2],\n popperConfig: null,\n reference: 'toggle'\n};\nconst DefaultType$9 = {\n autoClose: '(boolean|string)',\n boundary: '(string|element)',\n display: 'string',\n offset: '(array|string|function)',\n popperConfig: '(null|object|function)',\n reference: '(string|element|object)'\n};\n\n/**\n * Class definition\n */\n\nclass Dropdown extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._popper = null;\n this._parent = this._element.parentNode; // dropdown wrapper\n // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] || SelectorEngine.prev(this._element, SELECTOR_MENU)[0] || SelectorEngine.findOne(SELECTOR_MENU, this._parent);\n this._inNavbar = this._detectNavbar();\n }\n\n // Getters\n static get Default() {\n return Default$9;\n }\n static get DefaultType() {\n return DefaultType$9;\n }\n static get NAME() {\n return NAME$a;\n }\n\n // Public\n toggle() {\n return this._isShown() ? this.hide() : this.show();\n }\n show() {\n if (isDisabled(this._element) || this._isShown()) {\n return;\n }\n const relatedTarget = {\n relatedTarget: this._element\n };\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$5, relatedTarget);\n if (showEvent.defaultPrevented) {\n return;\n }\n this._createPopper();\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop);\n }\n }\n this._element.focus();\n this._element.setAttribute('aria-expanded', true);\n this._menu.classList.add(CLASS_NAME_SHOW$6);\n this._element.classList.add(CLASS_NAME_SHOW$6);\n EventHandler.trigger(this._element, EVENT_SHOWN$5, relatedTarget);\n }\n hide() {\n if (isDisabled(this._element) || !this._isShown()) {\n return;\n }\n const relatedTarget = {\n relatedTarget: this._element\n };\n this._completeHide(relatedTarget);\n }\n dispose() {\n if (this._popper) {\n this._popper.destroy();\n }\n super.dispose();\n }\n update() {\n this._inNavbar = this._detectNavbar();\n if (this._popper) {\n this._popper.update();\n }\n }\n\n // Private\n _completeHide(relatedTarget) {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$5, relatedTarget);\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop);\n }\n }\n if (this._popper) {\n this._popper.destroy();\n }\n this._menu.classList.remove(CLASS_NAME_SHOW$6);\n this._element.classList.remove(CLASS_NAME_SHOW$6);\n this._element.setAttribute('aria-expanded', 'false');\n Manipulator.removeDataAttribute(this._menu, 'popper');\n EventHandler.trigger(this._element, EVENT_HIDDEN$5, relatedTarget);\n }\n _getConfig(config) {\n config = super._getConfig(config);\n if (typeof config.reference === 'object' && !isElement(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') {\n // Popper virtual elements require a getBoundingClientRect method\n throw new TypeError(`${NAME$a.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`);\n }\n return config;\n }\n _createPopper() {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)');\n }\n let referenceElement = this._element;\n if (this._config.reference === 'parent') {\n referenceElement = this._parent;\n } else if (isElement(this._config.reference)) {\n referenceElement = getElement(this._config.reference);\n } else if (typeof this._config.reference === 'object') {\n referenceElement = this._config.reference;\n }\n const popperConfig = this._getPopperConfig();\n this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig);\n }\n _isShown() {\n return this._menu.classList.contains(CLASS_NAME_SHOW$6);\n }\n _getPlacement() {\n const parentDropdown = this._parent;\n if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n return PLACEMENT_RIGHT;\n }\n if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n return PLACEMENT_LEFT;\n }\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {\n return PLACEMENT_TOPCENTER;\n }\n if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) {\n return PLACEMENT_BOTTOMCENTER;\n }\n\n // We need to trim the value because custom properties can also include spaces\n const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end';\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP;\n }\n return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM;\n }\n _detectNavbar() {\n return this._element.closest(SELECTOR_NAVBAR) !== null;\n }\n _getOffset() {\n const {\n offset\n } = this._config;\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10));\n }\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element);\n }\n return offset;\n }\n _getPopperConfig() {\n const defaultBsPopperConfig = {\n placement: this._getPlacement(),\n modifiers: [{\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n }, {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }]\n };\n\n // Disable Popper if we have a static display or Dropdown is in Navbar\n if (this._inNavbar || this._config.display === 'static') {\n Manipulator.setDataAttribute(this._menu, 'popper', 'static'); // TODO: v6 remove\n defaultBsPopperConfig.modifiers = [{\n name: 'applyStyles',\n enabled: false\n }];\n }\n return {\n ...defaultBsPopperConfig,\n ...execute(this._config.popperConfig, [defaultBsPopperConfig])\n };\n }\n _selectMenuItem({\n key,\n target\n }) {\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => isVisible(element));\n if (!items.length) {\n return;\n }\n\n // if target isn't included in items (e.g. when expanding the dropdown)\n // allow cycling to get the last item in case key equals ARROW_UP_KEY\n getNextActiveElement(items, target, key === ARROW_DOWN_KEY$1, !items.includes(target)).focus();\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Dropdown.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n });\n }\n static clearMenus(event) {\n if (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY$1) {\n return;\n }\n const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN);\n for (const toggle of openToggles) {\n const context = Dropdown.getInstance(toggle);\n if (!context || context._config.autoClose === false) {\n continue;\n }\n const composedPath = event.composedPath();\n const isMenuTarget = composedPath.includes(context._menu);\n if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) {\n continue;\n }\n\n // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n continue;\n }\n const relatedTarget = {\n relatedTarget: context._element\n };\n if (event.type === 'click') {\n relatedTarget.clickEvent = event;\n }\n context._completeHide(relatedTarget);\n }\n }\n static dataApiKeydownHandler(event) {\n // If not an UP | DOWN | ESCAPE key => not a dropdown command\n // If input/textarea && if key is other than ESCAPE => not a dropdown command\n\n const isInput = /input|textarea/i.test(event.target.tagName);\n const isEscapeEvent = event.key === ESCAPE_KEY$2;\n const isUpOrDownEvent = [ARROW_UP_KEY$1, ARROW_DOWN_KEY$1].includes(event.key);\n if (!isUpOrDownEvent && !isEscapeEvent) {\n return;\n }\n if (isInput && !isEscapeEvent) {\n return;\n }\n event.preventDefault();\n\n // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.next(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$3, event.delegateTarget.parentNode);\n const instance = Dropdown.getOrCreateInstance(getToggleButton);\n if (isUpOrDownEvent) {\n event.stopPropagation();\n instance.show();\n instance._selectMenuItem(event);\n return;\n }\n if (instance._isShown()) {\n // else is escape and we check if it is shown\n event.stopPropagation();\n instance.hide();\n getToggleButton.focus();\n }\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler);\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);\nEventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus);\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);\nEventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) {\n event.preventDefault();\n Dropdown.getOrCreateInstance(this).toggle();\n});\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Dropdown);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$9 = 'backdrop';\nconst CLASS_NAME_FADE$4 = 'fade';\nconst CLASS_NAME_SHOW$5 = 'show';\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME$9}`;\nconst Default$8 = {\n className: 'modal-backdrop',\n clickCallback: null,\n isAnimated: false,\n isVisible: true,\n // if false, we use the backdrop helper without adding any element to the dom\n rootElement: 'body' // give the choice to place backdrop under different elements\n};\n\nconst DefaultType$8 = {\n className: 'string',\n clickCallback: '(function|null)',\n isAnimated: 'boolean',\n isVisible: 'boolean',\n rootElement: '(element|string)'\n};\n\n/**\n * Class definition\n */\n\nclass Backdrop extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n this._isAppended = false;\n this._element = null;\n }\n\n // Getters\n static get Default() {\n return Default$8;\n }\n static get DefaultType() {\n return DefaultType$8;\n }\n static get NAME() {\n return NAME$9;\n }\n\n // Public\n show(callback) {\n if (!this._config.isVisible) {\n execute(callback);\n return;\n }\n this._append();\n const element = this._getElement();\n if (this._config.isAnimated) {\n reflow(element);\n }\n element.classList.add(CLASS_NAME_SHOW$5);\n this._emulateAnimation(() => {\n execute(callback);\n });\n }\n hide(callback) {\n if (!this._config.isVisible) {\n execute(callback);\n return;\n }\n this._getElement().classList.remove(CLASS_NAME_SHOW$5);\n this._emulateAnimation(() => {\n this.dispose();\n execute(callback);\n });\n }\n dispose() {\n if (!this._isAppended) {\n return;\n }\n EventHandler.off(this._element, EVENT_MOUSEDOWN);\n this._element.remove();\n this._isAppended = false;\n }\n\n // Private\n _getElement() {\n if (!this._element) {\n const backdrop = document.createElement('div');\n backdrop.className = this._config.className;\n if (this._config.isAnimated) {\n backdrop.classList.add(CLASS_NAME_FADE$4);\n }\n this._element = backdrop;\n }\n return this._element;\n }\n _configAfterMerge(config) {\n // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n config.rootElement = getElement(config.rootElement);\n return config;\n }\n _append() {\n if (this._isAppended) {\n return;\n }\n const element = this._getElement();\n this._config.rootElement.append(element);\n EventHandler.on(element, EVENT_MOUSEDOWN, () => {\n execute(this._config.clickCallback);\n });\n this._isAppended = true;\n }\n _emulateAnimation(callback) {\n executeAfterTransition(callback, this._getElement(), this._config.isAnimated);\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$8 = 'focustrap';\nconst DATA_KEY$5 = 'bs.focustrap';\nconst EVENT_KEY$5 = `.${DATA_KEY$5}`;\nconst EVENT_FOCUSIN$2 = `focusin${EVENT_KEY$5}`;\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$5}`;\nconst TAB_KEY = 'Tab';\nconst TAB_NAV_FORWARD = 'forward';\nconst TAB_NAV_BACKWARD = 'backward';\nconst Default$7 = {\n autofocus: true,\n trapElement: null // The element to trap focus inside of\n};\n\nconst DefaultType$7 = {\n autofocus: 'boolean',\n trapElement: 'element'\n};\n\n/**\n * Class definition\n */\n\nclass FocusTrap extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n this._isActive = false;\n this._lastTabNavDirection = null;\n }\n\n // Getters\n static get Default() {\n return Default$7;\n }\n static get DefaultType() {\n return DefaultType$7;\n }\n static get NAME() {\n return NAME$8;\n }\n\n // Public\n activate() {\n if (this._isActive) {\n return;\n }\n if (this._config.autofocus) {\n this._config.trapElement.focus();\n }\n EventHandler.off(document, EVENT_KEY$5); // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN$2, event => this._handleFocusin(event));\n EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event));\n this._isActive = true;\n }\n deactivate() {\n if (!this._isActive) {\n return;\n }\n this._isActive = false;\n EventHandler.off(document, EVENT_KEY$5);\n }\n\n // Private\n _handleFocusin(event) {\n const {\n trapElement\n } = this._config;\n if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {\n return;\n }\n const elements = SelectorEngine.focusableChildren(trapElement);\n if (elements.length === 0) {\n trapElement.focus();\n } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n elements[elements.length - 1].focus();\n } else {\n elements[0].focus();\n }\n }\n _handleKeydown(event) {\n if (event.key !== TAB_KEY) {\n return;\n }\n this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD;\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';\nconst SELECTOR_STICKY_CONTENT = '.sticky-top';\nconst PROPERTY_PADDING = 'padding-right';\nconst PROPERTY_MARGIN = 'margin-right';\n\n/**\n * Class definition\n */\n\nclass ScrollBarHelper {\n constructor() {\n this._element = document.body;\n }\n\n // Public\n getWidth() {\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n const documentWidth = document.documentElement.clientWidth;\n return Math.abs(window.innerWidth - documentWidth);\n }\n hide() {\n const width = this.getWidth();\n this._disableOverFlow();\n // give padding to element to balance the hidden scrollbar width\n this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width);\n // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width);\n this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width);\n }\n reset() {\n this._resetElementAttributes(this._element, 'overflow');\n this._resetElementAttributes(this._element, PROPERTY_PADDING);\n this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING);\n this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN);\n }\n isOverflowing() {\n return this.getWidth() > 0;\n }\n\n // Private\n _disableOverFlow() {\n this._saveInitialAttribute(this._element, 'overflow');\n this._element.style.overflow = 'hidden';\n }\n _setElementAttributes(selector, styleProperty, callback) {\n const scrollbarWidth = this.getWidth();\n const manipulationCallBack = element => {\n if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n return;\n }\n this._saveInitialAttribute(element, styleProperty);\n const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty);\n element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`);\n };\n this._applyManipulationCallback(selector, manipulationCallBack);\n }\n _saveInitialAttribute(element, styleProperty) {\n const actualValue = element.style.getPropertyValue(styleProperty);\n if (actualValue) {\n Manipulator.setDataAttribute(element, styleProperty, actualValue);\n }\n }\n _resetElementAttributes(selector, styleProperty) {\n const manipulationCallBack = element => {\n const value = Manipulator.getDataAttribute(element, styleProperty);\n // We only want to remove the property if the value is `null`; the value can also be zero\n if (value === null) {\n element.style.removeProperty(styleProperty);\n return;\n }\n Manipulator.removeDataAttribute(element, styleProperty);\n element.style.setProperty(styleProperty, value);\n };\n this._applyManipulationCallback(selector, manipulationCallBack);\n }\n _applyManipulationCallback(selector, callBack) {\n if (isElement(selector)) {\n callBack(selector);\n return;\n }\n for (const sel of SelectorEngine.find(selector, this._element)) {\n callBack(sel);\n }\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$7 = 'modal';\nconst DATA_KEY$4 = 'bs.modal';\nconst EVENT_KEY$4 = `.${DATA_KEY$4}`;\nconst DATA_API_KEY$2 = '.data-api';\nconst ESCAPE_KEY$1 = 'Escape';\nconst EVENT_HIDE$4 = `hide${EVENT_KEY$4}`;\nconst EVENT_HIDE_PREVENTED$1 = `hidePrevented${EVENT_KEY$4}`;\nconst EVENT_HIDDEN$4 = `hidden${EVENT_KEY$4}`;\nconst EVENT_SHOW$4 = `show${EVENT_KEY$4}`;\nconst EVENT_SHOWN$4 = `shown${EVENT_KEY$4}`;\nconst EVENT_RESIZE$1 = `resize${EVENT_KEY$4}`;\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$4}`;\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$4}`;\nconst EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${EVENT_KEY$4}`;\nconst EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$4}${DATA_API_KEY$2}`;\nconst CLASS_NAME_OPEN = 'modal-open';\nconst CLASS_NAME_FADE$3 = 'fade';\nconst CLASS_NAME_SHOW$4 = 'show';\nconst CLASS_NAME_STATIC = 'modal-static';\nconst OPEN_SELECTOR$1 = '.modal.show';\nconst SELECTOR_DIALOG = '.modal-dialog';\nconst SELECTOR_MODAL_BODY = '.modal-body';\nconst SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle=\"modal\"]';\nconst Default$6 = {\n backdrop: true,\n focus: true,\n keyboard: true\n};\nconst DefaultType$6 = {\n backdrop: '(boolean|string)',\n focus: 'boolean',\n keyboard: 'boolean'\n};\n\n/**\n * Class definition\n */\n\nclass Modal extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element);\n this._backdrop = this._initializeBackDrop();\n this._focustrap = this._initializeFocusTrap();\n this._isShown = false;\n this._isTransitioning = false;\n this._scrollBar = new ScrollBarHelper();\n this._addEventListeners();\n }\n\n // Getters\n static get Default() {\n return Default$6;\n }\n static get DefaultType() {\n return DefaultType$6;\n }\n static get NAME() {\n return NAME$7;\n }\n\n // Public\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n }\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return;\n }\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, {\n relatedTarget\n });\n if (showEvent.defaultPrevented) {\n return;\n }\n this._isShown = true;\n this._isTransitioning = true;\n this._scrollBar.hide();\n document.body.classList.add(CLASS_NAME_OPEN);\n this._adjustDialog();\n this._backdrop.show(() => this._showElement(relatedTarget));\n }\n hide() {\n if (!this._isShown || this._isTransitioning) {\n return;\n }\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4);\n if (hideEvent.defaultPrevented) {\n return;\n }\n this._isShown = false;\n this._isTransitioning = true;\n this._focustrap.deactivate();\n this._element.classList.remove(CLASS_NAME_SHOW$4);\n this._queueCallback(() => this._hideModal(), this._element, this._isAnimated());\n }\n dispose() {\n EventHandler.off(window, EVENT_KEY$4);\n EventHandler.off(this._dialog, EVENT_KEY$4);\n this._backdrop.dispose();\n this._focustrap.deactivate();\n super.dispose();\n }\n handleUpdate() {\n this._adjustDialog();\n }\n\n // Private\n _initializeBackDrop() {\n return new Backdrop({\n isVisible: Boolean(this._config.backdrop),\n // 'static' option will be translated to true, and booleans will keep their value,\n isAnimated: this._isAnimated()\n });\n }\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n });\n }\n _showElement(relatedTarget) {\n // try to append dynamic modal\n if (!document.body.contains(this._element)) {\n document.body.append(this._element);\n }\n this._element.style.display = 'block';\n this._element.removeAttribute('aria-hidden');\n this._element.setAttribute('aria-modal', true);\n this._element.setAttribute('role', 'dialog');\n this._element.scrollTop = 0;\n const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog);\n if (modalBody) {\n modalBody.scrollTop = 0;\n }\n reflow(this._element);\n this._element.classList.add(CLASS_NAME_SHOW$4);\n const transitionComplete = () => {\n if (this._config.focus) {\n this._focustrap.activate();\n }\n this._isTransitioning = false;\n EventHandler.trigger(this._element, EVENT_SHOWN$4, {\n relatedTarget\n });\n };\n this._queueCallback(transitionComplete, this._dialog, this._isAnimated());\n }\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, event => {\n if (event.key !== ESCAPE_KEY$1) {\n return;\n }\n if (this._config.keyboard) {\n this.hide();\n return;\n }\n this._triggerBackdropTransition();\n });\n EventHandler.on(window, EVENT_RESIZE$1, () => {\n if (this._isShown && !this._isTransitioning) {\n this._adjustDialog();\n }\n });\n EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => {\n // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks\n EventHandler.one(this._element, EVENT_CLICK_DISMISS, event2 => {\n if (this._element !== event.target || this._element !== event2.target) {\n return;\n }\n if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition();\n return;\n }\n if (this._config.backdrop) {\n this.hide();\n }\n });\n });\n }\n _hideModal() {\n this._element.style.display = 'none';\n this._element.setAttribute('aria-hidden', true);\n this._element.removeAttribute('aria-modal');\n this._element.removeAttribute('role');\n this._isTransitioning = false;\n this._backdrop.hide(() => {\n document.body.classList.remove(CLASS_NAME_OPEN);\n this._resetAdjustments();\n this._scrollBar.reset();\n EventHandler.trigger(this._element, EVENT_HIDDEN$4);\n });\n }\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_FADE$3);\n }\n _triggerBackdropTransition() {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED$1);\n if (hideEvent.defaultPrevented) {\n return;\n }\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n const initialOverflowY = this._element.style.overflowY;\n // return if the following background transition hasn't yet completed\n if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) {\n return;\n }\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden';\n }\n this._element.classList.add(CLASS_NAME_STATIC);\n this._queueCallback(() => {\n this._element.classList.remove(CLASS_NAME_STATIC);\n this._queueCallback(() => {\n this._element.style.overflowY = initialOverflowY;\n }, this._dialog);\n }, this._dialog);\n this._element.focus();\n }\n\n /**\n * The following methods are used to handle overflowing modals\n */\n\n _adjustDialog() {\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n const scrollbarWidth = this._scrollBar.getWidth();\n const isBodyOverflowing = scrollbarWidth > 0;\n if (isBodyOverflowing && !isModalOverflowing) {\n const property = isRTL() ? 'paddingLeft' : 'paddingRight';\n this._element.style[property] = `${scrollbarWidth}px`;\n }\n if (!isBodyOverflowing && isModalOverflowing) {\n const property = isRTL() ? 'paddingRight' : 'paddingLeft';\n this._element.style[property] = `${scrollbarWidth}px`;\n }\n }\n _resetAdjustments() {\n this._element.style.paddingLeft = '';\n this._element.style.paddingRight = '';\n }\n\n // Static\n static jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n const data = Modal.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config](relatedTarget);\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) {\n const target = SelectorEngine.getElementFromSelector(this);\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n EventHandler.one(target, EVENT_SHOW$4, showEvent => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return;\n }\n EventHandler.one(target, EVENT_HIDDEN$4, () => {\n if (isVisible(this)) {\n this.focus();\n }\n });\n });\n\n // avoid conflict when clicking modal toggler while another one is open\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR$1);\n if (alreadyOpen) {\n Modal.getInstance(alreadyOpen).hide();\n }\n const data = Modal.getOrCreateInstance(target);\n data.toggle(this);\n});\nenableDismissTrigger(Modal);\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Modal);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$6 = 'offcanvas';\nconst DATA_KEY$3 = 'bs.offcanvas';\nconst EVENT_KEY$3 = `.${DATA_KEY$3}`;\nconst DATA_API_KEY$1 = '.data-api';\nconst EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$3}${DATA_API_KEY$1}`;\nconst ESCAPE_KEY = 'Escape';\nconst CLASS_NAME_SHOW$3 = 'show';\nconst CLASS_NAME_SHOWING$1 = 'showing';\nconst CLASS_NAME_HIDING = 'hiding';\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop';\nconst OPEN_SELECTOR = '.offcanvas.show';\nconst EVENT_SHOW$3 = `show${EVENT_KEY$3}`;\nconst EVENT_SHOWN$3 = `shown${EVENT_KEY$3}`;\nconst EVENT_HIDE$3 = `hide${EVENT_KEY$3}`;\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$3}`;\nconst EVENT_HIDDEN$3 = `hidden${EVENT_KEY$3}`;\nconst EVENT_RESIZE = `resize${EVENT_KEY$3}`;\nconst EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$3}${DATA_API_KEY$1}`;\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$3}`;\nconst SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle=\"offcanvas\"]';\nconst Default$5 = {\n backdrop: true,\n keyboard: true,\n scroll: false\n};\nconst DefaultType$5 = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n scroll: 'boolean'\n};\n\n/**\n * Class definition\n */\n\nclass Offcanvas extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._isShown = false;\n this._backdrop = this._initializeBackDrop();\n this._focustrap = this._initializeFocusTrap();\n this._addEventListeners();\n }\n\n // Getters\n static get Default() {\n return Default$5;\n }\n static get DefaultType() {\n return DefaultType$5;\n }\n static get NAME() {\n return NAME$6;\n }\n\n // Public\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n }\n show(relatedTarget) {\n if (this._isShown) {\n return;\n }\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, {\n relatedTarget\n });\n if (showEvent.defaultPrevented) {\n return;\n }\n this._isShown = true;\n this._backdrop.show();\n if (!this._config.scroll) {\n new ScrollBarHelper().hide();\n }\n this._element.setAttribute('aria-modal', true);\n this._element.setAttribute('role', 'dialog');\n this._element.classList.add(CLASS_NAME_SHOWING$1);\n const completeCallBack = () => {\n if (!this._config.scroll || this._config.backdrop) {\n this._focustrap.activate();\n }\n this._element.classList.add(CLASS_NAME_SHOW$3);\n this._element.classList.remove(CLASS_NAME_SHOWING$1);\n EventHandler.trigger(this._element, EVENT_SHOWN$3, {\n relatedTarget\n });\n };\n this._queueCallback(completeCallBack, this._element, true);\n }\n hide() {\n if (!this._isShown) {\n return;\n }\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3);\n if (hideEvent.defaultPrevented) {\n return;\n }\n this._focustrap.deactivate();\n this._element.blur();\n this._isShown = false;\n this._element.classList.add(CLASS_NAME_HIDING);\n this._backdrop.hide();\n const completeCallback = () => {\n this._element.classList.remove(CLASS_NAME_SHOW$3, CLASS_NAME_HIDING);\n this._element.removeAttribute('aria-modal');\n this._element.removeAttribute('role');\n if (!this._config.scroll) {\n new ScrollBarHelper().reset();\n }\n EventHandler.trigger(this._element, EVENT_HIDDEN$3);\n };\n this._queueCallback(completeCallback, this._element, true);\n }\n dispose() {\n this._backdrop.dispose();\n this._focustrap.deactivate();\n super.dispose();\n }\n\n // Private\n _initializeBackDrop() {\n const clickCallback = () => {\n if (this._config.backdrop === 'static') {\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);\n return;\n }\n this.hide();\n };\n\n // 'static' option will be translated to true, and booleans will keep their value\n const isVisible = Boolean(this._config.backdrop);\n return new Backdrop({\n className: CLASS_NAME_BACKDROP,\n isVisible,\n isAnimated: true,\n rootElement: this._element.parentNode,\n clickCallback: isVisible ? clickCallback : null\n });\n }\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n });\n }\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (event.key !== ESCAPE_KEY) {\n return;\n }\n if (this._config.keyboard) {\n this.hide();\n return;\n }\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);\n });\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Offcanvas.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config](this);\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) {\n const target = SelectorEngine.getElementFromSelector(this);\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n if (isDisabled(this)) {\n return;\n }\n EventHandler.one(target, EVENT_HIDDEN$3, () => {\n // focus on trigger when it is closed\n if (isVisible(this)) {\n this.focus();\n }\n });\n\n // avoid conflict when clicking a toggler of an offcanvas, while another is open\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR);\n if (alreadyOpen && alreadyOpen !== target) {\n Offcanvas.getInstance(alreadyOpen).hide();\n }\n const data = Offcanvas.getOrCreateInstance(target);\n data.toggle(this);\n});\nEventHandler.on(window, EVENT_LOAD_DATA_API$2, () => {\n for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {\n Offcanvas.getOrCreateInstance(selector).show();\n }\n});\nEventHandler.on(window, EVENT_RESIZE, () => {\n for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {\n if (getComputedStyle(element).position !== 'fixed') {\n Offcanvas.getOrCreateInstance(element).hide();\n }\n }\n});\nenableDismissTrigger(Offcanvas);\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Offcanvas);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n// js-docs-start allow-list\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\nconst DefaultAllowlist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n};\n// js-docs-end allow-list\n\nconst uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']);\n\n/**\n * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation\n * contexts.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38\n */\n// eslint-disable-next-line unicorn/better-regex\nconst SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i;\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n const attributeName = attribute.nodeName.toLowerCase();\n if (allowedAttributeList.includes(attributeName)) {\n if (uriAttributes.has(attributeName)) {\n return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue));\n }\n return true;\n }\n\n // Check if a regular expression validates the attribute.\n return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp).some(regex => regex.test(attributeName));\n};\nfunction sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n if (!unsafeHtml.length) {\n return unsafeHtml;\n }\n if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n return sanitizeFunction(unsafeHtml);\n }\n const domParser = new window.DOMParser();\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');\n const elements = [].concat(...createdDocument.body.querySelectorAll('*'));\n for (const element of elements) {\n const elementName = element.nodeName.toLowerCase();\n if (!Object.keys(allowList).includes(elementName)) {\n element.remove();\n continue;\n }\n const attributeList = [].concat(...element.attributes);\n const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || []);\n for (const attribute of attributeList) {\n if (!allowedAttribute(attribute, allowedAttributes)) {\n element.removeAttribute(attribute.nodeName);\n }\n }\n }\n return createdDocument.body.innerHTML;\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$5 = 'TemplateFactory';\nconst Default$4 = {\n allowList: DefaultAllowlist,\n content: {},\n // { selector : text , selector2 : text2 , }\n extraClass: '',\n html: false,\n sanitize: true,\n sanitizeFn: null,\n template: '
    '\n};\nconst DefaultType$4 = {\n allowList: 'object',\n content: 'object',\n extraClass: '(string|function)',\n html: 'boolean',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n template: 'string'\n};\nconst DefaultContentType = {\n entry: '(string|element|function|null)',\n selector: '(string|element)'\n};\n\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n }\n\n // Getters\n static get Default() {\n return Default$4;\n }\n static get DefaultType() {\n return DefaultType$4;\n }\n static get NAME() {\n return NAME$5;\n }\n\n // Public\n getContent() {\n return Object.values(this._config.content).map(config => this._resolvePossibleFunction(config)).filter(Boolean);\n }\n hasContent() {\n return this.getContent().length > 0;\n }\n changeContent(content) {\n this._checkContent(content);\n this._config.content = {\n ...this._config.content,\n ...content\n };\n return this;\n }\n toHtml() {\n const templateWrapper = document.createElement('div');\n templateWrapper.innerHTML = this._maybeSanitize(this._config.template);\n for (const [selector, text] of Object.entries(this._config.content)) {\n this._setContent(templateWrapper, text, selector);\n }\n const template = templateWrapper.children[0];\n const extraClass = this._resolvePossibleFunction(this._config.extraClass);\n if (extraClass) {\n template.classList.add(...extraClass.split(' '));\n }\n return template;\n }\n\n // Private\n _typeCheckConfig(config) {\n super._typeCheckConfig(config);\n this._checkContent(config.content);\n }\n _checkContent(arg) {\n for (const [selector, content] of Object.entries(arg)) {\n super._typeCheckConfig({\n selector,\n entry: content\n }, DefaultContentType);\n }\n }\n _setContent(template, content, selector) {\n const templateElement = SelectorEngine.findOne(selector, template);\n if (!templateElement) {\n return;\n }\n content = this._resolvePossibleFunction(content);\n if (!content) {\n templateElement.remove();\n return;\n }\n if (isElement(content)) {\n this._putElementInTemplate(getElement(content), templateElement);\n return;\n }\n if (this._config.html) {\n templateElement.innerHTML = this._maybeSanitize(content);\n return;\n }\n templateElement.textContent = content;\n }\n _maybeSanitize(arg) {\n return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg;\n }\n _resolvePossibleFunction(arg) {\n return execute(arg, [this]);\n }\n _putElementInTemplate(element, templateElement) {\n if (this._config.html) {\n templateElement.innerHTML = '';\n templateElement.append(element);\n return;\n }\n templateElement.textContent = element.textContent;\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$4 = 'tooltip';\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']);\nconst CLASS_NAME_FADE$2 = 'fade';\nconst CLASS_NAME_MODAL = 'modal';\nconst CLASS_NAME_SHOW$2 = 'show';\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner';\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`;\nconst EVENT_MODAL_HIDE = 'hide.bs.modal';\nconst TRIGGER_HOVER = 'hover';\nconst TRIGGER_FOCUS = 'focus';\nconst TRIGGER_CLICK = 'click';\nconst TRIGGER_MANUAL = 'manual';\nconst EVENT_HIDE$2 = 'hide';\nconst EVENT_HIDDEN$2 = 'hidden';\nconst EVENT_SHOW$2 = 'show';\nconst EVENT_SHOWN$2 = 'shown';\nconst EVENT_INSERTED = 'inserted';\nconst EVENT_CLICK$1 = 'click';\nconst EVENT_FOCUSIN$1 = 'focusin';\nconst EVENT_FOCUSOUT$1 = 'focusout';\nconst EVENT_MOUSEENTER = 'mouseenter';\nconst EVENT_MOUSELEAVE = 'mouseleave';\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: isRTL() ? 'left' : 'right',\n BOTTOM: 'bottom',\n LEFT: isRTL() ? 'right' : 'left'\n};\nconst Default$3 = {\n allowList: DefaultAllowlist,\n animation: true,\n boundary: 'clippingParents',\n container: false,\n customClass: '',\n delay: 0,\n fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n html: false,\n offset: [0, 6],\n placement: 'top',\n popperConfig: null,\n sanitize: true,\n sanitizeFn: null,\n selector: false,\n template: '
    ' + '
    ' + '
    ' + '
    ',\n title: '',\n trigger: 'hover focus'\n};\nconst DefaultType$3 = {\n allowList: 'object',\n animation: 'boolean',\n boundary: '(string|element)',\n container: '(string|element|boolean)',\n customClass: '(string|function)',\n delay: '(number|object)',\n fallbackPlacements: 'array',\n html: 'boolean',\n offset: '(array|string|function)',\n placement: '(string|function)',\n popperConfig: '(null|object|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n selector: '(string|boolean)',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string'\n};\n\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)');\n }\n super(element, config);\n\n // Private\n this._isEnabled = true;\n this._timeout = 0;\n this._isHovered = null;\n this._activeTrigger = {};\n this._popper = null;\n this._templateFactory = null;\n this._newContent = null;\n\n // Protected\n this.tip = null;\n this._setListeners();\n if (!this._config.selector) {\n this._fixTitle();\n }\n }\n\n // Getters\n static get Default() {\n return Default$3;\n }\n static get DefaultType() {\n return DefaultType$3;\n }\n static get NAME() {\n return NAME$4;\n }\n\n // Public\n enable() {\n this._isEnabled = true;\n }\n disable() {\n this._isEnabled = false;\n }\n toggleEnabled() {\n this._isEnabled = !this._isEnabled;\n }\n toggle() {\n if (!this._isEnabled) {\n return;\n }\n this._activeTrigger.click = !this._activeTrigger.click;\n if (this._isShown()) {\n this._leave();\n return;\n }\n this._enter();\n }\n dispose() {\n clearTimeout(this._timeout);\n EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);\n if (this._element.getAttribute('data-bs-original-title')) {\n this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'));\n }\n this._disposePopper();\n super.dispose();\n }\n show() {\n if (this._element.style.display === 'none') {\n throw new Error('Please use show on visible elements');\n }\n if (!(this._isWithContent() && this._isEnabled)) {\n return;\n }\n const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW$2));\n const shadowRoot = findShadowRoot(this._element);\n const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element);\n if (showEvent.defaultPrevented || !isInTheDom) {\n return;\n }\n\n // TODO: v6 remove this or make it optional\n this._disposePopper();\n const tip = this._getTipElement();\n this._element.setAttribute('aria-describedby', tip.getAttribute('id'));\n const {\n container\n } = this._config;\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.append(tip);\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED));\n }\n this._popper = this._createPopper(tip);\n tip.classList.add(CLASS_NAME_SHOW$2);\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop);\n }\n }\n const complete = () => {\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN$2));\n if (this._isHovered === false) {\n this._leave();\n }\n this._isHovered = false;\n };\n this._queueCallback(complete, this.tip, this._isAnimated());\n }\n hide() {\n if (!this._isShown()) {\n return;\n }\n const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE$2));\n if (hideEvent.defaultPrevented) {\n return;\n }\n const tip = this._getTipElement();\n tip.classList.remove(CLASS_NAME_SHOW$2);\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop);\n }\n }\n this._activeTrigger[TRIGGER_CLICK] = false;\n this._activeTrigger[TRIGGER_FOCUS] = false;\n this._activeTrigger[TRIGGER_HOVER] = false;\n this._isHovered = null; // it is a trick to support manual triggering\n\n const complete = () => {\n if (this._isWithActiveTrigger()) {\n return;\n }\n if (!this._isHovered) {\n this._disposePopper();\n }\n this._element.removeAttribute('aria-describedby');\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN$2));\n };\n this._queueCallback(complete, this.tip, this._isAnimated());\n }\n update() {\n if (this._popper) {\n this._popper.update();\n }\n }\n\n // Protected\n _isWithContent() {\n return Boolean(this._getTitle());\n }\n _getTipElement() {\n if (!this.tip) {\n this.tip = this._createTipElement(this._newContent || this._getContentForTemplate());\n }\n return this.tip;\n }\n _createTipElement(content) {\n const tip = this._getTemplateFactory(content).toHtml();\n\n // TODO: remove this check in v6\n if (!tip) {\n return null;\n }\n tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2);\n // TODO: v6 the following can be achieved with CSS only\n tip.classList.add(`bs-${this.constructor.NAME}-auto`);\n const tipId = getUID(this.constructor.NAME).toString();\n tip.setAttribute('id', tipId);\n if (this._isAnimated()) {\n tip.classList.add(CLASS_NAME_FADE$2);\n }\n return tip;\n }\n setContent(content) {\n this._newContent = content;\n if (this._isShown()) {\n this._disposePopper();\n this.show();\n }\n }\n _getTemplateFactory(content) {\n if (this._templateFactory) {\n this._templateFactory.changeContent(content);\n } else {\n this._templateFactory = new TemplateFactory({\n ...this._config,\n // the `content` var has to be after `this._config`\n // to override config.content in case of popover\n content,\n extraClass: this._resolvePossibleFunction(this._config.customClass)\n });\n }\n return this._templateFactory;\n }\n _getContentForTemplate() {\n return {\n [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n };\n }\n _getTitle() {\n return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title');\n }\n\n // Private\n _initializeOnDelegatedTarget(event) {\n return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig());\n }\n _isAnimated() {\n return this._config.animation || this.tip && this.tip.classList.contains(CLASS_NAME_FADE$2);\n }\n _isShown() {\n return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW$2);\n }\n _createPopper(tip) {\n const placement = execute(this._config.placement, [this, tip, this._element]);\n const attachment = AttachmentMap[placement.toUpperCase()];\n return Popper.createPopper(this._element, tip, this._getPopperConfig(attachment));\n }\n _getOffset() {\n const {\n offset\n } = this._config;\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10));\n }\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element);\n }\n return offset;\n }\n _resolvePossibleFunction(arg) {\n return execute(arg, [this._element]);\n }\n _getPopperConfig(attachment) {\n const defaultBsPopperConfig = {\n placement: attachment,\n modifiers: [{\n name: 'flip',\n options: {\n fallbackPlacements: this._config.fallbackPlacements\n }\n }, {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }, {\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n }, {\n name: 'arrow',\n options: {\n element: `.${this.constructor.NAME}-arrow`\n }\n }, {\n name: 'preSetPlacement',\n enabled: true,\n phase: 'beforeMain',\n fn: data => {\n // Pre-set Popper's placement attribute in order to read the arrow sizes properly.\n // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement\n this._getTipElement().setAttribute('data-popper-placement', data.state.placement);\n }\n }]\n };\n return {\n ...defaultBsPopperConfig,\n ...execute(this._config.popperConfig, [defaultBsPopperConfig])\n };\n }\n _setListeners() {\n const triggers = this._config.trigger.split(' ');\n for (const trigger of triggers) {\n if (trigger === 'click') {\n EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK$1), this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n context.toggle();\n });\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN$1);\n const eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT$1);\n EventHandler.on(this._element, eventIn, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;\n context._enter();\n });\n EventHandler.on(this._element, eventOut, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget);\n context._leave();\n });\n }\n }\n this._hideModalHandler = () => {\n if (this._element) {\n this.hide();\n }\n };\n EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);\n }\n _fixTitle() {\n const title = this._element.getAttribute('title');\n if (!title) {\n return;\n }\n if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n this._element.setAttribute('aria-label', title);\n }\n this._element.setAttribute('data-bs-original-title', title); // DO NOT USE IT. Is only for backwards compatibility\n this._element.removeAttribute('title');\n }\n _enter() {\n if (this._isShown() || this._isHovered) {\n this._isHovered = true;\n return;\n }\n this._isHovered = true;\n this._setTimeout(() => {\n if (this._isHovered) {\n this.show();\n }\n }, this._config.delay.show);\n }\n _leave() {\n if (this._isWithActiveTrigger()) {\n return;\n }\n this._isHovered = false;\n this._setTimeout(() => {\n if (!this._isHovered) {\n this.hide();\n }\n }, this._config.delay.hide);\n }\n _setTimeout(handler, timeout) {\n clearTimeout(this._timeout);\n this._timeout = setTimeout(handler, timeout);\n }\n _isWithActiveTrigger() {\n return Object.values(this._activeTrigger).includes(true);\n }\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element);\n for (const dataAttribute of Object.keys(dataAttributes)) {\n if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n delete dataAttributes[dataAttribute];\n }\n }\n config = {\n ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n };\n config = this._mergeConfigObj(config);\n config = this._configAfterMerge(config);\n this._typeCheckConfig(config);\n return config;\n }\n _configAfterMerge(config) {\n config.container = config.container === false ? document.body : getElement(config.container);\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n };\n }\n if (typeof config.title === 'number') {\n config.title = config.title.toString();\n }\n if (typeof config.content === 'number') {\n config.content = config.content.toString();\n }\n return config;\n }\n _getDelegateConfig() {\n const config = {};\n for (const [key, value] of Object.entries(this._config)) {\n if (this.constructor.Default[key] !== value) {\n config[key] = value;\n }\n }\n config.selector = false;\n config.trigger = 'manual';\n\n // In the future can be replaced with:\n // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n // `Object.fromEntries(keysWithDifferentValues)`\n return config;\n }\n _disposePopper() {\n if (this._popper) {\n this._popper.destroy();\n this._popper = null;\n }\n if (this.tip) {\n this.tip.remove();\n this.tip = null;\n }\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tooltip.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n });\n }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tooltip);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$3 = 'popover';\nconst SELECTOR_TITLE = '.popover-header';\nconst SELECTOR_CONTENT = '.popover-body';\nconst Default$2 = {\n ...Tooltip.Default,\n content: '',\n offset: [0, 8],\n placement: 'right',\n template: '
    ' + '
    ' + '

    ' + '
    ' + '
    ',\n trigger: 'click'\n};\nconst DefaultType$2 = {\n ...Tooltip.DefaultType,\n content: '(null|string|element|function)'\n};\n\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n // Getters\n static get Default() {\n return Default$2;\n }\n static get DefaultType() {\n return DefaultType$2;\n }\n static get NAME() {\n return NAME$3;\n }\n\n // Overrides\n _isWithContent() {\n return this._getTitle() || this._getContent();\n }\n\n // Private\n _getContentForTemplate() {\n return {\n [SELECTOR_TITLE]: this._getTitle(),\n [SELECTOR_CONTENT]: this._getContent()\n };\n }\n _getContent() {\n return this._resolvePossibleFunction(this._config.content);\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Popover.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n });\n }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Popover);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$2 = 'scrollspy';\nconst DATA_KEY$2 = 'bs.scrollspy';\nconst EVENT_KEY$2 = `.${DATA_KEY$2}`;\nconst DATA_API_KEY = '.data-api';\nconst EVENT_ACTIVATE = `activate${EVENT_KEY$2}`;\nconst EVENT_CLICK = `click${EVENT_KEY$2}`;\nconst EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$2}${DATA_API_KEY}`;\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';\nconst CLASS_NAME_ACTIVE$1 = 'active';\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]';\nconst SELECTOR_TARGET_LINKS = '[href]';\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';\nconst SELECTOR_NAV_LINKS = '.nav-link';\nconst SELECTOR_NAV_ITEMS = '.nav-item';\nconst SELECTOR_LIST_ITEMS = '.list-group-item';\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`;\nconst SELECTOR_DROPDOWN = '.dropdown';\nconst SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';\nconst Default$1 = {\n offset: null,\n // TODO: v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: '0px 0px -25%',\n smoothScroll: false,\n target: null,\n threshold: [0.1, 0.5, 1]\n};\nconst DefaultType$1 = {\n offset: '(number|null)',\n // TODO v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: 'string',\n smoothScroll: 'boolean',\n target: 'element',\n threshold: 'array'\n};\n\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n\n // this._element is the observablesContainer and config.target the menu links wrapper\n this._targetLinks = new Map();\n this._observableSections = new Map();\n this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element;\n this._activeTarget = null;\n this._observer = null;\n this._previousScrollData = {\n visibleEntryTop: 0,\n parentScrollTop: 0\n };\n this.refresh(); // initialize\n }\n\n // Getters\n static get Default() {\n return Default$1;\n }\n static get DefaultType() {\n return DefaultType$1;\n }\n static get NAME() {\n return NAME$2;\n }\n\n // Public\n refresh() {\n this._initializeTargetsAndObservables();\n this._maybeEnableSmoothScroll();\n if (this._observer) {\n this._observer.disconnect();\n } else {\n this._observer = this._getNewObserver();\n }\n for (const section of this._observableSections.values()) {\n this._observer.observe(section);\n }\n }\n dispose() {\n this._observer.disconnect();\n super.dispose();\n }\n\n // Private\n _configAfterMerge(config) {\n // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case\n config.target = getElement(config.target) || document.body;\n\n // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only\n config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin;\n if (typeof config.threshold === 'string') {\n config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value));\n }\n return config;\n }\n _maybeEnableSmoothScroll() {\n if (!this._config.smoothScroll) {\n return;\n }\n\n // unregister any previous listeners\n EventHandler.off(this._config.target, EVENT_CLICK);\n EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\n const observableSection = this._observableSections.get(event.target.hash);\n if (observableSection) {\n event.preventDefault();\n const root = this._rootElement || window;\n const height = observableSection.offsetTop - this._element.offsetTop;\n if (root.scrollTo) {\n root.scrollTo({\n top: height,\n behavior: 'smooth'\n });\n return;\n }\n\n // Chrome 60 doesn't support `scrollTo`\n root.scrollTop = height;\n }\n });\n }\n _getNewObserver() {\n const options = {\n root: this._rootElement,\n threshold: this._config.threshold,\n rootMargin: this._config.rootMargin\n };\n return new IntersectionObserver(entries => this._observerCallback(entries), options);\n }\n\n // The logic of selection\n _observerCallback(entries) {\n const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`);\n const activate = entry => {\n this._previousScrollData.visibleEntryTop = entry.target.offsetTop;\n this._process(targetElement(entry));\n };\n const parentScrollTop = (this._rootElement || document.documentElement).scrollTop;\n const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop;\n this._previousScrollData.parentScrollTop = parentScrollTop;\n for (const entry of entries) {\n if (!entry.isIntersecting) {\n this._activeTarget = null;\n this._clearActiveClass(targetElement(entry));\n continue;\n }\n const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop;\n // if we are scrolling down, pick the bigger offsetTop\n if (userScrollsDown && entryIsLowerThanPrevious) {\n activate(entry);\n // if parent isn't scrolled, let's keep the first visible item, breaking the iteration\n if (!parentScrollTop) {\n return;\n }\n continue;\n }\n\n // if we are scrolling up, pick the smallest offsetTop\n if (!userScrollsDown && !entryIsLowerThanPrevious) {\n activate(entry);\n }\n }\n }\n _initializeTargetsAndObservables() {\n this._targetLinks = new Map();\n this._observableSections = new Map();\n const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target);\n for (const anchor of targetLinks) {\n // ensure that the anchor has an id and is not disabled\n if (!anchor.hash || isDisabled(anchor)) {\n continue;\n }\n const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element);\n\n // ensure that the observableSection exists & is visible\n if (isVisible(observableSection)) {\n this._targetLinks.set(decodeURI(anchor.hash), anchor);\n this._observableSections.set(anchor.hash, observableSection);\n }\n }\n }\n _process(target) {\n if (this._activeTarget === target) {\n return;\n }\n this._clearActiveClass(this._config.target);\n this._activeTarget = target;\n target.classList.add(CLASS_NAME_ACTIVE$1);\n this._activateParents(target);\n EventHandler.trigger(this._element, EVENT_ACTIVATE, {\n relatedTarget: target\n });\n }\n _activateParents(target) {\n // Activate dropdown parents\n if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, target.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$1);\n return;\n }\n for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n // Set triggered links parents as active\n // With both