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