Even if the runtime of each task was known, optimal multi-core scheduling is NPC iirc../SNIP/...the best we can do is simple heuristic algorithms.

Maybe someone should try it without any sort of optimizing algorithm. If massive mult-core is in the future, then I'd be interested to see how even a dumb implementation works. How about a Lisp where every variable clause of a let (not let*, obviously) is evaluated on a different core if the assignment is a function call, and where the body of the let statement runs once they've all returned.

- Code: Select all
`(let ((a (calc-something ...))`

(b (calc-something-else ...))

(c (calc-another-thing ...)))

;; once each of the above calc- calls have returned, then continue

(+ a b c))

Chris