| 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.