1
1
# -------------------------------------------------------------------------------------------
2
2
# StridedView implementation
3
3
# -------------------------------------------------------------------------------------------
4
+
5
+ # default backends
6
+ function tensoradd! (C:: StridedView ,
7
+ A:: StridedView , pA:: Index2Tuple , conjA:: Symbol ,
8
+ α:: Number , β:: Number )
9
+ backend = eltype (C) isa BlasFloat ? StridedBLAS () : StridedNative ()
10
+ return tensoradd! (C, A, pA, conjA, α, β, backend)
11
+ end
12
+ function tensortrace! (C:: StridedView ,
13
+ A:: StridedView , p:: Index2Tuple , q:: Index2Tuple , conjA:: Symbol ,
14
+ α:: Number , β:: Number )
15
+ backend = eltype (C) isa BlasFloat ? StridedBLAS () : StridedNative ()
16
+ return tensortrace! (C, A, p, q, conjA, α, β, backend)
17
+ end
18
+ function tensorcontract! (C:: StridedView ,
19
+ A:: StridedView , pA:: Index2Tuple , conjA:: Symbol ,
20
+ B:: StridedView , pB:: Index2Tuple , conjB:: Symbol ,
21
+ pAB:: Index2Tuple , α:: Number , β:: Number )
22
+ backend = eltype (C) isa BlasFloat ? StridedBLAS () : StridedNative ()
23
+ return tensorcontract! (C, A, pA, conjA, B, pB, conjB, pAB, α, β, backend)
24
+ end
25
+
4
26
function tensoradd! (C:: StridedView ,
5
27
A:: StridedView , pA:: Index2Tuple , conjA:: Symbol ,
6
28
α:: Number , β:: Number ,
7
- backend :: Union{StridedNative,StridedBLAS} = StridedNative () )
29
+ :: Union{StridedNative,StridedBLAS} )
8
30
argcheck_tensoradd (C, A, pA)
9
31
dimcheck_tensoradd (C, A, pA)
10
32
if ! istrivialpermutation (pA) && Base. mightalias (C, A)
21
43
function tensortrace! (C:: StridedView ,
22
44
A:: StridedView , p:: Index2Tuple , q:: Index2Tuple , conjA:: Symbol ,
23
45
α:: Number , β:: Number ,
24
- backend :: Union{StridedNative,StridedBLAS} = StridedNative () )
46
+ :: Union{StridedNative,StridedBLAS} )
25
47
argcheck_tensortrace (C, A, p, q)
26
48
dimcheck_tensortrace (C, A, p, q)
27
49
@@ -41,12 +63,11 @@ function tensortrace!(C::StridedView,
41
63
return C
42
64
end
43
65
44
- function tensorcontract! (C:: StridedView{T} ,
66
+ function tensorcontract! (C:: StridedView ,
45
67
A:: StridedView , pA:: Index2Tuple , conjA:: Symbol ,
46
68
B:: StridedView , pB:: Index2Tuple , conjB:: Symbol ,
47
69
pAB:: Index2Tuple ,
48
- α:: Number , β:: Number ,
49
- backend:: StridedBLAS = StridedBLAS ()) where {T<: LinearAlgebra.BlasFloat }
70
+ α:: Number , β:: Number , :: StridedBLAS )
50
71
argcheck_tensorcontract (C, A, pA, B, pB, pAB)
51
72
dimcheck_tensorcontract (C, A, pA, B, pB, pAB)
52
73
@@ -74,7 +95,7 @@ function tensorcontract!(C::StridedView{T,2},
74
95
A:: StridedView{T,2} , pA:: Index2Tuple{1,1} , conjA:: Symbol ,
75
96
B:: StridedView{T,2} , pB:: Index2Tuple{1,1} , conjB:: Symbol ,
76
97
pAB:: Index2Tuple{1,1} , α:: Number , β:: Number ,
77
- backend :: StridedBLAS = StridedBLAS ()) where {T<: LinearAlgebra.BlasFloat }
98
+ :: StridedBLAS ) where {T}
78
99
argcheck_tensorcontract (C, A, pA, B, pB, pAB)
79
100
dimcheck_tensorcontract (C, A, pA, B, pB, pAB)
80
101
@@ -97,7 +118,7 @@ function tensorcontract!(C::StridedView,
97
118
A:: StridedView , pA:: Index2Tuple , conjA:: Symbol ,
98
119
B:: StridedView , pB:: Index2Tuple , conjB:: Symbol ,
99
120
pAB:: Index2Tuple , α:: Number , β:: Number ,
100
- backend :: StridedNative )
121
+ :: StridedNative )
101
122
argcheck_tensorcontract (C, A, pA, B, pB, pAB)
102
123
dimcheck_tensorcontract (C, A, pA, B, pB, pAB)
103
124
0 commit comments