Arka uç numarası kırılması için HPC kaynaklarına sahip masaüstü yazılımı


17

Çalışma grubumuz, bina enerji performansını simüle eden bir masaüstü uygulaması üretir. Bir .NET uygulamasıdır ve kullanıcı çok fazla simülasyon çalıştırdığında oldukça zaman alıcı olabilir. Simülasyonlar tamamen paralelleştirilebilir ve "ofiste" çok önemli HPC bilgi işlem kaynaklarımız var.

Sahip olduğumuz bir fikir, kullanıcıların çok uzun süre çalışacağını bildiğimiz simülasyonları boşaltmasına izin vermektir (her bir simülasyon yaklaşık 30-120 saniye sürerken, çok sayıda simülasyon çalıştırmak birkaç gün sürebilir). Bunu daha önce kimse yaptı mı? Eğer öyleyse, işi kolaylaştırmak için herhangi bir kütüphane kullandınız mı? Bu çabaya değer miydi?

eklemek için düzenlendi:

Simülasyonu boşaltmak için bireysel görevler

  • bir dosyayı paketleme (yaklaşık 5Mb),
  • sunucularımıza yükleyerek,
  • paketin bireysel simülasyonlara ayrıştırılması (her biri yaklaşık 30-120 saniye sürer ve tamamen paralelleştirilebilir), simülasyon sayısı kullanıcı tarafından seçilen seçenek sayısının (yalıtım, bina yönü, vb.) ve en kötü seçim durumunun bir fonksiyonudur. olası her seçenek yaklaşık 1E50 simülasyonu ile sonuçlanır. 100 ila ~ 1E5 simülasyonları çalıştırmak bilinmiyor, ancak kullanıcıların çoğunluğu 10'dan az çalışacak.
  • tamamlanan simülasyonları yeniden bir araya getirmek ve şimdi çok daha büyük dosyayı indirmek.

Grubumuz bu konuda yeni olduğu için hangi arayüzün kullanılacağından emin değiliz ve bütçe kesintileri ile zaman içinde tamamlanabilir, ancak sonraki kişilerin (varsa) bakımı kolay olmalıdır.

Bu uygulama zaten .NET 4 kullanıyor ve kullanıcının sahip olduğu tüm çekirdekleri kullanmak için genişletilebilir (geliştirici makinelerimiz 8 çekirdeğe sahiptir).


Oldukça burada için neler hissettiğini kesinlikle üzerinde temizlemek değilim - HPC sonu her zaman açık olacak senin sunucuları veya diğer özel sunucular? (Eğer öyleyse, bu çok daha kolay olacaktır, çünkü çok daha fazla sunucu tarafı yapabilirsiniz.)
Aesin

@Aesin, HPC sonu sunucularımızda olacak, evet. Mevcut uygulama ve yeni sürüm, kullanıcıların masaüstünde simülasyonlar çalıştırıyor. Daha büyük kullanıcılar için HPC'yi kullanabilmek için bir sonraki sürüme nasıl bakacağım konusunda tavsiye / tavsiye arıyorum.
Tangurena

Yanıtlar:


10

Condor'u kullanmayı düşünebilirsiniz: http://research.cs.wisc.edu/condor/ . Ne tür bir HPC kaynağı hakkında konuştuğunuza ve ne kadar değişeceklerine bağlı olarak aşırıya kaçabilir. Ancak, başlamak oldukça kolaydır ve bağımsız işler, hata toleransı, yük dengesi, vb.

Bireysel görevler (ne kadar, ne zaman asenkron) ve etkileşim için hangi arabirimi (başlatma işlemi, kütüphane, vb.) Kullanacağınız konusunda daha spesifik olsaydınız daha yararlı olurdu.

Mat


Condor'un .net (Windows?) İle çalışıp çalışmayacağından emin değilim, ancak çalışma grubumuz Linux'ta condor kullanıyor ve iş göndermek için önerebilirim +1
Sebastian

Condor dosya sistemi üzerinden iletişim kurabilir, bu nedenle .NET'i takip etmesine gerek yoktur. Windows üzerinde çalışır.
Matt Knepley

5

.NET dünyasındaysanız, .NET 4'teki çoklu iş parçacığı desteğine baktınız mı; 4.5'e eklenen eşzamansız özellikler nelerdir?

Çok iş parçacıklı işleme, işlemeyi diğer makinelere boşaltmanıza yardımcı olmaz, ancak bu günlerde kullandığımız çok çekirdekli bilgisayarları daha iyi kullanmanızı sağlar. 4.0 bu konuda bazı güzel özelliklere sahiptir.

4.5 şu anda teknoloji önizlemesinde - bu yüzden yardımcı olup olmayacağını görmek için bir göz atmaya değer. MSDN'de, geçen ay içinde yeni eşzamansız özellikleri tanıtan bir makale vardı (Ekim veya Kasım ve kesinlikle Eylül'den önce değil). Bu özellikler geleneksel olarak daha az paralel kodu paralelleştirmenin bir yolu olarak görülüyordu, ancak IIRC de bazı çoklu sunucu desteği içeriyordu.


4

Cevap, HPC arka ucu olarak sahip olduğunuz şeye bağlıdır. Soru, NREL kullanıcıları tarafından kullanılabilen mevcut kaynaklarla ilgilidir. Linux kümeleri ve Windows Compute Cluster Server tabanlı bir Windows kümesi vardır.

  1. Linux kümesini kullanmak için yazarın simülasyon yordamının Mono (linux için .NET platformunun uygulanması) üzerinde çalıştığından ve Mono'nun düğümlere yüklendiğinden emin olması gerekir.

  2. Bir sonraki soru, kullanıcıların hesaplama kümelerinde hesapları olup olmadığı ve verileri düğümlere alıp alamayacağıdır. En basit durum, yerel bilgisayarlardan ve düğümlerden erişilebilen tek bir dosya sistemidir.

    NREL kullanıcıları için böyle bir dosya sisteminin mevcut olup olmadığından emin değilim, bu nedenle bazı kopyalama işlemleri yapılacaktır. Bu zaten işleri karmaşık hale getiriyor.

  3. Daha sonra uygulama, bir iş tanımı komut dosyası derleyebilmeli, ilgili kümeye gönderebilmeli ve iş kuyruktan çıkıncaya kadar simülasyonların durumu için kuyruk sistemini sorgulayabilmelidir.

  4. Son olarak uygulama sonuçları alabilmelidir.

Tümü Bu önemsiz olmasa da yapılabilir ve bu laboratuvarın kurulumuna oldukça özgüdür.

Ansys veya MSC'nin ticari uygulamaları, kullanıcının daha sonra uzak bir kümede toplu modda çalıştırılabilen bir simülasyon işi tanımını kaydetmesine izin verir.

Daha genel bir çözüm, eğer mevcutsa, Grid altyapısını kullanmak olacaktır.

Daha sonra, simülasyon isteklerini beklemek ve bunları kümeye göndermek için bir yerde bir Web hizmetinin kurulduğu hizmet odaklı mimari için gidilebilir, böylece uygulama mevcut kaynakların bilgisinden ayrıştırılır.

Bu, örneğin, tamamen web hizmeti işleme isteklerinden oluşan simülasyon iş akışlarını oluşturmak için araçların kullanıldığı hesaplama biyolojisinde yaygın olarak kullanılır.

Yalnızca, uzak bilgisayar kaynaklarına boşaltma hesaplamalarının Android için Google ses tanıma gibi uygulamalarda yaygın olarak kullanıldığını unutmayın.

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.