Bill Allombert on Tue, 05 Nov 2019 17:06:54 +0100 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
Re: Pari Library used with Rust : help with parallelism |
On Tue, Nov 05, 2019 at 05:46:50PM +0200, Omer Shlomovits wrote: > Hello , > > What I have tried: > - using the Rust "parallel for" over Pari library calls to “nupow” : I am getting stack overflow every time. No mattar what is the max size of the stack Did you read the documentation, in particular Appendix D ? Each threads need to set up its own PARI stack. > - I tried Pari parfor: This option went better but I got illegal > instruction error eventually. I think that it is because I don’t know > how to write “ i = 1 “ where i is a "formal variable” (I am not sure > what is a formal variable). In my code I just use j (instead of > writing i = 1) as some Gen repressing a number. This one is not going to work, parfor is only for GP. > - I looked into parapply but I have no idea (maybe you do?) on how to > write the function name as a "Gen f” when trying to invoke this method > from Rust. See examples/pari-mt.c: GEN myfunc(GEN a) { return muli(a,3); } In the initialization do: entree ep = {"mygpfunc",0,(void*)myfunc,20,"GL",""}; pari_add_function(&ep); /* add Cworker function to gp */ when you need f, do GEN f = strtoclosure("mygpfunc"); and then parapply(f, V); Cheers, Bill.