From 9577be2ccd7cd2a31f0f0c5dc78f769b39632e23 Mon Sep 17 00:00:00 2001 From: alexandermote Date: Wed, 15 Jan 2025 16:42:18 -0800 Subject: [PATCH 1/5] Adding variable-length tally support --- mcdc/main.py | 69 +++++++++++++++++----- mcdc/type_.py | 12 ++++ test/regression/dd_cooper/answer.h5 | Bin 240928 -> 0 bytes test/regression/dd_cooper/input.py | 62 ------------------- test/regression/slab_reed_dd_3d/answer.h5 | Bin 360584 -> 396304 bytes 5 files changed, 65 insertions(+), 78 deletions(-) delete mode 100644 test/regression/dd_cooper/answer.h5 delete mode 100644 test/regression/dd_cooper/input.py diff --git a/mcdc/main.py b/mcdc/main.py index f530d00f..ce11a5bc 100644 --- a/mcdc/main.py +++ b/mcdc/main.py @@ -705,15 +705,25 @@ def prepare(): ) else: # decomposed mesh filters + mcdc["technique"]["dd_xsum"] = len(input_deck.mesh_tallies[i].x) - 1 + mcdc["technique"]["dd_ysum"] = len(input_deck.mesh_tallies[i].y) - 1 + mcdc["technique"]["dd_zsum"] = len(input_deck.mesh_tallies[i].z) - 1 + mxn, mxp, myn, myp, mzn, mzp = dd_mesh_bounds(i) # Filters new_x = input_deck.mesh_tallies[i].x[mxn:mxp] new_y = input_deck.mesh_tallies[i].y[myn:myp] new_z = input_deck.mesh_tallies[i].z[mzn:mzp] - mcdc["mesh_tallies"][i]["filter"]["x"] = new_x - mcdc["mesh_tallies"][i]["filter"]["y"] = new_y - mcdc["mesh_tallies"][i]["filter"]["z"] = new_z + xlen = len(new_x) + ylen = len(new_y) + zlen = len(new_z) + mcdc["mesh_tallies"][i]["filter"]["x"][:xlen] = new_x + mcdc["mesh_tallies"][i]["filter"]["y"][:ylen] = new_y + mcdc["mesh_tallies"][i]["filter"]["z"][:zlen] = new_z + mcdc["technique"]["dd_xlen"] = xlen - 1 + mcdc["technique"]["dd_ylen"] = ylen - 1 + mcdc["technique"]["dd_zlen"] = zlen - 1 for name in ["t", "mu", "azi", "g"]: N = len(getattr(input_deck.mesh_tallies[i], name)) mcdc["mesh_tallies"][i]["filter"][name][:N] = getattr( @@ -1388,9 +1398,9 @@ def dd_mergetally(mcdc, data): d_Nz = input_deck.technique["dd_mesh"]["z"].size - 1 # capture tally lengths for reorganizing later - xlen = len(mcdc["mesh_tallies"][0]["filter"]["x"]) - 1 - ylen = len(mcdc["mesh_tallies"][0]["filter"]["y"]) - 1 - zlen = len(mcdc["mesh_tallies"][0]["filter"]["z"]) - 1 + xlen = mcdc["technique"]["dd_xlen"] + ylen = mcdc["technique"]["dd_ylen"] + zlen = mcdc["technique"]["dd_zlen"] # MPI gather if (d_Nx * d_Ny * d_Nz) == MPI.COMM_WORLD.Get_size(): @@ -1404,6 +1414,10 @@ def dd_mergetally(mcdc, data): MPI.COMM_WORLD.Gatherv( sendbuf=tally[i], recvbuf=(dd_tally[i], sendcounts), root=0 ) + # gather tally lengths for proper recombination + xlens = MPI.COMM_WORLD.gather(xlen, root=0) + ylens = MPI.COMM_WORLD.gather(ylen, root=0) + zlens = MPI.COMM_WORLD.gather(zlen, root=0) # MPI gather for multiprocessor subdomains else: @@ -1425,6 +1439,10 @@ def dd_mergetally(mcdc, data): # gather tallies for i, t in enumerate(tally): dd_comm.Gatherv(tally[i], (dd_tally[i], sendcounts), root=0) + # gather tally lengths for proper recombination + xlens = dd_comm.gather(xlen, root=0) + ylens = dd_comm.gather(ylen, root=0) + zlens = dd_comm.gather(zlen, root=0) dd_group.Free() if MPI.COMM_NULL != dd_comm: dd_comm.Free() @@ -1434,20 +1452,39 @@ def dd_mergetally(mcdc, data): # reorganize tally data # TODO: find/develop a more efficient algorithm for this tally_idx = 0 + offset = 0 + ysum = mcdc["technique"]["dd_ysum"] + zsum = mcdc["technique"]["dd_zsum"] for di in range(0, d_Nx * d_Ny * d_Nz): dz = di // (d_Nx * d_Ny) dy = (di % (d_Nx * d_Ny)) // d_Nx dx = di % d_Nx + + offset = 0 + # calculate subdomain offset + for i in range(0, dx): + offset += xlens[i] * ysum * zsum + + for i in range(0, dy): + y_ind = i * d_Nx + offset += ylens[y_ind] * zsum + + for i in range(0, dz): + z_ind = i * d_Nx * d_Ny + offset += zlens[z_ind] + + # calculate index within subdomain + xlen = xlens[di] + ylen = ylens[di] + zlen = zlens[di] for xi in range(0, xlen): for yi in range(0, ylen): for zi in range(0, zlen): # calculate reorganized index - ind_x = xi * (ylen * d_Ny * zlen * d_Nz) + dx * ( - xlen * ylen * d_Ny * zlen * d_Nz - ) - ind_y = yi * (xlen * d_Nx) + dy * (ylen * xlen * d_Nx) - ind_z = zi + dz * zlen - buff_idx = ind_x + ind_y + ind_z + ind_x = xi * ysum * zsum + ind_y = yi * zsum + ind_z = zi + buff_idx = offset + ind_x + ind_y + ind_z # place tally value in correct position buff[:, buff_idx] = dd_tally[:, tally_idx] tally_idx += 1 @@ -1472,11 +1509,11 @@ def dd_mergemesh(mcdc, data): MPI.COMM_WORLD.gather(len(mcdc["mesh_tallies"][0]["filter"]["x"]), root=0) ) if mcdc["mpi_master"]: - x_filter = np.zeros((mcdc["mesh_tallies"].shape, sum(sendcounts))) + x_filter = np.zeros((mcdc["mesh_tallies"].shape[0], sum(sendcounts))) else: - x_filter = np.empty((mcdc["mesh_tallies"].shape)) # dummy tally + x_filter = np.empty((mcdc["mesh_tallies"].shape[0])) # dummy tally # gather mesh - for i in range(mcdc["mesh_tallies"].shape): + for i in range(mcdc["mesh_tallies"].shape[0]): MPI.COMM_WORLD.Gatherv( sendbuf=mcdc["mesh_tallies"][i]["filter"]["x"], recvbuf=(x_filter[i], sendcounts), @@ -1496,7 +1533,7 @@ def dd_mergemesh(mcdc, data): else: y_filter = np.empty((mcdc["mesh_tallies"].shape[0])) # dummy tally # gather mesh - for i in range(mcdc["mesh_tallies"].shape): + for i in range(mcdc["mesh_tallies"].shape[0]): MPI.COMM_WORLD.Gatherv( sendbuf=mcdc["mesh_tallies"][i]["filter"]["y"], recvbuf=(y_filter[i], sendcounts), diff --git a/mcdc/type_.py b/mcdc/type_.py index 73b7d662..a9591619 100644 --- a/mcdc/type_.py +++ b/mcdc/type_.py @@ -740,6 +740,12 @@ def dd_meshtally(input_deck): Nx = max(Nx, len(new_x)) Ny = max(Ny, len(new_y)) Nz = max(Nz, len(new_z)) + + # ensure all subdomains have equivalent tally sizes + # (this is necessary for domain decomp to function on GPUs) + Nx = MPI.COMM_WORLD.allreduce(Nx, MPI.MAX) + Ny = MPI.COMM_WORLD.allreduce(Ny, MPI.MAX) + Nz = MPI.COMM_WORLD.allreduce(Nz, MPI.MAX) return Nx, Ny, Nz @@ -1019,6 +1025,12 @@ def make_type_technique(input_deck): # Mesh mesh, Nx, Ny, Nz, Nt, Nmu, N_azi, Ng = make_type_mesh(card["dd_mesh"]) struct += [("dd_mesh", mesh)] + struct += [("dd_xlen", int64)] + struct += [("dd_ylen", int64)] + struct += [("dd_zlen", int64)] + struct += [("dd_xsum", int64)] + struct += [("dd_ysum", int64)] + struct += [("dd_zsum", int64)] struct += [("dd_idx", int64)] struct += [("dd_sent", int64)] struct += [("dd_work_ratio", int64, (len(card["dd_work_ratio"]),))] diff --git a/test/regression/dd_cooper/answer.h5 b/test/regression/dd_cooper/answer.h5 deleted file mode 100644 index c350ca68bc34ac8f27c231e3ff38b4ddbced5a1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 240928 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 diff --git a/test/regression/dd_cooper/input.py b/test/regression/dd_cooper/input.py deleted file mode 100644 index f660971f..00000000 --- a/test/regression/dd_cooper/input.py +++ /dev/null @@ -1,62 +0,0 @@ -import numpy as np -import mcdc - - -# ============================================================================= -# Set model -# ============================================================================= -# A shielding problem based on Problem 2 of [Coper NSE 2001] -# https://ans.tandfonline.com/action/showCitFormats?doi=10.13182/NSE00-34 - -# Set materials -SigmaT = 5.0 -c = 0.8 -m_barrier = mcdc.material(capture=np.array([SigmaT]), scatter=np.array([[SigmaT * c]])) -SigmaT = 1.0 -m_room = mcdc.material(capture=np.array([SigmaT]), scatter=np.array([[SigmaT * c]])) - -# Set surfaces -sx1 = mcdc.surface("plane-x", x=0.0, bc="reflective") -sx2 = mcdc.surface("plane-x", x=2.0) -sx3 = mcdc.surface("plane-x", x=2.4) -sx4 = mcdc.surface("plane-x", x=4.0, bc="vacuum") -sy1 = mcdc.surface("plane-y", y=0.0, bc="reflective") -sy2 = mcdc.surface("plane-y", y=2.0) -sy3 = mcdc.surface("plane-y", y=4.0, bc="vacuum") -sz1 = mcdc.surface("plane-z", z=0.0, bc="reflective") -sz2 = mcdc.surface("plane-z", z=4.0, bc="vacuum") - -# Set cells -mcdc.cell(+sx1 & -sx2 & +sy1 & -sy2 & +sz1 & -sz2, m_room) -mcdc.cell(+sx1 & -sx4 & +sy2 & -sy3 & +sz1 & -sz2, m_room) -mcdc.cell(+sx3 & -sx4 & +sy1 & -sy2 & +sz1 & -sz2, m_room) -mcdc.cell(+sx2 & -sx3 & +sy1 & -sy2 & +sz1 & -sz2, m_barrier) - -# ============================================================================= -# Set source -# ============================================================================= -# Uniform isotropic source throughout the domain - -mcdc.source(x=[0.0, 1.0], y=[0.0, 1.0], z=[0.0, 1.0], isotropic=True) - -# ============================================================================= -# Set tally, setting, and run mcdc -# ============================================================================= - -mcdc.tally.mesh_tally( - scores=["flux"], - x=np.linspace(0.0, 4.0, 11), - y=np.linspace(0.0, 4.0, 11), - z=np.linspace(0.0, 4.0, 11), -) - -# Setting -mcdc.setting(N_particle=50) -mcdc.domain_decomposition( - x=np.linspace(0.0, 4.0, 3), y=np.linspace(0.0, 4.0, 3), z=np.linspace(0.0, 4.0, 3) -) - -mcdc.implicit_capture() - -# Run -mcdc.run() diff --git a/test/regression/slab_reed_dd_3d/answer.h5 b/test/regression/slab_reed_dd_3d/answer.h5 index 90657e081ce4e4e5e5a390e71e0f4f3094a7ae04..537907486e7906ad174b5af32187253580dfd67d 100644 GIT binary patch delta 29799 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%0AE15{_UNIPEV+p352i}Sp@@y219rYdG5#cgsUJXC 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 delta 25342 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 f-1IxSpx~ZR;JT#!FUu8ybkbEi89*nx` Date: Wed, 15 Jan 2025 16:51:51 -0800 Subject: [PATCH 2/5] Back in Black --- mcdc/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mcdc/main.py b/mcdc/main.py index ce11a5bc..5143093f 100644 --- a/mcdc/main.py +++ b/mcdc/main.py @@ -708,7 +708,7 @@ def prepare(): mcdc["technique"]["dd_xsum"] = len(input_deck.mesh_tallies[i].x) - 1 mcdc["technique"]["dd_ysum"] = len(input_deck.mesh_tallies[i].y) - 1 mcdc["technique"]["dd_zsum"] = len(input_deck.mesh_tallies[i].z) - 1 - + mxn, mxp, myn, myp, mzn, mzp = dd_mesh_bounds(i) # Filters From c9f40eaa95732c977a47a71ead233d4dd1aa5b65 Mon Sep 17 00:00:00 2001 From: alexandermote Date: Wed, 15 Jan 2025 21:53:37 -0800 Subject: [PATCH 3/5] Corrected slab_reed_dd_3d input/answer files --- test/regression/slab_reed_dd_3d/answer.h5 | Bin 396304 -> 396304 bytes test/regression/slab_reed_dd_3d/input.py | 29 +++++++++------------- 2 files changed, 12 insertions(+), 17 deletions(-) diff --git a/test/regression/slab_reed_dd_3d/answer.h5 b/test/regression/slab_reed_dd_3d/answer.h5 index 537907486e7906ad174b5af32187253580dfd67d..601d864044bc7037f6d95da476d12c9f76b0d4ed 100644 GIT binary patch delta 4696 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 EUs8vWw*UYD delta 4759 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 Date: Thu, 16 Jan 2025 13:57:58 -0800 Subject: [PATCH 4/5] Back in Black --- test/regression/slab_reed_dd_3d/input.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/test/regression/slab_reed_dd_3d/input.py b/test/regression/slab_reed_dd_3d/input.py index 59d0a639..c3785964 100644 --- a/test/regression/slab_reed_dd_3d/input.py +++ b/test/regression/slab_reed_dd_3d/input.py @@ -69,7 +69,12 @@ # Set tally, setting, and run mcdc # ============================================================================= -mcdc.tally.mesh_tally(scores=["flux"], x=np.linspace(0.0, 8.0, 9), y=np.linspace(0.0, 8.0, 9), z=np.linspace(0.0, 8.0, 9)) +mcdc.tally.mesh_tally( + scores=["flux"], + x=np.linspace(0.0, 8.0, 9), + y=np.linspace(0.0, 8.0, 9), + z=np.linspace(0.0, 8.0, 9), +) # Setting mcdc.setting(N_particle=5000) From 674dcd3f62367561fdcb60a0fbdea74abfcd6fdf Mon Sep 17 00:00:00 2001 From: alexandermote Date: Thu, 16 Jan 2025 14:03:05 -0800 Subject: [PATCH 5/5] back in black --- test/regression/slab_reed_dd_3d/input.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/test/regression/slab_reed_dd_3d/input.py b/test/regression/slab_reed_dd_3d/input.py index c3785964..e2320676 100644 --- a/test/regression/slab_reed_dd_3d/input.py +++ b/test/regression/slab_reed_dd_3d/input.py @@ -53,17 +53,17 @@ # ============================================================================= # Isotropic source in the absorbing medium -mcdc.source(x=[0.0,4.0],y=[0.0,4.0],z=[0.0, 2.0], isotropic=True, prob=50.0) -mcdc.source(x=[4.0,8.0],y=[0.0,4.0],z=[0.0, 2.0], isotropic=True, prob=50.0) -mcdc.source(x=[0.0,4.0],y=[4.0,8.0],z=[0.0, 2.0], isotropic=True, prob=50.0) -mcdc.source(x=[4.0,8.0],y=[4.0,8.0],z=[0.0, 2.0], isotropic=True, prob=50.0) +mcdc.source(x=[0.0, 4.0], y=[0.0, 4.0], z=[0.0, 2.0], isotropic=True, prob=50.0) +mcdc.source(x=[4.0, 8.0], y=[0.0, 4.0], z=[0.0, 2.0], isotropic=True, prob=50.0) +mcdc.source(x=[0.0, 4.0], y=[4.0, 8.0], z=[0.0, 2.0], isotropic=True, prob=50.0) +mcdc.source(x=[4.0, 8.0], y=[4.0, 8.0], z=[0.0, 2.0], isotropic=True, prob=50.0) # Isotropic source in the first half of the outermost medium, # with 1/100 strength -mcdc.source(x=[0.0,4.0],y=[0.0,4.0],z=[5.0, 6.0], isotropic=True, prob=0.5) -mcdc.source(x=[4.0,8.0],y=[0.0,4.0],z=[5.0, 6.0], isotropic=True, prob=0.5) -mcdc.source(x=[0.0,4.0],y=[4.0,8.0],z=[5.0, 6.0], isotropic=True, prob=0.5) -mcdc.source(x=[4.0,8.0],y=[4.0,8.0],z=[5.0, 6.0], isotropic=True, prob=0.5) +mcdc.source(x=[0.0, 4.0], y=[0.0, 4.0], z=[5.0, 6.0], isotropic=True, prob=0.5) +mcdc.source(x=[4.0, 8.0], y=[0.0, 4.0], z=[5.0, 6.0], isotropic=True, prob=0.5) +mcdc.source(x=[0.0, 4.0], y=[4.0, 8.0], z=[5.0, 6.0], isotropic=True, prob=0.5) +mcdc.source(x=[4.0, 8.0], y=[4.0, 8.0], z=[5.0, 6.0], isotropic=True, prob=0.5) # ============================================================================= # Set tally, setting, and run mcdc @@ -78,9 +78,9 @@ # Setting mcdc.setting(N_particle=5000) -dd_x = np.array([0.0,4.0,8.0]) -dd_y = np.array([0.0,4.0,8.0]) +dd_x = np.array([0.0, 4.0, 8.0]) +dd_y = np.array([0.0, 4.0, 8.0]) dd_z = np.array([0.0, 2.0, 3.0, 5.0, 8.0]) -mcdc.domain_decomposition(x=dd_x,y=dd_y,z=dd_z) +mcdc.domain_decomposition(x=dd_x, y=dd_y, z=dd_z) # Run mcdc.run()