comparison benchmark/benchmark_laplace.jl @ 1529:43aaf710463e refactor/equidistant_grid/signature

Change to signature of equidistant_grid to same style as many array methods. See for example Array{T}(undef, dims...), zeros(T, dims...), fill(a, dims...) and more.
author Jonatan Werpers <jonatan@werpers.com>
date Thu, 11 Apr 2024 22:31:04 +0200
parents 2ad2de55061a
children 471a948cd2b2
comparison
equal deleted inserted replaced
1528:d641798539c2 1529:43aaf710463e
8 8
9 const operator_path = sbp_operators_path()*"standard_diagonal.toml" 9 const operator_path = sbp_operators_path()*"standard_diagonal.toml"
10 10
11 function benchmark_const_coeff_1d(;N = 100, order = 4) 11 function benchmark_const_coeff_1d(;N = 100, order = 4)
12 stencil_set = read_stencil_set(operator_path; order=order) 12 stencil_set = read_stencil_set(operator_path; order=order)
13 g = equidistant_grid(N, 0., 1.) 13 g = equidistant_grid(0., 1., N)
14 D = second_derivative(g, stencil_set) 14 D = second_derivative(g, stencil_set)
15 u = rand(size(g)...) 15 u = rand(size(g)...)
16 u_xx = rand(size(g)...) 16 u_xx = rand(size(g)...)
17 17
18 b_naive = @benchmark $u_xx .= $D*$u 18 b_naive = @benchmark $u_xx .= $D*$u
23 print_benchmark_result("Threaded region apply",b_thrd) 23 print_benchmark_result("Threaded region apply",b_thrd)
24 end 24 end
25 25
26 function benchmark_var_coeff_1d(;N = 100, order = 4) 26 function benchmark_var_coeff_1d(;N = 100, order = 4)
27 stencil_set = read_stencil_set(operator_path; order=order) 27 stencil_set = read_stencil_set(operator_path; order=order)
28 g = equidistant_grid(N, 0., 1.) 28 g = equidistant_grid(0., 1., N)
29 c = rand(size(g)...) 29 c = rand(size(g)...)
30 c_lz = eval_on(g, x -> 0.5) 30 c_lz = eval_on(g, x -> 0.5)
31 D = second_derivative_variable(g, c, stencil_set) 31 D = second_derivative_variable(g, c, stencil_set)
32 D_lz = second_derivative_variable(g, c_lz, stencil_set) 32 D_lz = second_derivative_variable(g, c_lz, stencil_set)
33 u = rand(size(g)...) 33 u = rand(size(g)...)
47 print_benchmark_result("Threaded region apply lazy coeff",b_thrd_lz) 47 print_benchmark_result("Threaded region apply lazy coeff",b_thrd_lz)
48 end 48 end
49 49
50 function benchmark_const_coeff_2d(;N = 100, order = 4) 50 function benchmark_const_coeff_2d(;N = 100, order = 4)
51 stencil_set = read_stencil_set(operator_path; order=order) 51 stencil_set = read_stencil_set(operator_path; order=order)
52 g = equidistant_grid((N,N), (0.,0.,),(1.,1.)) 52 g = equidistant_grid((0.,0.,),(1.,1.), N, N)
53 D = Laplace(g, stencil_set) 53 D = Laplace(g, stencil_set)
54 u = rand(size(g)...) 54 u = rand(size(g)...)
55 u_xx = rand(size(g)...) 55 u_xx = rand(size(g)...)
56 if order == 2 56 if order == 2
57 clz_sz = 1 57 clz_sz = 1
69 print_benchmark_result("Threaded region apply",b_thrd) 69 print_benchmark_result("Threaded region apply",b_thrd)
70 end 70 end
71 71
72 function benchmark_var_coeff_2d(;N = 100, order = 4) 72 function benchmark_var_coeff_2d(;N = 100, order = 4)
73 stencil_set = read_stencil_set(operator_path; order=order) 73 stencil_set = read_stencil_set(operator_path; order=order)
74 g = equidistant_grid((N,N), (0.,0.,),(1.,1.)) 74 g = equidistant_grid((0.,0.,),(1.,1.), N, N)
75 c = rand(size(g)...) 75 c = rand(size(g)...)
76 c_lz = eval_on(g, x-> 0.5) 76 c_lz = eval_on(g, x-> 0.5)
77 D = second_derivative_variable(g, c, stencil_set, 1) + second_derivative_variable(g, c, stencil_set, 2) 77 D = second_derivative_variable(g, c, stencil_set, 1) + second_derivative_variable(g, c, stencil_set, 2)
78 D_lz = second_derivative_variable(g, c_lz, stencil_set, 1) + second_derivative_variable(g, c_lz, stencil_set, 2) 78 D_lz = second_derivative_variable(g, c_lz, stencil_set, 1) + second_derivative_variable(g, c_lz, stencil_set, 2)
79 u = rand(size(g)...) 79 u = rand(size(g)...)