2017-12-19 230 views
7

Bu aptalca bir soru gibi görünebilir: Python gibi PGO (veya ATLAS veya FFTW'nin de bunu yaptığına inanıyorum) gibi kendinden ayarlı bir şey oluşturduğumda, bilgisayarın boşta olması gerekir (ölçümlere müdahale etmemek için)) veya Doom oynayan zamanı geçebilir miyim?Python'u profil yönlendirmeli optimizasyon ile oluştururken bilgisayarı yalnız bırakmak zorunda mıyım?

Bağlantılı README, python kaynak dağılımından bu konuyu çok önemsiz görüyor gibi görünüyor, ama gerçekten bundan emin değilim.

+2

Doom tamam, çok fazla CPU yemeyecek :) –

+0

Şüphe duymadan, üzgün olmaktan daha güvenli: diğer bilgisayarınızda çalın –

+0

Git ve öğrenin. ;-) –

cevap

3

PGO ölçümlerini yaparken bilgisayarınızda ne yaptığınız, optimizasyonun sonucu üzerinde hiçbir etki yapmamalıdır. PGO'nun yaptığı, belirli bir veri kümesi için koddaki sıcak yolları bulmak için ölçümleri kullanmak ve bu bilgiyi, bu veri kümesi için programı mümkün olduğunca hızlı hale getirmek için ve bu yolu sıcak olan ve diğer programlardan bağımsız olmayan bir şekilde kullanmaktır. bilgisayarda çalışıyor.

Bazı şeyleri açıklamak için, kodu optimize ederken alım satım işlemleri yapılır. İyileştirme, kodun bazı bölümlerinde daha yüksek olacak ve hangi kod dönüşümlerinin kullanıldığına ve nerede uygulandıkları ile bağlantılı olarak diğerlerine göre daha düşük olacaktır. Daha iyi bir nihai sonuç elde etmek için, kodda daha az çalıştırılan kodda daha küçük iyileştirmelerle (soğuk kod) yaşayabileceğiniz bir çok kod (derleyici lingoda) kodunda yüksek iyileştirmeler olmasını istiyorsunuz. Normal olarak, programın bu sıcak kısımlarını tanımlamak ve bu parçaları olabildiğince hızlı hale getirecek şekilde optimizasyonları uygulamak için bir dizi sezgisel yöntem kullanılır. Bu yaklaşımdaki sorun, buluşsal yaklaşımın, programın pratikte nasıl kullanılacağı hakkında bir şey bilmemesi ve sıcak kodu soğuğu yanlış tanımlayabilmesidir.

Profil yönlendirmeli en iyi duruma getirme (PGO), derleyicinin gerçek uygulamalardan verileri kullanarak kodun sıcak bölümlerini bulmasına yardımcı olan bir yöntemdir. İlk adım olarak, derleyiciye kodun pratikte nasıl yürütüldüğünü ölçmek için programın aletli bir sürümünü oluşturmasını söylersiniz, genellikle döngülerdeki yineleme sayısını saymak için sayaçlar eklenir ve if-statement'da hangi dal seçilir. İkinci adım, enstrümantasyon programını gerçek veriler üzerinde çalıştırmaktır. Programın sonunda program, eklenen tüm sayaçların değerlerini çıkarır ve kod ile sayaçları eşleştirerek programın hangi bölümlerinin sıcak olduğunu (yüksek sayılar) ve soğuk olanları (düşük sayılar) görebilmek mümkün olur. Sonunda program derlenmiş, ancak bu kez programın profili ile anlaşıldı. Bu, derleyicinin hangi parçaların daha hızlı olması gerektiğini tahmin etmesine gerek olmadığını ve profilde daha yavaş olabileceğini düşündürmektedir.

+0

Cevabınız için teşekkürler. Uzmanlığına saygı duyuyorum. Ama bu olayda, onu biraz kaynatıp bize derleyici olmayan uzmanlara pamuğa şans tanıyabilir miydiniz? Belki de "sıcak" ın gerçekte ne anlama geldiğini ve "yol" un bir çizgisini mi? Biliyorum, teknik olarak neden ve nasıl olduğunu sormadım, ama bir yandan net bir şekilde bilgili birine sahip olmak, biraz aydınlanma istememeyi ihmalkar olurdu. –

+0

@PaulPanzer PGO hakkında bazı açıklamalar ekledim. Hala belirsiz ise lütfen bana bildirin. – Johan

+0

Şimdi cevaptan oldukça memnunum. İlginç ve bilgilendirici. Teşekkür ederim! –