Web siteleri

Parallelism Kitle Kabulü İçin Killer Uygulamasına İhtiyaç Duyuyor

Python da Vücut Kitle Endeksi Hesaplama

Python da Vücut Kitle Endeksi Hesaplama
Anonim

Mikroişlemciler için çoklu çekirdeklerin eklenmesi, paralel programlama için önemli bir fırsat yarattı, ama araştırmacıları ana akım içine itmek için bir katil uygulaması gerekiyordu, araştırmacılar Hot Chips konferansında bir panel tartışması sırasında şunları söyledi: Panelistler, Günümüzde çoğu yazılımın ardışık yürütme için yazılmakta olduğunu ve program modellerinin daha hızlı donanımdan ve çiplerde artan sayıda çekirdekten faydalanmak için değişmesi gerektiğini söyledi. Programcılar, kodların birden çok çekirdek ve iş parçacığı üzerinde eş zamanlı olarak bölünmesini ve yürütülmesini sağlayacak şekilde yazmalıdırlar.

Bir bilgisayar ve daha iyi programlama dilleri geliştirmeye odaklanan çok sayıda odak ve para, David Patterson, bilgisayar Pazartesi günü Stanford'daki konferansta, Kaliforniya Üniversitesi, Berkeley'deki bilim profesörü. Masaüstü programların paralel olarak yazılmasına çok az dikkat edildi, ancak oyun ve müzik gibi uygulamalar bunu değiştirebilirdi. Bu tür programların kullanıcıları en iyi gerçek zamanlı performansı talep ederler, bu nedenle programcılar birden fazla iş parçacığı ve çekirdek üzerinde görevleri parçalayan modelleri kabul etmek zorunda kalabilirler.

Örneğin, yeni paralellik biçimleri PC'lerde çalınan müziğin kalitesini artırabilir. ve akıllı telefonlar, Patterson dedi. Kanalları ve enstrümanları ayırma konusunda daha iyi bir iş yapan kod, sonuç olarak paralel etkileşim yoluyla ses üretebilir.

California Üniversitesi, Berkeley, araştırmacıların, kodların optimize edilmesine yardımcı olabilecek, uygulamaların nasıl kullanıldığını anlamaya çalıştığı paralel bir hesaplama laboratuvarına sahiptir. el cihazları için. Bir proje, sayfaların oluşturulması ve ayrıştırılması gibi belirli görevlere dayanarak kodları optimize ederek masaüstü cihazlarda masaüstü kalitesinde gezinmeyi sağlamayı amaçlıyor. Başka bir proje, sağlık bilgilerinin daha hızlı alınması için kodun optimize edilmesini içerir. Laboratuar öncelikli olarak Intel ve Microsoft tarafından finanse edilmektedir.

Berkeley araştırmacıları, Python ve Ruby gibi betik dilleri kullanılarak yazılan kod parçalarını yeni düşük seviye C koduyla değiştirerek paralellik getirmeye çalışıyorlar. Patterson, bir röportajda Çarşamba günü yaptığı konuşmada, yeni kod özellikle konuşma tanıma uygulamasında belirli bir ses modelini analiz etmek gibi belirli görevlere odaklanıyor. Patterson, OpenMP veya MPI, makine düzeyinde paralel uygulamaları yazmak için tasarlanmış uygulama programlama arayüzleri kullanılarak yazılmıştır.

Uzmanlar bu son derece uzmanlaşmış paralel kodu yazmaları gerektiğini belirtti. Patterson, röportajda Patterson, uygulama geliştirmeyi daha kolay hale getiren Python ve Ruby on Rails kullanan programcıların geliştirilme sürelerini kısaltır, ancak paralellik üzerinde durmaz. Laboratuar, düşük seviyeli makine koduyla 20'lik bir faktörle belirli bir görev yürütme atlama gösterdi.

Paralellik kavramının yeni değil ve çoğunlukla yüksek performanslı bilgi işlem alanı olmuştur. Paralelliklerin düşük seviyeleri her zaman mümkün olmuştur, ancak programcılar yazılım araçları ve sürekli değişen donanım ortamlarının eksikliği ile göz korkutucu bir görevle karşı karşıya kalmıştır.

"Konuların doğru bir şekilde senkronize edilmesi gerekiyor," diyor Christos Kozyrakis, elektrik mühendisliği profesörü ve panel tartışmasından önce bir sunum sırasında Stanford Üniversitesi'nde bilgisayar bilimi. Kozyrakis, kodun tahmin edilebilir şekilde davranan ve daha fazla çekirdek mevcut hale geldikçe ölçeklendirilmesi gereken bir formda yazılması gerekiyor.

