|
1 | 1 | @testitem "MPI-Threads comparison BBMaterial{NoCorrection}" tags=[:mpi] begin |
| 2 | + force_threads_run!() |
2 | 3 | root = mktempdir() |
3 | 4 | path_threads = joinpath(root, "results_threads") |
4 | 5 | path_threads_vtk = joinpath(path_threads, "vtk") |
|
48 | 49 | sim_bb(30, "$path_mpi") |
49 | 50 | """ |
50 | 51 | mpiexec = Peridynamics.MPI.mpiexec() |
| 52 | + nprocs = get(ENV, "CI", "false") == "true" ? 2 : Sys.CPU_THREADS |
51 | 53 | jlcmd = Base.julia_cmd() |
52 | 54 | pdir = pkgdir(Peridynamics) |
53 | | - run(`$(mpiexec) -n 2 $(jlcmd) --project=$(pdir) -e $(mpi_cmd)`) |
| 55 | + run(`$(mpiexec) -n $(nprocs) $(jlcmd) --project=$(pdir) -e $(mpi_cmd)`) |
54 | 56 |
|
55 | 57 | @test isdir(path_threads_vtk) |
56 | 58 | @test isdir(path_mpi_vtk) |
|
67 | 69 | end |
68 | 70 |
|
69 | 71 | @testitem "MPI-Threads comparison BBMaterial{NoCorrection} DynamicRelaxation" tags=[:mpi] begin |
| 72 | + force_threads_run!() |
70 | 73 | root = mktempdir() |
71 | 74 | path_threads = joinpath(root, "results_threads") |
72 | 75 | path_threads_vtk = joinpath(path_threads, "vtk") |
|
116 | 119 | sim_bb(30, "$path_mpi") |
117 | 120 | """ |
118 | 121 | mpiexec = Peridynamics.MPI.mpiexec() |
| 122 | + nprocs = get(ENV, "CI", "false") == "true" ? 2 : Sys.CPU_THREADS |
119 | 123 | jlcmd = Base.julia_cmd() |
120 | 124 | pdir = pkgdir(Peridynamics) |
121 | | - run(`$(mpiexec) -n 2 $(jlcmd) --project=$(pdir) -e $(mpi_cmd)`) |
| 125 | + run(`$(mpiexec) -n $(nprocs) $(jlcmd) --project=$(pdir) -e $(mpi_cmd)`) |
122 | 126 |
|
123 | 127 | @test isdir(path_threads_vtk) |
124 | 128 | @test isdir(path_mpi_vtk) |
|
140 | 144 | end |
141 | 145 |
|
142 | 146 | @testitem "MPI-Threads comparison BBMaterial{EnergySurfaceCorrection}" tags=[:mpi,:skipci] begin |
| 147 | + force_threads_run!() |
143 | 148 | root = mktempdir() |
144 | 149 | path_threads = joinpath(root, "results_threads") |
145 | 150 | path_threads_vtk = joinpath(path_threads, "vtk") |
|
189 | 194 | sim_bb(30, "$path_mpi") |
190 | 195 | """ |
191 | 196 | mpiexec = Peridynamics.MPI.mpiexec() |
| 197 | + nprocs = get(ENV, "CI", "false") == "true" ? 2 : Sys.CPU_THREADS |
192 | 198 | jlcmd = Base.julia_cmd() |
193 | 199 | pdir = pkgdir(Peridynamics) |
194 | | - run(`$(mpiexec) -n 2 $(jlcmd) --project=$(pdir) -e $(mpi_cmd)`) |
| 200 | + run(`$(mpiexec) -n $(nprocs) $(jlcmd) --project=$(pdir) -e $(mpi_cmd)`) |
195 | 201 |
|
196 | 202 | @test isdir(path_threads_vtk) |
197 | 203 | @test isdir(path_mpi_vtk) |
|
208 | 214 | end |
209 | 215 |
|
210 | 216 | @testitem "MPI-Threads comparison OSBMaterial" tags=[:mpi,:skipci] begin |
| 217 | + force_threads_run!() |
211 | 218 | root = mktempdir() |
212 | 219 | path_threads = joinpath(root, "results_threads") |
213 | 220 | path_threads_vtk = joinpath(path_threads, "vtk") |
|
257 | 264 | sim_osb(30, "$path_mpi") |
258 | 265 | """ |
259 | 266 | mpiexec = Peridynamics.MPI.mpiexec() |
| 267 | + nprocs = get(ENV, "CI", "false") == "true" ? 2 : Sys.CPU_THREADS |
260 | 268 | jlcmd = Base.julia_cmd() |
261 | 269 | pdir = pkgdir(Peridynamics) |
262 | | - run(`$(mpiexec) -n 2 $(jlcmd) --project=$(pdir) -e $(mpi_cmd)`) |
| 270 | + run(`$(mpiexec) -n $(nprocs) $(jlcmd) --project=$(pdir) -e $(mpi_cmd)`) |
263 | 271 |
|
264 | 272 | @test isdir(path_threads_vtk) |
265 | 273 | @test isdir(path_mpi_vtk) |
|
276 | 284 | end |
277 | 285 |
|
278 | 286 | @testitem "MPI-Threads comparison CMaterial" tags=[:mpi] begin |
| 287 | + force_threads_run!() |
279 | 288 | root = mktempdir() |
280 | 289 | path_threads = joinpath(root, "results_threads") |
281 | 290 | path_threads_vtk = joinpath(path_threads, "vtk") |
|
325 | 334 | sim_cc(30, "$path_mpi") |
326 | 335 | """ |
327 | 336 | mpiexec = Peridynamics.MPI.mpiexec() |
| 337 | + nprocs = get(ENV, "CI", "false") == "true" ? 2 : Sys.CPU_THREADS |
328 | 338 | jlcmd = Base.julia_cmd() |
329 | 339 | pdir = pkgdir(Peridynamics) |
330 | | - run(`$(mpiexec) -n 2 $(jlcmd) --project=$(pdir) -e $(mpi_cmd)`) |
| 340 | + run(`$(mpiexec) -n $(nprocs) $(jlcmd) --project=$(pdir) -e $(mpi_cmd)`) |
331 | 341 |
|
332 | 342 | @test isdir(path_threads_vtk) |
333 | 343 | @test isdir(path_mpi_vtk) |
|
343 | 353 | end |
344 | 354 | end |
345 | 355 |
|
| 356 | +@testitem "MPI-Threads comparison RKCRMaterial" tags=[:mpi] begin |
| 357 | + force_threads_run!() |
| 358 | + root = mktempdir() |
| 359 | + path_threads = joinpath(root, "results_threads") |
| 360 | + path_threads_vtk = joinpath(path_threads, "vtk") |
| 361 | + path_mpi = joinpath(root, "results_mpi") |
| 362 | + path_mpi_vtk = joinpath(path_mpi, "vtk") |
| 363 | + |
| 364 | + function sim_cc(N::Int, path::String) |
| 365 | + l, Δx, δ, a = 1.0, 1/N, 3.015/N, 0.5 |
| 366 | + pos, vol = uniform_box(l, l, 0.1l, Δx) |
| 367 | + ids = sortperm(pos[2,:]) |
| 368 | + b = Body(RKCRMaterial(), pos[:, ids], vol[ids]) |
| 369 | + material!(b; horizon=3.015Δx, E=2.1e5, nu=0.25, rho=8e-6, Gc=2.7) |
| 370 | + point_set!(p -> p[1] ≤ -l/2+a && 0 ≤ p[2] ≤ 2δ, b, :set_a) |
| 371 | + point_set!(p -> p[1] ≤ -l/2+a && -2δ ≤ p[2] < 0, b, :set_b) |
| 372 | + precrack!(b, :set_a, :set_b) |
| 373 | + point_set!(p -> p[2] > l/2-Δx, b, :set_top) |
| 374 | + point_set!(p -> p[2] < -l/2+Δx, b, :set_bottom) |
| 375 | + velocity_bc!(t -> -30, b, :set_bottom, :y) |
| 376 | + velocity_bc!(t -> 30, b, :set_top, :y) |
| 377 | + vv = VelocityVerlet(steps=100) |
| 378 | + job = Job(b, vv; path=path, freq=50) |
| 379 | + submit(job) |
| 380 | + return nothing |
| 381 | + end |
| 382 | + sim_cc(30, path_threads) |
| 383 | + |
| 384 | + mpi_cmd = """ |
| 385 | + using Peridynamics |
| 386 | + function sim_cc(N::Int, path::String) |
| 387 | + l, Δx, δ, a = 1.0, 1/N, 3.015/N, 0.5 |
| 388 | + pos, vol = uniform_box(l, l, 0.1l, Δx) |
| 389 | + ids = sortperm(pos[2,:]) |
| 390 | + b = Body(RKCRMaterial(), pos[:, ids], vol[ids]) |
| 391 | + material!(b; horizon=3.015Δx, E=2.1e5, nu=0.25, rho=8e-6, Gc=2.7) |
| 392 | + point_set!(p -> p[1] ≤ -l/2+a && 0 ≤ p[2] ≤ 2δ, b, :set_a) |
| 393 | + point_set!(p -> p[1] ≤ -l/2+a && -2δ ≤ p[2] < 0, b, :set_b) |
| 394 | + precrack!(b, :set_a, :set_b) |
| 395 | + point_set!(p -> p[2] > l/2-Δx, b, :set_top) |
| 396 | + point_set!(p -> p[2] < -l/2+Δx, b, :set_bottom) |
| 397 | + velocity_bc!(t -> -30, b, :set_bottom, :y) |
| 398 | + velocity_bc!(t -> 30, b, :set_top, :y) |
| 399 | + vv = VelocityVerlet(steps=100) |
| 400 | + job = Job(b, vv; path=path, freq=50) |
| 401 | + submit(job) |
| 402 | + return nothing |
| 403 | + end |
| 404 | + sim_cc(30, "$path_mpi") |
| 405 | + """ |
| 406 | + mpiexec = Peridynamics.MPI.mpiexec() |
| 407 | + nprocs = get(ENV, "CI", "false") == "true" ? 2 : Sys.CPU_THREADS |
| 408 | + jlcmd = Base.julia_cmd() |
| 409 | + pdir = pkgdir(Peridynamics) |
| 410 | + run(`$(mpiexec) -n $(nprocs) $(jlcmd) --project=$(pdir) -e $(mpi_cmd)`) |
| 411 | + |
| 412 | + @test isdir(path_threads_vtk) |
| 413 | + @test isdir(path_mpi_vtk) |
| 414 | + vtk_files_threads = Peridynamics.find_vtk_files(path_threads_vtk) |
| 415 | + vtk_files_mpi = Peridynamics.find_vtk_files(path_mpi_vtk) |
| 416 | + @test length(vtk_files_mpi) == length(vtk_files_threads) == 3 |
| 417 | + for i in eachindex(vtk_files_threads, vtk_files_mpi) |
| 418 | + res_threads = read_vtk(vtk_files_threads[i]) |
| 419 | + res_mpi = read_vtk(vtk_files_mpi[i]) |
| 420 | + for key in keys(res_threads) |
| 421 | + @test res_threads[key] ≈ res_mpi[key] |
| 422 | + end |
| 423 | + end |
| 424 | +end |
346 | 425 |
|
347 | 426 | @testitem "MPI-Threads comparison BACMaterial" tags=[:mpi,:skipci] begin |
| 427 | + force_threads_run!() |
348 | 428 | root = mktempdir() |
349 | 429 | path_threads = joinpath(root, "results_threads") |
350 | 430 | path_threads_vtk = joinpath(path_threads, "vtk") |
|
394 | 474 | sim_bac(30, "$path_mpi") |
395 | 475 | """ |
396 | 476 | mpiexec = Peridynamics.MPI.mpiexec() |
| 477 | + nprocs = get(ENV, "CI", "false") == "true" ? 2 : Sys.CPU_THREADS |
397 | 478 | jlcmd = Base.julia_cmd() |
398 | 479 | pdir = pkgdir(Peridynamics) |
399 | | - run(`$(mpiexec) -n 2 $(jlcmd) --project=$(pdir) -e $(mpi_cmd)`) |
| 480 | + run(`$(mpiexec) -n $(nprocs) $(jlcmd) --project=$(pdir) -e $(mpi_cmd)`) |
400 | 481 |
|
401 | 482 | @test isdir(path_threads_vtk) |
402 | 483 | @test isdir(path_mpi_vtk) |
|
0 commit comments