R kodunu yapmak için herhangi bir öneriniz birden fazla işlemci kullanıyor mu?


28

Farklı dosyalardan büyük miktarda csv verisi okumak için R-script'lere sahibim ve daha sonra sınıflandırma için svm gibi makine öğrenme görevlerini yerine getiriyorum.
Sunucuda R için birden fazla çekirdek kullanmaya yönelik herhangi bir kitaplık var mı
ya da
bunu başarmanın en uygun yolu nedir?


Sadece veri içe aktarmanın ve SVM çalıştırmanın bu soru ile ilgisinin nasıl olduğunu görmüyorum. Bu yüzden bunun daha çok bir SO sorusu olduğunu düşünüyorum. Ama Xrefs’i R’den beri uzun vadeli iyi bir çözüm olarak görebiliyorum ...
Shane

3
Burada bu tür bir soru-cevap ile bir sorunum yok. R o kadar ana bir dil değildir (Python veya Java gibi), bir nicenin doğal olarak “Ah, bu genel bir programlama sorusudur, bu yüzden StackOverflow'a ya da benzerine gitmeliyim ve şunu sormalı ya da çözüm aramalıyım” diyecektir. Aslında bir R posta listesi veya grup sitesi için daha fazla bir soru. R öğrenmek isteyen tomurcuklanan analistlere hizmet etmek için, burada da bir cevabınız olduğu için mutlu olmalıyız.
Paul

2
Açık tutmak için oy verin; İstatistikçilerle çok ilgilidir çünkü sorunlarımızın paralel akışlara bölünemediği veya bozulmadığı yollar, sorulan soruyla ilgiliydi.
russellpierce

@chl: Buna çarptığın için teşekkürler. Aslında, bu konudaki ticari olmayan tüm referansları göründükten kısa bir süre sonra kontrol ettim ancak Win 7 x64'te çalışan hiçbir şey bulamadım.
whuber

1
whuber, sunduğum çözüm win 7 ile çalışıyor ve ticari değil (ayrıntılar için bağlantı verdiğim yazıyı okuyun). Ticari bir ortamla paketlenmiştir ancak ondan ayrılabilir (yazımın nasıl gösterdiği gibi). Ve kodun kendisi GPL ...
Tal Galili 16:10

Yanıtlar:


16

Eğer Linux'taysa, en açık olan çok çekirdeklidir . Bunun ötesinde, MPI'ye bir göz atmanızı öneririm (özellikle kar paketi ile).

Daha genel olarak, bir göz atın:

  1. Yüksek Performanslı Bilgisayar görüntülemek CRAN üzerinde.
  2. "R ile Paralel Hesaplamada Sanatın Durumu"

Son olarak, kodunuzdaki paralel arka uçları soyutlamak için foreach paketini kullanmanızı öneririm . Bu uzun vadede daha kullanışlı hale getirecek.


Ben çoğunlukla çok çekirdekli kullanıyorum, yine de hata toleransı ve temiz arayüzü için kar yağışı ve kar yağışı rmpi'den daha çok hoşlanıyorum.

kar yağışı için @ mb + 1 - karı daha da özetler ve R ile paralel hesaplamayı oldukça basitleştirir.
Sharpie


5

Shane haklı. Hem multicore hem de Rmpi kazanır.

Konunun biraz daha geniş kapsama alanı , Yüksek Performanslı Bilgi İşlemde CRAN Görev Görünümü'nde . Bu aynı zamanda JSS'den R ile Paralel Hesaplama hakkında oldukça yeni bir anket makalesine de bağlantı vermektedir .

Son olarak, birkaç uygulamalı örnek ve ipucu, R dersi ile HPC'ye Giriş bölümünde , bir kerede bir kez vereceğim - geçen hafta gelen useR'daki en son kopya için sunumlar sayfasına bakın .


Mutekses gerekli. Cevabınıza yorum yaptığım gibi, sadece ilk (ham) sürümü gördüm ve iyi düşündüm, mc ve Rmpi'yi genişletebilirim. Sonra sen yaptın ve ben bir taklitçiye benziyorum. Hayat böyledir.
Dirk Eddelbuettel

Öte yandan cevabım geçmişte makalenizi / sunumunuzu okumaktan geliyor. Sanırım seni de kopyalıyorum.
Shane,

5

Önceki cevapların bazı genel HPC hususları olmadığını fark ettim.
Öncelikle, bu paketlerin hiçbiri bir SVM'yi paralel olarak çalıştırmanıza izin vermez . Yani hızlandırabileceğiniz şey parametre optimizasyonu veya çapraz doğrulama, yine de bunun için kendi fonksiyonlarınızı yazmalısınız. Ya da elbette, farklı veri kümeleri için işi paralel olarak çalıştırabilirsiniz.
İkinci konu hafıza; Hesaplamayı birkaç fiziksel bilgisayara yaymak istiyorsanız, ücretsiz öğle yemeği yoktur ve verileri kopyalamanız gerekir - burada bazı iletişimi kaydetmek için verilerin bir kopyasını bilgisayarlara önceden dağıtmanın mantıklı olup olmadığını düşünmelisiniz. Öte yandan, bir bilgisayarda birden fazla çekirdek kullanmak istiyorsanız, çok çekirdekli özellikle uygundur çünkü tüm alt işlemlerin üst işlemin belleğine erişmesini sağlar, böylece biraz zaman ve çok fazla alan kazanabilirsiniz.


1
+1 Bunun çapraz onaylamayı bölmeyle nasıl baş edeceği konusunda harika bir nokta.
Shane,

Bu arada, dCSE tarafından bireysel SVM'ler için HPC'nin etkinleştirilmesinde bazı yeni çalışmalar (2013) yapılmıştır ( hector.ac.uk/cse/distributedcse/reports/sprint03/… ). sprintR işlevine sahip bir paket var psvm, ancak bunlar R 3.0 değişikliklerine ve yeni CRAN gönderim kurallarına uyma konusunda biraz geride kalıyor, bu nedenle mevcut indirme CRAN'da mevcut değil veya R 3.0 ile tam uyumlu değil. Kilometreniz değişebilir.
parlak yıldız

3

Hem Shane hem de Dirk’in cevapları çok açık.

Bununla birlikte, büyük veri kümeleriyle başa çıkmak ve birden fazla çekirdek üzerinde çalışmak üzere inşa edilen Revolution R adlı ticari sürümüne bir R göz atmak isteyebilirsiniz . Bu yazılım akademisyenler için ücretsizdir (ki bu sizin durumunuz olabilir, bilmiyorum)


5
Ben de aynı fikirde değilim. Devrim, zihniyet payını almakta (yazınızın belirttiği gibi) büyük bir satış işi yapar, ancak şu anda olduğu gibi, normal R ile elde edemeyeceğiniz çok az şey var (en azından Linux'ta). Intel MKL, elbette, ama Goto Blas'ı alabilirsiniz. Windows'ta, çok çekirdekli orada inşa edilemez olarak yardımcı olan doSMP sunarlar.
Dirk Eddelbuettel

2
Ancak, elbette, doSMP, bir Windows ortamında çalışıyorlarsa OP'nin tam olarak aradığı şeydir.
russellpierce
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.