“…Algorithm 3: SG-SD pseudocode -decentralized process coordination Input: platf ormF ile, numT hreads, kT ype, pSize, method Output: simulatedTime Data: schedulingStep, scheduledT asks, chunkSize, hosts, tasks, numT asks, dummyT ask, dummyComm, changedT asks 1 numT asks ← pSize × pSize 2 tasks ← CreateT asks(kT ype, pSize) 3 foreach i ∈ numT asks do 4 SD task watch(tasks[i], SD DONE) 5 end /* Create a computational task to represent create threads overhead */ 6 dummyT ask ← SD task create comp seq("createThreads", thread creation overhead according to numT hreads in FLOPs) 7 SD task schedule(dummyT ask, hosts[0]) Algorithm 3: SG-SD pseudocode -decentralized process coordination -continued /* Run the simulation until a task is completed */ 8 while ! (is empty(changedT asks=SD simulate(-1))) do 9 for i = 0 : numT hreads do 10 if (scheduledT asks < numT asks) and is free(hosts[i]) then 11 chunkSize ← calculate chunk size(numT asks, numT hreads, schedulingStep, method) /* Create a scheduling overhead task according to the scheduling method */ 12 dummyT ask ← SD task create comp seq("scheduling overhead", scheduling overhead in FLOPs correponding to method) 13 dummyComm ← SD task create end end comm("assigning chunk", chunkSize × pSize × 8) /* Add dependencies between calculating chunk overhead, assigning overhead and the start of the execution of the chunk of tasks */ Terminate the program A SG-SD sequential computation task is created to represent the scheduling overhead of each DLS technique. This task is scheduled on the available thread in each simulated scheduling round.…”