-
Notifications
You must be signed in to change notification settings - Fork 36
Version 1 of device CBC sweep chunk kernel #868
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Version 1 of device CBC sweep chunk kernel #868
Conversation
|
@wdarylhawkins @quocdang1998 Requesting review for this PR. |
fe8de5e to
d2177bf
Compare
andrsd
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
First rough pass through the PR.
modules/linear_boltzmann_solvers/discrete_ordinates_problem/sweep/angle_set/cbc_angle_set.cc
Outdated
Show resolved
Hide resolved
modules/linear_boltzmann_solvers/discrete_ordinates_problem/sweep/angle_set/cbc_angle_set.h
Outdated
Show resolved
Hide resolved
...es/linear_boltzmann_solvers/discrete_ordinates_problem/sweep/communicators/cbc_async_comm.cc
Outdated
Show resolved
Hide resolved
...les/linear_boltzmann_solvers/discrete_ordinates_problem/sweep/communicators/cbc_async_comm.h
Outdated
Show resolved
Hide resolved
modules/linear_boltzmann_solvers/discrete_ordinates_problem/sweep/fluds/cbc_fluds.cc
Outdated
Show resolved
Hide resolved
modules/linear_boltzmann_solvers/discrete_ordinates_problem/sweep/scheduler/sweep_scheduler.cc
Outdated
Show resolved
Hide resolved
modules/linear_boltzmann_solvers/discrete_ordinates_problem/sweep/scheduler/sweep_scheduler.h
Outdated
Show resolved
Hide resolved
...les/linear_boltzmann_solvers/discrete_ordinates_problem/sweep_chunks/cbc_gpu_kernel/buffer.h
Outdated
Show resolved
Hide resolved
modules/linear_boltzmann_solvers/discrete_ordinates_problem/sweep_chunks/cbc_sweep_chunk.cc
Outdated
Show resolved
Hide resolved
modules/linear_boltzmann_solvers/discrete_ordinates_problem/sweep_chunks/cbc_sweep_chunk.h
Outdated
Show resolved
Hide resolved
f153101 to
f186816
Compare
modules/linear_boltzmann_solvers/discrete_ordinates_problem/sweep/angle_set/cbc_angle_set.cc
Outdated
Show resolved
Hide resolved
modules/linear_boltzmann_solvers/discrete_ordinates_problem/sweep/angle_set/cbc_angle_set.cu
Outdated
Show resolved
Hide resolved
modules/linear_boltzmann_solvers/discrete_ordinates_problem/sweep/angle_set/cbc_angle_set.h
Outdated
Show resolved
Hide resolved
modules/linear_boltzmann_solvers/discrete_ordinates_problem/sweep/angle_set/cbc_angle_set.h
Outdated
Show resolved
Hide resolved
...les/linear_boltzmann_solvers/discrete_ordinates_problem/sweep/fluds/cbcd_fluds_common_data.h
Outdated
Show resolved
Hide resolved
...les/linear_boltzmann_solvers/discrete_ordinates_problem/sweep/fluds/cbcd_fluds_common_data.h
Outdated
Show resolved
Hide resolved
modules/linear_boltzmann_solvers/discrete_ordinates_problem/sweep/fluds/cbcd_structs.h
Outdated
Show resolved
Hide resolved
modules/linear_boltzmann_solvers/discrete_ordinates_problem/sweep/fluds/cbcd_structs.h
Outdated
Show resolved
Hide resolved
modules/linear_boltzmann_solvers/discrete_ordinates_problem/sweep/fluds/cbcd_structs.h
Outdated
Show resolved
Hide resolved
664d8c2 to
6593aa0
Compare
6593aa0 to
05a9b57
Compare
|
@quocdang1998 Made the following changes
The device CBC sweep chunk kernel passes all GPU regression tests (confirmed by setting The code is still failing one clang-tidy check: Using Requesting re-review. |
05a9b57 to
99cbe83
Compare
modules/linear_boltzmann_solvers/discrete_ordinates_problem/discrete_ordinates_problem.cc
Show resolved
Hide resolved
modules/linear_boltzmann_solvers/discrete_ordinates_problem/sweep/angle_set/cbc_angle_set.h
Outdated
Show resolved
Hide resolved
...es/linear_boltzmann_solvers/discrete_ordinates_problem/sweep/communicators/cbc_async_comm.cc
Outdated
Show resolved
Hide resolved
...es/linear_boltzmann_solvers/discrete_ordinates_problem/sweep/communicators/cbc_async_comm.cu
Outdated
Show resolved
Hide resolved
modules/linear_boltzmann_solvers/discrete_ordinates_problem/sweep_chunks/cbc_sweep_chunk.h
Outdated
Show resolved
Hide resolved
modules/linear_boltzmann_solvers/discrete_ordinates_problem/sweep_chunks/cbc_sweep_chunk.h
Outdated
Show resolved
Hide resolved
modules/linear_boltzmann_solvers/discrete_ordinates_problem/sweep_chunks/gpu_kernel/arguments.h
Show resolved
Hide resolved
modules/linear_boltzmann_solvers/discrete_ordinates_problem/sweep_chunks/gpu_kernel/solver.h
Outdated
Show resolved
Hide resolved
modules/linear_boltzmann_solvers/discrete_ordinates_problem/sweep_chunks/gpu_kernel/main.h
Outdated
Show resolved
Hide resolved
1503c32 to
1f48e1b
Compare
1f48e1b to
a487abf
Compare
|
@andrsd I haven't been able to resolve this The only change I made to the Do you have any ideas as to why |
03495a0 to
66ba45c
Compare
Do you still see this problem? I ran your branch locally on my machine (clang-20) and I do not see any problems reported. Also CI reports a clean run right now... |
modules/linear_boltzmann_solvers/discrete_ordinates_problem/sweep/fluds/cbcd_fluds.cu
Outdated
Show resolved
Hide resolved
...les/linear_boltzmann_solvers/discrete_ordinates_problem/sweep/fluds/cbcd_fluds_common_data.h
Outdated
Show resolved
Hide resolved
...les/linear_boltzmann_solvers/discrete_ordinates_problem/sweep/fluds/cbcd_fluds_common_data.h
Outdated
Show resolved
Hide resolved
2fa33a1 to
2046aa7
Compare
|
@andrsd clang-tidy no longer shows an error about uninitialized values in the mpicpp-lite header. |
84e601c to
8bc8e0b
Compare
8bc8e0b to
a630d9b
Compare
In this PR, version 1 of the device CBC sweep chunk kernel has been implemented.
The following are the major changes:
ASYNC_FIFO. This algorithm sweeps asynchronously over all anglesets in a given groupset viacrb::Stream's. The main while-loop loops over all anglesets and checks for cells that can be swept. The ready cells for a given angleset are batched and given to the device CBC sweep chunk kernel, and is executed asynchronously. This is parallel over a given set of ready cells and for all groups in a given groupset. TheCBC_AsynchronousCommunicator's still receives and sends upwind and downwind angular fluxes, respectively, as soon as possible, which mirrors the host CBC sweep chunk kernel.CBCD_FLUDSclass contains host and device buffers for boundary, local, and non-local angular flux data. Local cell angular flux data is kept on the device.CBCD_FLUDSprovides methods for asynchronously copying incoming/outgoing boundary and non-local cell angular flux data between host and device.CBCD_FLUDSCommonDataclass contains similar functionality as in theAAHD_FLUDSCommonDataclass for encoding/decoding the appropriate locations that cell face nodes need to be read from and written to in the local, boundary, and non-local host/device buffers.The device CBC sweep chunk kernel passes all of the GPU regression tests, save for the
transport_3d_4_cycles_1_gpu.py. This is because the CBC sweep algorithm does not handle cyclic dependencies.