BoostGSoC13 / odeint-v2

odeint - parallelization GSoC project
http://headmyshoulder.github.com/odeint-v2/
0 stars 0 forks source link

OpenMP algebra and operations #6

Open neapel opened 11 years ago

neapel commented 11 years ago

I made a BOOST_ODEINT_GEN_FOR_EACH macro to generate the for_eachN functions for the algebra since it turned out to be quite error-prone and tedious to manually write them (and there will be changes I don't want to have to copy manually). The downside is that these don't work in C++03 with #pragma omp since there's no _Pragma yet, so they will eventually have to be unrolled again. But the macros might be useful for the other algebras/operations? Currently not all of them support all sizes, the helper macros allow easily setting a maximum size to generate…

headmyshoulder commented 11 years ago

This looks like a very good enhancement of odeints algebras and operations. Where can I see the code? I have looked a bit around but I could not find it.

Btw. should we pack this in a separate branch? Just in case we merge this very soon in odeint's master it might be good to do this separately from the OpenMP and MPI stuff.

On 06/14/2013 11:55 PM, neapel wrote:

I made a |BOOST_ODEINT_GEN_FOR_EACH| macro to generate the |for_eachN| functions for the algebra since it turned out to be quite error-prone and tedious to manually write them (and there will be changes I don't want to have to copy manually). The downside is that these don't work in C++03 with |#pragma omp| since there's no |_Pragma| yet, so they will eventually have to be unrolled again. But the macros might be useful for the other algebras/operations? Currently not all of them support all sizes, the helper macros allow easily setting a maximum size to generate…

— Reply to this email directly or view it on GitHub https://github.com/BoostGSoC/odeint-v2/issues/6#issuecomment-19483808.

neapel commented 11 years ago

The macros are in n_ary_helper.hpp, but I'll split the commits and I put the macros into boost/numeric/odeint/util/ in master and branch openmp from there

mariomulansky commented 11 years ago

I think we should add schedule( runtime ) to the omp pragmas in the algebra. then the user can configure the scheduling with omp_set_schedule in the beginning of his program.

headmyshoulder commented 11 years ago

On 15.06.2013 16:01, neapel wrote:

The macros are in n_ary_helper.hpp https://github.com/BoostGSoC/odeint-v2/blob/1725e45ac5a41b14ae0e43902e6a091beebfd095/boost/numeric/odeint/external/openmp/n_ary_helper.hpp, but I'll split the commits and I put the macros into |boost/numeric/odeint/util/| in |master| and branch |openmp| from there

Maybe it is better to put it into algebra/detail. Unfortunately, there is no clear definition what should be in utils, but I think the n_ary_helpers will only be used from the algebras.

— Reply to this email directly or view it on GitHub https://github.com/BoostGSoC/odeint-v2/issues/6#issuecomment-19496866.