Ich habe zwei Funktionen (i) getKglobal und (ii) getKglobal_Sp. Allerdings ist die Zeit für die Sparse-Funktion etwa fünfmal langsamer als für die Fullmatrix-Formulierung. Ich verstehe, dass es schwierig sein kann, Leistung aus Sparse herauszuholen. Aber 5x langsam scheint schade zu sein. Was ist der „große und offensichtliche“ Fehler, den ich übersehe?
def getKglobal(geom,mat,nel,tdof):
k_global = np.zeros((tdof, tdof))
for i in range(0,nel):
dof_idx = geom.dof_idx[i]
coord = geom.coord[i]
kloc=getkelement(coord,mat)
k_global[np.ix_(dof_idx, dof_idx)]+=kloc
return k_global
def getKglobal_Sp(geom,mat,nel,tdof):
from scipy.sparse import lil_matrix
k_global = lil_matrix((tdof, tdof))
for i in range(0,nel):
dof_idx = geom.dof_idx[i]
coord = geom.coord[i]
kloc=getkelement(coord,mat)
for a, global_a in enumerate(dof_idx):
for b, global_b in enumerate(dof_idx):
k_global[global_a, global_b] += kloc[a, b]
return k_global.tocsr()
Ich habe zwei Funktionen (i) getKglobal und (ii) getKglobal_Sp. Allerdings ist die Zeit für die Sparse-Funktion etwa fünfmal langsamer als für die Fullmatrix-Formulierung. Ich verstehe, dass es schwierig sein kann, Leistung aus Sparse herauszuholen. Aber 5x langsam scheint schade zu sein. Was ist der „große und offensichtliche“ Fehler, den ich übersehe? [code] def getKglobal(geom,mat,nel,tdof): k_global = np.zeros((tdof, tdof)) for i in range(0,nel): dof_idx = geom.dof_idx[i] coord = geom.coord[i] kloc=getkelement(coord,mat) k_global[np.ix_(dof_idx, dof_idx)]+=kloc return k_global
def getKglobal_Sp(geom,mat,nel,tdof): from scipy.sparse import lil_matrix k_global = lil_matrix((tdof, tdof)) for i in range(0,nel): dof_idx = geom.dof_idx[i] coord = geom.coord[i] kloc=getkelement(coord,mat) for a, global_a in enumerate(dof_idx): for b, global_b in enumerate(dof_idx): k_global[global_a, global_b] += kloc[a, b] return k_global.tocsr() [/code]
Ich habe diese SSE3 -Implementierung für die Matrixmultiplikation:
/**
* Loop is unwraped for performance
* @attention As opposed to non-SIMD multiplication we're using column-major
*/
inline void...
Ich lerne Dask, um meine Python-Projekte effizienter und skalierbarer zu machen. Um die Leistung besser zu verstehen, habe ich ein Skript geschrieben, das die Rechenzeit von Pandas und Dask bei der...
Ich bekomme sowohl in Julia als auch in Python die gleichen Ergebnisse. Die Zersetzung von Singularwert ist bei der GPU langsamer als bei der CPU für Float64 -Arrays. (Float32-Arrays verhalten sich,...