Design
This page describes the design rationale of all major components of the SnoParallel package.
Interactions between user and manager
The following sequence diagram describes the user calls and manager responses.
user user user user user user user manager manager manager manager manager manager manager manager manager manager manager manager manager manager user manager user user manager manager user user user user user user user manager manager manager manager manager manager manager manager manager manager manager manager manager manager initialisation start command report ready loop [for all shared variables] request shared variable return shared variable add references alt [workers already added] report workers already added alt [ready] report ready add workers alt [workers already added] report workers already added alt [ready] report ready work cycle(s) alt [single work cycle] loop [for all work items] add work item* report added request status* report status alt [multiple sequential work cycles] loop [for all work cycles] loop [for all work items] add work item* report added request status* report status alt [multiple independent work cycles] loop [for all work cycles] loop [for all work items] add work item* report added request status* report status add work item alt [add function] add function alt [workers not added] report workers not yet added alt [added] report added alt [add method] add method alt [workers not added] report workers not yet added alt [no reference index] no reference index alt [added] report added request status request status wait alt [finished] report done alt [timeout] report work not finished alt [failed] report worker(s) failed termination stop command report stopped 520.
plantuml.com | 520: Web server is returning an unknown error
Web server is returning an unknown error
Error code 520
2025-10-03 13:52:17 UTC
www.plantuml.com
Host
Error
What happened?
There is an unknown connection issue between Cloudflare and the origin web server. As a result, the web page can not be displayed.
What can I do?
If you are a visitor of this website:
Please try again in a few minutes.
If you are the owner of this website:
There is an issue between Cloudflare's cache and your origin web server. Cloudflare monitors for these errors and automatically investigates the cause. To help support the investigation, you can pull the corresponding error log from your web server and submit it our support team. Please include the Ray ID (which is at the bottom of this error page). Additional troubleshooting resources .
User interactions between user and shared variable
The following sequence diagram describes the user calls and shared variable responses.
user user user variable variable variable variable variable variable memory memory memory user variable memory user user variable variable memory memory user user user variable variable variable variable variable variable memory memory memory alt [read] during work read value request old value return old value return old value alt [write] during work write value value check alt [incorrect value] report incorrect value alt [correct value] write new value report done report done after work update command write old value report done report done user user user variable variable variable variable variable variable memory memory memory user variable memory user user variable variable memory memory user user user variable variable variable variable variable variable memory memory memory alt [read] during work read value request old value return old value return old value alt [write] during work write value value check alt [incorrect value] report incorrect value alt [correct value] write new value report done report done after work update command write old value report done report done
Interactions between manager and workers
The following sequence diagram describes the manager calls and worker responses.
manager manager manager manager manager workers workers workers workers workers queue queue queue queue queue manager workers queue manager manager workers workers queue queue manager manager manager manager manager workers workers workers workers workers queue queue queue queue queue initialisation start command report ready start command report ready work cycle(s) loop [for all work cycles] loop [for all work items] add work item report ready loop [until empty] get work item return work item process work item get work item report empty report done termination stop command report stopped stop command report stopped manager manager manager manager manager workers workers workers workers workers queue queue queue queue queue manager workers queue manager manager workers workers queue queue manager manager manager manager manager workers workers workers workers workers queue queue queue queue queue initialisation start command report ready start command report ready work cycle(s) loop [for all work cycles] loop [for all work items] add work item report ready loop [until empty] get work item return work item process work item get work item report empty report done termination stop command report stopped stop command report stopped
Interactions between manager and shared variable
The following sequence diagram describes the manager calls and shared variable responses.
manager manager manager memory memory memory variable variable manager memory variable manager manager memory memory variable variable manager manager manager memory memory memory variable variable initialisation allocate memory return reference start command write initial value report done report ready termination deallocate memory report done manager manager manager memory memory memory variable variable manager memory variable manager manager memory memory variable variable manager manager manager memory memory memory variable variable initialisation allocate memory return reference start command write initial value report done report ready termination deallocate memory report done
Interactions between workers and shared variable
The following sequence diagram describes the lock and value features of the shared variables.
worker 1 worker 1 worker 2 worker 2 worker 2 variable variable variable worker 1 worker 2 variable worker 1 worker 1 worker 2 worker 2 variable variable worker 1 worker 1 worker 2 worker 2 worker 2 variable variable variable process work item write new value read value report blocked wait report done read value return old value worker 1 worker 1 worker 2 worker 2 worker 2 variable variable variable worker 1 worker 2 variable worker 1 worker 1 worker 2 worker 2 variable variable worker 1 worker 1 worker 2 worker 2 worker 2 variable variable variable process work item write new value read value report blocked wait report done read value return old value