BLAS daxpy y dcopy cuando inc = 1, ¿son más rápidos que simplemente usar a (:, t) = b (:, t)?

StackOverflow https://stackoverflow.com/questions/1010891

Pregunta

Bueno, el título lo dice, estoy haciendo el siguiente tipo de operaciones en Fortran:

a(:,t) = b(:,t)
c(:,t) = x(i,t)*d(:,t)

¿Hay algún beneficio de usar las subrutinas daxpy y dcopy de BLAS en este caso donde inc = 1?

¿Fue útil?

Solución

No hay diferencia que alguna vez notarías.

BLAS tiene que ser compatible con Fortran 77, que estoy bastante seguro de que no tenía esas características sofisticadas.

Esas subrutinas están ahí para hacer una matriz o matriz copiando 1 línea de código, porque se ha hecho bastante. Los ciclos tienden a acapararse en otras rutinas, como la matriz inversa, por lo que la copia no suele ser un problema de rendimiento.

Si le preocupa el rendimiento, codifíquelo de manera razonable. Entonces lo que haría es interrumpirlo unas pocas veces . Esto le mostrará a dónde va realmente el tiempo. Si pasa mucho tiempo copiando, se lo dirá. Si no, te lo dirá.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top