Thankyou very much for offering help, I have very little experience in 
Julia, and most definitely don't understand the profile sorry. I have two 
solvers both forward Euler one with adaptive the other uniform stepsize. 
I'm not using CVODE from Sundials.jl as the number of error and warnings 
being thrown slows everything down massivley and seems to causes my program 
to crash regularly (that might just be poor error handling and settings on 
my part I'm not a good enough coder to deal with that I don't think). Here 
is the profile for the uniform step size solver (100 iterations of the 
sqrerror function sampling at 1e-6):

3      ...lia/Error_function.jl; sqrerror; line: 105
 2 ...julia/Error_function.jl; odesolve; line: 52
  1 array.jl; linspace; line: 187
  1 array.jl; linspace; line: 195
 1 ...julia/Error_function.jl; odesolve; line: 66
  1 broadcast.jl; broadcast_shape; line: 45
188    abstractarray.jl; checkbounds; line: 62
2391   abstractarray.jl; checkbounds; line: 65
1      array.jl; .*; line: 746
18     array.jl; .*; line: 750
53     broadcast.jl; _F_; line: 295
21     broadcast.jl; broadcast!; line: 228
2      broadcast.jl; broadcast_shape; line: 30
48     broadcast.jl; broadcast_shape; line: 45
21     broadcast.jl; check_broadcast_shape; line: 57
3      broadcast.jl; longer_size; line: 23
23     broadcast.jl; longer_size; line: 24
149    dict.jl; ht_keyindex2; line: 476
920555 loading.jl; include_from_node1; line: 128
 920555 boot.jl; include; line: 244
  920553 no file; anonymous; line: 269
   7      ...Optimisation_main.jl; paramSearch; line: 10
   920374 ...Optimisation_main.jl; paramSearch; line: 14
    16     ...a/Error_function.jl; sqrerror; line: 104
    910580 ...a/Error_function.jl; sqrerror; line: 105
     1308   ...a/Error_function.jl; evaluate; line: 35
     45     ...a/Error_function.jl; evaluate; line: 41
     3439   ...a/Error_function.jl; odesolve; line: 52
      198  array.jl; linspace; line: 185
      556  array.jl; linspace; line: 187
      1    array.jl; linspace; line: 192
      41   array.jl; linspace; line: 194
      2594 array.jl; linspace; line: 195
      2    array.jl; linspace; line: 197
     2      ...a/Error_function.jl; odesolve; line: 53
     3      ...a/Error_function.jl; odesolve; line: 54
     2066   ...a/Error_function.jl; odesolve; line: 59
      239 array.jl; fill!; line: 143
      88  array.jl; fill!; line: 146
      416 array.jl; fill!; line: 147
      6   array.jl; fill!; line: 150
     410    ...a/Error_function.jl; odesolve; line: 60
      19  abstractarray.jl; checkbounds; line: 62
      12  abstractarray.jl; checkbounds; line: 65
      218 array.jl; getindex; line: 260
      10  multidimensional.jl; setindex!; line: 61
      7   multidimensional.jl; setindex!; line: 72
       6 operators.jl; setindex_shape_check; line: 259
      2   multidimensional.jl; setindex!; line: 76
      2   multidimensional.jl; setindex!; line: 80
      104 operators.jl; abs; line: 301
      6   operators.jl; setindex_shape_check; line: 259
     2      ...a/Error_function.jl; odesolve; line: 62
     559    ...a/Error_function.jl; odesolve; line: 64
     212863 ...a/Error_function.jl; odesolve; line: 65
      29925 ...a/Error_function.jl; evaluate; line: 35
       26497 operators.jl; abs; line: 301
      62411 ...a/Error_function.jl; evaluate; line: 37
       39347 array.jl; fill!; line: 143
       1016  array.jl; fill!; line: 144
       69    array.jl; fill!; line: 146
       546   array.jl; fill!; line: 147
      8066  ...a/Error_function.jl; evaluate; line: 38
      33325 ...a/Error_function.jl; evaluate; line: 39
      1677  ...a/Error_function.jl; evaluate; line: 40
      7338  ...a/Error_function.jl; evaluate; line: 41
      7000  ...a/Error_function.jl; evaluate; line: 45
      42    array.jl; fill!; line: 144
      2028  multidimensional.jl; _getindex!; line: 31
      19    multidimensional.jl; _getindex!; line: 40
      51230 multidimensional.jl; _getindex; line: 45
       3922 multidimensional.jl; _getindex!; line: 31
        1913 multidimensional.jl; checksize; line: 4
        340  multidimensional.jl; checksize; line: 5
       1422 multidimensional.jl; _getindex!; line: 37
       222  multidimensional.jl; _getindex!; line: 40
       1172 multidimensional.jl; _getindex!; line: 292
       144  multidimensional.jl; _getindex!; line: 295
       436  multidimensional.jl; checksize; line: 4
       1    multidimensional.jl; checksize; line: 5
      1363  operators.jl; abs; line: 301
     674980 ...a/Error_function.jl; odesolve; line: 66
      1416   abstractarray.jl; checkbounds; line: 62
      1180   abstractarray.jl; checkbounds; line: 65
      20395  array.jl; .*; line: 746
      364    array.jl; .*; line: 747
      939    array.jl; .*; line: 748
      317    array.jl; .*; line: 750
      127    array.jl; fill!; line: 144
      18664  broadcast.jl; broadcast!; line: 220
      81792  broadcast.jl; broadcast!; line: 227
       27569 broadcast.jl; _F_; line: 88
        1808 broadcast.jl; check_broadcast_shape; line: 50
        1387 broadcast.jl; check_broadcast_shape; line: 51
        3068 broadcast.jl; check_broadcast_shape; line: 55
        1322 broadcast.jl; check_broadcast_shape; line: 57
       76    broadcast.jl; _F_; line: 90
       729   broadcast.jl; _F_; line: 95
       1008  broadcast.jl; _F_; line: 96
       1705  broadcast.jl; _F_; line: 189
       923   broadcast.jl; _F_; line: 292
       1469  broadcast.jl; _F_; line: 295
       1514  broadcast.jl; check_broadcast_shape; line: 50
       145   broadcast.jl; check_broadcast_shape; line: 57
      921    broadcast.jl; broadcast!; line: 228
      175    broadcast.jl; broadcast!; line: 568
      28129  broadcast.jl; broadcast!; line: 571
       6029 dict.jl; ht_keyindex2; line: 467
       869  dict.jl; ht_keyindex2; line: 469
       7414 dict.jl; ht_keyindex2; line: 470
        570 dict.jl; int64hash; line: 219
        65  dict.jl; int64hash; line: 220
        53  dict.jl; int64hash; line: 221
        84  dict.jl; int64hash; line: 222
        98  dict.jl; int64hash; line: 223
        59  dict.jl; int64hash; line: 224
        149 dict.jl; int64hash; line: 225
       731  dict.jl; ht_keyindex2; line: 472
       4234 dict.jl; ht_keyindex2; line: 475
       641  dict.jl; ht_keyindex2; line: 476
       1    dict.jl; ht_keyindex2; line: 480
       185  dict.jl; ht_keyindex2; line: 481
       3522 dict.jl; ht_keyindex2; line: 486
       2221 dict.jl; ht_keyindex2; line: 487
      4665   broadcast.jl; broadcast!; line: 577
      553    broadcast.jl; broadcast!; line: 579
      112033 broadcast.jl; broadcast_shape; line: 30
       87916 broadcast.jl; longer_size; line: 24
        21853 broadcast.jl; longer_size; line: 23
      64065  broadcast.jl; broadcast_shape; line: 32
       38643 array.jl; fill!; line: 143
       525   array.jl; fill!; line: 144
       191   array.jl; fill!; line: 147
      823    broadcast.jl; broadcast_shape; line: 33
      1688   broadcast.jl; broadcast_shape; line: 35
      703    broadcast.jl; broadcast_shape; line: 37
      54     broadcast.jl; broadcast_shape; line: 38
      375    broadcast.jl; broadcast_shape; line: 39
      534    broadcast.jl; broadcast_shape; line: 40
      87703  broadcast.jl; broadcast_shape; line: 45
      4212   dict.jl; ht_keyindex2; line: 467
      147    dict.jl; ht_keyindex2; line: 476
      1938   multidimensional.jl; _getindex!; line: 31
      12     multidimensional.jl; _getindex!; line: 40
      174803 multidimensional.jl; _getindex; line: 45
       3404 multidimensional.jl; _getindex!; line: 31
        1583 multidimensional.jl; checksize; line: 4
        249  multidimensional.jl; checksize; line: 5
       1314 multidimensional.jl; _getindex!; line: 37
       164  multidimensional.jl; _getindex!; line: 40
       785  multidimensional.jl; _getindex!; line: 292
       116  multidimensional.jl; _getindex!; line: 295
       279  multidimensional.jl; checksize; line: 4
      2720   multidimensional.jl; setindex!; line: 61
      2151   multidimensional.jl; setindex!; line: 72
       1837 operators.jl; setindex_shape_check; line: 259
      948    multidimensional.jl; setindex!; line: 76
      499    multidimensional.jl; setindex!; line: 80
      175    multidimensional.jl; setindex!; line: 292
      127    multidimensional.jl; setindex!; line: 293
      100    multidimensional.jl; setindex!; line: 295
      1295   operators.jl; setindex_shape_check; line: 259
     161    ...a/Error_function.jl; odesolve; line: 68
     774    ...a/Error_function.jl; odesolve; line: 72
      28  abstractarray.jl; checkbounds; line: 69
      4   abstractarray.jl; checkbounds; line: 70
      1   multidimensional.jl; _getindex!; line: 31
      1   multidimensional.jl; _getindex!; line: 40
      221 multidimensional.jl; getindex; line: 49
       2   abstractarray.jl; checkbounds; line: 62
       142 abstractarray.jl; checkbounds; line: 69
       10  abstractarray.jl; checkbounds; line: 70
      451 multidimensional.jl; getindex; line: 50
       31 multidimensional.jl; _getindex!; line: 31
        7  multidimensional.jl; checksize; line: 4
        19 multidimensional.jl; checksize; line: 5
       93 multidimensional.jl; _getindex!; line: 37
       2  multidimensional.jl; _getindex!; line: 40
       3  multidimensional.jl; _getindex!; line: 292
       17 multidimensional.jl; _getindex!; line: 293
       2  multidimensional.jl; _getindex!; line: 295
       7  multidimensional.jl; checksize; line: 4
     691    abstractarray.jl; checkbounds; line: 62
     1172   abstractarray.jl; checkbounds; line: 65
     1429   array.jl; .*; line: 746
     27     array.jl; .*; line: 750
     10     array.jl; fill!; line: 143
     11     array.jl; getindex; line: 260
     10     array.jl; linspace; line: 185
     863    broadcast.jl; broadcast!; line: 220
     17     broadcast.jl; broadcast!; line: 228
     881    broadcast.jl; broadcast_shape; line: 30
     52     broadcast.jl; broadcast_shape; line: 45
     2425   multidimensional.jl; _getindex; line: 45
     5      multidimensional.jl; getindex; line: 49
     1      multidimensional.jl; getindex; line: 50
     625    multidimensional.jl; setindex!; line: 61
     39     multidimensional.jl; setindex!; line: 80
     12     operators.jl; abs; line: 301
     24     reduce.jl; maximum_rgn; line: 384
    1      ...a/Error_function.jl; sqrerror; line: 108
    7639   ...a/Error_function.jl; sqrerror; line: 110
     729  array.jl; .^; line: 703
      23  array.jl; reshape; line: 88
      231 array.jl; reshape; line: 91
       84 tuple.jl; ==; line: 87
       7  tuple.jl; ==; line: 92
      2   array.jl; reshape; line: 92
      195 array.jl; reshape; line: 94
     12   array.jl; fill!; line: 143
     4    array.jl; reshape; line: 88
     93   broadcast.jl; broadcast!; line: 220
     600  broadcast.jl; broadcast!; line: 227
      117 broadcast.jl; _F_; line: 88
       46 broadcast.jl; check_broadcast_shape; line: 50
       12 broadcast.jl; check_broadcast_shape; line: 51
       13 broadcast.jl; check_broadcast_shape; line: 55
       2  broadcast.jl; check_broadcast_shape; line: 57
      9   broadcast.jl; _F_; line: 90
      56  broadcast.jl; _F_; line: 95
      5   broadcast.jl; _F_; line: 96
      1   broadcast.jl; _F_; line: 189
      12  broadcast.jl; _F_; line: 292
      5   broadcast.jl; _F_; line: 295
      20  broadcast.jl; check_broadcast_shape; line: 50
     2    broadcast.jl; broadcast!; line: 228
     34   broadcast.jl; broadcast!; line: 568
     236  broadcast.jl; broadcast!; line: 571
      67 dict.jl; ht_keyindex2; line: 467
      3  dict.jl; ht_keyindex2; line: 469
      96 dict.jl; ht_keyindex2; line: 470
      46 dict.jl; ht_keyindex2; line: 475
      3  dict.jl; ht_keyindex2; line: 476
      18 dict.jl; ht_keyindex2; line: 486
      2  dict.jl; ht_keyindex2; line: 487
     100  broadcast.jl; broadcast!; line: 577
     13   broadcast.jl; broadcast!; line: 579
     649  broadcast.jl; broadcast_shape; line: 30
      279 broadcast.jl; longer_size; line: 24
     279  broadcast.jl; broadcast_shape; line: 32
      170 array.jl; fill!; line: 143
      7   array.jl; fill!; line: 144
      1   array.jl; fill!; line: 147
     18   broadcast.jl; broadcast_shape; line: 33
     23   broadcast.jl; broadcast_shape; line: 35
     3    broadcast.jl; broadcast_shape; line: 37
     5    broadcast.jl; broadcast_shape; line: 39
     8    broadcast.jl; broadcast_shape; line: 40
     442  broadcast.jl; broadcast_shape; line: 45
     22   dict.jl; ht_keyindex2; line: 467
     4    reducedim.jl; _sum!; line: 89
     15   reducedim.jl; reduced_dims; line: 9
     3554 reducedim.jl; sum; line: 146
      135  array.jl; fill!; line: 143
      3    array.jl; fill!; line: 144
      3    array.jl; fill!; line: 146
      8    array.jl; fill!; line: 147
      1    array.jl; fill!; line: 150
      12   reducedim.jl; _sum!; line: 89
      10   reducedim.jl; _sum!; line: 91
      29   reducedim.jl; _sum!; line: 106
      39   reducedim.jl; _sum!; line: 292
      3    reducedim.jl; _sum!; line: 295
      3062 reducedim.jl; reduced_dims; line: 9
       2470 tuple.jl; getindex; line: 8
        365 base.jl; Array; line: 179
         316 base.jl; Array; line: 179
        120 cell.jl; setindex!; line: 32
    971    ...a/Error_function.jl; sqrerror; line: 111
     132 array.jl; ./; line: 746
     2   array.jl; ./; line: 747
     52  array.jl; ./; line: 748
     2   array.jl; ./; line: 750
     30  reduce.jl; sum; line: 275
     6   reduce.jl; sum; line: 278
      1 reduce.jl; sum_pairwise; line: 267
      2 reduce.jl; sum_pairwise; line: 270
      1 reduce.jl; sum_seq; line: 206
      1 reduce.jl; sum_seq; line: 242
     3   reduce.jl; sum_pairwise; line: 266
    5      array.jl; .^; line: 703
    45     broadcast.jl; broadcast!; line: 220
    1      broadcast.jl; broadcast!; line: 228
    11     broadcast.jl; broadcast_shape; line: 30
   168    ...Optimisation_main.jl; paramSearch; line: 16
