From 485dde4c5fb331152676aa83d05c7d70a3fc31be Mon Sep 17 00:00:00 2001 From: Simon Brooke Date: Mon, 2 Jan 2017 23:20:48 +0000 Subject: [PATCH] Created parallelism (markdown) --- parallelism.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 parallelism.md diff --git a/parallelism.md b/parallelism.md new file mode 100644 index 0000000..f64cc97 --- /dev/null +++ b/parallelism.md @@ -0,0 +1,5 @@ +If this system doesn't make reasonably efficient use of massively parallel processors, it's failed. The sketch hardware for which it's designed is [[Post Scarcity Hardware]]; that system probably won't ever exist but systems somewhat like it almost certainly will, because we're up against the physical limits on the performance of a von Neumann machine, and the only way we can increase performance now is by going increasingly parallel. + +So on such a system, every function invocation must normally delegate every argument to a different processor, if there is another processor free (which there normally will be). Only special forms, like *cond*, which implement explicit flow control, should serialise evaluation. + +Therefore the semantics of every function must assume that the order of the evaluation of arguments is undetermined, and that the environment in which each argument is evaluated cannot be influenced by the evaluation of any other argument. Where the semantics of a function violate this expectation, this must be made explicit in the documentation and there should probably be a naming convention indicating this also. \ No newline at end of file