You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A batched SYRK would be very useful for solving Schur complement systems, which are common in many applications. Each problem in the batch first forms a matrix like A^T A, then factorizes it with potrfBatched. Today the only batched option for the first step is GEMM, which computes the full matrix, but actually only the upper or lower triangular part is needed for the subsequent factorization. As a result, half of the computation is wasted.
It would be great to have a batched (and strided-batched) SYRK. Thanks!
Thanks for sharing your input! As you mentioned, computing only upper|lower triangle is exactly the saving a batched SYRK would provide for the Schur complement use case (form A^T A, then potrfBatched). To help us scope this, could you share below details?
Precision: FP32, FP64, or complex, to match the potrfBatched variant you use?
Typical sizes: n (output dimension), k, and batch count.
Uniform or variable sizes: are all problems in a batch the same size, or do sizes vary across the batch?
Target GPUs: which architectures are you running on?
When solving a batch of QPs, I need to construct and factorize the Schur complement of the KKT system: $L=\text{chol}(P+A^TA)$
Precision: I only use FP32 and FP64. I personally do not need to deal with complex numbers.
Typical sizes: I mainly consider small problems where the matrix sizes are usually below 100*100, batch size can reach hundreds or thousands, depending on the applications. Although under these sizes I can write custom cuda kernels and achieve good performance, I believe extending the SYRK in cuBLAS to batched is valuable itself.
Uniform or variable sizes: in my case I only deal with uniform batch size.
Target GPUs: I'm currently using an NVIDIA GeForce RTX 5090.
Activity
vamsi-sripathi commentedon Oct 29, 2026
Hi @FenglongSong,
Thanks for sharing your input! As you mentioned, computing only upper|lower triangle is exactly the saving a batched SYRK would provide for the Schur complement use case (form
A^T A, thenpotrfBatched). To help us scope this, could you share below details?potrfBatchedvariant you use?FenglongSong commentedon Oct 29, 2026
Hi @vamsi-sripathi,
Thanks for the response! My use case is to develop batched quadratic programming (QP) solver on GPU: https://github.com/PREDICT-EPFL/cupiqp.
When solving a batch of QPs, I need to construct and factorize the Schur complement of the KKT system:$L=\text{chol}(P+A^TA)$