Uni20
Asynchronous tensor and runtime library.
Loading...
Searching...
No Matches
mdspan_access.hpp
Go to the documentation of this file.
1#pragma once
2
11
12#include <cstddef>
13#include <type_traits>
14
15namespace uni20::linalg::blas::detail
16{
17
18template <class Accessor>
19struct is_blas_direct_read_accessor : std::bool_constant<uni20::is_default_accessor_v<Accessor>>
20{};
21
22template <uni20::AccessorPolicy Accessor>
23struct is_blas_direct_read_accessor<uni20::conjugated_accessor<Accessor>>
24 : std::bool_constant<uni20::is_default_accessor_v<Accessor>>
25{};
26
27template <class Accessor>
28inline constexpr bool is_blas_direct_read_accessor_v =
29 is_blas_direct_read_accessor<std::remove_cvref_t<Accessor>>::value;
30
31template <class Mdspan, std::size_t Rank>
32concept blas_readable_mdspec =
35 is_blas_direct_read_accessor_v<typename std::remove_cvref_t<Mdspan>::accessor_type>;
36
37template <class Mdspan, std::size_t Rank>
38concept blas_readable_mdspan = uni20::RankedStridedMdspanLike<Mdspan, Rank> && blas_readable_mdspec<Mdspan, Rank>;
39
40template <class Mdspan, std::size_t Rank>
41concept blas_writable_mdspec =
44 uni20::is_default_accessor_v<typename std::remove_cvref_t<Mdspan>::accessor_type>;
45
46template <class Mdspan, std::size_t Rank>
47concept blas_writable_mdspan =
48 uni20::MutableRankedStridedMdspanLike<Mdspan, Rank> && blas_writable_mdspec<Mdspan, Rank>;
49
50} // namespace uni20::linalg::blas::detail
Scalar types supported by the configured raw-pointer BLAS wrappers.
Definition scalar_concepts.hpp:105
A mutable strided mdspan-like type with a specified static rank.
Definition mdspan/concepts.hpp:532
Mutable strided mdspec-like type with a specified static rank.
Definition mdspan/concepts.hpp:524
A strided mdspan-like type with a specified static rank.
Definition mdspan/concepts.hpp:509
A strided mdspec-like type with a specified static rank.
Definition mdspan/concepts.hpp:516
Mdspan accessor adaptor for lazy complex conjugation.
locale_t value
Definition data_table.cpp:49
Definition async/async.hpp:26