Re: Compilation: Avoiding inlining
- To: mathgroup at smc.vnet.net
- Subject: [mg121497] Re: Compilation: Avoiding inlining
- From: DmitryG <einschlag at gmail.com>
- Date: Sat, 17 Sep 2011 06:27:20 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- References: <201109160946.FAA12301@smc.vnet.net> <j4vana$dal$1@smc.vnet.net>
Hi Oliver, thank you for your response! I am interested now in the systems of equations that are non-vectorizable. By mistake, in my first post I have used a system of equations that can be vectorized and this turned the discussion away from the topic. But in my second post, I have a non-vectorizable system of equations. I have identified three ways to define the system of equations. Below are the results with Mathematica compilation. 1) (* Definition of the equations *) NN = 1000; F = Function[{t, x}, Table[ -x[[i]] Sin[0.1 t]^2/(1 +100 Sum[x[[i + j]], {j, 1, Min[3, NN - i]}]^2), {i, 1, NN}]]; >> Evaluation time 24.4983979 - slow execution. No inlining. Compiled code 189 lines independently of NN. Compilation in C gives practically the same speed 2) (* Definition of the equations *) NN = 1000; F = Function[{t, x}, Table[ Unevaluated[-x[[i]] Sin[0.1 t]^2/(1 +100 Sum[x[[i + j]], {j, 1, Min[3, NN - i]}]^2)], {i, 1, NN}]]; >> Evaluation time 4.7582721. No inlining. Compiled code 93 lines independently of NN. Compilation in C gives practically the same speed 3) (* Definition of the equations *) NN = 1000; F = Function[{t, x}, Evaluate[Table[ -x[[i]] Sin[0.1 t]^2/(1 +100 Sum[x[[i + j]], {j, 1, Min[3, NN - i]}]^2), {i, 1, NN}]]]; >> Evaluation time 1.0680555 - fastest execution. Here we have inlining of the code, the size of the compiled code increases with NN. Compilation in C is impossible. One can see that there are many different ways with very different results, and it is very important to find the best one - more important than to buy a faster computer;-)) Does in make sense to introduce F as a compiled function, as you have done in your response? We already make compilation of the RK-4 procedure with F injected into it. Best, Dmitry
- Follow-Ups:
- Re: Compilation: Avoiding inlining
- From: Oliver Ruebenkoenig <ruebenko@wolfram.com>
- Re: Compilation: Avoiding inlining
- References:
- Re: Compilation: Avoiding inlining
- From: DmitryG <einschlag@gmail.com>
- Re: Compilation: Avoiding inlining