cuBLAS:CUDA基本线性代数子程序库(CUDA Basic Linear Algebra Subroutine library)
最初,为了尽可能地兼容Fortran语言环境,cuBLAS库被设计成列优先存储的数据格式,不过C/C++是行优先的,所以在使用时要注意数据格式。
要使用 cuBLAS API,应用程序必须在 GPU 内存空间中分配所需的矩阵和矢量,用数据填充它们,调用所需 cuBLAS 函数的序列,然后将结果从 GPU 内存空间上传回主机。cuBLAS API 还提供了用于从 GPU 写入和检索数据的帮助程序函数。
一、数据类型表示
二、 cuBLAS Level-1 Function
官方把常用函数分成了3个等级,Level-1、Level-2、Level-3处理的情境逐渐变得复杂,功能变得强大。
cublasI<t>amax()
中间的<t>意思是类型,用上面表格中的s、d、c、z(或他们的大写)填充。
此函数用于查找最大幅值元素的(最小)索引。因此,结果是第一个这样的结果
除了上面表格中的四种数据类型,此函数还支持 64 位整数接口。
cublasI<t>amin()
此函数用于查找最小幅值元素的(最小)索引。因此,结果是第一个这样的结果
除了上面表格中的四种数据类型,此函数还支持 64 位整数接口。
cublas<t>asum()
函数还支持 64 位整数接口。
This function computes the sum of the absolute values of the elements of vector .
cublas<t>axpy()
函数还支持 64 位整数接口。
此函数将矢量与标量相乘,并将其添加到矢量中,从而用结果覆盖最新的矢量。
cublas<t>copy
此函数将矢量复制到矢量中。
cublas<t>dot()
函数还支持 64 位整数接口。
此函数计算向量的点积。
cublas<t>nrm2()
这个函数计算向量的欧几里得范数。
cublas<t>rot()
函数还支持 64 位整数接口。
该函数应用Givens旋转矩阵
cublas<t>rotg()
cublas<t>rotm()
cublas<t>rotmg()
cublas<t>scal()
函数还支持 64 位整数接口。
此函数按标量缩放矢量,并用结果覆盖它。
cublas<t>swap()
函数还支持 64 位整数接口。
此函数交换向量的元素。
三、 cuBLAS Level-2 Function
2.6.1. cublas<t>gbmv()
此函数支持 64 位整数接口。
此函数执行带状矩阵与矢量的乘法
2.6.2. cublas<t>gemv()
此函数执行矩阵向量乘法
2.6.3. cublas<t>ger()
此函数支持64位整数接口。
此函数执行排名1更新