Jekejeke Prolog 1.1.6 (library modules work distribution)
Jan Burse, created Sep 12. 2016
We have just uploaded the new release of Jekejeke Prolog. We improved the multi-threading scalability of the Prolog interpreter.
- Module "clean" (in package "misc"):
This new module provides supervised execution. The predicates sys_clean_thread/1 and sys_clean_threads/2 run slave threads which will be cancelled for a termination event in the continuation or a signal by another thread.
- Module "distributed" (in package "runtime"):
This new module provides meta-predicates to distribute work over multiple threads. The simplest meta-predicate horde/[1,2] collects the results of the spawned threads. The meta-predicates balance/[2,3] and setup_balance/[3,4] allow work distribution of a generate and test.
- Better Scalability:
We could eleminate locking here and then completely (static predicates, predicate meta-information). In other cases we replaced simple mutex locks by read-write pair locks (dynamic predicates, multi-file predicates and source files). Not only the performance of multi-threaded code profits from these optimizations, but also single-threaded code.
"Frying Pan" Disclaimer:
Unattended execution or the use of unsuitable hardware to run multi-threaded code is not recommended. The device might overheat and automatically switch off, with the result of data loss. Or the device might keep running, with the result of hardware damage. No warranty or liability implied.
New GitHub Resources:
Some source code excerpts and some code samples have been uploaded to GitHub. You can now visit the repositories jekejeke-devel and jekejeke-samples.