Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
MIT 6.172 Performance Engineering of Software Systems, Güz 2018 - 1. Giriş ve Matris Çarpımı
1. Giriş ve Matris Çarpımı
Öğretim görevlisi, "1. Giriş ve Matris Çarpımı" başlıklı bu YouTube videosunda, performans mühendisliğinin önemini ve zaman içinde nasıl geliştiğini tartışıyor. Konuşmacı, matris çarpımı örneğini kullanarak, kodlama tekniklerinin ve makine özelliklerinin performansı nasıl büyük ölçüde etkileyebileceğini gösterir. Tartışma, döngü sırası, önbellek kullanımı ve paralel programlama gibi konuları kapsar. Konuşmacı ayrıca farklı işlemciler ve aritmetik hesaplamalar için kodu optimize etmenin yollarını da keşfediyor. Genel olarak video, performans mühendisliği dünyasına ve onun modern bilgisayar sistemlerindeki pratik uygulamalarına ilişkin değerli içgörüler sağlar.
Ders 2. Çalışmayı Optimize Etmek İçin Bentley Kuralları
2. Çalışmayı Optimize Etmek İçin Bentley Kuralları
Bu YouTube videosu, bilgisayar programları için çeşitli optimizasyon tekniklerini tartışıyor. İşi optimize etmeye yönelik Bentley kuralları tanıtılır ve optimizasyonlar veri yapıları, döngüler, mantık ve işlevler olarak gruplandırılır. Kodlama değerleri, veri yapısını büyütme, ön hesaplama, önbelleğe alma ve seyrek matrisleri kullanma gibi farklı teknikler tartışılır. Konuşmacı ayrıca grafikler, mantık optimizasyonu ve grafik programlarında çarpışma algılama optimizasyonu için seyrek matris gösterimi kullanmanın faydalarına da değiniyor. Bu optimizasyon tekniklerini uygulamak, programların çalışma sürelerini azaltarak onları daha verimli hale getirmeye yardımcı olur.
Videonun ikinci kısmı, döngü kaldırma, döngülerde nöbetçilerin kullanımı, döngü açma ve füzyon ve işlev satır içi dahil olmak üzere çeşitli optimizasyon teknikleri kategorilerini kapsar. Konuşmacı erken optimizasyona karşı tavsiyede bulunur ve doğruluğu korumanın ve regresyon testi kullanmanın önemini vurgular. Video ayrıca üretkenliği artırmaya ve hedeflere verimli bir şekilde ulaşmaya yönelik altı adımlı bir kılavuz olan Bentley İşi Optimize Etme Kurallarını da özetliyor. Bu kurallar, net hedefler belirlemeyi, görevleri parçalara ayırmayı, planlamayı ve organize etmeyi, görevlere öncelik vermeyi, dikkat dağıtıcı unsurları en aza indirmeyi ve kişinin yaklaşımını düzenli olarak gözden geçirmeyi ve ayarlamayı içerir.
Ders 3. Bit Hack'leri
3. Bit Hack'leri
Bu YouTube videosu, ikili temsil, ikinin tümleyeni, bitsel operatörler, geçici değişken olmadan değişkenleri takas etme ve kod optimizasyonu dahil olmak üzere çeşitli bit işleme konularını kapsar. Video, if-else deyimlerini kullanmadan en az iki tam sayıyı bulma ve geçici bir değişken kullanmadan iki tam sayının yerini değiştirme gibi çeşitli bit numaralarını gösterir. Konuşmacı, öngörülemeyen dalları tartışır ve öngörülebilir dalların kullanılamadığı durumlar için dalsız minimum bit hilesi sunar ve bölme gibi maliyetli işlemleri basit bitsel işlemlerle değiştirerek bit korsanlarının kodu nasıl optimize edebileceğini gösterir. Video ayrıca de Bruijn dizisini ve bunun N Queens problemi gibi problemlerin çözümündeki uygulamasını tartışıyor.
İkinci kısım, bit vektörlerini kullanarak N Queens problemini çözmeyi ve bir ikili kelimedeki 1 bit sayısını verimli bir şekilde saymayı tartışır. N Queens problemini uygulamak için geri izleme kullanılır ve tahtayı verimli bir şekilde temsil etmek için bit vektörleri kullanılır. N Queens probleminde bir kraliçeyi güvenli bir şekilde yerleştirmek için üç kontrol açıklanır ve en önemsiz 1 biti yinelemeli olarak eleyerek bir kelimedeki 1 bit sayısını saymak için bir yöntem sunulur. Ek olarak, 1 bit sayısını saymak için tablo arama ve kayıt manipülasyonunun kullanımı tartışılmaktadır. Video, kelime uzunluğunun log tabanı ikisiyle orantılı bir performansa sahip 1 biti saymaya yönelik bir böl ve fethet yaklaşımının bir gösterimiyle sona erer. Daha fazla öğrenme için kaynaklar da sağlanmaktadır.
Anlatım 4. Assembly Dili ve Bilgisayar Mimarisi
Anlatım 4. Assembly Dili ve Bilgisayar Mimarisi
Bu video, montaj dili ve bilgisayar mimarisine kapsamlı bir genel bakış sağlar. Assembly dili, kod performansını optimize etmek için önemli bir arabirimdir ve bilgisayar mimarisini anlamak, Assembly dilinde uzmanlaşmak için çok önemlidir. Konuşmacı, x86 64 mimarisinin tarihini ve gelişimini, anahtar kayıtlarını, veri türlerini, bellek adresleme modlarını ve yığınlar, tamsayı ve ikili mantık, boole mantığı ve altyordamlar dahil komut seti mimarisini açıklar. Ayrıca, montaj dilinde sıfır ve işaret uzantısı gibi uzantıları ve çeşitli adresleme modlarını tartışırlar. Ayrıca videoda kayan nokta türleri, vektörler ve vektör birimleri, geleneksel ve SSE yönergeleri ile süper skala işleme, sıra dışı yürütme ve şube tahmini gibi bilgisayar mimarisi tasarım özellikleri tartışılıyor.
Video ayrıca, montaj dili ve bilgisayar mimarisi ile ilgili çeşitli konuları da kapsar. Ana temalardan biri, veri bağımlılıkları gibi tehlikelerin neden olduğu komut düzeyinde paralellik (ILP) ve ardışık düzen duraklarıdır. Konuşmacı, gerçek, anti ve çıktı veri bağımlılıklarını ve süper skalar işlemcilerin aynı anda birden fazla talimatı yürütmek için donanımdaki daha fazla paralellikten nasıl yararlanabileceğini tartışıyor. Bununla birlikte, tehlikelerden kaçınmak için mimarlar, yeniden adlandırma ve yeniden sıralama gibi stratejilerin yanı sıra bir dalın sonucunu tahmin etmek ve önceden yürütmek için spekülatif yürütme uygulamışlardır. Konuşmacı, dinleyicileri yazılım optimizasyonlarını daha iyi anlamak için bu yöntemleri anlamaya teşvik eder.
Ders 5. C'den Montaja
Ders 5. C'den Montaja
Videonun bu bölümünde, C kodunun bir derleyici kullanarak Assembly dilinde nasıl uygulandığı ile birlikte C'yi anlamanın önemi tartışılıyor. Odak noktası, özellikle LLVM IR'nin Linux x86 64 çağrı kuralında derlemeye nasıl çevrildiğidir. Sunucu, LLVM IR'nin temel bileşenlerini ve C programlama dilindeki yapıların LLVM IR'ye nasıl çevrildiğini açıklar. Video ayrıca sanal belleğin düzenini, birden çok işlev arasındaki işlev çağrılarını koordine etme sorununu ve Linux x86 64 çağırma kuralının tüm yığın çerçevelerini yönetmek için iki işaretçi (BP ve SP) kullanımını kapsar.
Video ayrıca C'den Assembly'ye programlamada kayıt durumlarını korumaya yönelik stratejileri, örneğin arayan kaydetme veya arayan kaydetme olarak kaydetme ve x86 çağırma kuralının iş israfını nasıl önlediğini açıklar. İşlev çağrılarının C ve derlemede nasıl çalıştığını, bağımsız değişkenleri ve yerel değişkenleri yığına kaydetme işleminin yanı sıra taban işaretçisi yerine yığın işaretçisini kullanmanın yaygın optimizasyonunu tartışıyor. Video ayrıca LV miR'yi derleme koduna kadar derleme, işlev girişini tartışma, kayıtları kaydetme, işleme koşulları ve bir kontrol akış grafiği kullanarak C kodunu derleme koduna dönüştürme sürecini de gösterir. Son olarak, sonuçları döndürmeden önce kayıtları geri yüklemek için kullanılan işlev epilogundan bahseder.
yazmaçlar, çağırma kuralı, her işlevin hangi yazmaçları kullanabileceğine ilişkin kuralları ve işlev çağrıları yoluyla bu yazmaçları nasıl korumaları gerektiğini ayrıntılarıyla açıklar.
Ders 6. Çok Çekirdekli Programlama
Ders 6. Çok Çekirdekli Programlama
Bu video ders, çok çekirdekli programlamayı ve Moore Yasası nedeniyle çok çekirdekli işlemcilerin ortaya çıkışını ve saat frekanslarının ölçeklendirilmesinin sonunu tartışıyor. Konuşmacı, işlemcilerin karşılaştığı güç yoğunluğu sorununu ve bunun Moore Yasasına ayak uydurmak için çiplere birden çok çekirdeğin eklenmesine nasıl yol açtığını açıklıyor. Ders ayrıca, paralel programlama için soyutlamalar sağlayan Pthreads, TBB, OpenMP ve Silk gibi paylaşılan bellek donanımlarındaki ve eşzamanlılık platformlarındaki önbellek tutarlılık protokollerinin temellerini de kapsar. Her platformun artıları ve eksileri tartışılır ve Fibonacci programlarının uygulama örnekleriyle gösterilir. Video, çok çekirdekli programlamaya ve programcıların karşılaştığı zorluklara ve çözümlere kapsamlı bir genel bakış sağlar.
Video ayrıca, paralel işlemeyi ele alan bir soyutlama aracı olan Silk'in çeşitli yönlerini de kapsar. Konuşmacı, döngüler için iç içe ipek, montaj kodu oluşturma, indirgeyicileri kullanarak indirgeme, programlayıcı ve performans için optimize etme gibi konuları tartışır. Ayrıca, Silk ekosistemine ve sırasıyla hata ayıklama ve ölçeklenebilirliği analiz etmeye yönelik silk sanitizer ve silk scale gibi ilgili araçlara genel bir bakış sağlarlar. Ana çıkarım, çok çekirdekli işlemciler için paralel programlar yazmanın zor olabileceğidir, ancak Silk, karmaşık görevleri verimli bir şekilde ele alarak süreci basitleştirir ve programcılara kodlarının yürütülmesi üzerinde daha fazla kontrol sağlar.
Ders 7. Irklar ve Paralellik
Ders 7. Irklar ve Paralellik
Video, Silk programlamadaki ırklar, paralellik ve hesaplama günleri ile ilgili bir dizi konuyu kapsar. Ele alınan bazı temel kavramlar, eş zamanlı yürütme için spawn ve sync deyimlerini, yarış koşullarından kaçınmanın önemini ve bunları belirlemek için Silk'in yarış detektörünü kullanmayı içerir. Video ayrıca bir programdaki paralellik miktarını ölçmenin yolları olarak Amdahl yasasını, iş yasasını ve yayılma yasasını ve hesaplamaların işini ve kapsamını analiz etme yollarını kapsar. Paralel sıralama algoritmalarının potansiyel hızlanma ve paralelliği ve çizelgeleme teorisi kavramı da açgözlü zamanlayıcı teoremine odaklanılarak tartışılmaktadır. Genel olarak video, Silk programlamada program performansını anlama ve optimize etme konusunda değerli bilgiler sağlar.
Video, temelde herhangi bir açgözlü planlayıcının T1/Tinfinity P^2'den büyük veya ona eşit olduğu sürece mükemmele yakın doğrusal hızlanmaya ulaştığını belirten açgözlü zamanlayıcı sınırının sonuçlarını açıklıyor. Bir iş çalma zamanlayıcısı kullanan ipek zamanlayıcı, işlemci sayısı T1/Tinfinity'den çok daha az olduğu sürece mükemmele yakın doğrusal hızlanma elde edebilir. Silk çalışma zamanı sistemi, hazır şeritlerden oluşan bir çalışma güvertesi sağlayarak çalışır ve güvertenin altını bir yığın gibi manipüle eder. Video aynı zamanda yığınların birden çok görüntüsünü paralel olarak sağlayan ve paralel işlev çağrılarını mümkün kılan Cactus Stack'i de tartışıyor. P işlemci yürütmesinin gerektirdiği yığın alanının üst sınırı, genellikle ihtiyaç duyulan gerçek miktardan çok daha gevşektir, çünkü her işlemcinin işi her çaldığında hesaplama grafiğinde sonuna kadar gitmesi gerekmeyebilir.
Ders 8. Çok Kanallı Algoritmaların Analizi
Ders 8. Çok Kanallı Algoritmaların Analizi
Bu video, bölme ve fethetme yinelemelerini analiz etmek için ana yöntemi tartışır ve n'deki büyümelerini ve gereken işi belirlemek için n'nin log bazını B ile A'nın log B tabanını ve F of N'yi karşılaştırarak bunu çok iş parçacıklı algoritmalara uygular. Video, temel çok iş parçacıklı algoritmalar için çözümler içeren bir kopya kağıdı sunar ve iş ve yayılma analizi, iş verimliliği ve tane boyutu optimizasyonu yoluyla genel giderlerin üstesinden gelme gibi konuları kapsar. Teknik konuları iletirken empatinin önemi vurgulanır ve paralelliği artırmak ve çalışma süresini azaltmak için işi ve yayılmayı dengeleme aracı olarak DAG kavramı tanıtılır.
Videoda ayrıca çok iş parçacıklı algoritmaların analizi, iş ve yayılmaya odaklanma ve mükemmele yakın doğrusal hızlanma elde etmek için yayılmayı en aza indirirken paralelliğin nasıl en üst düzeye çıkarılacağı tartışılıyor. Konuşmacı, iş parçacıklarına verilen görev sayısının yeterince fazla olduğu çok iş parçacıklı algoritmalara böl ve fethet yaklaşımını önerir ve zamanlama genel giderleri nedeniyle çok sayıda küçük görevin ortaya çıkmasına karşı uyarıda bulunur. Sunulan örnek kod, verimli ve berbat bir tane içerir. Konuşmacı ayrıca iki boyutlu kodlama ve indekslemede alt matrislerin nasıl temsil edileceğini tartışır ve performansı artırmak için bölme ve fethetme matrisi çarpma kodunda 'kısıtlama' kullanımının üzerinde durur.
Ders 9. Derleyicilerin Yapabilecekleri ve Yapamayacakları
Ders 9. Derleyicilerin Yapabilecekleri ve Yapamayacakları
Bu video, çeşitli örnekler kullanarak derleyicilerin kodu nasıl optimize edebileceğini tartışır. Derleyicilerin gereksiz depolama ve bellek referanslarını nasıl ortadan kaldırabileceklerini ve performansı artırmak için döngüleri nasıl optimize edebileceklerini açıklar.
Bu video ayrıca derleyici optimizasyon geçişleri kavramını ve bunların kod performansını iyileştirmek için nasıl kullanılabileceğini açıklar. Ayrıca, özellikle vektörleştirme açısından derleyicilerin sınırlamalarını tartışır. Derleyiciler, yalnızca koddaki işaretçilerin takma ad olmayacağını belirleyebilirlerse kodu vektörleştirebilirler. İşaretçiler takma ad yaparsa, derleyici kodu vektörleştiremez. Bir programcı olarak, kullanımları hakkında daha fazla bilgi sağlamak için işaretçilerinize açıklama ekleyerek derleyiciye yardımcı olabilirsiniz.
Anlatım 10. Ölçme ve Zamanlama
Anlatım 10. Ölçme ve Zamanlama
Bu videoda konuşmacılar, doğruluğu etkileyebilecek dış etkenler de dahil olmak üzere hesaplamada ölçüm ve zamanlamanın çeşitli yönlerini tartışıyor. Modellere duyulan ihtiyacı ve verilerin net bir şekilde anlaşılmasını, hataları telafi etmek için varyansın azaltılmasını ve güvenilirliği sağlamak için uygun zamanlama çağrılarının kullanılmasını vurgularlar. Ayrıca performans modelleme, zamanlama çağrıları, donanım sayaçları ve simülatörler gibi araçları vurgularken, güç yasası ve deterministik olmayan faktörler gibi yazılım performansını doğru bir şekilde ölçmedeki zorlukları tartışırlar. Son olarak, doğru sonuçlar elde etmek için teknikler olarak nirengi ve uyarlama önererek tek bir araca güvenme konusunda uyarıda bulunuyorlar.
Konuşmacı, performans yazılımı mühendisliğinde güvenilir performans ölçümünün önemini açıklıyor. Performansı doğru bir şekilde ölçmek için istatistiklerin kullanılmasını önerir ve farklı bağlamlarda yararlı performans ölçümleri sağlayabilen ortalama gibi çeşitli özet istatistik türlerini tartışır. Oranların aritmetik ortalamasının alınmasının geçerli bir yaklaşım olmadığına işaret ediyor ve bunun yerine geometrik ortalamanın kullanılmasını öneriyor. Konuşmacı, programları karşılaştırırken verileri toplamanın doğru yolunu seçmenin önemini vurgular ve performansı daha doğru bir şekilde karşılaştırmak için birden fazla çalıştırmadan minimum veya %10 gibi düşük sıralı istatistiklerin alınmasını önerir. Konuşmacı ayrıca, kafa kafaya karşılaştırma ve istatistik elde etmek için bir model uydurma dahil olmak üzere performansı ölçmek ve karşılaştırmak için farklı metodolojileri tartışıyor, ancak modellemede aşırı uydurma konusu hakkında uyarıda bulunuyor. Genel olarak video, program performansını iyileştirmek için güvenilir performans ölçümünün önemini vurgulamaktadır.