skcuda.linalg.dot_diag(d_gpu, a_gpu, trans='N', overwrite=False, handle=None)[source]

Dot product of diagonal and non-diagonal arrays.

Computes the matrix product of a diagonal array represented as a vector and a non-diagonal array.

  • d_gpu (pycuda.gpuarray.GPUArray) – Array of length N corresponding to the diagonal of the multiplier.
  • a_gpu (pycuda.gpuarray.GPUArray) – Multiplicand array with shape (N, M). Must have same data type as d_gpu.
  • trans (char) – If ‘T’, compute the product of the transpose of a_gpu.
  • overwrite (bool (default: False)) – If true, save the result in a_gpu.
  • handle (int) – CUBLAS context. If no context is specified, the default handle from skcuda.misc._global_cublas_handle is used.

r_gpu – The computed matrix product.

Return type:



>>> import pycuda.autoinit
>>> import pycuda.gpuarray as gpuarray
>>> import numpy as np
>>> import skcuda.linalg as linalg
>>> linalg.init()
>>> d = np.random.rand(4)
>>> a = np.random.rand(4, 4)
>>> d_gpu = gpuarray.to_gpu(d)
>>> a_gpu = gpuarray.to_gpu(a)
>>> r_gpu = linalg.dot_diag(d_gpu, a_gpu)
>>> np.allclose(, a), r_gpu.get())