[root]/CCA/Components/Models/Radiation/RMCRT
randomNums
(3 files, 840 lines)
Author | Changes | Lines of Code | Lines per Change |
---|---|---|---|
Totals | 114 (100.0%) | 7397 (100.0%) | 64.8 |
jholmen | 13 (11.4%) | 5553 (75.1%) | 427.1 |
ahumphrey | 28 (24.6%) | 1114 (15.1%) | 39.7 |
harman | 27 (23.7%) | 337 (4.6%) | 12.4 |
allen | 24 (21.1%) | 243 (3.3%) | 10.1 |
bpeterson | 9 (7.9%) | 123 (1.7%) | 13.6 |
jas | 12 (10.5%) | 25 (0.3%) | 2.0 |
dav | 1 (0.9%) | 2 (0.0%) | 2.0 |
added second interface computeTaskGraphIndex to remove need for shared shate call, renamed recomputeTimeStep to recomputeDelT for a more accurate call
24 lines of code changed in 6 files:
Made the models a first class component and minor clean up the MPM header file usage
19 lines of code changed in 7 files:
* Replaced use of std::vector within rayTrace_dataOnion_solveDivQFunctor with arrays of plain old data and views.
* Templated rayTrace_dataOnion_solveDivQFunctor on maxLevels.
* Added the FIXED_RANDOM_NUM macro.
* Removed use of d_isSeedRandom within functors.
* Hard-coded use of d_flowCell within functors.
202 lines of code changed in 1 file:
* Setup views outside of functors.
* Updates to work with more plain old data within functors.
122 lines of code changed in 1 file:
* Added RayKokkos.h.
* Replaced use of MersenneTwister with KokkosRandom.
* Removed rayDirection_cellFace.
* Removed rayDirectionHyperCube_cellFace.
* Removed findRayDirectionHyperCube.
* Removed rayLocation_cellFace.
This commit replaces use of the MersenneTwister with a portable Kokkos alternative. This alternative is based on Vigna, Sebastiano (2014). "An experimental exploration of Marsaglia's xorshift generators, scrambled." http://arxiv.org/abs/1402.6246
Note, this generator is seeded using the time. To enable comparisons with Ray:CPU, define FIXED_RANDOM_NUM in src/Core/Math/MersenneTwister.h. To enable comparisons with Ray:GPU, define FIXED_RANDOM_NUM in src/CCA/Components/Models/Radiation/RMCRT/RayGPUKernel.cu.
This commit also removes functions featuring use of the MersenneTwister. These have been (or will be) brought into functors.
512 lines of code changed in 2 files:
* Removed updateSumI_ML.
* Removed boundary flux calculations.
updateSumI_ML functionality has been brought into rayTrace_dataOnion_solveDivQFunctor.
Boundary flux calculations have been temporarily removed in preparation for replacing the MersenneTwister with a portable Kokkos alternative.
11 lines of code changed in 1 file:
* Updated multi-level RMCRT:Kokkos to match the implementation within Ray.cc r57329.
581 lines of code changed in 1 file:
* Updated single-level RMCRT:Kokkos to match the implementation within Ray.cc r57329.
351 lines of code changed in 1 file:
Cleanup of the Scheduler to use ports for all components
1 lines of code changed in 1 file:
* Removed unnecessary code paths that are no longer needed due to separating RMCRT:CPU and RMCRT:Kokkos.
4 lines of code changed in 1 file:
* Removed Kokkos-based RMCRT implementations from Ray.cc.
* Added CCA/Components/Models/Radiation/RMCRT/RayKokkos.cc.
This commit moves Kokkos-based RMCRT implementations into their own file.
Note, Kokkos must be invoked using --with-kokkos=DIR to manage which version is picked up.
3769 lines of code changed in 4 files:
* Added build system support for Kokkos.
* Added /src/include/sci_defs/kokkos_testdefs.h.in.
This commit allows --with-kokkos=DIR to be used to point to a Kokkos installation instead of CXXFLAGS and LDFLAGS.
Note, files using #define UINTAH_ENABLE_KOKKOS must now add #include <sci_defs/kokkos_defs.h> to manage this macro.
1 lines of code changed in 1 file:
update to move to a application common class and remove the shared state
33 lines of code changed in 1 file:
randVector()
- Deleted debugging print statements
0 lines of code changed in 2 files:
Added a global map for keeping track of which dw the abskg resides in.
// For RMCRT algorithms the absorption coefficient can be required from either the old_dw or
// new_dw depending on if RMCRT:float is specified. On coarse levels abskg _always_ resides
// in the newDW. If RMCRT:float is used then abskg on the fine level resides in the new_dw.
This will change then number of checkpoints and the answers in ARCHES:RMCRT:multibox tests.
78 lines of code changed in 4 files:
coarsen_Q:
- use the fine level dataWarehouse passed into the task when pulling data out. This fixes one bug but there are more...
4 lines of code changed in 1 file:
Replace all instances of StaticArray with std::vector. This has been tested on the RT for all components. It is a drop in replacement. StaticArray is being removed.
15 lines of code changed in 2 files:
compiler warnings
1 lines of code changed in 1 file:
RMCRT.cc
sched_computeSource() DataOnion section
- reverse the order in which levels coarsen variables. You can't coarsen a level until
the finer level has been populatd. --Derek
Ray.cc
added printSchedule() statement.
4 lines of code changed in 1 file:
No longer saving the flag isNonCubic to udas. That flag is now set whenever a level is finalized.
If the volume of a level's bounding box != sum(patch volumes) then a level is nonCubic.
Level.cc
computeVariableExtents(): added particle type and fixed NCVariable extents.
Ups files: added <Grid doAMR= "true"> to files where it was missing.
removed <nonCubid_domain>
Ray.cc: diabled isnan bulletproofing. Something isn't working correctly and nans are being detected.
** You need to run make reallyclean before compiling.
14 lines of code changed in 1 file:
moved timer so to be per patch
3 lines of code changed in 1 file:
debug streams were changed to the douts so added them to the correct list
2 lines of code changed in 1 file:
Ray.cc
- changed Dout dbg to extern Dout g_ray_dbg. Shutdowns aren't clean if there are to Dout's with the
same name???
ARCHES.py
- added cpu and threaded regression tests for the input files:
multibox_rmcrt_coal_1L.ups
multibox_rmcrt_coal_2L.ups
multibox_rmcrt_coal_DO.ups
35 lines of code changed in 1 file:
RMCRTCommon:
- pulled requires weed.
Ray.cc:
- turned exception into a warning. It possible for the user to save abskg and the float representation
abskgRMCRT in the same uda.
SourceTerms/RMCRT
extraSetup()
- On the coarse level initialize either abskgt or abskgRMCRT depending if user selects float or double
version.
converted DebugStream -> DOUT.
2 lines of code changed in 2 files:
Ray:
- throw exception if haloCells < (2,2,2)
- tweaked DOUT statements
- computeExtents
patch->getInterior cells for high and low for patch_based ROI
TaskGraph:
createDetailedDependencies()
- Turned off cullIntersection() It returns the wrong lo & hi at the inside corner of the L
patches for RMCRT_+_Domain_DO.ups
Patch:computeVariableExtentsWithBoundaryCheck()
- changed the arbitrary value of numGhostCells from 5 to 1.
Examples.py
- removed EOL spaces.
- added the domain test RMCRT_+Domain_DO
11 lines of code changed in 1 file:
Revert DOUT.hpp to original, nearly pristine state.
Recommendation is to use explicit operator bool() for checking active state, but left active method in with coments.
Some other minor cleanup.
1 lines of code changed in 1 file:
Cleanup DOUT-based debugging output for RMCRT-related classes. Still having issues with use of DOUT in DbgOutput::print* methods. Working on it.
For those who are wondering, below is my spiel on Dout (class) and DOUT (variadic macro), why DebugStream is not a great idea in our world today, and perhaps some motivation to move in this direction should you actually want coherent, lock-free output by multiple threads or MPI ranks. Dout simply co-opts the SCI_DEBUG env var and does not effect DebugStream.
// ------------------------------------------------------------------------------------------------
// Dout (class) versions of the above (moving away from DebugStream)
//
// Dout is an extremely lightweight way to provide the same functionality as DebugStream,
// but in a fully lock-free way for both multiple threads and MPI ranks. Dout also does not
// inherit from from the standard library (std::ostream specifically) as DebugStream does.
// The DOUT variadic macro is then used, which is printf-based. By the POSIX standard, printf
// must "behave" like it acquired a lock. The Dout class also defines an explicit bool() operator
// for checking state, e.g. active or inactive.
// ------------------------------------------------------------------------------------------------
21 lines of code changed in 2 files:
Working with SFC and loadblancer functionality, re-enable SFC test.
Other minor cleanup, fix some comments.
5 lines of code changed in 1 file:
Further simplify Radiometer spatial patchset construction.
3 lines of code changed in 1 file:
An RMCRT/GPU data onion cleanup of many items Todd and I discussed a month ago. Many of the changes are cosmetic (cleaner code, better comments). One change allows for any task to specify how many GPU streams it needs. This also fixes a bug where debug mode ran with too many threads, using up too many resources for a GPU RMCRT data onion kernel to execute.
117 lines of code changed in 7 files:
Migration from DebugStream -> DOUT.
22 lines of code changed in 2 files:
Fix spatial scheduling in Radiometer so we create a single spatial task with a PatchSet like: { {19}, {22}, {25} } (singleton subsets like level->eachPatch()), NOT -> { {19,22,25} }. This is because one proc isn't guaranteed to own all patches in the multi-element subset.
Added Dout versions of printTask and printSchedule to DbgOutput. Now we actually get coherent output when multiple ranks write to stdout.
65 lines of code changed in 3 files:
Hopefuly this fixes the debug bug completely. Let debug mode have all the registers it needs.
0 lines of code changed in 1 file:
Both temporal and spatial scheduling working correctly for Radiometer.
Effectively, spatial tasks are scheduled "level->eachSpatialPatch()" as opposed to "level->eachPatch". Working to generalize this within the infratructure. For now, schedule spatial tasks independently (independent task for each patch the spatial task runs on), as opposed to scheduling with a spatial PatchSubset. This is so the load balancer can distribute patches more effectively (as opposed to lumping all spatial tasks on a particular node), and so that MPI dependencies can be generated and met correctly.
50 lines of code changed in 2 files:
Modify Radiometer for spatial scheduling with ghost cells. Need empty DetailedTasks for dependency generation phase under current model. Unnecessary comm is bypassed the way it should be. Still working on correct patch assignments in the infrastructure, but close.
33 lines of code changed in 1 file:
This fixes an odd cudaErrorInvalidDeviceFunction bug. The problem wasn't the kernel being called, but that another kernel which wasn't ever called didn't have enough registers. It also only showed up in debug mode builds. Now the kernels can run again
6 lines of code changed in 1 file:
Disable spatial scheduling.
1 lines of code changed in 1 file:
sched_sigmaT4
- removed requires for sigmaT4 from the old_dw and some out dated logic.
0 lines of code changed in 1 file:
removed debugging comment.
1 lines of code changed in 1 file:
Fix compiler error for ray_scattering case.
7 lines of code changed in 1 file:
(15 more)