| #ifndef THC_TENSORMATH_CUH |
| #define THC_TENSORMATH_CUH |
| |
| // Copy the kth diagonal of a matrix B to a vector A. |
| template <typename T> |
| __global__ void THCTensor_copyFromDiagonal(T* a, T* b, ptrdiff_t start, ptrdiff_t size, ptrdiff_t strideSum, ptrdiff_t strideA) { |
| for (ptrdiff_t linearIndex = blockIdx.x * blockDim.x + threadIdx.x; |
| linearIndex < size; |
| linearIndex += gridDim.x * blockDim.x) { |
| const ptrdiff_t bOffset = start + strideSum * linearIndex; |
| a[strideA * linearIndex] = b[bOffset]; |
| } |
| } |
| |
| // Copy vector B to the kth diagonal of a matrix A |
| template <typename T> |
| __global__ void THCTensor_copyToDiagonal(T* a, T* b, ptrdiff_t start, ptrdiff_t size, ptrdiff_t strideSum, ptrdiff_t strideB) { |
| for (ptrdiff_t linearIndex = blockIdx.x * blockDim.x + threadIdx.x; |
| linearIndex < size; |
| linearIndex += gridDim.x * blockDim.x) { |
| const ptrdiff_t aOffset = start + strideSum * linearIndex; |
| a[aOffset] = b[strideB * linearIndex]; |
| } |
| } |
| |
| #endif |