This is the mail archive of the gsl-discuss@sourceware.org mailing list for the GSL project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Adding OpenMP support for some of the GSL functions


Hi Frank,
The more intensive function is within rkf45_apply in my case. I simply added a few pragmas to the loops, and it speed it up quite a lot.


To put things in context, I am solving millions of differential equations, so the cost of rkf45_apply in itself is quite important. It is in fact the same order as the rest of the code outside the function (which is parallelized).

Attached is the modified rk45.c file.

Maxime

Le 2012-12-12 11:35, Frank Reininghaus a écrit :
Hi,

2012/12/11 Maxime Boissonneault:
Hi,
I am using GSL from another library of my own to perform numerical
integration of vectorial differential equations. After optimizing and
parallelizing most of my library, I ended up with the conclusion that GSL is
a major bottle neck in my computation, simply because it is not parallelized
to exploit multi-core achitectures.

I would like to submit patches to add support for OpenMP within GSL,
allowing easy parallelization on shared-memory architectures. How should I
proceed to do so ?
I think the most straightforward approach would be to use OpenMP
inside the function that calculates the r.h.s. of your differential
equation. This does not require any modifications to GSL at all.

Reorganising the ODE solver code in GSL such that it can make use of
many cores might not be easily possible because often the parameters
passed to the r.h.s. function depend on the results of earlier calls.

Best regards,
Frank


--
---------------------------------
Maxime Boissonneault
Analyste de calcul - Calcul Québec, Université Laval
Ph. D. en physique

Attachment: rkf45.c
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]