Zamanlamalar parSapply()
Zar oyununun çalıştırılması utandırıcı derecede paraleldir (embarrassingly parallel). Bu tür simülasyonlar genellikle (ama her zaman değil) iyi bir hızlanma sağlar. Daha önce olduğu gibi, microbenchmark()
veya system.time() kullanabiliriz. Basitlik açısından, bu egzersizde system.time() kullanacağız.
Bu egzersiz
Verimli R Kodu Yazma
kursunun bir parçasıdırEgzersiz talimatları
play() fonksiyonu çalışma alanında tanımlı. Yüz bin oyun oynamak istediğimizi varsayalım.
no_of_gamesdeğerini1e5olarak ayarla.play()fonksiyonunun seri biçimde art arda çağrılmasını zamanlamak içinsystem.time()kullan.1:no_of_gamesveplay()sarmalayıcı fonksiyonuylasapply()çağır.- Sonucu
serialdeğişkenine ata. - Zamanlamak için bu çağrıyı
system.time()içine al.
- 4 çekirdekli bir küme (cluster) nesnesi oluştur ve
play()fonksiyonunu bu kümeye dışa aktar. play()fonksiyonunun paralel biçimde art arda çağrılmasını zamanlamak içinsystem.time()kullan.serialoluştururken kullandığın kodu yeniden düzenle, fakat paralel çalışacak şekilde.
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
# Set the number of games to play
no_of_games <- ___
# Time serial version
system.time(serial <- sapply(1:___, function(i) play()))
# Set up cluster
cl <- makeCluster(___)
clusterExport(cl, "play")
# Time parallel version
system.time(par <- ___)
# Stop cluster
stopCluster(cl)