Derleyicilerin de daha akıllı hale getirilmesi ve çıktıların doğru bir sırayla alınabilmesi için iş parçacığı zamanında kırmaya yetecek kadar algılayıcı olması gerekiyor.. Belirli hesaplamalar belirli bir sırayla yürütülmediğinde, kodlamaya paralellik oluşturma girişimleri hatalı yazılım oluşturabilir. Bu yaygın olarak yarış koşulları olarak adlandırılan bir sorundur. Panelistler, kodlayıcıların daha iyi düzeyde paralellik elde etmek için çoklu programlama araçlarının nasıl kullanıldığını öğrenmeleri gerektiğini de belirtti.

Patterson, “Programlamaya tembel çocuk yaklaşımı yok.” Dedi.

Bellek ve ağ gecikmesi, veri işlerinde darboğazlar yarattı ve bu da paralel görev yürütme ile elde edilen performansı olumsuz etkileyebilir. Farklı mimariler için, mevcut tüm donanımlardan yararlanmayı zorlaştıran farklı programlama araçları da vardır.

Günümüzde mevcut olan birçok paralellik aracı, CPU'ların ve grafik işlem birimlerinin sistem performansını iyileştirmek için paralel işlem yeteneklerini kullanmak üzere tasarlanmıştır. Apple, Intel, Nvidia ve Advanced Micro Devices, Apple'ın gelecek olan Mac OS X 10.6 işletim sisteminde desteklenecek olan paralel bir programlama ortamı olan OpenCL'yi destekleyen şirketler arasında yer alıyor. OpenCL, Microsoft'a özel DirectX paralel programlama araçlarını ve CUDA çerçevesini sunan Nvidia'yı destekliyor.

OpenCL, çekirdekler arasında donanım dağılımını yönetmek için API'lerle (uygulama programlama arabirimleri) C-benzeri bir programlama dili içerir. işlemci çekirdeği ve diğer kaynaklar olarak. Patterson, OpenCL'nin bir sistemdeki çoklu CPU ve grafik işlem ünitelerinde piksel işlemlerini dağıtarak videoların daha hızlı bir şekilde kodunun çözülmesine yardımcı olabilir.

Tüm mevcut araçlar farklı yazılım ortamlarına yöneliktir ve farklı kaynaklardan yararlanır. Örneğin, OpenCL, GPU'larda görevlerin yerine getirilmesine yöneliktir. DirectX gibi tescilli modeller, heterojen bilgi işlem ortamlarına yayılmayı zorlaştırırken, OpenCL gibi bazı modellerde yalnızca GPU'lara dayanan belirli ortamlara uyum sağlanıyor.

"[OpenCL] 'nin tüm mimariler arasında benimsenmeyeceğini sanmıyorum." Patterson dedi. “Bu arada başka şeyleri denememiz gerekiyor,” diyor Ruby on Rails gibi yaygın olarak kullanılan geliştirme araçlarıyla programlama modellerini geliştirmeye çalışmak gibi. ”

Seyirci, paralellik için bir sorun olduğunu belirtti. On yıllar boyunca, panelistler, üniversitelerin artık paralelliği sağlamak için çoklu programlama araçları üzerinde çalışmaya yeni bir yaklaşım getirdiğini söyledi. Yıllarca sürmekte olan çip gelişiminin ardından hükümet, fonla ilgili programlarla paralel işlemeye daha fazla önem veriyor.

Kozyrakis, Stanford'un "kitleler için paralel uygulama geliştirmeyi pratik hale getirmeyi" amaçlayan bir laboratuvar kurduğunu söyledi. Araştırmacılar Intel, AMD, IBM, Sun, Hewlett-Packard ve Nvidia gibi şirketlerle çalışıyor.

Geliştiriciler için acil bir görev testi, modern çipler üzerinde yürütmek üzere mevcut eski kodları paralel olarak dönüştürmeyi denemek olabilir, Berkeley's Patterson dedim. Birkaç şirket otomatik olarak paralellik sunuyor, ancak asıl yürütme için orijinal olarak yazılmış eski kodun yeniden yazılması ve derlenmesi büyük bir zorluk olabilir.

"Bu alanlarda yapılacak para var," dedi Patterson.