-
Notifications
You must be signed in to change notification settings - Fork 100
/
Copy pathFieldOperationsBenchs.jl
65 lines (55 loc) · 1.19 KB
/
FieldOperationsBenchs.jl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
module FieldOperationsBenchs
using Gridap.Arrays
using Gridap.Fields
using Gridap.Fields: MockField, MockBasis
using Gridap.TensorValues
using FillArrays
@inline function loop(a,cache)
for i in eachindex(a)
ai = getindex!(cache,a,i)
end
end
function bench1(n)
p1 = Point(2,2)
p2 = Point(4,2)
p3 = Point(1,3)
p4 = Point(5,2)
x = [p1,p2,p3,p4]
np = length(x)
va = 3.0
vb = 3.3
d = 2
fa = MockField{d}(va)
fb = MockField{d}(vb)
wa = 4.5
wb = 4.5
ndofa = 8
ndofb = 5
ba = MockBasis{d}(wa,ndofa)
bb = MockBasis{d}(wb,ndofb)
l = n
ax = fill(x,l)
afa = Fill(fa,l)
afb = Fill(fb,l)
aba = Fill(ba,l)
abb = Fill(bb,l)
ag_ff = field_array_operation(inner,afa,afb)
agx_ff = evaluate(ag_ff,ax)
cagx_ff = array_cache(agx_ff)
@time loop(agx_ff,cagx_ff)
ag_bf = field_array_operation(inner,aba,afb)
agx_bf = evaluate(ag_bf,ax)
cagx_bf = array_cache(agx_bf)
@time loop(agx_bf,cagx_bf)
ag_bb = field_array_operation(inner,aba,abb)
agx_bb = evaluate(ag_bb,ax)
cagx_bb = array_cache(agx_bb)
@time loop(agx_bb,cagx_bb)
end
for n in (1,1,10,1000,100000)
@eval begin
println("+++ running suite for n = $($n) +++")
bench1($n)
end
end
end # module