BLAS daxpy e dcopy quando inc = 1, sono più veloci del semplice utilizzo di a (:, t) = b (:, t)?

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

Domanda

Bene, il titolo dice che sto facendo il seguente tipo di operazioni in Fortran:

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

Ci sono dei vantaggi nell'usare le subroutine daxpy e dcopy da BLAS in questo caso dove inc = 1?

È stato utile?

Soluzione

Nessuna differenza che potresti mai notare.

BLAS deve essere compatibile con Fortran 77, che sono abbastanza sicuro che non avesse quelle caratteristiche fantasiose.

Quelle subroutine sono lì per fare in modo che array o matrici copino 1 riga di codice, perché è fatta abbastanza. I cicli tendono ad essere ostacolati in altre routine, come l'inverso della matrice, quindi la copia non è di solito un problema di prestazioni.

Se sei preoccupato per le prestazioni, codificale in modo ragionevole. Quindi quello che vorrei fare è interromperlo alcune volte . Questo ti mostrerà dove sta andando il tempo. Se impiega molto tempo a copiare, te lo dirà. In caso contrario, te lo dirà.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top