Skip to content

Commit 3a6936f

Browse files
authoredNov 17, 2024··
Update main branch (#136)
* Update CI versions and behavior * Refactor timings, due to: FEniCS/dolfinx#3487 FEniCS/dolfinx#3488 * API changes from: FEniCS/dolfinx#3500 * Fix demo * Install boost * Set tag * Only check docker on release branch * Fixes for refernece value size * More timing fixes * Another round of timing changes * Remove last old timing instance
1 parent 6a6ab73 commit 3a6936f

27 files changed

+70
-68
lines changed
 

‎.github/workflows/build_docs.yml

+10-3
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@ on:
55
workflow_call:
66
pull_request:
77
branches:
8-
- main
8+
- release
99

1010
jobs:
1111
build:
12-
runs-on: ubuntu-22.04
12+
runs-on: ubuntu-24.04
1313
container: ghcr.io/fenics/dolfinx/dev-env:current-mpich
1414
env:
1515
# Directory that will be published on github pages
@@ -18,9 +18,16 @@ jobs:
1818

1919
steps:
2020
- uses: actions/checkout@v4
21+
with:
22+
ref: release
23+
24+
- name: Install libbost for backwards compatibility
25+
run: |
26+
apt-get update
27+
apt-get install -y libboost-dev libboost-timer-dev
2128
2229
- name: Install DOLFINx
23-
uses: jorgensd/actions/install-dolfinx@v0.3
30+
uses: jorgensd/actions/install-dolfinx@v0.4
2431
with:
2532
dolfinx: v0.9.0
2633
ufl: 2024.2.0

‎.github/workflows/docker.yml

-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ on:
55
pull_request:
66
branches:
77
- release
8-
- main
98

109
workflow_dispatch:
1110

‎.github/workflows/sonarcloud.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ jobs:
6767
echo "$HOME/.sonar/build-wrapper-linux-x86" >> $GITHUB_PATH
6868
6969
- name: Install DOLFINx
70-
uses: jorgensd/actions/install-dolfinx@v0.3
70+
uses: jorgensd/actions/install-dolfinx@v0.4
7171
with:
7272
petsc_arch: ${PETSC_ARCH}
7373
dolfinx: main

‎.github/workflows/test_mpc.yml

+6-6
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ on:
1414
jobs:
1515
build:
1616
runs-on: ubuntu-latest
17-
container: ghcr.io/fenics/dolfinx/dolfinx:stable
17+
container: ghcr.io/fenics/dolfinx/dolfinx:nightly
1818

1919
strategy:
2020
matrix:
@@ -37,10 +37,10 @@ jobs:
3737
# - CC: clang
3838
# CXX: c++
3939
env:
40-
DOLFINX_BRANCH: v0.9.0
41-
BASIX_BRANCH: v0.9.0
42-
UFL_BRANCH: 2024.2.0
43-
FFCX_BRANCH: v0.9.0
40+
DOLFINX_BRANCH: main
41+
BASIX_BRANCH: main
42+
UFL_BRANCH: main
43+
FFCX_BRANCH: main
4444

4545
CC: ${{ matrix.CC }}
4646
CXX: ${{ matrix.CXX }}
@@ -88,7 +88,7 @@ jobs:
8888
python3 -m pip install --no-build-isolation --no-cache-dir --no-binary=h5py h5py
8989
9090
- name: Install DOLFINx
91-
uses: jorgensd/actions/install-dolfinx@v0.3
91+
uses: jorgensd/actions/install-dolfinx@v0.4
9292
with:
9393
dolfinx: ${{ env.DOLFINX_BRANCH }}
9494
ufl: ${{ env.UFL_BRANCH }}

‎cpp/PeriodicConstraint.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ dolfinx_mpc::mpc_data<T> _create_periodic_condition(
6565
parents_glob[i] = parents_glob[i] * bs + parent_rems[i];
6666
return parents_glob;
6767
};
68-
if (const std::size_t value_size = V.value_size() / V.element()->block_size();
68+
if (const std::size_t value_size = V.element()->reference_value_size();
6969
value_size > 1)
7070
throw std::runtime_error(
7171
"Periodic conditions for vector valued spaces are not "

‎cpp/mpc_helpers.h

+1-4
Original file line numberDiff line numberDiff line change
@@ -231,10 +231,7 @@ create_extended_functionspace(const dolfinx::fem::FunctionSpace<U>& V,
231231
old_dofmap.element_dof_layout(), new_index_map, old_dofmap.bs(),
232232
std::move(flattened_dofmap), old_dofmap.bs());
233233

234-
return dolfinx::fem::FunctionSpace(
235-
V.mesh(), element, new_dofmap,
236-
dolfinx::fem::compute_value_shape(element, V.mesh()->topology()->dim(),
237-
V.mesh()->geometry().dim()));
234+
return dolfinx::fem::FunctionSpace(V.mesh(), element, new_dofmap);
238235
}
239236

240237
} // namespace dolfinx_mpc

‎cpp/utils.h

+2-3
Original file line numberDiff line numberDiff line change
@@ -1007,8 +1007,7 @@ evaluate_basis_functions(const dolfinx::fem::FunctionSpace<U>& V,
10071007
auto element = V.element();
10081008
assert(element);
10091009
const int bs_element = element->block_size();
1010-
const std::size_t reference_value_size
1011-
= element->reference_value_size() / bs_element;
1010+
const std::size_t reference_value_size = element->reference_value_size();
10121011

10131012
// If the space has sub elements, concatenate the evaluations on the
10141013
// sub elements
@@ -1026,7 +1025,7 @@ evaluate_basis_functions(const dolfinx::fem::FunctionSpace<U>& V,
10261025

10271026
assert(basis_shape[2]
10281027
== std::size_t(element->space_dimension() / bs_element));
1029-
assert(basis_shape[3] == std::size_t(V.value_size() / bs_element));
1028+
assert(basis_shape[3] == std::size_t(element->reference_value_size()));
10301029
std::array<std::size_t, 3> reference_shape
10311030
= {basis_shape[1], basis_shape[2], basis_shape[3]};
10321031
std::vector<U> output_basis(std::reduce(

‎python/benchmarks/bench_contact_3D.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import numpy as np
2020
from basix.ufl import element
2121
from dolfinx import default_real_type, default_scalar_type
22-
from dolfinx.common import Timer, TimingType, list_timings, timing
22+
from dolfinx.common import Timer, list_timings, timing
2323
from dolfinx.cpp.mesh import entities_to_geometry
2424
from dolfinx.fem import (
2525
Constant,
@@ -297,7 +297,7 @@ def sigma(v):
297297
apply_lifting(b, [bilinear_form], [bcs], mpc)
298298
b.ghostUpdate(addv=PETSc.InsertMode.ADD_VALUES, mode=PETSc.ScatterMode.REVERSE) # type: ignore
299299
set_bc(b, bcs)
300-
list_timings(MPI.COMM_WORLD, [TimingType.wall])
300+
list_timings(MPI.COMM_WORLD)
301301

302302
# Solve Linear problem
303303
opts = PETSc.Options() # type: ignore
@@ -365,13 +365,13 @@ def sigma(v):
365365
for op in operations:
366366
op_timing = timing(f"{num_dofs}: {op}")
367367
num_calls = op_timing[0]
368-
wall_time = op_timing[1]
368+
wall_time = op_timing[1].total_seconds()
369369
avg_time = comm.allreduce(wall_time, op=MPI.SUM) / comm.size
370370
min_time = comm.allreduce(wall_time, op=MPI.MIN)
371371
max_time = comm.allreduce(wall_time, op=MPI.MAX)
372372
if comm.rank == 0:
373373
print(op, num_calls, avg_time, min_time, max_time, file=results_file)
374-
list_timings(MPI.COMM_WORLD, [TimingType.wall])
374+
list_timings(MPI.COMM_WORLD)
375375
b.destroy()
376376
solver.destroy()
377377

‎python/benchmarks/bench_elasticity.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
import h5py
1818
import numpy as np
1919
from dolfinx import default_real_type, default_scalar_type
20-
from dolfinx.common import Timer, TimingType, list_timings
20+
from dolfinx.common import Timer, list_timings
2121
from dolfinx.fem import (
2222
Constant,
2323
Function,
@@ -157,7 +157,7 @@ def l2b(li):
157157
solver.solve(b, uh)
158158
uh.ghostUpdate(addv=PETSc.InsertMode.INSERT, mode=PETSc.ScatterMode.FORWARD) # type: ignore
159159
mpc.backsubstitution(uh)
160-
solver_time = timer.elapsed()
160+
solver_time = timer.elapsed().total_seconds()
161161

162162
it = solver.getIterationNumber()
163163
if kspview:
@@ -176,7 +176,7 @@ def l2b(li):
176176
d_set = out_hdf5.get("num_dofs")
177177
d_set[r_lvl] = num_dofs
178178
d_set = out_hdf5.get("solve_time")
179-
d_set[r_lvl, MPI.COMM_WORLD.rank] = solver_time[0]
179+
d_set[r_lvl, MPI.COMM_WORLD.rank] = solver_time
180180
if xdmf:
181181
# Write solution to file
182182
u_h = Function(mpc.function_space)
@@ -223,5 +223,5 @@ def l2b(li):
223223
log_info(f"Run {i} in progress")
224224
bench_elasticity_one(r_lvl=i, out_hdf5=h5f, xdmf=args.xdmf, boomeramg=args.boomeramg, kspview=args.kspview)
225225
if args.timings and i == N - 1:
226-
list_timings(MPI.COMM_WORLD, [TimingType.wall])
226+
list_timings(MPI.COMM_WORLD)
227227
h5f.close()

‎python/benchmarks/bench_elasticity_edge.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
import h5py
1717
import numpy as np
1818
from dolfinx import default_real_type, default_scalar_type
19-
from dolfinx.common import Timer, TimingType, list_timings
19+
from dolfinx.common import Timer, list_timings
2020
from dolfinx.fem import (
2121
Constant,
2222
Function,
@@ -190,7 +190,7 @@ def sigma(v):
190190
solver.solve(b, uh.x.petsc_vec)
191191
uh.x.scatter_forward()
192192
mpc.backsubstitution(uh)
193-
solver_time = timer.elapsed()
193+
solver_time = timer.elapsed().total_seconds()
194194
if kspview:
195195
solver.view()
196196

@@ -206,7 +206,7 @@ def sigma(v):
206206
d_set = out_hdf5.get("num_slaves")
207207
d_set[r_lvl, MPI.COMM_WORLD.rank] = mpc.num_local_slaves
208208
d_set = out_hdf5.get("solve_time")
209-
d_set[r_lvl, MPI.COMM_WORLD.rank] = solver_time[0]
209+
d_set[r_lvl, MPI.COMM_WORLD.rank] = solver_time
210210
if info:
211211
log_info(f"Lvl: {r_lvl}, Its: {it}, max Mem: {mem}, dim(V): {num_dofs}")
212212

@@ -278,5 +278,5 @@ def sigma(v):
278278
)
279279

280280
if args.timings and i == N - 1:
281-
list_timings(MPI.COMM_WORLD, [TimingType.wall])
281+
list_timings(MPI.COMM_WORLD)
282282
h5f.close()

‎python/benchmarks/bench_periodic.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
import h5py
2222
import numpy as np
2323
from dolfinx import default_scalar_type
24-
from dolfinx.common import Timer, TimingType, list_timings
24+
from dolfinx.common import Timer, list_timings
2525
from dolfinx.fem import Function, dirichletbc, form, functionspace, locate_dofs_geometrical
2626
from dolfinx.fem.petsc import set_bc
2727
from dolfinx.io import XDMFFile
@@ -148,7 +148,7 @@ def periodic_relation(x):
148148
uh.x.scatter_forward()
149149
mpc.backsubstitution(uh)
150150

151-
solver_time = timer.elapsed()
151+
solver_time = timer.elapsed().total_seconds()
152152
if kspview:
153153
solver.view()
154154

@@ -163,7 +163,7 @@ def periodic_relation(x):
163163
d_set = out_hdf5.get("num_slaves")
164164
d_set[r_lvl, MPI.COMM_WORLD.rank] = mpc.num_local_slaves
165165
d_set = out_hdf5.get("solve_time")
166-
d_set[r_lvl, MPI.COMM_WORLD.rank] = solver_time[0]
166+
d_set[r_lvl, MPI.COMM_WORLD.rank] = solver_time
167167

168168
if MPI.COMM_WORLD.rank == 0:
169169
print(f"Rlvl {r_lvl}, Iterations {it}")
@@ -241,5 +241,5 @@ def periodic_relation(x):
241241

242242
# List_timings
243243
if args.timings and i == N - 1:
244-
list_timings(MPI.COMM_WORLD, [TimingType.wall])
244+
list_timings(MPI.COMM_WORLD)
245245
h5f.close()

‎python/benchmarks/ref_elasticity.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
import h5py
1919
import numpy as np
2020
from dolfinx import default_real_type, default_scalar_type
21-
from dolfinx.common import Timer, TimingType, list_timings
21+
from dolfinx.common import Timer, list_timings
2222
from dolfinx.fem import (
2323
Constant,
2424
Function,
@@ -257,5 +257,5 @@ def sigma(v):
257257
degree=args.degree,
258258
)
259259
if args.timings and i == N - 1:
260-
list_timings(MPI.COMM_WORLD, [TimingType.wall])
260+
list_timings(MPI.COMM_WORLD)
261261
h5f.close()

‎python/benchmarks/ref_periodic.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
import h5py
2828
import numpy as np
2929
from dolfinx import default_scalar_type
30-
from dolfinx.common import Timer, TimingType, list_timings
30+
from dolfinx.common import Timer, list_timings
3131
from dolfinx.fem import Function, dirichletbc, form, functionspace, locate_dofs_geometrical
3232
from dolfinx.fem.petsc import apply_lifting, assemble_matrix, assemble_vector, set_bc
3333
from dolfinx.io import XDMFFile
@@ -219,5 +219,5 @@ def dirichletboundary(x):
219219
)
220220

221221
if args.timings and i == N - 1:
222-
list_timings(MPI.COMM_WORLD, [TimingType.wall])
222+
list_timings(MPI.COMM_WORLD)
223223
h5f.close()

‎python/demos/demo_contact_2D.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
import numpy as np
2424
import scipy.sparse.linalg
2525
from dolfinx import default_real_type, default_scalar_type
26-
from dolfinx.common import Timer, TimingType, list_timings
26+
from dolfinx.common import Timer, list_timings
2727
from dolfinx.fem import Constant, dirichletbc, form, functionspace, locate_dofs_geometrical
2828
from dolfinx.fem.petsc import apply_lifting, assemble_matrix, assemble_vector, set_bc
2929
from dolfinx.io import XDMFFile
@@ -263,4 +263,4 @@ def left_corner(x):
263263

264264
outfile.close()
265265
if args.timing:
266-
list_timings(MPI.COMM_WORLD, [TimingType.wall])
266+
list_timings(MPI.COMM_WORLD)

‎python/demos/demo_contact_3D.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import numpy as np
2020
import scipy.sparse.linalg
2121
from dolfinx import default_real_type, default_scalar_type
22-
from dolfinx.common import Timer, TimingType, list_timings
22+
from dolfinx.common import Timer, list_timings
2323
from dolfinx.io import XDMFFile
2424
from dolfinx.mesh import CellType
2525
from ufl import Identity, TestFunction, TrialFunction, dx, grad, inner, sym, tr
@@ -232,7 +232,7 @@ def sigma(v):
232232
uh_numpy = K @ d
233233
assert np.allclose(uh_numpy, u_mpc)
234234

235-
list_timings(mesh.comm, [TimingType.wall])
235+
list_timings(mesh.comm)
236236
b.destroy()
237237
L_org.destroy()
238238
solver.destroy()
@@ -298,4 +298,4 @@ def sigma(v):
298298

299299
log_info("Simulation finished")
300300
if args.timing:
301-
list_timings(MPI.COMM_WORLD, [TimingType.wall])
301+
list_timings(MPI.COMM_WORLD)

‎python/demos/demo_periodic3d_topological.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
import numpy as np
2626
import scipy.sparse.linalg
2727
from dolfinx import default_scalar_type
28-
from dolfinx.common import Timer, TimingType, list_timings
28+
from dolfinx.common import Timer, list_timings
2929
from dolfinx.io import VTXWriter
3030
from dolfinx.mesh import CellType, create_unit_cube, locate_entities_boundary, meshtags
3131
from numpy.typing import NDArray
@@ -185,4 +185,4 @@ def periodic_relation(x):
185185
if __name__ == "__main__":
186186
for celltype in [CellType.hexahedron, CellType.tetrahedron]:
187187
demo_periodic3D(celltype)
188-
list_timings(MPI.COMM_WORLD, [TimingType.wall])
188+
list_timings(MPI.COMM_WORLD)

‎python/demos/demo_periodic_geometrical.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
import numpy as np
2323
import scipy.sparse.linalg
2424
from dolfinx import default_scalar_type
25-
from dolfinx.common import Timer, TimingType, list_timings
25+
from dolfinx.common import Timer, list_timings
2626
from dolfinx.io import XDMFFile
2727
from dolfinx.mesh import create_unit_square, locate_entities_boundary
2828
from ufl import (
@@ -185,5 +185,5 @@ def periodic_relation(x):
185185
# Back substitution to full solution vector
186186
uh_numpy = K.astype(scipy_dtype) @ d.astype(scipy_dtype)
187187
assert np.allclose(uh_numpy.astype(u_mpc.dtype), u_mpc, atol=float(tol))
188-
list_timings(MPI.COMM_WORLD, [TimingType.wall])
188+
list_timings(MPI.COMM_WORLD)
189189
L_org.destroy()

‎python/demos/demo_stokes.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -329,4 +329,4 @@ def T(u: Expr, p: Expr, mu: Expr):
329329
# ## Timings
330330
# Finally, we list the execution time of various operations used in the demo
331331

332-
common.list_timings(MPI.COMM_WORLD, [common.TimingType.wall])
332+
common.list_timings(MPI.COMM_WORLD)

‎python/demos/demo_stokes_nest.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -362,4 +362,4 @@ def T(u: Expr, p: Expr, mu: Expr):
362362
Uh.destroy()
363363
ksp.destroy()
364364
# -------------------- List timings --------------------------
365-
dolfinx.common.list_timings(MPI.COMM_WORLD, [dolfinx.common.TimingType.wall])
365+
dolfinx.common.list_timings(MPI.COMM_WORLD)

‎python/tests/test_cube_contact.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import scipy.sparse.linalg
2020
import ufl
2121
from dolfinx import default_scalar_type
22-
from dolfinx.common import Timer, TimingType, list_timings
22+
from dolfinx.common import Timer, list_timings
2323
from dolfinx.io import gmshio
2424

2525
import dolfinx_mpc
@@ -301,4 +301,4 @@ def sigma(v):
301301
b.destroy()
302302
solver.destroy()
303303

304-
list_timings(comm, [TimingType.wall])
304+
list_timings(comm)

0 commit comments

Comments
 (0)
Please sign in to comment.