-
Notifications
You must be signed in to change notification settings - Fork 34
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
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 |
a487abf to
fdf1c2f
Compare
Major changes: - Add `CBCD_FLUDSCommonData`, `CBCD_FLUDS` classes to index into and store local, boundary, and non-local angular flux buffers - Add `CBCD_AngleSet`, `CBCD_SweepChunk` classes to asynchronously sweep over ready cells via caribou streams - `ASYNC_FIFO` scheduling algorithm to asynchronously sweep over all anglesets in a groupset's angle aggregation
fdf1c2f to
e4999e8
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.