Skip to content

Commit d3aaa07

Browse files
committed
misc: Minor edits and clean up
1 parent 0f83b47 commit d3aaa07

6 files changed

Lines changed: 36 additions & 26 deletions

File tree

devito/operator/profiling.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ def summary(self, args, dtype, params, reduce_over=None):
213213
else:
214214
summary.add(name, None, time)
215215

216-
# Add the language specific summary if necessary
216+
# Add the language-specific summary if necessary
217217
mapper_func = language_summary_mapper.get(self.language)
218218
if mapper_func:
219219
summary.add_language_summary(self.language, mapper_func(params))
@@ -347,7 +347,7 @@ def summary(self, args, dtype, params, reduce_over=None):
347347
# data transfers)
348348
summary.add_glb_fdlike('fdlike-nosetup', points, reduce_over_nosetup)
349349

350-
# Add the language specific summary if necessary
350+
# Add the language-specific summary if necessary
351351
mapper_func = language_summary_mapper.get(self.language)
352352
if mapper_func:
353353
summary.add_language_summary(self.language, mapper_func(params))

devito/petsc/iet/logging.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from devito.symbolics import Byref, FieldFromPointer
44
from devito.ir.iet import DummyExpr
55
from devito.logger import PERF
6+
from devito.tools import frozendict
67

78
from devito.petsc.iet.utils import petsc_call
89
from devito.petsc.logging import petsc_return_variable_dict, PetscInfo
@@ -31,9 +32,9 @@ def __init__(self, level, get_info=[], **kwargs):
3132
# SNES specific
3233
'snesgetiterationnumber',
3334
]
34-
for f in funcs:
35-
if f not in self.function_list:
36-
self.function_list.append(f)
35+
self.function_list.extend(
36+
[f for f in funcs if f not in self.function_list]
37+
)
3738

3839
# TODO: To be extended with if level <= DEBUG: ...
3940

@@ -70,7 +71,7 @@ def petsc_option_mapper(self):
7071
opts[info.name] = {}
7172
for vtype, out in zip(info.variable_type, info.output_param, strict=True):
7273
opts[info.name][out] = vtype(self.sreg.make_name(prefix=out))
73-
return opts
74+
return frozendict(opts)
7475

7576
@cached_property
7677
def calls(self):

devito/petsc/iet/routines.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def __init__(self, **kwargs):
3737
self.objs = kwargs.get('objs')
3838
self.solver_objs = kwargs.get('solver_objs')
3939
self.inject_solve = kwargs.get('inject_solve')
40-
self.solver_parameters = self.inject_solve.expr.rhs.solver_parameters
40+
self.solve_expr = self.inject_solve.expr.rhs
4141

4242
self._efuncs = OrderedDict()
4343
self._struct_params = []
@@ -95,9 +95,17 @@ def initial_guesses(self):
9595
def user_struct_callback(self):
9696
return self._user_struct_callback
9797

98+
@property
99+
def solver_parameters(self):
100+
return self.solve_expr.solver_parameters
101+
98102
@property
99103
def field_data(self):
100-
return self.inject_solve.expr.rhs.field_data
104+
return self.solve_expr.field_data
105+
106+
@property
107+
def formatted_prefix(self):
108+
return self.solve_expr.formatted_prefix
101109

102110
@property
103111
def arrays(self):
@@ -142,7 +150,7 @@ def _make_options_callback(self):
142150
command line arguments.
143151
"""
144152
params = self.solver_parameters
145-
prefix = self.inject_solve.expr.rhs.formatted_prefix
153+
prefix = self.formatted_prefix
146154

147155
set_body, clear_body = [], []
148156

devito/petsc/initialize.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ def PetscInitialize(clargs=sys.argv):
2323
dummy = Symbol(name='d')
2424

2525
if clargs is not sys.argv:
26-
clargs = [sys.argv[0], *clargs]
26+
clargs = (sys.argv[0], *clargs)
2727

2828
_petsc_clargs = clargs
2929

devito/petsc/logging.py

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ def petsc_entry(self, petscinfo):
7373
funcs = [
7474
petsc_return_variable_dict[f].name for f in petscinfo.function_list
7575
]
76-
values = tuple(getattr(petscinfo, c) for c in funcs)
76+
values = [getattr(petscinfo, c) for c in funcs]
7777
return PetscEntry(**{k: v for k, v in zip(funcs, values)})
7878

7979
def _add_properties(self):
@@ -140,7 +140,7 @@ def __init__(self, name, pname, petsc_option_mapper, sobjs, section_mapper,
140140
self.section_mapper = section_mapper
141141
self.inject_solve = inject_solve
142142
self.function_list = function_list
143-
self.formatted_prefix = inject_solve.expr.rhs.formatted_prefix
143+
self.solve_expr = inject_solve.expr.rhs
144144

145145
pfields = []
146146

@@ -160,19 +160,20 @@ def __init__(self, name, pname, petsc_option_mapper, sobjs, section_mapper,
160160
def fields(self):
161161
return self._fields
162162

163+
@property
164+
def prefix(self):
165+
# If users provide an options prefix, use it in the summary;
166+
# otherwise, use the default one generated by Devito
167+
return self.solve_expr.user_prefix or self.solve_expr.formatted_prefix
168+
163169
@property
164170
def section(self):
165171
section = self.section_mapper.items()
166172
return next((k[0].name for k, v in section if self.inject_solve in v), None)
167173

168174
@property
169175
def summary_key(self):
170-
# If users provide an options prefix, use it in the summary;
171-
# otherwise, use the default one generated by Devito
172-
user_prefix = self.inject_solve.expr.rhs.user_prefix
173-
if user_prefix is None:
174-
user_prefix = self.formatted_prefix
175-
return (self.section, user_prefix)
176+
return (self.section, self.prefix)
176177

177178
def __getattr__(self, attr):
178179
if attr not in self.petsc_option_mapper:
@@ -181,10 +182,10 @@ def __getattr__(self, attr):
181182
# Maps the petsc_option to its generated variable name e.g {'its': its0}
182183
obj_mapper = self.petsc_option_mapper[attr]
183184

184-
# Decode the value if it is a bytes object
185-
def decode_if_bytes(val):
185+
def get_val(val):
186+
val = getattr(self.value._obj, val.name)
187+
# Decode the val if it is a bytes object
186188
return str(os.fsdecode(val)) if isinstance(val, bytes) else val
187-
get_val = lambda v: decode_if_bytes(getattr(self.value._obj, v.name))
188189

189190
# - If the function returns a single value (e.g., KSPGetIterationNumber),
190191
# return that value directly.

devito/petsc/solver_parameters.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ def linear_solver_parameters(solver_parameters):
3434
def format_options_prefix(options_prefix):
3535
# NOTE: Modified from the `OptionsManager` inside petsctools
3636
if not options_prefix:
37-
options_prefix = f"devito_{next(_options_prefix_counter)}_"
38-
else:
39-
if not options_prefix.endswith("_"):
40-
options_prefix += "_"
41-
return options_prefix
37+
return f"devito_{next(_options_prefix_counter)}_"
38+
39+
if options_prefix.endswith("_"):
40+
return options_prefix
41+
return options_prefix + "_"

0 commit comments

Comments
 (0)