Paralellik eşzamanlılık anlamına gelir, ancak tam tersi değil mi?


15

Paralellik ve eşzamanlılığın farklı şeyler olduğunu sık sık okuyorum. Yanıtlayanlar / yorumcular genellikle birbirinden tamamen farklı iki şey olduklarını yazmak kadar ileri giderler. Ancak benim görüşüme göre bunlar birbiriyle bağlantılı ama bununla ilgili biraz açıklama istiyorum.

Örneğin, çok çekirdekli bir CPU'dayım ve hesaplamayı kendi iş parçacığında çalışan x küçük hesaplamaya (çatal / birleştirmeyi kullanarak söyleyin) bölmeyi başarırsam , her ikisi de paralel hesaplama yapan bir programım olacaktır (çünkü sözde herhangi bir zamanda birkaç iş parçacığı birkaç çekirdek üzerinde çalışacak) ve aynı anda olmak değil mi?

Basitçe, diyelim, Java kullanıyorum ve Event Dispatch Thread artı kendim oluşturduğum tek iş parçacığını çalıştıran UI olayları ve repaints ile uğraşırken, eşzamanlı bir programım olacak (EDT + GC iş parçacığı + ana iş parçacığım) vb.) ancak paralel değil.

Bunu doğru alıp almadığımı ve paralelliğin ("tek ama çok çekirdekli" bir sistemde) her zaman eşzamanlılık anlamına gelip gelmediğini bilmek isterim?

Ayrıca, çok iş parçacıklı programlar çok çekirdekli CPU üzerinde çalışıyor ama farklı iş parçacıkları "paralellik" olarak kabul edilen tamamen farklı bir hesaplama yapıyor?


Yanıtlar:


13

Wikipedia'ya göre :

Paralel hesaplama, büyük hesaplamaların genellikle daha küçük sorunlara ayrılabileceği ilkesine bağlı olarak, daha sonra aynı anda çözülen ("paralel") bir hesaplama biçimidir.

Yani, paralellik her zaman eşzamanlılığı ima eder.

Ayrıca, çok iş parçacıklı programlar çok çekirdekli CPU üzerinde çalışıyor ama farklı iş parçacıkları "paralellik" olarak kabul edilen tamamen farklı bir hesaplama yapıyor?

Hayır. Paralelliğin özü , daha büyük parçaların aynı anda çözülebilmesi için büyük bir sorunun daha küçük olanlara bölünmesidir . Parçalar karşılıklı olarak bağımsızdır (en azından bir dereceye kadar), ancak hala paralel olarak çözülen daha büyük sorunun bir parçasıdır.

Eşzamanlılığın özü, bir dizi iş parçacığının (veya işlemin veya bilgisayarın) aynı anda , muhtemelen (ancak zorunlu olarak değil) bazı şekillerde etkileşime giren bir şey yapmasıdır. Tekrar Wikipedia :

Eşzamanlılık, birkaç hesaplamanın aynı anda yürütüldüğü ve potansiyel olarak birbiriyle etkileşime girdiği sistemlerin bir özelliğidir.


4
Harika gönderi. Paralellik, Eşzamanlılığın bir alt kümesidir.

3
Üzgünüm, ama bu cevap yanlış. Eşzamanlılık olmadan (örneğin, bit düzeyi paralellik) kesinlikle paralelliğe sahip olabilirsiniz ve aslında ikisi birbirinden farklı kavramlardır. Eşzamanlılık, bağımsız yürütme birimleri oluşturmakla, paralellik ise potansiyel olarak ilişkili hesaplamaların eşzamanlı yürütülmesi ile ilgilidir.
Kai Sellgren

@KaiSellgren: İfadenizi desteklemek için lütfen kaynak belirtiniz.
Joonas Pulakka

İlk wikiquote basitçe yanlıştır. Neyse ki bir süre önce düzeltildi ve şimdi paralelliğin eşzamanlılığa dayanmadığını doğru bir şekilde söylüyor.
Kai Sellgren

Gerçekten, wiki girişinin şu anda söylediği şey ( eşzamanlılık olmadan parazitlere sahip olmak mümkündür (bit seviyesi paralellik gibi ). Ama bu noktayı hiç anlamadım; bit düzeyi paralellik düşünülebilecek en eşzamanlı şey değil - daha az talimatla daha fazla işlem yapılıyorsa, bu işlemlerin bazıları aynı komutta, yani eşzamanlı olarak, yani eşzamanlı olarak gerçekleştirilmiyor mu?
Joonas Pulakka

3

Kod eşzamanlı olabilir, ancak paralel olmayabilir.

Tek çekirdekli makinede çalışan birden çok iş parçacığını hayal edin. Bu tek çekirdekli makine her seferinde sadece bir ipliği işleyecektir, bu nedenle işlemlerin paralelliği olmayacaktır. Ancak her iş parçacığı için, işletim sisteminin birden fazla iş parçacığını nasıl işlediği sayesinde, her iş parçacığının diğer tüm iş parçacıklarının aynı anda çalıştığını varsayması gerekir.


0

Paralellik basitçe birçok görevi aynı anda yapmak anlamına gelir; diğer yandan eşzamanlılık, çekirdeğin sürekli olarak birçok işlem arasında geçiş yaparak birçok görevi yerine getirme yeteneğidir.

Paralelliğe ulaşmak için sistemin çok sayıda çekirdeğe sahip olması önemlidir, ancak paralellik etkili bir şekilde elde edilebilir. Tek bir çekirdek makinede paralellik denenirse, performansa çok fazla vurulur ve ek yük oluşur.

Örneğin, önceki sistemin yalnızca bir çekirdeği vardı ve CPU zamanlayıcıları, her işlemin ilerleme kaydetmesine izin veren işlemler arasında sürekli geçiş yaparak paralellik yanılsaması verecekti.

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.