Skip to content
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

OpenACC Merge #4

Open
wants to merge 40 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
765d088
openacc cmake script. Started an OpenACC version of sweeper. Need to …
rsearles35 Jun 7, 2017
fb08472
inlined everything except the main solver function
rsearles35 Jun 19, 2017
ed08a7e
Why:
rsearles35 Jun 20, 2017
c3810dd
started parallelizing the computations within the sweep (not just the…
rsearles35 Jun 21, 2017
17af9ef
parallelized and scaling with respect to the number of angles being c…
rsearles35 Jun 22, 2017
b0daa50
permuted the energy loop and parallelized. energy and angles are now …
rsearles35 Jun 22, 2017
a6c2418
permuted the energy loop back to the outside of the loop nest so that…
rsearles35 Jun 23, 2017
b1c61e1
collapsed face initialization loops, yielding full parallelism across…
rsearles35 Jul 7, 2017
590f30b
Why:
rsearles35 Jul 12, 2017
52d498e
some of my changes were undone, this is the most updated version incl…
rsearles35 Jul 12, 2017
00939cf
fixed bug that was preventing parallelization across x/y/z dimensions
rsearles35 Jul 12, 2017
6e43a18
got rid of some erroneous data transfer
rsearles35 Jul 12, 2017
0579ea4
reverted to previous version. Collapsing spacial dimensions yields a …
rsearles35 Jul 12, 2017
3c89010
used create clause to avoid some erroneous data transfer to the GPU
rsearles35 Jul 24, 2017
1cb4fab
updated openacc cmake script
rsearles35 Jul 25, 2017
920587a
added OpenACC implementation of Gauss Seidel
rsearles35 Jul 31, 2017
f37a940
added outline for PPoPP paper
rsearles35 Aug 7, 2017
775d32a
Merge branch 'master' of github.com:rsearles35/minisweep
rsearles35 Aug 7, 2017
5d3c87c
migrated paper to another repo
rsearles35 Aug 8, 2017
3f3454d
fixed small create clause bug.
rsearles35 Sep 6, 2017
c11a937
added octant-level parallelism to the OpenACC implementation
rsearles35 Sep 6, 2017
6dc1b06
First KBA implementation of Minisweep-OpenACC
rsearles35 Sep 19, 2017
0d12492
Parallelizing over X and Y instead of Y and Z since Z is the outermos…
rsearles35 Sep 19, 2017
7333be5
BUG FIX: changed local array to use X/Y instead of Y/Z to follow the …
rsearles35 Sep 20, 2017
2f997af
Updated OpenACC implementation of Minisweep. We are now sweeping in a…
rsearles35 Apr 11, 2018
2af0083
some code cleanup and file renaming
rsearles35 Apr 11, 2018
1aac412
added sample openacc cmake file
rsearles35 Apr 11, 2018
08a3405
conditional compilation for OpenACC version. Using the -DUSE_ACC flag…
rsearles35 Apr 11, 2018
24a10cc
Added MPI support to OpenACC version. Ranks will split across nodes, …
rsearles35 Apr 17, 2018
f6edc33
changed to using acc_device_default for MPI building. This was causin…
rsearles35 Apr 25, 2018
b43ef14
removed erroneous atomics in face update operations. These will not c…
rsearles35 May 10, 2018
8de87bf
added OpenACC + MPI example build script
rsearles35 Jun 11, 2018
7dfd5b6
updated README
rsearles35 Aug 23, 2018
d78161f
revised OpenACC implementation to include KBA sweep across gridcells.
rsearles35 Oct 25, 2018
7a77f8d
nblock_z wasn't being consumed by OpenACC version
rsearles35 Jul 19, 2019
bc30f76
consuming nblock_z
Jul 19, 2019
f5e19e9
changed rank assignment to round robin
rsearles35 Jul 19, 2019
2b38901
Merge branch 'master' of github.com:rsearles35/minisweep
rsearles35 Jul 19, 2019
29c2e22
include syntax
Jul 19, 2019
b82d8ee
Merge branch 'master' of github.com:rsearles35/minisweep
Jul 19, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@ SET(SOURCES
src/4_driver/runner.c
)

#SET_SOURCE_FILES_PROPERTIES( src/1_base/env.c src/4_driver/sweep.c src/4_driver/tester.c PROPERTIES LANGUAGE CXX )
#set(CMAKE_VERBOSE_MAKEFILE ON)

SET(CUDA_SOURCES)
FOREACH(FILE IN LISTS SOURCES)
STRING(REPLACE ".c" ".cu" FILE2 ${FILE})
Expand Down
52 changes: 52 additions & 0 deletions README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@

Overview
========

Minisweep is a deterministic Sn radiation transport miniapp used for
performance optimization and performance model evaluation on HPC
architectures.

Copyright and Licensing
=======================

Copyright (C) 2015-2017 Oak Ridge National Laboratory, UT-Battelle, LLC.

This code is part of the Profugus project. For copyright/licensing details, see https://github.com/ORNL-CEES/Profugus.

Usage
=====

For usage details, see the file
https://github.com/wdj/minisweep/blob/master/doc/how_to_run.txt.

References
==========

For algorithm details, see:

Christopher G. Baker, Gregory G. Davidson, Thomas M. Evans,
Steven P. Hamilton, Joshua J. Jarrell, and Wayne Joubert,
"High Performance Radiation Transport Simulations: Preparing for TITAN,"
in *Proceedings of Supercomputing Conference SC12*,
http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=6468508.

Wayne Joubert,
"Porting the Denovo Radiation Transport Code to Titan: Lessons Learned,"
*OLCF Titan Workshop 2012*,
https://www.olcf.ornl.gov/wp-content/uploads/2012/01/TitanWorkshop2012_Day3_Joubert.pdf.

T. M. Evans, W. Joubert, S. P. Hamilton, S. R. Johnson, J. A Turner,
G. G. Davidson, and T. M Pandya. 2015. "Three-Dimensional Discrete
Ordinates Reactor Assembly Calculations on GPUs,"
in *ANS MC2015 Joint International Conference on Mathematics and Computation (M&C), Supercomputing in Nuclear Applications (SNA) and the Monte Carlo (MC) Method*,
Nashville, TN, American Nuclear Society, LaGrange Park, 2015,
https://www.ornl.gov/content/three-dimensional-discrete-ordinates-reactor-assembly-calculations-gpus,
http://www.casl.gov/docs/CASL-U-2015-0172-000.pdf.

O.E. Bronson Messer, Ed D'Azevedo, Judy Hill, Wayne Joubert,
Mark Berrill, and Christopher Zimmer,
"MiniApps derived from production HPC applications using multiple
programing models,"
*The International Journal of High Performance Computing Applications*, 2016,
http://journals.sagepub.com/doi/abs/10.1177/1094342016668241.

12 changes: 0 additions & 12 deletions README.txt

This file was deleted.

6 changes: 3 additions & 3 deletions _gauss_seidel_prototype/Makefile
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@

CFLAGS = -g -O3
CFLAGS = -O3 -Minfo=accel -acc -ta=tesla,cc60

#all: atomics locks locks_llvm locks_xlc atomics_xlc
TARGETS = gauss_seidel gauss_seidel_omp
TARGETS = gauss_seidel gauss_seidel_acc

OBJECTS = $(addsuffix .o, $(TARGETS))

Expand Down Expand Up @@ -39,7 +39,7 @@ CFLAGS += -DBLOCK_GRID_H=$(BLOCK_GRID_H)
CFLAGS += -DCOUNTEXTENT=$(COUNTEXTENT)

%:%.c
$(CC) -fopenmp $(CFLAGS) $< -o $@ -lm
pgcc $(CFLAGS) $< -o $@ -lm

clean:
rm -f $(TARGETS) $(OBJECTS)
Expand Down
6 changes: 3 additions & 3 deletions _gauss_seidel_prototype/gauss_seidel.c
Original file line number Diff line number Diff line change
Expand Up @@ -348,12 +348,12 @@ int main( int argc, char** argv )
{
/*---Settings---*/

const int niterations = 10;
const int niterations = 1;
const int ncellx = 200;
const int ncelly = 200;
const int nu = 10;
const int nu = 32;

const int solve_method = solve_method_block_wavefronts;
const int solve_method = solve_method_wavefronts;

/*
const int solve_method = solve_method_standard;
Expand Down
Loading