Jump to content

Checkpoint synchronization: Difference between revisions

(Scala contribution added.)
Line 1,644:
Worker 2 is ready
Task 3 complete</pre>
 
=={{header|Julia}}==
Julia has specific macros for checkpoint type synchronization. @async starts an asynchronous task, and multiple @async tasks can be synchronized by wrapping them within the @sync macro statement, which creates a checkpoint for all @async tasks.
<lang julia>
function runsim(numworkers, runs)
for count in 1:runs
@sync begin
for worker in 1:numworkers
@async begin
tasktime = rand()
sleep(tasktime)
println("Worker $worker finished after $tasktime seconds")
end
end
end
println("Checkpoint reached for run $count.")
end
println("Finished all runs.\n")
end
 
const trials = [[3, 2], [4, 1], [2, 5], [7, 6]]
for trial in trials
runsim(trial[1], trial[2])
end
{{output}}<pre>
Worker 1 finished after 0.2496063425219046 seconds
Worker 3 finished after 0.6437560525692665 seconds
Worker 2 finished after 0.7622150880806831 seconds
Checkpoint reached for run 1.
Worker 2 finished after 0.0745173155757679 seconds
Worker 3 finished after 0.39089824936640993 seconds
Worker 1 finished after 0.5397505221156416 seconds
Checkpoint reached for run 2.
Finished all runs.
 
Worker 4 finished after 0.26840044205839897 seconds
Worker 3 finished after 0.5589553147289623 seconds
Worker 2 finished after 0.8546852411700241 seconds
Worker 1 finished after 0.9300832572304523 seconds
Checkpoint reached for run 1.
Finished all runs.
 
Worker 1 finished after 0.5289138841087624 seconds
Worker 2 finished after 0.7356027970934949 seconds
Checkpoint reached for run 1.
Worker 1 finished after 0.20674100912304416 seconds
Worker 2 finished after 0.6998567540438869 seconds
Checkpoint reached for run 2.
Worker 1 finished after 0.11392579333661912 seconds
Worker 2 finished after 0.4949249386371388 seconds
Checkpoint reached for run 3.
Worker 1 finished after 0.6032150410794788 seconds
Worker 2 finished after 0.8986919181800306 seconds
Checkpoint reached for run 4.
Worker 1 finished after 0.4237385941703915 seconds
Worker 2 finished after 0.5574922259408035 seconds
Checkpoint reached for run 5.
Finished all runs.
 
Worker 7 finished after 0.0396918164082527 seconds
Worker 3 finished after 0.31472648034105966 seconds
Worker 6 finished after 0.32606467253051474 seconds
Worker 5 finished after 0.3690388125862416 seconds
Worker 1 finished after 0.4290499974502766 seconds
Worker 2 finished after 0.48606373107736744 seconds
Worker 4 finished after 0.8723256915201081 seconds
Checkpoint reached for run 1.
Worker 2 finished after 0.10418765463492563 seconds
Worker 3 finished after 0.14023815791725713 seconds
Worker 7 finished after 0.7850239937628409 seconds
Worker 4 finished after 0.8145187186029617 seconds
Worker 6 finished after 0.8446820477646959 seconds
Worker 1 finished after 0.9195642711183825 seconds
Worker 5 finished after 0.9517129615316944 seconds
Checkpoint reached for run 2.
Worker 7 finished after 0.28490757307993486 seconds
Worker 3 finished after 0.4199539978001552 seconds
Worker 2 finished after 0.5509998796559186 seconds
Worker 5 finished after 0.7840588445793306 seconds
Worker 1 finished after 0.8049513381813924 seconds
Worker 6 finished after 0.8848651563027041 seconds
Worker 4 finished after 0.9074862779348334 seconds
Checkpoint reached for run 3.
Worker 5 finished after 0.21855944993484533 seconds
Worker 2 finished after 0.27709606350565275 seconds
Worker 7 finished after 0.28450943951411123 seconds
Worker 4 finished after 0.40871929967426857 seconds
Worker 1 finished after 0.5506243033572837 seconds
Worker 3 finished after 0.9287035426710006 seconds
Worker 6 finished after 0.9624436931735709 seconds
Checkpoint reached for run 4.
Worker 5 finished after 0.04032963358782826 seconds
Worker 6 finished after 0.17464708712852195 seconds
Worker 4 finished after 0.19558842246553398 seconds
Worker 3 finished after 0.2113199231977796 seconds
Worker 7 finished after 0.423009958033447 seconds
Worker 1 finished after 0.7584848109224733 seconds
Worker 2 finished after 0.8116269421151843 seconds
Checkpoint reached for run 5.
Worker 6 finished after 0.12563630313371443 seconds
Worker 4 finished after 0.33588040252159823 seconds
Worker 1 finished after 0.44873857982831256 seconds
Worker 5 finished after 0.536029356963061 seconds
Worker 3 finished after 0.5687590862891123 seconds
Worker 2 finished after 0.6655311849010326 seconds
Worker 7 finished after 0.8454083062748163 seconds
Checkpoint reached for run 6.
Finished all runs.
</pre>
 
 
=={{header|Kotlin}}==
4,105

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.