Saya mencoba memahami cara menggunakan GCD untuk memparalelkan dan mempercepat simulasi Monte Carlo. Sebagian besar/semua contoh sederhana disajikan untuk Objective C dan saya sangat membutuhkan contoh sederhana untuk Swift karena Swift adalah bahasa pemrograman “nyata” pertama saya.
Versi kerja minimal dari simulasi monte carlo di Swift akan menjadi seperti ini:
import Foundation
import Cocoa
var winner = 0
var j = 0
var i = 0
var chance = 0
var points = 0
for j=1;j<1000001;++j{
var ability = 500
var player1points = 0
for i=1;i<1000;++i{
chance = Int(arc4random_uniform(1001))
if chance<(ability-points) {++points}
else{points = points - 1}
}
if points > 0{++winner}
}
println(winner)
Kode berfungsi langsung ditempelkan ke proyek program baris perintah di xcode 6.1
Perulangan terdalam tidak dapat diparalelkan karena nilai baru dari variabel “titik” digunakan pada perulangan berikutnya. Namun yang terluar hanya menjalankan simulasi terdalam 10.00000 kali dan menghitung hasilnya dan harus menjadi kandidat ideal untuk paralelisasi.
Jadi pertanyaan saya adalah bagaimana cara menggunakan GCD untuk memparalelkan loop for terluar?