Ordinary Matrixprodukt zwischen Bitfeld berechnen:Wie Matrixprodukt auf (sparse) Bitmatrix effizient in Python
1, 0, 0
Matrix A = 1, 1, 1
0, 0, 1
1, 1, 0
Transpose of A = 0, 1, 0
0, 1, 1
C = Matrix A times (Transpose of Matrix A)
1, 1, 0
C = 1, 3, 1
0, 1, 1
A ist ein Bitfeld von 1 und 0. Die tatsächliche Matrix A ist groß und hat ungefähr 0,25% 1 Einträge und 99,75% Null Einträge.
C ist ein Array von Ganzzahl.
Wie berechnet man dies schnell ohne viel Speicher zu verwenden?
Derzeit verwende ich scipy's Sparse Matrix Multiplikation Routinen für komprimierte Sparse Zeilenmatrizen von Fließkomma 1.0 und 0.0 in Python. Ich versuche auch, c-Funktionen in mkl-Bibliothek direkt aufzurufen, um die Speichernutzung zu reduzieren.
Wie groß? Wie lange dauert es für eine 1000 x 1000-Matrix? – casevh
ist es, Produkt zwischen einer 750,000 x b-Matrix und seiner Transponierten zu berechnen. b ist mindestens 10.000. Je größer das b, desto besser. Der Speicher pro CPU-Kern ist jedoch begrenzt. – rxu
Sorry, ich meine eine Matrix A mit einer Form von b x 750.000. Also sollte die A-Zeit-Transponierte von A die Form von b x b haben. – rxu