Skip to content

Commit

Permalink
Merge pull request #41 from yasahi-hpc/refactor-heat3d-mpi
Browse files Browse the repository at this point in the history
Fix core mapping issues for CPUs
  • Loading branch information
yasahi-hpc authored Oct 30, 2023
2 parents 3894f35 + 9062b1a commit 73b9fbd
Show file tree
Hide file tree
Showing 32 changed files with 1,053 additions and 351 deletions.
2 changes: 1 addition & 1 deletion ext_lib/eigen
Submodule eigen updated from 18018e to 6f9ad7
2 changes: 1 addition & 1 deletion ext_lib/json
Submodule json updated 92 files
+2 −0 .clang-tidy
+1 −0 .github/workflows/windows.yml
+3 −0 .gitignore
+1 −1 CMakeLists.txt
+2 −1 Makefile
+22 −0 Package.swift
+2 −0 README.md
+6 −7 docs/examples/at__json_pointer.cpp
+5 −5 docs/examples/at__json_pointer_const.cpp
+2 −3 docs/examples/at__keytype.c++17.cpp
+2 −3 docs/examples/at__keytype_const.c++17.cpp
+2 −3 docs/examples/at__object_t_key_type.cpp
+2 −3 docs/examples/at__object_t_key_type_const.cpp
+2 −3 docs/examples/at__size_type.cpp
+2 −3 docs/examples/at__size_type_const.cpp
+1 −1 docs/examples/back.cpp
+0 −4 docs/examples/basic_json__CompatibleType.cpp
+1 −1 docs/examples/basic_json__InputIt_InputIt.cpp
+1 −1 docs/examples/cbor_tag_handler_t.cpp
+2 −2 docs/examples/contains__json_pointer.cpp
+1 −1 docs/examples/diagnostics_extended.cpp
+1 −1 docs/examples/diagnostics_standard.cpp
+1 −1 docs/examples/dump.cpp
+1 −1 docs/examples/error_handler_t.cpp
+1 −1 docs/examples/exception.cpp
+1 −1 docs/examples/get_ref.cpp
+0 −1 docs/examples/get_to.cpp
+1 −1 docs/examples/invalid_iterator.cpp
+3 −3 docs/examples/json_pointer.cpp
+1 −1 docs/examples/nlohmann_define_type_intrusive_explicit.cpp
+1 −1 docs/examples/nlohmann_define_type_intrusive_macro.cpp
+1 −1 docs/examples/nlohmann_define_type_non_intrusive_explicit.cpp
+1 −1 docs/examples/nlohmann_define_type_non_intrusive_macro.cpp
+1 −1 docs/examples/object.cpp
+1 −1 docs/examples/operator__ValueType.cpp
+0 −1 docs/examples/operator_spaceship__const_reference.c++20.cpp
+0 −1 docs/examples/operator_spaceship__scalartype.c++20.cpp
+1 −1 docs/examples/other_error.cpp
+1 −1 docs/examples/out_of_range.cpp
+1 −1 docs/examples/parse__allow_exceptions.cpp
+0 −1 docs/examples/parse__istream__parser_callback_t.cpp
+0 −1 docs/examples/parse__string__parser_callback_t.cpp
+1 −1 docs/examples/parse_error.cpp
+1 −1 docs/examples/type_error.cpp
+2 −2 docs/mkdocs/docs/api/basic_json/index.md
+31 −0 docs/mkdocs/docs/api/macros/json_has_static_rtti.md
+4 −4 docs/mkdocs/docs/api/macros/nlohmann_define_type_intrusive.md
+4 −4 docs/mkdocs/docs/api/macros/nlohmann_define_type_non_intrusive.md
+2 −2 docs/mkdocs/docs/api/operator_literal_json.md
+2 −2 docs/mkdocs/docs/api/operator_literal_json_pointer.md
+0 −1 include/nlohmann/detail/exceptions.hpp
+0 −1 include/nlohmann/detail/input/binary_reader.hpp
+1 −4 include/nlohmann/detail/input/input_adapters.hpp
+2 −3 include/nlohmann/detail/input/json_sax.hpp
+1 −1 include/nlohmann/detail/input/lexer.hpp
+2 −2 include/nlohmann/detail/iterators/iteration_proxy.hpp
+8 −1 include/nlohmann/detail/macro_scope.hpp
+1 −0 include/nlohmann/detail/macro_unscope.hpp
+0 −3 include/nlohmann/detail/meta/type_traits.hpp
+33 −29 include/nlohmann/json.hpp
+48 −45 single_include/nlohmann/json.hpp
+1 −1 tests/CMakeLists.txt
+1 −1 tests/abi/include/nlohmann/json_v3_10_5.hpp
+1 −1 tests/benchmarks/CMakeLists.txt
+0 −2 tests/benchmarks/src/benchmarks.cpp
+1 −1 tests/cmake_add_subdirectory/project/CMakeLists.txt
+1 −1 tests/cmake_fetch_content/project/CMakeLists.txt
+1 −1 tests/cmake_import/project/CMakeLists.txt
+1 −1 tests/cmake_import_minver/project/CMakeLists.txt
+1 −1 tests/cmake_target_include_directories/project/CMakeLists.txt
+1 −1 tests/src/fuzzer-parse_bjdata.cpp
+1 −1 tests/src/fuzzer-parse_ubjson.cpp
+0 −2 tests/src/unit-32bit.cpp
+0 −4 tests/src/unit-algorithms.cpp
+0 −2 tests/src/unit-alt-string.cpp
+0 −1 tests/src/unit-bjdata.cpp
+1 −2 tests/src/unit-bson.cpp
+1 −1 tests/src/unit-cbor.cpp
+5 −5 tests/src/unit-class_parser.cpp
+0 −1 tests/src/unit-constructor1.cpp
+0 −1 tests/src/unit-custom-base-class.cpp
+2 −3 tests/src/unit-element_access2.cpp
+0 −1 tests/src/unit-iterators2.cpp
+1 −2 tests/src/unit-json_pointer.cpp
+2 −2 tests/src/unit-msgpack.cpp
+3 −3 tests/src/unit-no-mem-leak-on-adl-serialize.cpp
+0 −1 tests/src/unit-ordered_json.cpp
+0 −1 tests/src/unit-ordered_map.cpp
+0 −1 tests/src/unit-regression1.cpp
+1 −1 tests/src/unit-unicode1.cpp
+2 −2 tests/thirdparty/fifo_map/fifo_map.hpp
+1 −1 tools/serve_header/README.md
2 changes: 1 addition & 1 deletion ext_lib/mdspan
Submodule mdspan updated 110 files
2 changes: 1 addition & 1 deletion ext_lib/stdexec
Submodule stdexec updated 160 files
52 changes: 26 additions & 26 deletions lib/executors/numpy_like.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,13 @@ namespace Impl {

for(int ir=0; ir < reduce_size; ir++) {
if(reduce_dim == 0) {
auto sub_in = stdex::submdspan(in, ir, std::full_extent, std::full_extent);
auto sub_in = std::submdspan(in, ir, std::full_extent, std::full_extent);
sum += sub_in(i0, i1);
} else if(reduce_dim == 1) {
auto sub_in = stdex::submdspan(in, std::full_extent, ir, std::full_extent);
auto sub_in = std::submdspan(in, std::full_extent, ir, std::full_extent);
sum += sub_in(i0, i1);
} else {
auto sub_in = stdex::submdspan(in, std::full_extent, std::full_extent, ir);
auto sub_in = std::submdspan(in, std::full_extent, std::full_extent, ir);
sum += sub_in(i0, i1);
}
}
Expand All @@ -56,13 +56,13 @@ namespace Impl {
assert(out.extent(reduce_dim) == 1);

if(reduce_dim == 0) {
auto sub_out = stdex::submdspan(out, 0, std::full_extent, std::full_extent);
auto sub_out = std::submdspan(out, 0, std::full_extent, std::full_extent);
mean_(in, sub_out, axis);
} else if(reduce_dim == 1) {
auto sub_out = stdex::submdspan(out, std::full_extent, 0, std::full_extent);
auto sub_out = std::submdspan(out, std::full_extent, 0, std::full_extent);
mean_(in, sub_out, axis);
} else {
auto sub_out = stdex::submdspan(out, std::full_extent, std::full_extent, 0);
auto sub_out = std::submdspan(out, std::full_extent, std::full_extent, 0);
mean_(in, sub_out, axis);
}
}
Expand All @@ -85,10 +85,10 @@ namespace Impl {

for(int ir=0; ir < reduce_size; ir++) {
if(reduce_dim == 0) {
auto sub_in = stdex::submdspan(in, ir, std::full_extent);
auto sub_in = std::submdspan(in, ir, std::full_extent);
sum += sub_in(idx);
} else {
auto sub_in = stdex::submdspan(in, std::full_extent, ir);
auto sub_in = std::submdspan(in, std::full_extent, ir);
sum += sub_in(idx);
}
}
Expand All @@ -105,10 +105,10 @@ namespace Impl {
assert(out.extent(reduce_dim) == 1);

if(reduce_dim == 0) {
auto sub_out = stdex::submdspan(out, 0, std::full_extent);
auto sub_out = std::submdspan(out, 0, std::full_extent);
mean_(in, sub_out, axis);
} else {
auto sub_out = stdex::submdspan(out, std::full_extent, 0);
auto sub_out = std::submdspan(out, std::full_extent, 0);
mean_(in, sub_out, axis);
}
}
Expand Down Expand Up @@ -340,10 +340,10 @@ namespace Impl {
x(i0, i1) = alpha * x(i0, i1) + beta * y(i0, i1);
});
} else if( ny0 == 1 && ny0 < nx0 && ny1 == nx1 ) {
auto sub_y = stdex::submdspan(y, 0, std::full_extent);
auto sub_y = std::submdspan(y, 0, std::full_extent);
axpy_(x, sub_y, beta, alpha, 1);
} else if( ny0 == nx0 && ny1 == 1 && ny1 < nx1 ) {
auto sub_y = stdex::submdspan(y, std::full_extent, 0);
auto sub_y = std::submdspan(y, std::full_extent, 0);
axpy_(x, sub_y, beta, alpha, 0);
} else if( ny0 == 1 && ny0 < nx0 && ny1 == 1 && ny1 < nx1 ) {
IteratePolicy<typename InoutView::layout_type, 2> policy2d({0, 0}, {nx0, nx1});
Expand Down Expand Up @@ -380,10 +380,10 @@ namespace Impl {
z(i0, i1) = alpha * x(i0, i1) + beta * y(i0, i1);
});
} else if( ny0 == 1 && ny0 < nx0 && ny1 == nx1 ) {
auto sub_y = stdex::submdspan(y, 0, std::full_extent);
auto sub_y = std::submdspan(y, 0, std::full_extent);
axpy_(x, sub_y, z, beta, alpha, 1);
} else if( ny0 == nx0 && ny1 == 1 && ny1 < nx1 ) {
auto sub_y = stdex::submdspan(y, std::full_extent, 0);
auto sub_y = std::submdspan(y, std::full_extent, 0);
axpy_(x, sub_y, z, beta, alpha, 0);
} else if( ny0 == 1 && ny0 < nx0 && ny1 == 1 && ny1 < nx1 ) {
IteratePolicy<typename InoutView::layout_type, 2> policy2d({0, 0}, {nx0, nx1});
Expand Down Expand Up @@ -572,22 +572,22 @@ namespace Impl {
x(i0, i1, i2) = alpha * x(i0, i1, i2) + beta * y(i0, i1, i2);
});
} else if( ny0 == 1 && ny0 < nx0 && ny1 == nx1 && ny2 == nx2 ) {
auto sub_y = stdex::submdspan(y, 0, std::full_extent, std::full_extent);
auto sub_y = std::submdspan(y, 0, std::full_extent, std::full_extent);
axpy_(x, sub_y, beta, alpha, 0);
} else if( ny0 == 1 && ny0 < nx0 && ny1 == 1 && ny1 < nx1 && ny2 == nx2 ) {
auto sub_y = stdex::submdspan(y, 0, 0, std::full_extent);
auto sub_y = std::submdspan(y, 0, 0, std::full_extent);
axpy_(x, sub_y, beta, alpha, 2);
} else if( ny0 == 1 && ny0 < nx0 && ny1 == nx1 && ny2 == 1 && ny2 < nx2 ) {
auto sub_y = stdex::submdspan(y, 0, std::full_extent, 0);
auto sub_y = std::submdspan(y, 0, std::full_extent, 0);
axpy_(x, sub_y, beta, alpha, 1);
} else if( ny0 == nx0 && ny1 == 1 && ny1 < nx1 && ny2 == nx2 ) {
auto sub_y = stdex::submdspan(y, std::full_extent, 0, std::full_extent);
auto sub_y = std::submdspan(y, std::full_extent, 0, std::full_extent);
axpy_(x, sub_y, beta, alpha, 1);
} else if( ny0 == nx0 && ny1 == 1 && ny1 < nx1 && ny2 == 1 && ny2 < nx2 ) {
auto sub_y = stdex::submdspan(y, std::full_extent, 0, 0);
auto sub_y = std::submdspan(y, std::full_extent, 0, 0);
axpy_(x, sub_y, beta, alpha, 0);
} else if( ny0 == nx0 && ny1 == nx1 && ny2 == 1 && ny2 < nx2 ) {
auto sub_y = stdex::submdspan(y, std::full_extent, std::full_extent, 0);
auto sub_y = std::submdspan(y, std::full_extent, std::full_extent, 0);
axpy_(x, sub_y, beta, alpha, 2);
} else if( ny0 == 1 && ny0 < nx0 && ny1 == 1 && ny1 < nx1 && ny2 == 1 && ny2 < nx2 ) {
IteratePolicy<typename InoutView::layout_type, 3> policy3d({0, 0, 0}, {nx0, nx1, nx2});
Expand Down Expand Up @@ -625,22 +625,22 @@ namespace Impl {
z(i0, i1, i2) = alpha * x(i0, i1, i2) + beta * y(i0, i1, i2);
});
} else if( ny0 == 1 && ny0 < nx0 && ny1 == nx1 && ny2 == nx2 ) {
auto sub_y = stdex::submdspan(y, 0, std::full_extent, std::full_extent);
auto sub_y = std::submdspan(y, 0, std::full_extent, std::full_extent);
axpy_(x, sub_y, z, beta, alpha, 0);
} else if( ny0 == 1 && ny0 < nx0 && ny1 == 1 && ny1 < nx1 && ny2 == nx2 ) {
auto sub_y = stdex::submdspan(y, 0, 0, std::full_extent);
auto sub_y = std::submdspan(y, 0, 0, std::full_extent);
axpy_(x, sub_y, z, beta, alpha, 2);
} else if( ny0 == 1 && ny0 < nx0 && ny1 == nx1 && ny2 == 1 && ny2 < nx2 ) {
auto sub_y = stdex::submdspan(y, 0, std::full_extent, 0);
auto sub_y = std::submdspan(y, 0, std::full_extent, 0);
axpy_(x, sub_y, z, beta, alpha, 1);
} else if( ny0 == nx0 && ny1 == 1 && ny1 < nx1 && ny2 == nx2 ) {
auto sub_y = stdex::submdspan(y, std::full_extent, 0, std::full_extent);
auto sub_y = std::submdspan(y, std::full_extent, 0, std::full_extent);
axpy_(x, sub_y, z, beta, alpha, 1);
} else if( ny0 == nx0 && ny1 == 1 && ny1 < nx1 && ny2 == 1 && ny2 < nx2 ) {
auto sub_y = stdex::submdspan(y, std::full_extent, 0, 0);
auto sub_y = std::submdspan(y, std::full_extent, 0, 0);
axpy_(x, sub_y, z, beta, alpha, 0);
} else if( ny0 == nx0 && ny1 == nx1 && ny2 == 1 && ny2 < nx2 ) {
auto sub_y = stdex::submdspan(y, std::full_extent, std::full_extent, 0);
auto sub_y = std::submdspan(y, std::full_extent, std::full_extent, 0);
axpy_(x, sub_y, z, beta, alpha, 2);
} else if( ny0 == 1 && ny0 < nx0 && ny1 == 1 && ny1 < nx1 && ny2 == 1 && ny2 < nx2 ) {
IteratePolicy<typename InoutView::layout_type, 3> policy3d({0, 0, 0}, {nx0, nx1, nx2});
Expand Down
52 changes: 26 additions & 26 deletions lib/stdpar/numpy_like.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -76,13 +76,13 @@ namespace Impl {

for(int ir=0; ir < reduce_size; ir++) {
if(reduce_dim == 0) {
auto sub_in = stdex::submdspan(in, ir, std::full_extent, std::full_extent);
auto sub_in = std::submdspan(in, ir, std::full_extent, std::full_extent);
sum += sub_in(i0, i1);
} else if(reduce_dim == 1) {
auto sub_in = stdex::submdspan(in, std::full_extent, ir, std::full_extent);
auto sub_in = std::submdspan(in, std::full_extent, ir, std::full_extent);
sum += sub_in(i0, i1);
} else {
auto sub_in = stdex::submdspan(in, std::full_extent, std::full_extent, ir);
auto sub_in = std::submdspan(in, std::full_extent, std::full_extent, ir);
sum += sub_in(i0, i1);
}
}
Expand All @@ -99,13 +99,13 @@ namespace Impl {
assert(out.extent(reduce_dim) == 1);

if(reduce_dim == 0) {
auto sub_out = stdex::submdspan(out, 0, std::full_extent, std::full_extent);
auto sub_out = std::submdspan(out, 0, std::full_extent, std::full_extent);
mean_(in, sub_out, axis);
} else if(reduce_dim == 1) {
auto sub_out = stdex::submdspan(out, std::full_extent, 0, std::full_extent);
auto sub_out = std::submdspan(out, std::full_extent, 0, std::full_extent);
mean_(in, sub_out, axis);
} else {
auto sub_out = stdex::submdspan(out, std::full_extent, std::full_extent, 0);
auto sub_out = std::submdspan(out, std::full_extent, std::full_extent, 0);
mean_(in, sub_out, axis);
}
}
Expand All @@ -127,10 +127,10 @@ namespace Impl {

for(int ir=0; ir < reduce_size; ir++) {
if(reduce_dim == 0) {
auto sub_in = stdex::submdspan(in, ir, std::full_extent);
auto sub_in = std::submdspan(in, ir, std::full_extent);
sum += sub_in(idx);
} else {
auto sub_in = stdex::submdspan(in, std::full_extent, ir);
auto sub_in = std::submdspan(in, std::full_extent, ir);
sum += sub_in(idx);
}
}
Expand All @@ -147,10 +147,10 @@ namespace Impl {
assert(out.extent(reduce_dim) == 1);

if(reduce_dim == 0) {
auto sub_out = stdex::submdspan(out, 0, std::full_extent);
auto sub_out = std::submdspan(out, 0, std::full_extent);
mean_(in, sub_out, axis);
} else {
auto sub_out = stdex::submdspan(out, std::full_extent, 0);
auto sub_out = std::submdspan(out, std::full_extent, 0);
mean_(in, sub_out, axis);
}
}
Expand Down Expand Up @@ -368,10 +368,10 @@ namespace Impl {
x(i0, i1) = alpha * x(i0, i1) + beta * y(i0, i1);
});
} else if( ny0 == 1 && ny0 < nx0 && ny1 == nx1 ) {
auto sub_y = stdex::submdspan(y, 0, std::full_extent);
auto sub_y = std::submdspan(y, 0, std::full_extent);
axpy_(x, sub_y, beta, alpha, 1);
} else if( ny0 == nx0 && ny1 == 1 && ny1 < nx1 ) {
auto sub_y = stdex::submdspan(y, std::full_extent, 0);
auto sub_y = std::submdspan(y, std::full_extent, 0);
axpy_(x, sub_y, beta, alpha, 0);
} else if( ny0 == 1 && ny0 < nx0 && ny1 == 1 && ny1 < nx1 ) {
IteratePolicy<typename InoutView::layout_type, 2> policy2d({0, 0}, {nx0, nx1});
Expand Down Expand Up @@ -404,10 +404,10 @@ namespace Impl {
z(i0, i1) = alpha * x(i0, i1) + beta * y(i0, i1);
});
} else if( ny0 == 1 && ny0 < nx0 && ny1 == nx1 ) {
auto sub_y = stdex::submdspan(y, 0, std::full_extent);
auto sub_y = std::submdspan(y, 0, std::full_extent);
axpy_(x, sub_y, z, beta, alpha, 1);
} else if( ny0 == nx0 && ny1 == 1 && ny1 < nx1 ) {
auto sub_y = stdex::submdspan(y, std::full_extent, 0);
auto sub_y = std::submdspan(y, std::full_extent, 0);
axpy_(x, sub_y, z, beta, alpha, 0);
} else if( ny0 == 1 && ny0 < nx0 && ny1 == 1 && ny1 < nx1 ) {
IteratePolicy<typename InoutView::layout_type, 2> policy2d({0, 0}, {nx0, nx1});
Expand Down Expand Up @@ -573,22 +573,22 @@ namespace Impl {
});

} else if( ny0 == 1 && ny0 < nx0 && ny1 == nx1 && ny2 == nx2 ) {
auto sub_y = stdex::submdspan(y, 0, std::full_extent, std::full_extent);
auto sub_y = std::submdspan(y, 0, std::full_extent, std::full_extent);
axpy_(x, sub_y, beta, alpha, 0);
} else if( ny0 == 1 && ny0 < nx0 && ny1 == 1 && ny1 < nx1 && ny2 == nx2 ) {
auto sub_y = stdex::submdspan(y, 0, 0, std::full_extent);
auto sub_y = std::submdspan(y, 0, 0, std::full_extent);
axpy_(x, sub_y, beta, alpha, 2);
} else if( ny0 == 1 && ny0 < nx0 && ny1 == nx1 && ny2 == 1 && ny2 < nx2 ) {
auto sub_y = stdex::submdspan(y, 0, std::full_extent, 0);
auto sub_y = std::submdspan(y, 0, std::full_extent, 0);
axpy_(x, sub_y, beta, alpha, 1);
} else if( ny0 == nx0 && ny1 == 1 && ny1 < nx1 && ny2 == nx2 ) {
auto sub_y = stdex::submdspan(y, std::full_extent, 0, std::full_extent);
auto sub_y = std::submdspan(y, std::full_extent, 0, std::full_extent);
axpy_(x, sub_y, beta, alpha, 1);
} else if( ny0 == nx0 && ny1 == 1 && ny1 < nx1 && ny2 == 1 && ny2 < nx2 ) {
auto sub_y = stdex::submdspan(y, std::full_extent, 0, 0);
auto sub_y = std::submdspan(y, std::full_extent, 0, 0);
axpy_(x, sub_y, beta, alpha, 0);
} else if( ny0 == nx0 && ny1 == nx1 && ny2 == 1 && ny2 < nx2 ) {
auto sub_y = stdex::submdspan(y, std::full_extent, std::full_extent, 0);
auto sub_y = std::submdspan(y, std::full_extent, std::full_extent, 0);
axpy_(x, sub_y, beta, alpha, 2);
} else if( ny0 == 1 && ny0 < nx0 && ny1 == 1 && ny1 < nx1 && ny2 == 1 && ny2 < nx2 ) {
IteratePolicy<typename InoutView::layout_type, 3> policy3d({0, 0, 0}, {nx0, nx1, nx2});
Expand Down Expand Up @@ -620,22 +620,22 @@ namespace Impl {
z(i0, i1, i2) = alpha * x(i0, i1, i2) + beta * y(i0, i1, i2);
});
} else if( ny0 == 1 && ny0 < nx0 && ny1 == nx1 && ny2 == nx2 ) {
auto sub_y = stdex::submdspan(y, 0, std::full_extent, std::full_extent);
auto sub_y = std::submdspan(y, 0, std::full_extent, std::full_extent);
axpy_(x, sub_y, z, beta, alpha, 0);
} else if( ny0 == 1 && ny0 < nx0 && ny1 == 1 && ny1 < nx1 && ny2 == nx2 ) {
auto sub_y = stdex::submdspan(y, 0, 0, std::full_extent);
auto sub_y = std::submdspan(y, 0, 0, std::full_extent);
axpy_(x, sub_y, z, beta, alpha, 2);
} else if( ny0 == 1 && ny0 < nx0 && ny1 == nx1 && ny2 == 1 && ny2 < nx2 ) {
auto sub_y = stdex::submdspan(y, 0, std::full_extent, 0);
auto sub_y = std::submdspan(y, 0, std::full_extent, 0);
axpy_(x, sub_y, z, beta, alpha, 1);
} else if( ny0 == nx0 && ny1 == 1 && ny1 < nx1 && ny2 == nx2 ) {
auto sub_y = stdex::submdspan(y, std::full_extent, 0, std::full_extent);
auto sub_y = std::submdspan(y, std::full_extent, 0, std::full_extent);
axpy_(x, sub_y, z, beta, alpha, 1);
} else if( ny0 == nx0 && ny1 == 1 && ny1 < nx1 && ny2 == 1 && ny2 < nx2 ) {
auto sub_y = stdex::submdspan(y, std::full_extent, 0, 0);
auto sub_y = std::submdspan(y, std::full_extent, 0, 0);
axpy_(x, sub_y, z, beta, alpha, 0);
} else if( ny0 == nx0 && ny1 == nx1 && ny2 == 1 && ny2 < nx2 ) {
auto sub_y = stdex::submdspan(y, std::full_extent, std::full_extent, 0);
auto sub_y = std::submdspan(y, std::full_extent, std::full_extent, 0);
axpy_(x, sub_y, z, beta, alpha, 2);
} else if( ny0 == 1 && ny0 < nx0 && ny1 == 1 && ny1 < nx1 && ny2 == 1 && ny2 < nx2 ) {
IteratePolicy<typename InoutView::layout_type, 3> policy3d({0, 0, 0}, {nx0, nx1, nx2});
Expand Down
Loading

0 comments on commit 73b9fbd

Please sign in to comment.