1      multidimensional.jl; _getindex!; line: 31
33     multidimensional.jl; _getindex!; line: 40
82     multidimensional.jl; _getindex; line: 45
104    multidimensional.jl; checksize; line: 5
1      multidimensional.jl; getindex; line: 50
1      multidimensional.jl; setindex!; line: 80
48     operators.jl; abs; line: 301
31     operators.jl; setindex_shape_check; line: 259
5      reduce.jl; maximum_rgn; line: 387
2      reduce.jl; maximum_rgn; line: 388
5      reduce.jl; maximum_rgn; line: 395
4      reduce.jl; maximum_rgn; line: 396
1      reduce.jl; sum; line: 275
1      reduce.jl; sum; line: 276
3      reduce.jl; sum; line: 278
16     reduce.jl; sum_seq; line: 206
3      reduce.jl; sum_seq; line: 222
1      reduce.jl; sum_seq; line: 224
14     reduce.jl; sum_seq; line: 225
3      reduce.jl; sum_seq; line: 227
1      reduce.jl; sum_seq; line: 234
5      reduce.jl; sum_seq; line: 237
3      reduce.jl; sum_seq; line: 242
2      reducedim.jl; sum; line: 146

On Thursday, May 22, 2014 2:48:30 PM UTC+1, [email protected] wrote:
>
>
>
> Le jeudi 22 mai 2014 15:23:53 UTC+2, sam cooper a écrit :
>>
>> Hi,
>>
>> I have an inner loop function which uses a 'constant' tuple:
>>
>> fhandle = (expdat,obsv,expdev,t)
>>
>> with types
>>
>> fhandle::(Matrix{Float64},Vector{Int64},Float64,Vector{Int64})
>>
>> Currently I am passing fhandle to the function each time it's called and 
>> then reallocating a set of variables i.e.
>>
>> function sqrerror(fhandle::(Matrix{Float64},Vector{Int64},Float64,Vector{
>> Int64}),p::Vector{Float64})
>>
>>     (expdat,obsv,expdev,tsample) = fhandle
>>     (obs,error_flag) = odesolve(p,tsample,obsv)
>>
>>     if error_flag
>>         return(1e16)
>>     end
>>     error_val = sum((expdat.-obs).^2,1)
>>     error_val = sum(error_val./(expdev.^2))
>>     return(error_val)
>> end
>>
>>
>> Only 'p' is changed each time the function is called but fhandle is 
>> constant but needs to be defined in another file really.
>>
>> Can I speed this up? I was thinking about using a module with const 
>> global variables but the documentation suggested global variables are 
>> slower.
>>
> Did you profile your code? 
>
> From my experience (which you might not share), the most probable slow par 
> of the code would most certainly be "odesolve" in which case, fhandle is 
> not your problem. Please first profile your code and then let's see what we 
> can do for you.
>  
>
>>
>> Thankyou in advance for any help and advice
>>
>> Best,
>> Sam
>>
>>

Reply via email to