Seyrek matris çarpımında ek yük nedir


10

Matris çarpımı (hem Mat * Mat hem de Mat * Vec) sıfır olmayan sayılarla veya matrisin boyutuyla ölçeklendiriliyor mu? Veya ikisinin bir kombinasyonu.

Peki ya şekil.

Örneğin, içinde 100 değeri olan bir 100 x 100 matrisi veya içinde 100 değeri olan bir 1000 x 1000 matrisi var.

Bu matrisleri karelerken (veya benzer esnekliğe sahip benzer matrislerle çarparken), ilk (100x100) ikinciden (1000x1000) daha hızlı mı olacak? Değerlerin nerede olduğuna bağlı mı?

Uygulamaya bağlıysa, PETSc'nin cevabı ile ilgileniyorum.

Yanıtlar:


11

Seyrek matris-vektör çarpımının maliyeti, sıfır olmayan girişlerin sayısı ile doğrusal olarak ölçeklenir, çünkü her giriş, vektördeki bir girişle bir kez çarpılır.

Seyrek matris-matris çarpımının maliyeti büyük ölçüde sıfır olmayanların yapısına bağlıdır. Örneğin, ok başı yapısına sahip olan seyrek bir matrisini kareye almayı düşünün :A

A=(δ1β1δ2β2δn1βn1γ1γ2γn1δn),

daha sonra sahiptir nonzeros, ancak yoğundur. Bu fenomenin iyi bilinen bir grafik yorumu vardır: grafiğindeki 1 veya 2 uzunluğundaki her yol , grafiğinde bir kenar haline gelir (yani, sıfır olmayan bir giriş ).AO(n)A2AA2A2


4

İlk olarak, uygulamaya bağlıdır. Yoğun bir matris olarak seyrek bir matris uygularsanız ve sıfır olmayanları doldurursanız, matrisin toplam boyutuyla ölçeklenir. Sıfır dışında depolanırsa, erişim süresi matris boyutuyla ölçeklendikçe ölçeklenir.

PETSc belgelerinde , seyrek matrisler için varsayılan depolamanın, satır sayısı ve satır başına sıfır olmayan değerlerin sayısı ile ölçeklenen sıkıştırılmış satır depolama alanı olduğunu açıklar. Bu yüzden bir MatMat'ın bu önlemin karesiyle genişçe ölçeklenmesini beklerdim; yani .O(r2n2)

Bununla birlikte, dikkat edilmesi gereken bir şey, orada olmayanları depolamanın bir anlamı olmadığıdır; bu performansı önemsiyorsanız, neden 1000x1000 matris için 100 değer saklıyorsunuz? Bu, satırların / sütunların en az% 90'ının sıfır olmayan değerlere sahip olmadığı ve tamamen matristen çıkarılabileceği anlamına gelir. Sıfır olmayan değerlerin paterni değişmezse, her zaman sıfır olan satırları hem bu hem de hedef matristen kaldırmayı düşünün; iki matrisin (100 2 , 1000 2 ) performansını geniş ölçüde eşdeğer bırakarak, çabanın% 90'ını kaldıracaktır .


Boş satırlar ve sütunlar genellikle bir sorunla ilgili olarak işlev görürler (örneğin, satır numarası arasında örneğin bir görüntüdeki konuma eşit bir eşleme tutmak) Ancak bunlardan kurtulmamak için bir değiş tokuş olacaktır.
meawoppl

Kesinlikle; 100 ints'lık tek bir dizide saklayabileceğiniz bir eşlemeyi sürdürmek için çalışma zamanı performansınızı yaklaşık 10 kat daha kötü yapmak normal bir sıralama değildir. Soru, matris ölçeklerinin boş boyutu olarak performansla ilgili olduğundan, sorduğu gibi, özellikle PETSc için oldukça önemli bir noktadır.
Phil H

3

Bu yazıda eksiksiz bir SpMV performansı modeli verilmiştir . Birden fazla vektör kullanarak yükü azaltabilseniz de, ana sınırlayıcının bant genişliği olduğu açıkça görülmektedir. Bundan sonra talimat sorunu sınırlamaları ve olağanüstü yazma talimatları üzerinde bir sınırla karşılaştığına inanıyorum.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.