• 36.cuBLAS开发指南中文版--cuBLAS中的Level-2函数hpmv()


    2.6.19. cublashpmv()

    在这里插入图片描述

    cublasStatus_t cublasChpmv(cublasHandle_t handle, cublasFillMode_t uplo,
                               int n, const cuComplex       *alpha,
                               const cuComplex       *AP,
                               const cuComplex       *x, int incx,
                               const cuComplex       *beta,
                               cuComplex       *y, int incy)
    cublasStatus_t cublasZhpmv(cublasHandle_t handle, cublasFillMode_t uplo,
                               int n, const cuDoubleComplex *alpha,
                               const cuDoubleComplex *AP,
                               const cuDoubleComplex *x, int incx,
                               const cuDoubleComplex *beta,
                               cuDoubleComplex *y, int incy)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    y = α A x + β y y = \alpha Ax+\beta y y=αAx+βy

    其中 A 是以压缩格式存储的 nxn Hermitian 矩阵,x 和 y 是向量,α 和 β 是标量。

    如果 uplo == CUBLAS_FILL_MODE_LOWER 那么Hermitian矩阵 A 的下三角部分的元素被逐列无间隙地打包在一起,使得元素 A(i,j) 存储在内存位置 AP[i+((2* n-j+1)*j)/2] 对于 j=1,…,n 和 i>=j。 因此,打包格式只需要 n(n+1)/2 个元素进行存储。

    如果 uplo == CUBLAS_FILL_MODE_UPPER 则将厄米矩阵 A 的上三角部分的元素逐列无间隙地打包在一起,使得元素 A(i,j) 存储在内存位置 AP[i+(j*( j+1))/2] 对于 j=1,…,n 和 i<=j 。 因此,打包格式只需要 n(n+1)/2 个元素进行存储。

    Param.MemoryIn/outMeaning
    handleinputhandle to the cuBLAS library context.
    uploinputIndicates if matrix A lower or upper part is stored, the other Hermitian part is not referenced and is inferred from the stored elements.
    ninputnumber of columns of matrix A.
    alphahost or deviceinput scalar used for multiplication.
    APdeviceinput array with A stored in packed format. The imaginary parts of the diagonal elements are assumed to be zero.
    xdeviceinput vector with n elements if transa == CUBLAS_OP_N and m elements otherwise.
    incxinputstride between consecutive elements of x.
    betahost or deviceinput scalar used for multiplication, if beta == 0 then y does not have to be a valid input.
    ydevicein/out vector at least (1+(m-1)*abs(incy)) elements if transa==CUBLAS_OP_N and at least (1+(n-1)*abs(incy)) elements otherwise.
    incyinputstride between consecutive elements of y.

    该函数可能返回的错误值及其含义如下所列。

    ErrorValueMeaning
    CUBLAS_STATUS_SUCCESS操作成功完成
    CUBLAS_STATUS_NOT_INITIALIZED库未初始化
    CUBLAS_STATUS_INVALID_VALUEIf n < 0 or k < 0 or if incx = 0 or incy = 0 or if uplo != CUBLAS_FILL_MODE_LOWER, CUBLAS_FILL_MODE_UPPER or if lda < (k + 1) or alpha == NULL or beta == NULL
    CUBLAS_STATUS_EXECUTION_FAILED该功能无法在 GPU 上启动

    详细信息, 请参考:

    chpmv, zhpmv

  • 相关阅读:
    PMP大家都是怎么备考的?使用什么工具可以分享一下吗?
    python的正则表达式联系-01
    【数据结构初阶】链式二叉树接口实现+痛苦的OJ题
    Python爬虫采集框架——Scrapy初学入门
    二叉堆(一) - 原理与C实现
    GIS前端编程-Leaflet插件发布
    Go语言学习笔记—gorm(一)
    新手看过来----代码自测通过但作业通不过
    基于JSP的员工绩效考核系统
    JAVA-GUI工具的编写-----请求篇
  • 原文地址:https://blog.csdn.net/kunhe0512/article/details/128007440