-
Notifications
You must be signed in to change notification settings - Fork 0
/
firedrake_common.py
59 lines (49 loc) · 1.81 KB
/
firedrake_common.py
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
from copy import copy
from firedrake import *
#from firedrake import __version__ as firedrake_version
#from firedrake.utils import memoize
#from pyop2 import __version__ as pyop2_version
#from pyop2.profiling import tic, toc
from pybench import timed
import sys
#from common import get_petsc_version
class FiredrakeBenchmark(object):
#series = {'np': op2.MPI.comm.size, 'variant': 'Firedrake'}
series = {'np': 1, 'variant': 'Firedrake'}
meta = {'coffee': parameters["coffee"]}
#'firedrake': firedrake_version,
#'pyop2': pyop2_version}
#'petsc_version': get_petsc_version()}
#@memoize
@timed
def make_mesh(self, x, dim=2):
return UnitSquareMesh(x, x) if dim == 2 else UnitCubeMesh(x, x, x)
def lhs_overhead(self, a, bcs=None, N=1000):
A = assemble(a, bcs=bcs)
A.M
#tic('matrix assembly')
for _ in range(N):
assemble(a, tensor=A, bcs=bcs).M
#return toc('matrix assembly')/N
return 0
def lhs_ffc_overhead(self, a, bcs=None, N=1000):
#tic('matrix assembly')
for _ in range(N):
# Need to create new copies of the forms, since kernels are cached
assemble(copy(a), bcs=bcs).M
#return toc('matrix assembly')/N
return 0
def rhs_overhead(self, L, bcs=None, N=1000):
b = assemble(L, bcs=bcs)
#tic('rhs assembly')
for _ in range(N):
assemble(L, tensor=b, bcs=bcs).dat.data_ro
#return toc('rhs assembly')/N
return 0
def rhs_ffc_overhead(self, L, bcs=None, N=1000):
#tic('rhs assembly')
for _ in range(N):
# Need to create new copies of the forms, since kernels are cached
assemble(copy(L), bcs=bcs).dat.data_ro
#return toc('rhs assembly')/N
return 0