From cb7f7c45e9454c1d1417cc88e80b59f783c38cb5 Mon Sep 17 00:00:00 2001 From: github-actions Date: Tue, 31 Oct 2023 12:26:55 +0000 Subject: [PATCH] Update from github actions --- .github/dependabot.yml | 19 + .github/workflows/ci.yml | 117 + .nojekyll | 0 .pre-commit-config.yaml | 60 + ...ench-04fe0dce45e5423fb77be0830c5b5eb9.json | 181 ++ ...ench-0694e27085d246ff9463f96e1ab972c8.json | 182 ++ ...ench-0e6209137f3440d1923f6174facb829f.json | 229 ++ ...ench-2554436e40544ce181784e408b6d2a74.json | 150 ++ ...ench-279f39a47d984279ae309b37b1d59511.json | 150 ++ ...ench-2a37307f769d4320ada0a24ad8be81c8.json | 181 ++ ...ench-32edf2c5c3ae43c3ab2db83e3453a931.json | 133 ++ ...ench-342c61c100fd47b7b449efa19634f514.json | 150 ++ ...ench-42df376b35054289bab9f1abda053056.json | 133 ++ ...ench-503be65c52ee454ea31eb63b817e1398.json | 150 ++ ...ench-5e60d1cec3d94f06a046a15612515384.json | 102 + ...ench-6735bd59ad7243889436b5aeb3c798dd.json | 136 ++ ...ench-6b01622a99bb426a90ca47ea70dd1625.json | 150 ++ ...ench-7ac8df8beb12407ab7f1ca6a2e42d282.json | 69 + ...ench-7d1dd46f1cce4f5ab9452101169b9f36.json | 102 + ...ench-9a90aec6600e40799d71508e38491029.json | 133 ++ bench/devcloud/dr-bench-BlackScholes-CPU.csv | 8 + bench/devcloud/dr-bench-BlackScholes-CPU.png | Bin 0 -> 34114 bytes bench/devcloud/dr-bench-BlackScholes-GPU.csv | 10 + bench/devcloud/dr-bench-BlackScholes-GPU.png | Bin 0 -> 41454 bytes bench/devcloud/dr-bench-DotProduct-CPU.csv | 8 + bench/devcloud/dr-bench-DotProduct-CPU.png | Bin 0 -> 42944 bytes bench/devcloud/dr-bench-DotProduct-GPU.csv | 11 + bench/devcloud/dr-bench-DotProduct-GPU.png | Bin 0 -> 43521 bytes .../devcloud/dr-bench-Exclusive_Scan-CPU.csv | 6 + .../devcloud/dr-bench-Exclusive_Scan-CPU.png | Bin 0 -> 35461 bytes .../devcloud/dr-bench-Exclusive_Scan-GPU.csv | 10 + .../devcloud/dr-bench-Exclusive_Scan-GPU.png | Bin 0 -> 41416 bytes bench/devcloud/dr-bench-Gemm-GPU.csv | 3 + bench/devcloud/dr-bench-Gemm-GPU.png | Bin 0 -> 15555 bytes .../devcloud/dr-bench-Inclusive_Scan-CPU.csv | 8 + .../devcloud/dr-bench-Inclusive_Scan-CPU.png | Bin 0 -> 37648 bytes .../devcloud/dr-bench-Inclusive_Scan-GPU.csv | 11 + .../devcloud/dr-bench-Inclusive_Scan-GPU.png | Bin 0 -> 42731 bytes bench/devcloud/dr-bench-Reduce-CPU.csv | 8 + bench/devcloud/dr-bench-Reduce-CPU.png | Bin 0 -> 39937 bytes bench/devcloud/dr-bench-Reduce-GPU.csv | 11 + bench/devcloud/dr-bench-Reduce-GPU.png | Bin 0 -> 41219 bytes bench/devcloud/dr-bench-Sort-GPU.csv | 3 + bench/devcloud/dr-bench-Sort-GPU.png | Bin 0 -> 15327 bytes bench/devcloud/dr-bench-Stencil2D-CPU.csv | 6 + bench/devcloud/dr-bench-Stencil2D-CPU.png | Bin 0 -> 39012 bytes bench/devcloud/dr-bench-Stencil2D-GPU.csv | 10 + bench/devcloud/dr-bench-Stencil2D-GPU.png | Bin 0 -> 42365 bytes bench/devcloud/dr-bench-Stream_Add-CPU.csv | 7 + bench/devcloud/dr-bench-Stream_Add-CPU.png | Bin 0 -> 38866 bytes bench/devcloud/dr-bench-Stream_Add-GPU.csv | 9 + bench/devcloud/dr-bench-Stream_Add-GPU.png | Bin 0 -> 36692 bytes bench/devcloud/dr-bench-Stream_Copy-CPU.csv | 7 + bench/devcloud/dr-bench-Stream_Copy-CPU.png | Bin 0 -> 35206 bytes bench/devcloud/dr-bench-Stream_Copy-GPU.csv | 9 + bench/devcloud/dr-bench-Stream_Copy-GPU.png | Bin 0 -> 36138 bytes bench/devcloud/dr-bench-Stream_Scale-CPU.csv | 7 + bench/devcloud/dr-bench-Stream_Scale-CPU.png | Bin 0 -> 36430 bytes bench/devcloud/dr-bench-Stream_Scale-GPU.csv | 9 + bench/devcloud/dr-bench-Stream_Scale-GPU.png | Bin 0 -> 35585 bytes bench/devcloud/dr-bench-Stream_Triad-CPU.csv | 7 + bench/devcloud/dr-bench-Stream_Triad-CPU.png | Bin 0 -> 38617 bytes bench/devcloud/dr-bench-Stream_Triad-GPU.csv | 9 + bench/devcloud/dr-bench-Stream_Triad-GPU.png | Bin 0 -> 36078 bytes bench/devcloud/dr-bench-WaveEquation-CPU.csv | 5 + bench/devcloud/dr-bench-WaveEquation-CPU.png | Bin 0 -> 38214 bytes bench/devcloud/dr-bench-WaveEquation-GPU.csv | 9 + bench/devcloud/dr-bench-WaveEquation-GPU.png | Bin 0 -> 42682 bytes ...ench-a0de330cdbb2405898a19517f157683f.json | 133 ++ ...ench-a0f61b8d46d4408288161dc6f031e3cb.json | 86 + ...ench-aa9c65519380452b8a819124af744dd3.json | 133 ++ ...ench-af6173fa3d8146879d09a320f5fb8a14.json | 134 ++ ...ench-bd36b739c28a444d91b721c1eac6963f.json | 150 ++ ...ench-bd9fbcb56b9648fdbb1032d92fa3f3e4.json | 134 ++ ...ench-bfd8b40be0a2470e80f432592d9a4ae2.json | 150 ++ ...ench-c7f86d9c396d479aa6c8539822c9979b.json | 181 ++ ...ench-c9ddfd8b6aed468c9e61c75f33bfcf29.json | 135 ++ ...ench-e675abb200ce48128f68e676213e3a4e.json | 133 ++ ...ench-ede3197caf4e44748d8a1cebcf452d95.json | 69 + ...ench-ee42cdfe336f4e12ba92c7aea837a8fe.json | 150 ++ ...ench-ef0998e69afa4e97b08f824bfe6d205e.json | 133 ++ ...ench-fd94c8a93ba746e9afd4ff96b08a25d6.json | 229 ++ 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 + 1403 files changed, 91785 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-04fe0dce45e5423fb77be0830c5b5eb9.json create mode 100644 bench/devcloud/dr-bench-0694e27085d246ff9463f96e1ab972c8.json create mode 100644 bench/devcloud/dr-bench-0e6209137f3440d1923f6174facb829f.json create mode 100644 bench/devcloud/dr-bench-2554436e40544ce181784e408b6d2a74.json create mode 100644 bench/devcloud/dr-bench-279f39a47d984279ae309b37b1d59511.json create mode 100644 bench/devcloud/dr-bench-2a37307f769d4320ada0a24ad8be81c8.json create mode 100644 bench/devcloud/dr-bench-32edf2c5c3ae43c3ab2db83e3453a931.json create mode 100644 bench/devcloud/dr-bench-342c61c100fd47b7b449efa19634f514.json create mode 100644 bench/devcloud/dr-bench-42df376b35054289bab9f1abda053056.json create mode 100644 bench/devcloud/dr-bench-503be65c52ee454ea31eb63b817e1398.json create mode 100644 bench/devcloud/dr-bench-5e60d1cec3d94f06a046a15612515384.json create mode 100644 bench/devcloud/dr-bench-6735bd59ad7243889436b5aeb3c798dd.json create mode 100644 bench/devcloud/dr-bench-6b01622a99bb426a90ca47ea70dd1625.json create mode 100644 bench/devcloud/dr-bench-7ac8df8beb12407ab7f1ca6a2e42d282.json create mode 100644 bench/devcloud/dr-bench-7d1dd46f1cce4f5ab9452101169b9f36.json create mode 100644 bench/devcloud/dr-bench-9a90aec6600e40799d71508e38491029.json create mode 100644 bench/devcloud/dr-bench-BlackScholes-CPU.csv create mode 100644 bench/devcloud/dr-bench-BlackScholes-CPU.png create mode 100644 bench/devcloud/dr-bench-BlackScholes-GPU.csv create mode 100644 bench/devcloud/dr-bench-BlackScholes-GPU.png create mode 100644 bench/devcloud/dr-bench-DotProduct-CPU.csv create mode 100644 bench/devcloud/dr-bench-DotProduct-CPU.png create mode 100644 bench/devcloud/dr-bench-DotProduct-GPU.csv create mode 100644 bench/devcloud/dr-bench-DotProduct-GPU.png create mode 100644 bench/devcloud/dr-bench-Exclusive_Scan-CPU.csv create mode 100644 bench/devcloud/dr-bench-Exclusive_Scan-CPU.png create mode 100644 bench/devcloud/dr-bench-Exclusive_Scan-GPU.csv create mode 100644 bench/devcloud/dr-bench-Exclusive_Scan-GPU.png create mode 100644 bench/devcloud/dr-bench-Gemm-GPU.csv create mode 100644 bench/devcloud/dr-bench-Gemm-GPU.png create mode 100644 bench/devcloud/dr-bench-Inclusive_Scan-CPU.csv create mode 100644 bench/devcloud/dr-bench-Inclusive_Scan-CPU.png create mode 100644 bench/devcloud/dr-bench-Inclusive_Scan-GPU.csv create mode 100644 bench/devcloud/dr-bench-Inclusive_Scan-GPU.png create mode 100644 bench/devcloud/dr-bench-Reduce-CPU.csv create mode 100644 bench/devcloud/dr-bench-Reduce-CPU.png create mode 100644 bench/devcloud/dr-bench-Reduce-GPU.csv create mode 100644 bench/devcloud/dr-bench-Reduce-GPU.png create mode 100644 bench/devcloud/dr-bench-Sort-GPU.csv create mode 100644 bench/devcloud/dr-bench-Sort-GPU.png create mode 100644 bench/devcloud/dr-bench-Stencil2D-CPU.csv create mode 100644 bench/devcloud/dr-bench-Stencil2D-CPU.png create mode 100644 bench/devcloud/dr-bench-Stencil2D-GPU.csv create mode 100644 bench/devcloud/dr-bench-Stencil2D-GPU.png create mode 100644 bench/devcloud/dr-bench-Stream_Add-CPU.csv create mode 100644 bench/devcloud/dr-bench-Stream_Add-CPU.png create mode 100644 bench/devcloud/dr-bench-Stream_Add-GPU.csv create mode 100644 bench/devcloud/dr-bench-Stream_Add-GPU.png create mode 100644 bench/devcloud/dr-bench-Stream_Copy-CPU.csv create mode 100644 bench/devcloud/dr-bench-Stream_Copy-CPU.png create mode 100644 bench/devcloud/dr-bench-Stream_Copy-GPU.csv create mode 100644 bench/devcloud/dr-bench-Stream_Copy-GPU.png create mode 100644 bench/devcloud/dr-bench-Stream_Scale-CPU.csv create mode 100644 bench/devcloud/dr-bench-Stream_Scale-CPU.png create mode 100644 bench/devcloud/dr-bench-Stream_Scale-GPU.csv create mode 100644 bench/devcloud/dr-bench-Stream_Scale-GPU.png create mode 100644 bench/devcloud/dr-bench-Stream_Triad-CPU.csv create mode 100644 bench/devcloud/dr-bench-Stream_Triad-CPU.png create mode 100644 bench/devcloud/dr-bench-Stream_Triad-GPU.csv create mode 100644 bench/devcloud/dr-bench-Stream_Triad-GPU.png create mode 100644 bench/devcloud/dr-bench-WaveEquation-CPU.csv create mode 100644 bench/devcloud/dr-bench-WaveEquation-CPU.png create mode 100644 bench/devcloud/dr-bench-WaveEquation-GPU.csv create mode 100644 bench/devcloud/dr-bench-WaveEquation-GPU.png create mode 100644 bench/devcloud/dr-bench-a0de330cdbb2405898a19517f157683f.json create mode 100644 bench/devcloud/dr-bench-a0f61b8d46d4408288161dc6f031e3cb.json create mode 100644 bench/devcloud/dr-bench-aa9c65519380452b8a819124af744dd3.json create mode 100644 bench/devcloud/dr-bench-af6173fa3d8146879d09a320f5fb8a14.json create mode 100644 bench/devcloud/dr-bench-bd36b739c28a444d91b721c1eac6963f.json create mode 100644 bench/devcloud/dr-bench-bd9fbcb56b9648fdbb1032d92fa3f3e4.json create mode 100644 bench/devcloud/dr-bench-bfd8b40be0a2470e80f432592d9a4ae2.json create mode 100644 bench/devcloud/dr-bench-c7f86d9c396d479aa6c8539822c9979b.json create mode 100644 bench/devcloud/dr-bench-c9ddfd8b6aed468c9e61c75f33bfcf29.json create mode 100644 bench/devcloud/dr-bench-e675abb200ce48128f68e676213e3a4e.json create mode 100644 bench/devcloud/dr-bench-ede3197caf4e44748d8a1cebcf452d95.json create mode 100644 bench/devcloud/dr-bench-ee42cdfe336f4e12ba92c7aea837a8fe.json create mode 100644 bench/devcloud/dr-bench-ef0998e69afa4e97b08f824bfe6d205e.json create mode 100644 bench/devcloud/dr-bench-fd94c8a93ba746e9afd4ff96b08a25d6.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-04fe0dce45e5423fb77be0830c5b5eb9.json b/bench/devcloud/dr-bench-04fe0dce45e5423fb77be0830c5b5eb9.json new file mode 100644 index 0000000000..b06b49edbe --- /dev/null +++ b/bench/devcloud/dr-bench-04fe0dce45e5423fb77be0830c5b5eb9.json @@ -0,0 +1,181 @@ +{ + "context": { + "date": "2023-10-31T05:01:29-07:00", + "host_name": "idc-beta-batch-pvc-node-04", + "executable": "shp/shp-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": [159.052,85.9077,37.209], + "library_build_type": "debug", + "default_repetitions": "50", + "default_vector_size": "2000000000", + "device": "CPU", + "device_info0": "Intel(R) Xeon(R) Platinum 8480+, max_compute_units: 112", + "hostname": "idc-beta-batch-pvc-node-04\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_CPU", + "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": 1.7978313130627744e+03, + "cpu_time": 1.7905804189999994e+03, + "time_unit": "ms", + "bytes_per_second": 2.2249028431847839e+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": 7.0076330689902679e+03, + "cpu_time": 6.9950053070000031e+03, + "time_unit": "ms", + "bytes_per_second": 2.2832245699053769e+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": 1.2452910416083550e+04, + "cpu_time": 1.2418263469000003e+04, + "time_unit": "ms", + "bytes_per_second": 6.4242010363036125e+10, + "footprint": 1.6000000000000000e+10 + }, + { + "name": "Stream_Copy/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 3, + "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.2384924859263374e+03, + "cpu_time": 4.6886040000018170e+00, + "time_unit": "ms", + "bytes_per_second": 1.8874635325091467e+11, + "footprint": 1.6000000000000000e+10 + }, + { + "name": "Stream_Scale/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 4, + "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.2453396200018660e+03, + "cpu_time": 4.6426700000026244e+00, + "time_unit": "ms", + "bytes_per_second": 1.8844193200252100e+11, + "footprint": 1.6000000000000000e+10 + }, + { + "name": "Stream_Add/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 5, + "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": 6.0617548718986936e+03, + "cpu_time": 5.7182969999942657e+00, + "time_unit": "ms", + "bytes_per_second": 1.9796247544799350e+11, + "footprint": 2.4000000000000000e+10 + }, + { + "name": "Stream_Triad/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 6, + "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": 6.0671123500687827e+03, + "cpu_time": 5.5145199999913075e+00, + "time_unit": "ms", + "bytes_per_second": 1.9778766747024152e+11, + "footprint": 2.4000000000000000e+10 + }, + { + "name": "BlackScholes_DR/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 7, + "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": 3.9138690995083285e+04, + "cpu_time": 8.7332619999926919e+00, + "time_unit": "ms", + "bytes_per_second": 5.1100329345486938e+10, + "footprint": 4.0000000000000000e+10 + } + ] +} diff --git a/bench/devcloud/dr-bench-0694e27085d246ff9463f96e1ab972c8.json b/bench/devcloud/dr-bench-0694e27085d246ff9463f96e1ab972c8.json new file mode 100644 index 0000000000..78104ed178 --- /dev/null +++ b/bench/devcloud/dr-bench-0694e27085d246ff9463f96e1ab972c8.json @@ -0,0 +1,182 @@ +{ + "context": { + "date": "2023-10-31T05:04:53-07:00", + "host_name": "idc-beta-batch-pvc-node-04", + "executable": "shp/shp-bench", + "num_cpus": 224, + "mhz_per_cpu": 3678, + "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": [112.499,95.8618,50.3672], + "library_build_type": "debug", + "default_repetitions": "50", + "default_vector_size": "2000000000", + "device": "CPU", + "device_info0": "Intel(R) Xeon(R) Platinum 8480+, max_compute_units: 112", + "device_info1": "Intel(R) Xeon(R) Platinum 8480+, max_compute_units: 112", + "hostname": "idc-beta-batch-pvc-node-04\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_CPU", + "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": 1.1871466289732032e+03, + "cpu_time": 9.3333323000000053e+02, + "time_unit": "ms", + "bytes_per_second": 3.3694237109191083e+11, + "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": 3.7672364639460725e+03, + "cpu_time": 3.5532333359999980e+03, + "time_unit": "ms", + "bytes_per_second": 4.2471451296265210e+11, + "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": 8.8593524070890981e+03, + "cpu_time": 6.0164584209999957e+03, + "time_unit": "ms", + "bytes_per_second": 9.0300053913630768e+10, + "footprint": 8.0000000000000000e+09 + }, + { + "name": "Stream_Copy/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 3, + "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.4251988441005383e+03, + "cpu_time": 9.5078270000001908e+00, + "time_unit": "ms", + "bytes_per_second": 3.2986985869057898e+11, + "footprint": 8.0000000000000000e+09 + }, + { + "name": "Stream_Scale/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 4, + "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.3266668430710079e+03, + "cpu_time": 1.0674969000000090e+01, + "time_unit": "ms", + "bytes_per_second": 3.4383951547788684e+11, + "footprint": 8.0000000000000000e+09 + }, + { + "name": "Stream_Add/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 5, + "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.2403367679059802e+03, + "cpu_time": 9.6526540000070327e+00, + "time_unit": "ms", + "bytes_per_second": 3.7033187781141718e+11, + "footprint": 1.2000000000000000e+10 + }, + { + "name": "Stream_Triad/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 6, + "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.2452616419071296e+03, + "cpu_time": 1.0388424999995038e+01, + "time_unit": "ms", + "bytes_per_second": 3.6976987756672864e+11, + "footprint": 1.2000000000000000e+10 + }, + { + "name": "BlackScholes_DR/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 7, + "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.9433135508965002e+04, + "cpu_time": 1.2104872999998406e+01, + "time_unit": "ms", + "bytes_per_second": 1.0291699963072603e+11, + "footprint": 2.0000000000000000e+10 + } + ] +} diff --git a/bench/devcloud/dr-bench-0e6209137f3440d1923f6174facb829f.json b/bench/devcloud/dr-bench-0e6209137f3440d1923f6174facb829f.json new file mode 100644 index 0000000000..fd6aede4e0 --- /dev/null +++ b/bench/devcloud/dr-bench-0e6209137f3440d1923f6174facb829f.json @@ -0,0 +1,229 @@ +{ + "context": { + "date": "2023-10-31T05:14:40-07:00", + "host_name": "idc-beta-batch-pvc-node-04", + "executable": "mhp/mhp-bench", + "num_cpus": 224, + "mhz_per_cpu": 3000, + "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": [99.6821,111.203,82.478], + "library_build_type": "debug", + "default_repetitions": "50", + "default_vector_size": "2000000000", + "device": "CPU", + "hostname": "idc-beta-batch-pvc-node-04\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": "56", + "runtime": "DIRECT", + "target": "MHP_DIRECT_CPU", + "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.0117237669144563e+03, + "cpu_time": 2.0116808679999999e+03, + "time_unit": "ms", + "bytes_per_second": 1.9883445559402640e+11, + "footprint": 1.4285714200000000e+08 + }, + { + "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": 7.4339065229134640e+03, + "cpu_time": 7.4338276939999978e+03, + "time_unit": "ms", + "bytes_per_second": 2.1523004023097873e+11, + "footprint": 5.7142857100000000e+08 + }, + { + "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": 1.3589903918040607e+04, + "cpu_time": 1.3588847763000003e+04, + "time_unit": "ms", + "bytes_per_second": 5.8867230027873817e+10, + "footprint": 2.8571428500000000e+08 + }, + { + "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": 1.1963633217111668e+04, + "cpu_time": 1.1963444160999998e+04, + "time_unit": "ms", + "bytes_per_second": 6.6869318498978584e+10, + "footprint": 2.8571428500000000e+08 + }, + { + "name": "Stream_Copy/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 4, + "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.3735087479034164e+03, + "cpu_time": 4.3734278689999965e+03, + "time_unit": "ms", + "bytes_per_second": 1.8291949236034018e+11, + "footprint": 2.8571428500000000e+08 + }, + { + "name": "Stream_Scale/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 5, + "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.3615809408926470e+03, + "cpu_time": 4.3612740710000107e+03, + "time_unit": "ms", + "bytes_per_second": 1.8341973033206415e+11, + "footprint": 2.8571428500000000e+08 + }, + { + "name": "Stream_Add/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 6, + "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": 6.2452461728959152e+03, + "cpu_time": 6.2450106619999988e+03, + "time_unit": "ms", + "bytes_per_second": 1.9214614873116541e+11, + "footprint": 4.2857142800000000e+08 + }, + { + "name": "Stream_Triad/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 7, + "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": 6.2902480060317330e+03, + "cpu_time": 6.2899641849999880e+03, + "time_unit": "ms", + "bytes_per_second": 1.9077149245138144e+11, + "footprint": 4.2857142800000000e+08 + }, + { + "name": "WaveEquation_DR/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 8, + "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": 1.9324057502942236e+04, + "cpu_time": 1.9323180788000001e+04, + "time_unit": "ms", + "bytes_per_second": 1.8814780129102933e+11, + "flops": 3.4928428457493067e+08, + "footprint": 6.4281805700000000e+08 + }, + { + "name": "Stencil2D_DR/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 9, + "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": 2.1988927890077766e+03, + "cpu_time": 2.1988624390000095e+03, + "time_unit": "ms", + "bytes_per_second": 1.4555107079341470e+11, + "footprint": 5.7152000000000000e+08 + }, + { + "name": "BlackScholes_DR/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 10, + "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.2172370723935848e+04, + "cpu_time": 1.2171941793999991e+04, + "time_unit": "ms", + "bytes_per_second": 1.6430653036776013e+11, + "footprint": 7.1428571400000000e+08 + } + ] +} diff --git a/bench/devcloud/dr-bench-2554436e40544ce181784e408b6d2a74.json b/bench/devcloud/dr-bench-2554436e40544ce181784e408b6d2a74.json new file mode 100644 index 0000000000..5ceefe47ee --- /dev/null +++ b/bench/devcloud/dr-bench-2554436e40544ce181784e408b6d2a74.json @@ -0,0 +1,150 @@ +{ + "context": { + "date": "2023-10-31T04:36:01-07:00", + "host_name": "idc-beta-batch-pvc-node-04", + "executable": "mhp/mhp-bench", + "num_cpus": 224, + "mhz_per_cpu": 3616, + "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.604,1.75977,1.15918], + "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-04\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.7708809400859855e+02, + "cpu_time": 2.7664135300000049e+02, + "time_unit": "ms", + "bytes_per_second": 1.4435842197809744e+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.1756916199334555e+03, + "cpu_time": 1.1756798740000002e+03, + "time_unit": "ms", + "bytes_per_second": 1.3609010839854080e+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.5891516349264866e+03, + "cpu_time": 2.5855671220000004e+03, + "time_unit": "ms", + "bytes_per_second": 3.0898151703761230e+11, + "footprint": 8.0000000000000000e+09 + }, + { + "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": 2.4827663900084026e+04, + "cpu_time": 2.4818037067000005e+04, + "time_unit": "ms", + "bytes_per_second": 3.2222121389249695e+10, + "footprint": 8.0000000000000000e+09 + }, + { + "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": 4.4560296200316734e+03, + "cpu_time": 4.3952285240000037e+03, + "time_unit": "ms", + "bytes_per_second": 8.1592342089821143e+11, + "flops": 1.5147093209744024e+09, + "footprint": 1.7998905600000000e+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": 2.6091336993934033e+02, + "cpu_time": 2.6022170100000608e+02, + "time_unit": "ms", + "bytes_per_second": 1.2264607217115654e+12, + "footprint": 1.6000000000000000e+10 + } + ] +} diff --git a/bench/devcloud/dr-bench-279f39a47d984279ae309b37b1d59511.json b/bench/devcloud/dr-bench-279f39a47d984279ae309b37b1d59511.json new file mode 100644 index 0000000000..825f83f496 --- /dev/null +++ b/bench/devcloud/dr-bench-279f39a47d984279ae309b37b1d59511.json @@ -0,0 +1,150 @@ +{ + "context": { + "date": "2023-10-31T04:39:57-07:00", + "host_name": "idc-beta-batch-pvc-node-04", + "executable": "mhp/mhp-bench", + "num_cpus": 224, + "mhz_per_cpu": 3759, + "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.63672,2.48389,1.56982], + "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-04\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": "1" + }, + "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.4976771698440098e+02, + "cpu_time": 5.4976791099999912e+02, + "time_unit": "ms", + "bytes_per_second": 7.2758000814251074e+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.3082557659514355e+03, + "cpu_time": 2.3081360239999995e+03, + "time_unit": "ms", + "bytes_per_second": 6.9316408675383472e+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.1649675299560404e+03, + "cpu_time": 4.1643327099999970e+03, + "time_unit": "ms", + "bytes_per_second": 1.9207832816128668e+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.3670920269295775e+03, + "cpu_time": 7.3655070619999988e+03, + "time_unit": "ms", + "bytes_per_second": 1.0859101489104384e+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.6032920639417243e+03, + "cpu_time": 8.5754990530000014e+03, + "time_unit": "ms", + "bytes_per_second": 4.2260322027638043e+11, + "flops": 7.8453568120615172e+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.0735900592052008e+02, + "cpu_time": 5.0735225500000070e+02, + "time_unit": "ms", + "bytes_per_second": 6.3071709827918054e+11, + "footprint": 3.2000000000000000e+10 + } + ] +} diff --git a/bench/devcloud/dr-bench-2a37307f769d4320ada0a24ad8be81c8.json b/bench/devcloud/dr-bench-2a37307f769d4320ada0a24ad8be81c8.json new file mode 100644 index 0000000000..8e7338dbba --- /dev/null +++ b/bench/devcloud/dr-bench-2a37307f769d4320ada0a24ad8be81c8.json @@ -0,0 +1,181 @@ +{ + "context": { + "date": "2023-10-31T04:56:03-07:00", + "host_name": "idc-beta-batch-pvc-node-04", + "executable": "mhp/mhp-bench", + "num_cpus": 224, + "mhz_per_cpu": 3799, + "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.37109,2.62256,2.34766], + "library_build_type": "debug", + "default_repetitions": "50", + "default_vector_size": "2000000000", + "device": "CPU", + "device_info": "Intel(R) Xeon(R) Platinum 8480+, max_compute_units: 112", + "hostname": "idc-beta-batch-pvc-node-04\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_CPU", + "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": 1.7955205740250876e+03, + "cpu_time": 1.7816057050000004e+03, + "time_unit": "ms", + "bytes_per_second": 2.2277661742594495e+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": 7.0054520900198504e+03, + "cpu_time": 6.9885207339999979e+03, + "time_unit": "ms", + "bytes_per_second": 2.2839353969451904e+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": 1.2436713836090750e+04, + "cpu_time": 1.2404585387000005e+04, + "time_unit": "ms", + "bytes_per_second": 6.4325674011927345e+10, + "footprint": 1.6000000000000000e+10 + }, + { + "name": "Stream_Copy/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 3, + "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.2314861930642082e+03, + "cpu_time": 6.8530040000069903e+00, + "time_unit": "ms", + "bytes_per_second": 1.8905887045342908e+11, + "footprint": 1.6000000000000000e+10 + }, + { + "name": "Stream_Scale/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 4, + "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.2396173539890515e+03, + "cpu_time": 5.1958999999897060e+00, + "time_unit": "ms", + "bytes_per_second": 1.8869627449922595e+11, + "footprint": 1.6000000000000000e+10 + }, + { + "name": "Stream_Add/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 5, + "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": 6.0504895100040949e+03, + "cpu_time": 5.8172849999920118e+00, + "time_unit": "ms", + "bytes_per_second": 1.9833106032427249e+11, + "footprint": 2.4000000000000000e+10 + }, + { + "name": "Stream_Triad/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 6, + "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": 6.0553150151149093e+03, + "cpu_time": 5.8350780000040459e+00, + "time_unit": "ms", + "bytes_per_second": 1.9817300949738089e+11, + "footprint": 2.4000000000000000e+10 + }, + { + "name": "BlackScholes_DR/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 7, + "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": 3.9210197831963029e+04, + "cpu_time": 1.0887943000000178e+01, + "time_unit": "ms", + "bytes_per_second": 5.1007138718633484e+10, + "footprint": 4.0000000000000000e+10 + } + ] +} diff --git a/bench/devcloud/dr-bench-32edf2c5c3ae43c3ab2db83e3453a931.json b/bench/devcloud/dr-bench-32edf2c5c3ae43c3ab2db83e3453a931.json new file mode 100644 index 0000000000..f0a0df3fcb --- /dev/null +++ b/bench/devcloud/dr-bench-32edf2c5c3ae43c3ab2db83e3453a931.json @@ -0,0 +1,133 @@ +{ + "context": { + "date": "2023-10-31T04:31:43-07:00", + "host_name": "idc-beta-batch-pvc-node-04", + "executable": "mhp/mhp-bench", + "num_cpus": 224, + "mhz_per_cpu": 3080, + "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.61328,1.80518,0.972168], + "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-04\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.3230575504832996e+02, + "cpu_time": 4.4640519999994410e+00, + "time_unit": "ms", + "bytes_per_second": 8.5808759161690332e+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.3852320698670542e+02, + "cpu_time": 4.2695149999989468e+00, + "time_unit": "ms", + "bytes_per_second": 8.5240300297798853e+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.5097807340997476e+03, + "cpu_time": 4.0050749999984703e+00, + "time_unit": "ms", + "bytes_per_second": 7.9481740155833704e+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.5093573250447753e+03, + "cpu_time": 3.9269009999998161e+00, + "time_unit": "ms", + "bytes_per_second": 7.9504036591494446e+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.4772545630723935e+03, + "cpu_time": 4.5896949999999492e+00, + "time_unit": "ms", + "bytes_per_second": 8.0734536927021228e+11, + "footprint": 4.0000000000000000e+10 + } + ] +} diff --git a/bench/devcloud/dr-bench-342c61c100fd47b7b449efa19634f514.json b/bench/devcloud/dr-bench-342c61c100fd47b7b449efa19634f514.json new file mode 100644 index 0000000000..66cc095df4 --- /dev/null +++ b/bench/devcloud/dr-bench-342c61c100fd47b7b449efa19634f514.json @@ -0,0 +1,150 @@ +{ + "context": { + "date": "2023-10-31T04:37:44-07:00", + "host_name": "idc-beta-batch-pvc-node-04", + "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.96387,1.84961,1.25928], + "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-04\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": "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": 1.8609300692159053e+02, + "cpu_time": 1.8601923800000009e+02, + "time_unit": "ms", + "bytes_per_second": 2.1494628230094548e+12, + "footprint": 2.6666666660000000e+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": 7.8114925089764517e+02, + "cpu_time": 7.8113932599999987e+02, + "time_unit": "ms", + "bytes_per_second": 2.0482641417902988e+12, + "footprint": 1.0666666666000000e+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": 1.7413906649790479e+03, + "cpu_time": 1.7382920469999981e+03, + "time_unit": "ms", + "bytes_per_second": 4.5940294506495789e+11, + "footprint": 5.3333333330000000e+09 + }, + { + "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": 1.7793344171918958e+04, + "cpu_time": 1.7782417974000004e+04, + "time_unit": "ms", + "bytes_per_second": 4.4960632035800301e+10, + "footprint": 5.3333333330000000e+09 + }, + { + "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": 3.2404321179914446e+03, + "cpu_time": 3.1787441440000066e+03, + "time_unit": "ms", + "bytes_per_second": 1.1220043496709963e+12, + "flops": 2.0829288669634833e+09, + "footprint": 1.1999270400000000e+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": 1.7701418311501953e+02, + "cpu_time": 1.7630340899999908e+02, + "time_unit": "ms", + "bytes_per_second": 1.8077737860817102e+12, + "footprint": 1.0666720000000000e+10 + } + ] +} diff --git a/bench/devcloud/dr-bench-42df376b35054289bab9f1abda053056.json b/bench/devcloud/dr-bench-42df376b35054289bab9f1abda053056.json new file mode 100644 index 0000000000..f7331217ef --- /dev/null +++ b/bench/devcloud/dr-bench-42df376b35054289bab9f1abda053056.json @@ -0,0 +1,133 @@ +{ + "context": { + "date": "2023-10-31T04:53:46-07:00", + "host_name": "idc-beta-batch-pvc-node-04", + "executable": "shp/shp-bench", + "num_cpus": 224, + "mhz_per_cpu": 3801, + "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": [4.14502,3.53711,2.55957], + "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-04\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": "Reduce_Reference/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 0, + "per_family_instance_index": 0, + "run_name": "Reduce_Reference/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.4986457490345049e+02, + "cpu_time": 5.4972819900000047e+02, + "time_unit": "ms", + "bytes_per_second": 7.2745184588447998e+11, + "footprint": 8.0000000000000000e+09 + }, + { + "name": "DotProduct_Reference/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 1, + "per_family_instance_index": 0, + "run_name": "DotProduct_Reference/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.3533089000122018e+03, + "cpu_time": 2.3523412420000013e+03, + "time_unit": "ms", + "bytes_per_second": 6.7989374450234900e+11, + "footprint": 3.2000000000000000e+10 + }, + { + "name": "Inclusive_Scan_Reference/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 2, + "per_family_instance_index": 0, + "run_name": "Inclusive_Scan_Reference/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.1622602760459959e+03, + "cpu_time": 4.1611125390000016e+03, + "time_unit": "ms", + "bytes_per_second": 1.9220326143562857e+11, + "footprint": 1.6000000000000000e+10 + }, + { + "name": "Exclusive_Scan_Reference/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 3, + "per_family_instance_index": 0, + "run_name": "Exclusive_Scan_Reference/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.4117796239350691e+03, + "cpu_time": 7.3978516230000014e+03, + "time_unit": "ms", + "bytes_per_second": 1.0793629068739948e+11, + "footprint": 1.6000000000000000e+10 + }, + { + "name": "BlackScholes_Reference/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 4, + "per_family_instance_index": 0, + "run_name": "BlackScholes_Reference/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.5502650939686855e+03, + "cpu_time": 2.5501492210000051e+03, + "time_unit": "ms", + "bytes_per_second": 7.8423219795069592e+11, + "footprint": 4.0000000000000000e+10 + } + ] +} diff --git a/bench/devcloud/dr-bench-503be65c52ee454ea31eb63b817e1398.json b/bench/devcloud/dr-bench-503be65c52ee454ea31eb63b817e1398.json new file mode 100644 index 0000000000..51a6af1a4c --- /dev/null +++ b/bench/devcloud/dr-bench-503be65c52ee454ea31eb63b817e1398.json @@ -0,0 +1,150 @@ +{ + "context": { + "date": "2023-10-31T04:46:38-07:00", + "host_name": "idc-beta-batch-pvc-node-04", + "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": [2.44287,2.41016,1.82422], + "library_build_type": "debug", + "default_repetitions": "50", + "default_vector_size": "6000000000", + "device": "GPU", + "device_info": "Intel(R) Data Center GPU Max 1100, max_compute_units: 448", + "hostname": "idc-beta-batch-pvc-node-04\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": "1" + }, + "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.5653132910895636e+02, + "cpu_time": 5.5645355500000096e+02, + "time_unit": "ms", + "bytes_per_second": 2.1562128441561050e+12, + "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.3272017318922058e+03, + "cpu_time": 2.3271942879999942e+03, + "time_unit": "ms", + "bytes_per_second": 2.0625629201887913e+12, + "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": 5.1589509729148322e+03, + "cpu_time": 5.1496117400000048e+03, + "time_unit": "ms", + "bytes_per_second": 4.6521085635438562e+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": 5.3136411373889830e+04, + "cpu_time": 5.3124163646000001e+04, + "time_unit": "ms", + "bytes_per_second": 4.5166768660996025e+10, + "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.9905916420874582e+03, + "cpu_time": 8.8778965449999996e+03, + "time_unit": "ms", + "bytes_per_second": 1.2131534490555054e+12, + "flops": 2.2521413039396758e+09, + "footprint": 3.5996591616000000e+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.1428111794586584e+02, + "cpu_time": 5.1223475300000132e+02, + "time_unit": "ms", + "bytes_per_second": 1.8666833498270713e+12, + "footprint": 3.2000000000000000e+10 + } + ] +} diff --git a/bench/devcloud/dr-bench-5e60d1cec3d94f06a046a15612515384.json b/bench/devcloud/dr-bench-5e60d1cec3d94f06a046a15612515384.json new file mode 100644 index 0000000000..1f3a756f53 --- /dev/null +++ b/bench/devcloud/dr-bench-5e60d1cec3d94f06a046a15612515384.json @@ -0,0 +1,102 @@ +{ + "context": { + "date": "2023-10-31T05:09:34-07:00", + "host_name": "idc-beta-batch-pvc-node-04", + "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": [111.786,114.167,70.6401], + "library_build_type": "debug", + "default_repetitions": "50", + "default_vector_size": "2000000000", + "device": "CPU", + "device_info": "Intel(R) Xeon(R) Platinum 8480+, max_compute_units: 112", + "hostname": "idc-beta-batch-pvc-node-04\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_CPU", + "weak-scaling": "0" + }, + "benchmarks": [ + { + "name": "Exclusive_Scan_DR/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 0, + "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": 1.4974819407898309e+04, + "cpu_time": 1.4921132721000000e+04, + "time_unit": "ms", + "bytes_per_second": 5.3423014876429733e+10, + "footprint": 8.0000000000000000e+09 + }, + { + "name": "WaveEquation_DR/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 1, + "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": 1.4194651772888283e+04, + "cpu_time": 1.3908416821999999e+04, + "time_unit": "ms", + "bytes_per_second": 2.5613724023468616e+11, + "flops": 4.7550230241587776e+08, + "footprint": 1.7998905600000000e+10 + }, + { + "name": "Stencil2D_DR/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 2, + "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": 1.5908807239869757e+03, + "cpu_time": 1.5812418739999998e+03, + "time_unit": "ms", + "bytes_per_second": 2.0114644371203015e+11, + "footprint": 1.6000000000000000e+10 + } + ] +} diff --git a/bench/devcloud/dr-bench-6735bd59ad7243889436b5aeb3c798dd.json b/bench/devcloud/dr-bench-6735bd59ad7243889436b5aeb3c798dd.json new file mode 100644 index 0000000000..1e4ecc93e4 --- /dev/null +++ b/bench/devcloud/dr-bench-6735bd59ad7243889436b5aeb3c798dd.json @@ -0,0 +1,136 @@ +{ + "context": { + "date": "2023-10-31T04:31:34-07:00", + "host_name": "idc-beta-batch-pvc-node-04", + "executable": "shp/shp-bench", + "num_cpus": 224, + "mhz_per_cpu": 3799, + "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.91406,1.83301,0.97168], + "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-04\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.3353984310769630e+02, + "cpu_time": 1.9545850000000087e+00, + "time_unit": "ms", + "bytes_per_second": 3.4255396824561626e+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.3349585906944003e+02, + "cpu_time": 1.8216949999998455e+00, + "time_unit": "ms", + "bytes_per_second": 3.4261849575759951e+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.6916152306169056e+02, + "cpu_time": 1.9785020000000486e+00, + "time_unit": "ms", + "bytes_per_second": 3.2506096248808359e+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.6283208399757387e+02, + "cpu_time": 2.4538899999999586e+00, + "time_unit": "ms", + "bytes_per_second": 3.3073150168495684e+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.2815279803084991e+02, + "cpu_time": 5.9118360000001147e+00, + "time_unit": "ms", + "bytes_per_second": 3.1839386949634756e+12, + "footprint": 1.0000000000000000e+10 + } + ] +} diff --git a/bench/devcloud/dr-bench-6b01622a99bb426a90ca47ea70dd1625.json b/bench/devcloud/dr-bench-6b01622a99bb426a90ca47ea70dd1625.json new file mode 100644 index 0000000000..d8ccae7a76 --- /dev/null +++ b/bench/devcloud/dr-bench-6b01622a99bb426a90ca47ea70dd1625.json @@ -0,0 +1,150 @@ +{ + "context": { + "date": "2023-10-31T04:41:42-07:00", + "host_name": "idc-beta-batch-pvc-node-04", + "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.521,2.06787,1.51562], + "library_build_type": "debug", + "default_repetitions": "50", + "default_vector_size": "4000000000", + "device": "GPU", + "device_info": "Intel(R) Data Center GPU Max 1100, max_compute_units: 448", + "hostname": "idc-beta-batch-pvc-node-04\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": "1" + }, + "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.5665258589949860e+02, + "cpu_time": 5.5665300199999911e+02, + "time_unit": "ms", + "bytes_per_second": 1.4371621012184370e+12, + "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.3208737039722250e+03, + "cpu_time": 2.3208598160000024e+03, + "time_unit": "ms", + "bytes_per_second": 1.3787910968714631e+12, + "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": 5.1557039639590548e+03, + "cpu_time": 5.1473834080000033e+03, + "time_unit": "ms", + "bytes_per_second": 3.1033589422216614e+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": 1.4535687873591122e+05, + "cpu_time": 1.4534406094200004e+05, + "time_unit": "ms", + "bytes_per_second": 1.1007391008353506e+10, + "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": 9.1043243459836303e+03, + "cpu_time": 9.0115927299999603e+03, + "time_unit": "ms", + "bytes_per_second": 7.9870208398889941e+11, + "flops": 1.4827390173061252e+09, + "footprint": 3.5998231824000000e+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.1305719708779804e+02, + "cpu_time": 5.1213395299998865e+02, + "time_unit": "ms", + "bytes_per_second": 1.2474242708858806e+12, + "footprint": 3.2000000000000000e+10 + } + ] +} diff --git a/bench/devcloud/dr-bench-7ac8df8beb12407ab7f1ca6a2e42d282.json b/bench/devcloud/dr-bench-7ac8df8beb12407ab7f1ca6a2e42d282.json new file mode 100644 index 0000000000..f3973c756d --- /dev/null +++ b/bench/devcloud/dr-bench-7ac8df8beb12407ab7f1ca6a2e42d282.json @@ -0,0 +1,69 @@ +{ + "context": { + "date": "2023-10-31T05:14:25-07:00", + "host_name": "idc-beta-batch-pvc-node-04", + "executable": "mhp/mhp-bench", + "num_cpus": 224, + "mhz_per_cpu": 3097, + "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": [101.937,112.14,82.3027], + "library_build_type": "debug", + "default_repetitions": "50", + "default_vector_size": "2000000000", + "device": "CPU", + "device_info": "Intel(R) Xeon(R) Platinum 8480+, max_compute_units: 112", + "hostname": "idc-beta-batch-pvc-node-04\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_CPU", + "weak-scaling": "0" + }, + "benchmarks": [ + { + "name": "Stencil2D_Reference/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 0, + "per_family_instance_index": 0, + "run_name": "Stencil2D_Reference/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.1030393828997071e+03, + "cpu_time": 3.0993765369999996e+03, + "time_unit": "ms", + "bytes_per_second": 1.0312469824374855e+11, + "footprint": 3.2000000000000000e+10 + } + ] +} diff --git a/bench/devcloud/dr-bench-7d1dd46f1cce4f5ab9452101169b9f36.json b/bench/devcloud/dr-bench-7d1dd46f1cce4f5ab9452101169b9f36.json new file mode 100644 index 0000000000..ea331b9d8a --- /dev/null +++ b/bench/devcloud/dr-bench-7d1dd46f1cce4f5ab9452101169b9f36.json @@ -0,0 +1,102 @@ +{ + "context": { + "date": "2023-10-31T05:07:19-07:00", + "host_name": "idc-beta-batch-pvc-node-04", + "executable": "mhp/mhp-bench", + "num_cpus": 224, + "mhz_per_cpu": 3794, + "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": [186.667,123.629,66.6143], + "library_build_type": "debug", + "default_repetitions": "50", + "default_vector_size": "2000000000", + "device": "CPU", + "device_info": "Intel(R) Xeon(R) Platinum 8480+, max_compute_units: 112", + "hostname": "idc-beta-batch-pvc-node-04\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_CPU", + "weak-scaling": "0" + }, + "benchmarks": [ + { + "name": "Exclusive_Scan_DR/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 0, + "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": 2.6385169194889048e+04, + "cpu_time": 2.6322206447999997e+04, + "time_unit": "ms", + "bytes_per_second": 3.0320063293547665e+10, + "footprint": 1.6000000000000000e+10 + }, + { + "name": "WaveEquation_DR/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 1, + "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": 2.7735577902997880e+04, + "cpu_time": 2.7454612468000007e+04, + "time_unit": "ms", + "bytes_per_second": 1.3108718858917361e+11, + "flops": 2.4335492931158468e+08, + "footprint": 3.5997811200000000e+10 + }, + { + "name": "Stencil2D_DR/min_time:0.100/min_warmup_time:0.100/real_time", + "family_index": 2, + "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": 3.1728942270259113e+03, + "cpu_time": 3.1699624160000039e+03, + "time_unit": "ms", + "bytes_per_second": 1.0085429172971506e+11, + "footprint": 3.2000000000000000e+10 + } + ] +} diff --git a/bench/devcloud/dr-bench-9a90aec6600e40799d71508e38491029.json b/bench/devcloud/dr-bench-9a90aec6600e40799d71508e38491029.json new file mode 100644 index 0000000000..a5dfcc5786 --- /dev/null +++ b/bench/devcloud/dr-bench-9a90aec6600e40799d71508e38491029.json @@ -0,0 +1,133 @@ +{ + "context": { + "date": "2023-10-31T04:30:46-07:00", + "host_name": "idc-beta-batch-pvc-node-04", + "executable": "shp/shp-bench", + "num_cpus": 224, + "mhz_per_cpu": 3794, + "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.41455,1.9873,0.966797], + "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-04\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.3117298609351144e+02, + "cpu_time": 4.0140619999999849e+00, + "time_unit": "ms", + "bytes_per_second": 8.5913145242345056e+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.3528206502288913e+02, + "cpu_time": 4.1114789999998624e+00, + "time_unit": "ms", + "bytes_per_second": 8.5535693446706006e+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.4595700000684897e+03, + "cpu_time": 4.0435140000001368e+00, + "time_unit": "ms", + "bytes_per_second": 8.2215995117993005e+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.4889187670178649e+03, + "cpu_time": 4.0454450000000364e+00, + "time_unit": "ms", + "bytes_per_second": 8.0595397585286914e+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.4588527741150151e+03, + "cpu_time": 4.1245410000001481e+00, + "time_unit": "ms", + "bytes_per_second": 8.1338745493610767e+11, + "footprint": 4.0000000000000000e+10 + } + ] +} diff --git a/bench/devcloud/dr-bench-BlackScholes-CPU.csv b/bench/devcloud/dr-bench-BlackScholes-CPU.csv new file mode 100644 index 0000000000..859567d075 --- /dev/null +++ b/bench/devcloud/dr-bench-BlackScholes-CPU.csv @@ -0,0 +1,8 @@ +,bench_name,Benchmark,Target,Ranks,Scaling,Bandwidth (TB/s),Bandwidth (GB/s),model,runtime,device,vsize,Number of GPU Tiles,Number of CPU Cores,Number of CPU Sockets,rtime +10,BlackScholes_DR,BlackScholes,MHP_DIRECT_CPU,56,strong,0.16430653036776013,164.30653036776013,MHP,DIRECT,CPU,2000000000,56,56,1.0,12172.370723935848 +21,BlackScholes_DR,BlackScholes,MHP_DIRECT_CPU,112,strong,0.3207020105490032,320.70201054900326,MHP,DIRECT,CPU,2000000000,112,112,2.0,6236.318869894956 +165,BlackScholes_DR,BlackScholes,MHP_SYCL_CPU,1,strong,0.051007138718633487,51.007138718633485,MHP,SYCL,CPU,2000000000,1,56,1.0,39210.19783196303 +31,BlackScholes_DR,BlackScholes,MHP_SYCL_CPU,2,strong,0.10735763630315488,107.35763630315488,MHP,SYCL,CPU,2000000000,2,112,2.0,18629.322224945696 +135,BlackScholes_Reference,BlackScholes,Reference_CPU,1,strong,0.05122327520332435,51.22327520332435,SHP,SYCL,CPU,2000000000,1,56,1.0,39044.75049791821 +82,BlackScholes_DR,BlackScholes,SHP_SYCL_CPU,1,strong,0.05110032934548694,51.10032934548694,SHP,SYCL,CPU,2000000000,1,56,1.0,39138.690995083285 +118,BlackScholes_DR,BlackScholes,SHP_SYCL_CPU,2,strong,0.10291699963072602,102.91699963072602,SHP,SYCL,CPU,2000000000,2,112,2.0,19433.135508965002 diff --git a/bench/devcloud/dr-bench-BlackScholes-CPU.png b/bench/devcloud/dr-bench-BlackScholes-CPU.png new file mode 100644 index 0000000000000000000000000000000000000000..db8fc4efe886f0e367264d2b2beea0e65c79e3bc GIT binary patch literal 34114 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 C52C;T literal 0 HcmV?d00001 diff --git a/bench/devcloud/dr-bench-BlackScholes-GPU.csv b/bench/devcloud/dr-bench-BlackScholes-GPU.csv new file mode 100644 index 0000000000..7c47135c6b --- /dev/null +++ b/bench/devcloud/dr-bench-BlackScholes-GPU.csv @@ -0,0 +1,10 @@ +,bench_name,Benchmark,Target,Ranks,Scaling,Bandwidth (TB/s),Bandwidth (GB/s),model,runtime,device,vsize,Number of GPU Tiles,Number of CPU Cores,Number of CPU Sockets,rtime +45,BlackScholes_DR,BlackScholes,MHP_SYCL_GPU,1,strong,0.8073453692702123,807.3453692702122,MHP,SYCL,GPU,2000000000,1,56,1.0,2477.2545630723935 +110,BlackScholes_DR,BlackScholes,MHP_SYCL_GPU,2,strong,1.5912493861062327,1591.2493861062326,MHP,SYCL,GPU,2000000000,2,112,2.0,1256.8740119950494 +53,BlackScholes_DR,BlackScholes,MHP_SYCL_GPU,3,strong,2.526703037712649,2526.703037712649,MHP,SYCL,GPU,2000000000,3,168,3.0,791.5453340375694 +151,BlackScholes_DR,BlackScholes,MHP_SYCL_GPU,4,strong,3.1195174967087764,3119.5174967087764,MHP,SYCL,GPU,2000000000,4,224,4.0,641.1247900068153 +63,BlackScholes_Reference,BlackScholes,Reference_GPU,1,strong,0.7842321979506959,784.2321979506959,SHP,SYCL,GPU,2000000000,1,56,1.0,2550.2650939686855 +68,BlackScholes_DR,BlackScholes,SHP_SYCL_GPU,1,strong,0.8133874549361076,813.3874549361077,SHP,SYCL,GPU,2000000000,1,56,1.0,2458.852774115015 +105,BlackScholes_DR,BlackScholes,SHP_SYCL_GPU,2,strong,1.6620804948112498,1662.0804948112498,SHP,SYCL,GPU,2000000000,2,112,2.0,1203.3111550515641 +140,BlackScholes_DR,BlackScholes,SHP_SYCL_GPU,3,strong,2.447678099482442,2447.678099482442,SHP,SYCL,GPU,2000000000,3,168,3.0,817.1009089891751 +58,BlackScholes_DR,BlackScholes,SHP_SYCL_GPU,4,strong,3.1839386949634756,3183.9386949634754,SHP,SYCL,GPU,2000000000,4,224,4.0,628.1527980308499 diff --git a/bench/devcloud/dr-bench-BlackScholes-GPU.png b/bench/devcloud/dr-bench-BlackScholes-GPU.png new file mode 100644 index 0000000000000000000000000000000000000000..052e102c2d4ffd20f4978e44fc7cec3eb9125af3 GIT binary patch literal 41454 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 X>>ie7I))A;{C8UEoMM`S;qCtm2?}Xm literal 0 HcmV?d00001 diff --git a/bench/devcloud/dr-bench-DotProduct-CPU.csv b/bench/devcloud/dr-bench-DotProduct-CPU.csv new file mode 100644 index 0000000000..bb32e39fa7 --- /dev/null +++ b/bench/devcloud/dr-bench-DotProduct-CPU.csv @@ -0,0 +1,8 @@ +,bench_name,Benchmark,Target,Ranks,Scaling,Bandwidth (TB/s),Bandwidth (GB/s),model,runtime,device,vsize,Number of GPU Tiles,Number of CPU Cores,Number of CPU Sockets,rtime +1,DotProduct_DR,DotProduct,MHP_DIRECT_CPU,56,strong,0.21523004023097872,215.23004023097872,MHP,DIRECT,CPU,2000000000,56,56,1.0,7433.906522913464 +12,DotProduct_DR,DotProduct,MHP_DIRECT_CPU,112,strong,0.43076132146459944,430.7613214645994,MHP,DIRECT,CPU,2000000000,112,112,2.0,3714.353913113553 +159,DotProduct_DR,DotProduct,MHP_SYCL_CPU,1,strong,0.22839353969451903,228.39353969451903,MHP,SYCL,CPU,2000000000,1,56,1.0,7005.45209001985 +25,DotProduct_DR,DotProduct,MHP_SYCL_CPU,2,strong,0.44740516365075506,447.40516365075507,MHP,SYCL,CPU,2000000000,2,112,2.0,3576.176874992354 +132,DotProduct_Reference,DotProduct,Reference_CPU,1,strong,0.22853050793171178,228.53050793171178,SHP,SYCL,CPU,2000000000,1,56,1.0,7001.253418988169 +76,DotProduct_DR,DotProduct,SHP_SYCL_CPU,1,strong,0.2283224569905377,228.3224569905377,SHP,SYCL,CPU,2000000000,1,56,1.0,7007.633068990268 +112,DotProduct_DR,DotProduct,SHP_SYCL_CPU,2,strong,0.4247145129626521,424.7145129626521,SHP,SYCL,CPU,2000000000,2,112,2.0,3767.2364639460725 diff --git a/bench/devcloud/dr-bench-DotProduct-CPU.png b/bench/devcloud/dr-bench-DotProduct-CPU.png new file mode 100644 index 0000000000000000000000000000000000000000..3f88f6ebf8c2c0a88fbf8a1743aeb9246f226eb3 GIT binary patch literal 42944 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

|-O=9ind|O6 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 HjGzAxt?1Q> literal 0 HcmV?d00001 diff --git a/bench/devcloud/dr-bench-Gemm-GPU.csv b/bench/devcloud/dr-bench-Gemm-GPU.csv new file mode 100644 index 0000000000..2b1c605144 --- /dev/null +++ b/bench/devcloud/dr-bench-Gemm-GPU.csv @@ -0,0 +1,3 @@ +,bench_name,Benchmark,Target,Ranks,Scaling,Bandwidth (TB/s),Bandwidth (GB/s),model,runtime,device,vsize,Number of GPU Tiles,Number of CPU Cores,Number of CPU Sockets,rtime +22,Gemm_Reference,Gemm,Reference_GPU,1,strong,0.008143013088984654,8.143013088984654,SHP,SYCL,GPU,2000000000,1,56,1.0,377.25593296117927 +89,Gemm_DR,Gemm,SHP_SYCL_GPU,1,strong,0.00799088841197857,7.990888411978571,SHP,SYCL,GPU,2000000000,1,56,1.0,384.43785491923325 diff --git a/bench/devcloud/dr-bench-Gemm-GPU.png b/bench/devcloud/dr-bench-Gemm-GPU.png new file mode 100644 index 0000000000000000000000000000000000000000..30ca0d62919b72027dc962d946e8462fdd34f06c GIT binary patch literal 15555 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 literal 0 HcmV?d00001 diff --git a/bench/devcloud/dr-bench-Inclusive_Scan-CPU.csv b/bench/devcloud/dr-bench-Inclusive_Scan-CPU.csv new file mode 100644 index 0000000000..174c989976 --- /dev/null +++ b/bench/devcloud/dr-bench-Inclusive_Scan-CPU.csv @@ -0,0 +1,8 @@ +,bench_name,Benchmark,Target,Ranks,Scaling,Bandwidth (TB/s),Bandwidth (GB/s),model,runtime,device,vsize,Number of GPU Tiles,Number of CPU Cores,Number of CPU Sockets,rtime +2,Inclusive_Scan_DR,Inclusive_Scan,MHP_DIRECT_CPU,56,strong,0.05886723002787382,58.867230027873816,MHP,DIRECT,CPU,2000000000,56,56,1.0,13589.903918040607 +13,Inclusive_Scan_DR,Inclusive_Scan,MHP_DIRECT_CPU,112,strong,0.11293752702613277,112.93752702613277,MHP,DIRECT,CPU,2000000000,112,112,2.0,7083.562222987996 +160,Inclusive_Scan_DR,Inclusive_Scan,MHP_SYCL_CPU,1,strong,0.06432567401192735,64.32567401192735,MHP,SYCL,CPU,2000000000,1,56,1.0,12436.71383609075 +26,Inclusive_Scan_DR,Inclusive_Scan,MHP_SYCL_CPU,2,strong,0.08176832756702501,81.76832756702501,MHP,SYCL,CPU,2000000000,2,112,2.0,9783.73930106672 +133,Inclusive_Scan_Reference,Inclusive_Scan,Reference_CPU,1,strong,0.07032839697461087,70.32839697461087,SHP,SYCL,CPU,2000000000,1,56,1.0,11375.205953987643 +77,Inclusive_Scan_DR,Inclusive_Scan,SHP_SYCL_CPU,1,strong,0.06424201036303613,64.24201036303613,SHP,SYCL,CPU,2000000000,1,56,1.0,12452.91041608355 +113,Inclusive_Scan_DR,Inclusive_Scan,SHP_SYCL_CPU,2,strong,0.09030005391363077,90.30005391363076,SHP,SYCL,CPU,2000000000,2,112,2.0,8859.352407089098 diff --git a/bench/devcloud/dr-bench-Inclusive_Scan-CPU.png b/bench/devcloud/dr-bench-Inclusive_Scan-CPU.png new file mode 100644 index 0000000000000000000000000000000000000000..554f7502b59153152dbc713566d96e6029934a0f GIT binary patch literal 37648 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

wkMHiU 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 Hy!qb%&@n@B literal 0 HcmV?d00001 diff --git a/bench/devcloud/dr-bench-Reduce-CPU.csv b/bench/devcloud/dr-bench-Reduce-CPU.csv new file mode 100644 index 0000000000..ec5d53ddb9 --- /dev/null +++ b/bench/devcloud/dr-bench-Reduce-CPU.csv @@ -0,0 +1,8 @@ +,bench_name,Benchmark,Target,Ranks,Scaling,Bandwidth (TB/s),Bandwidth (GB/s),model,runtime,device,vsize,Number of GPU Tiles,Number of CPU Cores,Number of CPU Sockets,rtime +0,Reduce_DR,Reduce,MHP_DIRECT_CPU,56,strong,0.1988344555940264,198.8344555940264,MHP,DIRECT,CPU,2000000000,56,56,1.0,2011.7237669144563 +11,Reduce_DR,Reduce,MHP_DIRECT_CPU,112,strong,0.4008129697814493,400.81296978144934,MHP,DIRECT,CPU,2000000000,112,112,2.0,997.9716979171293 +158,Reduce_DR,Reduce,MHP_SYCL_CPU,1,strong,0.22277661742594496,222.77661742594495,MHP,SYCL,CPU,2000000000,1,56,1.0,1795.5205740250876 +24,Reduce_DR,Reduce,MHP_SYCL_CPU,2,strong,0.42210777081860973,422.10777081860977,MHP,SYCL,CPU,2000000000,2,112,2.0,947.6252930010378 +131,Reduce_Reference,Reduce,Reference_CPU,1,strong,0.22268184324939744,222.68184324939742,SHP,SYCL,CPU,2000000000,1,56,1.0,1796.2847539034028 +75,Reduce_DR,Reduce,SHP_SYCL_CPU,1,strong,0.2224902843184784,222.4902843184784,SHP,SYCL,CPU,2000000000,1,56,1.0,1797.8313130627744 +111,Reduce_DR,Reduce,SHP_SYCL_CPU,2,strong,0.33694237109191083,336.94237109191084,SHP,SYCL,CPU,2000000000,2,112,2.0,1187.1466289732032 diff --git a/bench/devcloud/dr-bench-Reduce-CPU.png b/bench/devcloud/dr-bench-Reduce-CPU.png new file mode 100644 index 0000000000000000000000000000000000000000..eb25738a086f6c58c9c6cb1c5d454b5afbff7949 GIT binary patch literal 39937 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 literal 0 HcmV?d00001 diff --git a/bench/devcloud/dr-bench-Reduce-GPU.csv b/bench/devcloud/dr-bench-Reduce-GPU.csv new file mode 100644 index 0000000000..00d9dc8cc7 --- /dev/null +++ b/bench/devcloud/dr-bench-Reduce-GPU.csv @@ -0,0 +1,11 @@ +,bench_name,Benchmark,Target,Ranks,Scaling,Bandwidth (TB/s),Bandwidth (GB/s),model,runtime,device,vsize,Number of GPU Tiles,Number of CPU Cores,Number of CPU Sockets,rtime +83,Reduce_DR,Reduce,MHP_SYCL_GPU,1,weak,0.7275800081425108,727.5800081425108,MHP,SYCL,GPU,2000000000,1,56,1.0,549.767716984401 +125,Reduce_DR,Reduce,MHP_SYCL_GPU,1,strong,0.7276078688830442,727.6078688830441,MHP,SYCL,GPU,2000000000,1,56,1.0,549.746665898546 +32,Reduce_DR,Reduce,MHP_SYCL_GPU,2,weak,1.437162101218437,1437.162101218437,MHP,SYCL,GPU,4000000000,2,112,2.0,556.6525858994986 +152,Reduce_DR,Reduce,MHP_SYCL_GPU,2,strong,1.4435842197809743,1443.5842197809743,MHP,SYCL,GPU,2000000000,2,112,2.0,277.08809400859855 +119,Reduce_DR,Reduce,MHP_SYCL_GPU,3,weak,2.156212844156105,2156.212844156105,MHP,SYCL,GPU,6000000000,3,168,3.0,556.5313291089564 +141,Reduce_DR,Reduce,MHP_SYCL_GPU,3,strong,2.149462823009455,2149.462823009455,MHP,SYCL,GPU,2000000000,3,168,3.0,186.09300692159053 +69,Reduce_DR,Reduce,MHP_SYCL_GPU,4,weak,2.858382736280556,2858.3827362805555,MHP,SYCL,GPU,8000000000,4,224,4.0,559.7570891020653 +94,Reduce_DR,Reduce,MHP_SYCL_GPU,4,strong,2.8484905670187826,2848.4905670187827,MHP,SYCL,GPU,2000000000,4,224,4.0,140.42525000131496 +59,Reduce_Reference,Reduce,Reference_GPU,1,strong,0.72745184588448,727.45184588448,SHP,SYCL,GPU,2000000000,1,56,1.0,549.8645749034505 +90,Reduce_DR,Reduce,SHP_SYCL_GPU,1,strong,0.7277176314429619,727.7176314429619,SHP,SYCL,GPU,2000000000,1,56,1.0,549.6637469218056 diff --git a/bench/devcloud/dr-bench-Reduce-GPU.png b/bench/devcloud/dr-bench-Reduce-GPU.png new file mode 100644 index 0000000000000000000000000000000000000000..89a7868d0eadcbcffd03ca8f40ba37c74ce6840e GIT binary patch literal 41219 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 z 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 TuX|}4Qt+Rax-I}EoAdt%pjPC? literal 0 HcmV?d00001 diff --git a/bench/devcloud/dr-bench-Sort-GPU.csv b/bench/devcloud/dr-bench-Sort-GPU.csv new file mode 100644 index 0000000000..57ab76d5f8 --- /dev/null +++ b/bench/devcloud/dr-bench-Sort-GPU.csv @@ -0,0 +1,3 @@ +,bench_name,Benchmark,Target,Ranks,Scaling,Bandwidth (TB/s),Bandwidth (GB/s),model,runtime,device,vsize,Number of GPU Tiles,Number of CPU Cores,Number of CPU Sockets,rtime +23,Sort_Reference,Sort,Reference_GPU,1,strong,0.010638319458936051,10.638319458936051,SHP,SYCL,GPU,2000000000,1,56,1.0,751.9984740898248 +93,Sort_DR,Sort,SHP_SYCL_GPU,1,strong,0.012145486239242229,12.14548623924223,SHP,SYCL,GPU,2000000000,1,56,1.0,658.6809158905382 diff --git a/bench/devcloud/dr-bench-Sort-GPU.png b/bench/devcloud/dr-bench-Sort-GPU.png new file mode 100644 index 0000000000000000000000000000000000000000..5b1a9f9b5c68ca3db7b07fcf32c676d5a47441fa GIT binary patch literal 15327 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 literal 0 HcmV?d00001 diff --git a/bench/devcloud/dr-bench-Stencil2D-CPU.csv b/bench/devcloud/dr-bench-Stencil2D-CPU.csv new file mode 100644 index 0000000000..244b4a4c86 --- /dev/null +++ b/bench/devcloud/dr-bench-Stencil2D-CPU.csv @@ -0,0 +1,6 @@ +,bench_name,Benchmark,Target,Ranks,Scaling,Bandwidth (TB/s),Bandwidth (GB/s),model,runtime,device,vsize,Number of GPU Tiles,Number of CPU Cores,Number of CPU Sockets,rtime +9,Stencil2D_DR,Stencil2D,MHP_DIRECT_CPU,56,strong,0.1455510707934147,145.5510707934147,MHP,DIRECT,CPU,2000000000,56,56,1.0,2198.8927890077766 +20,Stencil2D_DR,Stencil2D,MHP_DIRECT_CPU,112,strong,0.29013558526292693,290.13558526292695,MHP,DIRECT,CPU,2000000000,112,112,2.0,1103.1090850505736 +48,Stencil2D_DR,Stencil2D,MHP_SYCL_CPU,1,strong,0.10085429172971505,100.85429172971506,MHP,SYCL,CPU,2000000000,1,56,1.0,3172.8942270259113 +40,Stencil2D_DR,Stencil2D,MHP_SYCL_CPU,2,strong,0.20114644371203017,201.14644371203016,MHP,SYCL,CPU,2000000000,2,112,2.0,1590.8807239869757 +166,Stencil2D_Reference,Stencil2D,Reference_CPU,1,strong,0.10312469824374855,103.12469824374855,MHP,SYCL,CPU,2000000000,1,56,1.0,3103.039382899707 diff --git a/bench/devcloud/dr-bench-Stencil2D-CPU.png b/bench/devcloud/dr-bench-Stencil2D-CPU.png new file mode 100644 index 0000000000000000000000000000000000000000..2ba0ea39c0b9093f6f61cf1969cc9de435d72f00 GIT binary patch literal 39012 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 z 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%0AKwI9hTBl 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