¿Cómo se puede calcular la suma de una matriz de 1D con BLAS?
Pregunta
En el nivel 1 BLAS hay ASUM * y * NRM2 que computar las normas L1 y L2 de vectores, pero ¿cómo uno de cómputo del (firmado) suma de un vector? Tiene que haber algo mejor que llenar otro vector completo de unos y haciendo un * DOT ...
Solución
BLAS no proporciona una operación de suma horizontal como que está buscando, porque no es una operación que con frecuencia se necesita por las bibliotecas de álgebra lineal.
Muchas bibliotecas DSP lo proporcionar esta operación; por ejemplo, en OS X y iOS que utilizaría la función vDSP_sve( )
proporcionada por el marco Acelerar. Por desgracia, las bibliotecas DSP disponibles tienden a variar mucho de una plataforma a otra, por lo que tendría que saber más sobre qué plataforma [s] de orientación.
Otros consejos
Una forma es utilizar un producto de punto con un vector de unos, más específicamente para utilizar la función cblas_caxpy.
Se puede hacer un producto punto en el que el segundo vector tiene un incremento igual a cero. Usando C sería de esta manera:
int n;
int ix = 1;
int iy = 0;
double y = 1.0;
ddot_(&n, x, &ix, &y, &iy);
Como se ve en http://www.netlib.org/blas/blasqr.pdf , soportes xAXPY
suma vectorial.