What’s the reason behind the restriction incx != 0 in cublas*gemv functions?

It’s obvious that output vectors must have inc* != 0 (e.g. incy in cublas*axpy functions). But for input vectors incx == 0 can be used for passing vectors with constant values without array allocation.

And, for instance, we can use cublas*gemv to calculate sum of matrix rows/columns.

And it’s not obvious what lead to such restrictions, because code like x + i * incx is gonna work anyway. May be these restrictions can be lifted without changes in the kernel code?

Under cublasXdgmm, Example 2: if the user wants to perform α × A , then there are two choices, either cublasgeam with *beta=0 and transa == CUBLAS_OP_N or cublasdgmm with incx=0 and x[0]=alpha.

Please provide an example of what you’d like to do, but can’t.

My bad. I mixed up the functions. dgmm can’t be used to calculate sum of matrix rows/columns. I was talking about gemv (I’ve also fixed the first post). incx==0 in cublas*gemv leads to CUBLAS_STATUS_INVALID_VALUE.