-
Notifications
You must be signed in to change notification settings - Fork 27
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
P1673: Corrections #464
Comments
We should probably make that correction against the current draft instead of P1673. |
@dalg24 kokkos/stdBLAS#274 appears to look at the current draft. I'll revise my comments there. |
P1673: Corrections (updated)BLAS 2[linalg.algs.blas2.gemv]
[linalg.algs.blas2.symv]
[linalg.algs.blas2.hemv]
[linalg.algs.blas2.trmv](The extents compatibility conditions are expressed differently than in the above matrix-vector multiply sections, perhaps more for consistency with the TRSV section below. They look correct here.)
Rest of BLAS 2 (is fine)BLAS 3OK: [linalg.algs.blas3.xxmm], [linalg.algs.blas3.trmm] [linalg.algs.blas3.rankk](C is the symmetric or Hermitian matrix, not A. C needs to be square, not necessarily A.)
[linalg.algs.blas3.rank2k](C is the symmetric or Hermitian matrix, not A or B. C needs to be square, not necessarily A or B. A, B, and C must have the same number of rows. A and B must have the same number of columns (they must both be N x K for some K not necessarily equal to N).)
[linalg.algs.blas3.trsm](Nothing is wrong here, but it's nice to make the complexity clauses depend only on input if possible.)
(Complexity clause 14, for the right solve, is fine.) [linalg.algs.blas3.inplacetrsm]
|
@mhoemmen a few comments:
The change you propose is wrong as it converts to O(n^3) if we assume A(n,k), C(n,n). I suppose you mean "O(
The change proposed for 4.1 is wrong. It should read: However, the second part of the proposed statements for 3.2 and 4.1 is superfluous as:
This proposed change is wrong as it would convert to O(n k^2) if we assume A(n,k), B(n,k) and C(n,n).
The suggested change is correct. But note that the original statement is wrong as X is not a square matrix and has the same size as B. Finally one of the errors has not been reported here: [linalg.algs.blas3.trmm]
|
Oh, I made some typos there! Thanks for reviewing! |
More bugs, found by my colleague Ilya Burylov
|
More bugs, found by my colleague Ilya BurylovSpecify what happens if
|
These issues have been submitted as the following LWG / wording issues. Thanks all! |
P1673: Corrections
BLAS 3
[linalg.algs.blas3.rankk]
C is the symmetric or Hermitian matrix, not A, so A doesn't have to be square. (C does need to be square, though.)
Replace (2.2) with "
compatible-static-extents
<decltype(C), decltype(C)>(0, 1)
istrue
"Replace (2.3) and (2.4) with
possibly-multipliable
<decltype(A), decltype(transposed(A)), C>
Replace (3.1) with "
C.extent(0)
equalsC.extent(1)
"Replace (3.2) and (3.3) with "
multipliable
(A, transposed(A), C)
"[linalg.algs.blas3.rank2k]
C is the symmetric or Hermitian matrix, not A or B, so A (or B) doesn't have to be square. (C does need to be square, though.) A, B, and C must have the same number of rows. A and B must have the same number of columns (they must both be N x K for some K not necessarily equal to N).
Replace (2.2) with "
possibly-multipliable
<decltype(A), decltype(transposed(B)), decltype(C)>
istrue
andpossibly-multipliable
<decltype(B), decltype(transposed(A)), decltype(C)>
istrue
"Replace (2.3) with "
compatible-static-extents
<decltype(C), decltype(C)>(0, 1)
istrue
"Replace (3.1) with "
multipliable
(A, transposed(B), C)
istrue
andmultipliable
(transposed(B), A, C)
istrue
"Replace (3.2) with "
C.extent(0)
equalsC.extent(1)
"The text was updated successfully, but these errors were encountered: