[gambit-list] Computing pi with parallel gambit

Bradley Lucier lucier at math.purdue.edu
Sun Dec 11 13:59:04 EST 2016


On 12/11/2016 08:29 AM, Marc Feeley wrote:
> That will be a perfect use case for the multiple-threaded VM.

That's why I told you about it, to tempt you ;-).

> Can you write a parallel version of the algorithm, using thread-start! and thread-join! to manage the parallelism?  You can test it on a single-threaded VM and then I can give it a try here on a 64 processor machine.

You want me to do the work and you to have the fun!

More seriously, I just looked through the thread section of the Gambit 
manual and I do not yet understand the thread model that you've built 
into Gambit.  So I don't know how to do what you want.

I'm attaching the single-threaded code.  It has the lines

         (let* ((mid (quotient (+ a b) 2))
                (gpq1 (ch-split a mid))    ;<<<<====
                (gpq2 (ch-split mid b))    ;<<<<====
                (g1 (car gpq1)) (p1 (cadr gpq1)) (q1 (caddr gpq1))
                (g2 (car gpq2)) (p2 (cadr gpq2)) (q2 (caddr gpq2)))

The two calls to ch-split can be made in parallel.

I recommend introducing a parameter M and running those two calls in 
parallel if $b-a>M$.  M is the number of terms to be computed in the 
partial series at that point; M of the order of 10,000 or so should work.

The resulting code might be a good extended example for the manual.

Sorry I can't be more help.

Brad

PS:  By the way, a partial run in the interpreter on my linux box at 
home yields

firefly:~/programs/gambit/gambiteer> gsi chud2
Chudnovsky's algorithm using binary splitting in Gambit Scheme: digits 
10, CPU time: 0..
Last 5 digits 26535.
Chudnovsky's algorithm using binary splitting in Gambit Scheme: digits 
100, CPU time: 0..
Last 5 digits 70679.
Chudnovsky's algorithm using binary splitting in Gambit Scheme: digits 
1000, CPU time: 0..
Last 5 digits 1989.
Chudnovsky's algorithm using binary splitting in Gambit Scheme: digits 
10000, CPU time: .012.
Last 5 digits 75678.
Chudnovsky's algorithm using binary splitting in Gambit Scheme: digits 
100000, CPU time: .216.
Last 5 digits 24646.
Chudnovsky's algorithm using binary splitting in Gambit Scheme: digits 
1000000, CPU time: 3.0439999999999996.
Last 5 digits 58151.
Chudnovsky's algorithm using binary splitting in Gambit Scheme: digits 
10000000, CPU time: 47.112.
Last 5 digits 55897.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: chud2.scm
Type: text/x-scheme
Size: 2307 bytes
Desc: not available
URL: <http://mailman.iro.umontreal.ca/pipermail/gambit-list/attachments/20161211/2b747d4e/attachment.bin>


More information about the Gambit-list mailing list