Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
BLAS/cuBLAS如何在日常生活中处理α和β因子?_C_Blas_Algebra_Cublas - Fatal编程技术网

BLAS/cuBLAS如何在日常生活中处理α和β因子?

BLAS/cuBLAS如何在日常生活中处理α和β因子?,c,blas,algebra,cublas,C,Blas,Algebra,Cublas,许多线性代数例程都有alpha和beta等常量作为参数。例如,执行以下操作: C:=α*op(A)op(B)+betaC 假设我将beta设置为0 cuBLAS还会执行不必要的标量矩阵乘法和矩阵加法吗?其他库(如BLAS/LAPACK/MKL)呢 如果没有执行必要的操作:我需要做些什么来确保这一点,还是自动避免 alpha/beta是否还有其他优化值?例如,假设我将beta设置为1,是否将跳过按beta操作进行缩放 为什么要在DGEMM中将这些因子指定为const double,而在double

许多线性代数例程都有alpha和beta等常量作为参数。例如,执行以下操作:

C:=α*op(A)op(B)+betaC

假设我将beta设置为0

  • cuBLAS还会执行不必要的标量矩阵乘法和矩阵加法吗?其他库(如BLAS/LAPACK/MKL)呢

  • 如果没有执行必要的操作:我需要做些什么来确保这一点,还是自动避免

  • alpha/beta是否还有其他优化值?例如,假设我将beta设置为1,是否将跳过按beta操作进行缩放

  • 为什么要在DGEMM中将这些因子指定为
    const double
    ,而在
    double
    中则将值传递给它们?有什么区别

  • 如果这些库以我所描述的方式进行浪费操作,我会感到惊讶,但除了cuBLAS文档中提到的以下内容外,我没有在任何地方找到关于它的明确讨论:

    如果beta==0,则C不必是有效的输入


    甚至参考实现在这里也进行了优化。无论alpha或beta的值是多少,都没有认真执行该操作

  • 不,不会的
  • 不适用
  • 只需离开beta=0。忽略C。
    beta=1。
    跳过缩放
  • 原因是与FORTRAN的兼容性。在F90之前的FORTRAN中没有
    const
    变量。BLAS接口是在F90之前定义的,每个人都遵守约定。如果你想拥有一个具有适当关键字的C界面,请查看C特定的界面,如
    sblas_dgemm
  • 以下是
    DGEMM
    的参考实现。 . 如果可能,寻找
    快速返回。
    和如果alpha.eq.zero.