2012-02-16 18 views
5

Şu anda (çoğunlukla) araştırmada C++ kullanılarak hesaplamalı yoğun ekonometri için çalışıyorum. Daha üretken bir ortama geçmek istiyorum. D ümit verici geliyor, ama belki de şu anda tam üretken olmam için yeterince olgun değil. Son zamanlarda C# ve NMath kütüphanesine rastladım. Çok etkileyici görünüyor. Bunları böyle bir amaçla kullanan var mı? Deneyimleriniz neler? Verimliliğimi genel olarak arttırırsa, çalışma süresi hızından vazgeçmeye razıyım (görev süresi geçiyor). Düşünceleriniz ve önerileriniz takdir edildi!C# ve Hesaplamalı Finans ve Ekonometri için NMath

cevap

1

Centerspace's NMath ürününe atıfta bulunduğunu mu sanıyorsunuz?

Kısa bir süre önce bunları bir üretim uygulamasında kullanmaya başladık; Şimdiye kadar çok hafif olsa da (gaz girdisi GJ ile MW arasındaki gaz girdisi arasındaki ilişkiyi belirlemek için lineer bir regresyon yapılması, teknik olarak bu bir NMath Stats özelliğidir). Bugüne kadar kullanmaktan mutluluk duyuyor ve finans departmanımızın faturalarını işleme koymasını beklerken, destek süreleri dolmuş bir değerlendirme lisansına cevap vermede çok hızlıydı.

Performans söz konusu olduğunda, Intel Math Kernel Library numarasını kullanabilir, bu nedenle performans iyi olmalıdır; Sınırlı kullanımımız için herhangi bir olumsuz performans etkisine neden olmamıştır.

Başvurumuzda başka bir yerde kütüphaneyi kullanmayı uygun buluyorum!

+1

İlginç! Dizi özelliklerini önerebiliyor musunuz? Sıkı döngülerde çok fazla büyük matris ve 3 boyutlu dizi manipülasyonumuz var. Yıllar önce kütüphanelerini test ediyordum ve bu sırada hafıza patlıyordu ve dizi özellikleri gerçekten yoktu? Acaba bu durum o zamandan beri gelişir mi? – user492238

+0

@James: Girişiniz için teşekkürler. Sanırım bir deneyeceğim ve nasıl sevdiğimi göreceğim. Sizin için iyi çalıştığını bilmek güzel. Çok umut verici geliyor. – TJB

+0

Çalışma zamanı performansında herhangi bir düşüş beklememelisiniz. Ürünümüz James'in dediği gibi Intel'in Math Kernel Kütüphanesi'ni kullanıyor ve rakiplerimizi de kullanıyor. Herhangi bir önemli hesaplamalar için yürütme süresi büyük ölçüde MKL'nin içinde. Doğrusal regresyon fonksiyonu, LAPACK (MKL) kullanarak ayrıştırma yapmaktan sonuçlanır. –

10

Bir ekonomi şirketi (EMSI) için çalışıyorum ve yüksek performanslı hesaplama gereksinimlerimizin çoğunda D kullanıyoruz. Doğal hız ve verim kritiktir, ancak C'den daha yüksek düzeyde bir soyutlama ve C++ (IMHO) 'dan daha az sayıda yakalama sağlar. Gerçek zamanlı I/O modellerinin arkasındaki devasa matris işlemlerine güç sağlamak için kullandığımız BLAS, Intel MKL vb. Ile arayüz yapmak çok kolay. Çoğu zaman göz ardı edilen D verimlilik artırımı hakkında güzel bir şey, şaşırtıcı derecede hızlı bir derleyicidir - Çok büyük projelerde bile asla ilerlemeyen yapılarla uğraşmam.

+2

Çok ilginç. Optimize ediciler, rasgele sayı üreteçleri, istatistiksel dağılımlar için neler yapıyorsunuz? Kendininkini yuvarla? D'ye çok dikkatli bir gözle bakıyordum.Hesaplamalı ekonometristler için çok fazla söz veriyor gibi görünüyor. Deneyimlerinizi daha çok duymak isterim. – TJB

+0

Şimdiye kadar, esas olarak kendi ya da kullanılmış mevcut C lib'leri yuvarladık (oldukça iyi bir FOSS ürünü var ve D, C'nin ABI'sını kullanıyor). Öncelikle çok büyük miktarlarda zor verilerle çalışıyoruz (bu bizim bildiğimiz şey) ve teorik çalışmalarımızın çoğu doğrudan uygulanmaktadır, bu yüzden belki de bizim deneyimlerimiz aradığınızdan oldukça farklıdır. –

+0

D hakkında daha fazla bilgi edindim. D'yi EMSI'de nasıl kullandığınızla çok ilgileniyorum. Özel olarak sohbet etmek ister misiniz? Çok teşekkürler! – TJB

3

Benim önerim ILNumerics yönüne gider. Çevresindeki en hızlı kütüphanelerden biri gibi görünüyor. Birkaç ay önce ticari faaliyete geçti, ancak yıllardan beri, eskiden açık kaynak kütüphanesi olarak kullanıyordum.

Müşterilere bir uygulama dağıtmak için kitlesel Matlab kodlarını dönüştürmek zorundaydık. ILNumerics, Matlab ile aynı sözdizimini kullandığı için ilk (ve temelde tek) seçimimizdi. Ayrıca, dizi sınıfları da bizim için önemli olan n boyutlarını ve çok fazla alt dizgeyi ele alabilir. Güzel bir kod örneği here bulacaksınız. Benim düşünceme göre, tek dezavantaj: Müfettişlik için özel fonksiyonların eksikliği ve sadece temel istatistikler uygulanmaktadır. Bu yüzden kendi algoritmanızı (std, cov, var, mean, abs vb. Kullanarak) oluşturmak ve ardından HILO-herhangi bir göstergenin kutusundan çıkarılması çok uygundur.

+1

Bunu kontrol edeceğim. Teşekkürler! – TJB