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

Merge updates from LANL. #1

Merged
merged 1,370 commits into from
Feb 17, 2019
Merged

Merge updates from LANL. #1

merged 1,370 commits into from
Feb 17, 2019

Conversation

GCZhang
Copy link
Owner

@GCZhang GCZhang commented Feb 17, 2019

KineticTheory and others added 30 commits September 17, 2018 09:42
+ Add entries into Draco's dev environment (.bashrc).  Grizzly is a CTS-1
  machines.  That is, it looks like Snow and Badger.  However, it is designed
  for large jobs (> 70 nodes).
+ Update regressions scripts to know how to run on grizzly.
+ These updates depend on a change in user_contrib that hasn't been merged yet.
Improve units, special_functions and viz code coverage
This is overridden by Galerkin_Ordinate_Space and this changes the solution slightly in one of the Capsaicin benchmarks.
+ Allow the `ensight_dump` function to accept `vector<unsigned>` containers in
  addition to `vector<int>`. This required a little bit of cleanup in the
  function to keep all of the data types compatible.
+ Add a unit test for the new `ensight_dump` signature.
Restore the prune function to Ordinate_Space.
Extend rtt_viz::Ensight_Translator's ensight_dump function.
Improve ds++ code coverage by adding tests or removing features
+ Provide logic to avoid `&vector[0]` dereference operations when the vector
  has zero length.
+ Fix comment blocks, spelling errors, etc.
Fix some issues in ofpstream that were causing McGrid to fail.
+ The `draco_info` executable had become disconnected from the build system.
  Several fields were printing blank or incomplete information.  This PR
  attempts to update `draco_info` so it works properly.
+ Use `CMAKE_SYSTEM_NAME` for the *system type* field.
+ When printing compiler flags, ensure that the current flags are printed
  when the build type is `RelWithDebInfo`.
+ When printing the Design-by-Contract level, also print a string to indicate
  enabled modes.
+ When printing paths to compilers and the list of compiler flags, format the
  text to have a maximum width and use a hanging-indent.
+ Add support for Multi-config build systems (Xcode, VS) by adding a compile
  definition `$<CONFIG>`.
+ Use renamed CPP macros for `build_type` and `build_date`.
+ Since I'm editing `Release.cc`, remove developers from the current_devs
  list if they are not currently working on Draco.
+ Remove `DLL_PUBLIC_dsxx` decoration where it is no longer needed.
+ Build and install the `query_cpu` executable that will identify CPUs that
  support 4th generation instructions (AVX2, FMA, etc.)
+ Fix a typecast warning in `tstPacking_Utils.cc`.
+ Update the file header in `tstTri_Chebyshev_Legendre.cc`
+ The compile option `/arch:AVX2` was always enabled for Visual Studio, but
  pre-Haswell hardware does not support AVX2.  While the compiler could still
  create code, it would fail to run properly. To avoid this, we add a
  platform check for AVX2 capabilities -- actually the check already existed
  in `config/query_fma.cc` but it needed a small change to narrow the check
  to AVX2 -nly.
+ Modify `query_fma.cc` to take command line arguments `-f` and `-a`, which
  limit the check to fma-availability or avx2-availablity only. This code
  will return `1` if those features are found.
+ Update `platform_checks.cmake` to compile and run `query_fma.cc` and then
  set the build variables `HAVE_HARDWARE_AVX2` and `HAVE_HARDWARE_FMA`.
  These values are saved to `ds++/config.h` and are also available when
  the build system parses `windows-cl.cmake` so that appropriate code
  paths can be taken.
+ Also:
  + Fix a comment block in `drel.f90`.
  + Fix a typo in `appveyor.yml` that prevented output from failing tests
    from being printed.
+ Newer GSL installs on Windows provide `gsl-config.cmake` that should be
  used to create the GSL import targets instead of attempting to use the
  CMake Module mode, `FindGSL.cmake`, method of finding GSL.
+ Change the order in which we call various GSL-discovery modes.
  1. Try CMake's `CONFIG` mode (looks for `gsl-config.cmake` in `
     CMAKE_PREFIX_PATH`).
  2. Try to find `gsl-config.sh` (Linux's package-config mode) and use
     this script to identify `GSL_ROOT_DIR` before calling (3).
  3. Try CMake's `FindGSL.cmake` (`MODULE` mode).
Improve c4 code coverage by adding tests or removing features
+ `query_fma.cc` has a special ifdef block for `__INTEL_COMPILER`.  I forgot to
  update the function signature inside this block. Fixed.
+ Also add an alias to the bashrc files to help developers remember that they
  need the salloc option `--gres=craynetwork:0` to enable running ctest with the
  `-j` option.
Avoid compiling for AVX2 instructions on older hardware.
+ The initial goal was to improve code coverage in this package.  However, a
  couple of additional improvements were made while working this code.
  + No longer copy ipcress files to the binary tree.  Instead teach the tests
    to find the ipcress files in the source tree.

+ A small bug discovered in `ApplicationUnitTest.cmake` was fixed.  This bug
  that prevented fully qualified filenames from being sent to the python
  scripts.
+ Some debug prints in `application_unit_test.py` were moved to help debug
  the missing fully qualified filename issue.
+ In `cdi_ipcress/CMakeLists.txt`, code that copied ipcress files to the
  binary directory was removed and 3 new tests to cover conditional branches
  in `Ipcress_Interpreter` were added.
+ In the unit tests, the ipcress filenames were prefixed with a fully
  qualified path to the source directory.
+ The unused (and deprecated) file `tIpcress_Interpreter.cmake` was removed.
+ `tIpcress_Interpreter.py` was updated to cover the 3 new unit test cases.
+ Clean up comment indentation, etc.
+ Remove dead code and DLL_PUBLIC.
Improve coverage in cdi_ipcress (and other cleanup)
+ Add a new function to `CMakeAddFortranSubdirectory.cmake` to ensure
  `gfortran` configuration is compatible with Microsoft MPI for both x86 and
  x64 configurations.  This replaces code blocks that were duplicated in
  `FortranChecks/f90sub/CMakeLists.txt` and `quadrature/ftest/CMakeLists.txt`.
+ Fix comment blocks.
+ Start using `make_shared` and `auto` in `IpcressInterpreter`.
+ Add a unit test for `IpcressInterpreter` that extracts gray data from
 `odfregression10.ipcress`.
+ Extend the existing test of `IpcressInterpreter` by reporting MG Planck data
  and Gray Rosseland Total Opacity.
+ Extend `IpcressInterpreter` unit tests to cover logic path related to
  extraplation off of the ipcress opacity table.
+ Update gold files with extended data.
+ Update `tIpcress_Interpreter.py` to properly check the new unit tests.
+ Remove dead code blocks.
+ Clean up comment blocks and some code that generates error messages.
+ Add tests for high order LS quadrature sets, but only for
  Cartesian geometries since these sets do not work properly for
  other geometries.
+ Update the `quadrature_test` function in `quadrature_test` library to take
  an optional third argument, `cartesian_tests_only`.  When this argument is
  `true`, the non-cartesian tests will be skipped.
Ensure csk and ndi are loaded by default on trinity/trinitite.
kgbudge and others added 29 commits January 16, 2019 11:00
These replace the existing class parser templates and classes and try to simplify everything. The biggest change is to use pointers to member functions in the keyword tables as parse functions. This comes at hte cost that it precludes diamond inheritance of class parsers.
+ Many changes to scripts to improve how file and directory permissions are
  established.  The biggest change is to try and set the group sticky bit (GID)
  for newly created directories.
+ Remove references to capsaicin by replacing them with core, npt or trt.
+ Update `checkpr.sh` to teach it about trt and npt dependencies.  In
  particular, trt-vtest regression runs will link to non-vtest versions of core.
  While, this logic should probably be generalized and moved into core, I didn't
  want to make those changes right now out of fear of creating too much new work
  associated with standing up regression and CI testing for trt and npt.
+ Simplify some of the logic in `draco_regression_macros.cmake` when trt or npt
  are looking for a core or draco installation.
* Stimulated_Emission_Analytic_Opacity_Model was poorly tested.
* Code duplication was a problem in Polynomial_Analytic_Opacity_Model.
* There was no capability to model an analytic bound-free opacity (edge).

* Removed Stimulated_Emission_Analtyic_Opacity_Model by adding stimulated
emission as an option to Polynomial_Analytic_Opacity_Model that is off by
default.
* Added a bound-free component to Polynomial_Analytic_Opacity_Model that is off
by default. The bound-free component has the same energy, temperature, and
density scaling as the free-free component. Only the edge location and strength
of the edge need to be specified.
* Made the constant offset part of the analytic opacity truly constant. It no
longer scales with density.
Simplifying and extending analytic opacity models
Upgrade Require to Insist to avoid unused variable warning (found in Clang Release build).
Updates to the regression system to support TRT and NPT
+ Provide a way to force the use of `fma` or a*b+c via CPP macros.
+ Update the fma_with_diagnostics function to be more flexible with floating
  point types.
Experimental simplified class parser templates.
+ These changes have been 'hot' in our regression system for several weeks.
+ Switch to parallel compiles for regressions.  Some of this is hard coded for
  now.
+ Incremental updates toward supporint SuperLU-DIST on win32/Visual Studio.
  - Loook for the superlu-dist library during vendor discovery.
  - Use proper CPP macros in `tstSuperludist.cc` to enable compiler specific
    pragmas.
Update the version of our LaTeX macro.
+ An older test fails to compile for RelWithDebInfo build type. This is due to
  new sanitizer checks and is correct behavior.  Use CPP macros to remove this
  portion of the test for RelWithDebInfo build types.
Updates for win32 regressions
Background:

+ CUDA and CMake have changed a lot since the original implementation of the
  code in the `device` package. This change-set is still a bit clunky, but I
  wanted to get the essentials updated in our build system so other developers
  can start looking at CUDA.
  - CUDA is now a first class language in CMake.  We will treat it like Fortran
    (an optional compiler).
+ Testing of these changes was done on Darwin's `volta-x86` node with `gcc/7.3`
  and `cuda/9.2`  The bashrc file for Darwin was updated to try to do the right
  thing for the `volta-x86` nodes.
+ Note: Nvidia is now discouraging the use of the `driver-API`. Much of the
  original implemention used this API.  This code is left our repository for
  reference, but isn't actually compiled at this time.

Changes:

+ Register CUDA as an optional compiler language that will be enabled in the
  Draco build system if `nvcc` is found in the path.  The build system will use
  the boolean variable `WITH_CUDA` to control when cuda code is considered for
  compilation.  Ref: top-level `CMakeLists.txt` and
  `config/vendor_libraries.cmake`.
+ Comment out (but did not yet remove) a lot of the old CUDA build system code.
+ Deprecate the `USE_CUDA` variable.  Use `WITH_CUDA` instead, as this is more
  standard.
+ The `GPU_Device` code was updated to replace the use of deprecated CUDA
  commands.  In truth, this class needs to be updated to use the C runtime API
  for cuda instead of the device-API before the class is useful again.
+ More tests need to be added as examples.  I think we can take some of these
  from the acceleware training or cmake+cuda tutorials.
+ Add a header file to `device` that provides cude error checking CPP macros.
+ Fix a doxygen issues (wrong path to an example).
+ Environment changes (`.bashrc_darwin`)
  - When on Darwin's `volta-x86` node automatically load the `cuda/9.2` module.
  - When any Darwin x86 node, add `clang-format` (v.6) to the developer's PATH.
  - Modify setup so clang-format will process .cu files.
Re-enable compilation with CUDA.
+ There are 8 build warnings in `tstSuperludist` issued by Visual Studio:
  `warning C4706: assignment within conditional expression`
+ This commit fixes the build warnings but the test is still failing for
  unknown reasons.  I will defer examining this failure due to its low priority.
+ Add a version of collapseMultigroupOpacitiesPlanck that doesn't
calculate the groupwise CDF (this is not needed by several functions and
complicates the surrounding call)
+ Add a version of integrate_Planckian_Spectrum that simply returns a
vector with the Planck integral over each group as opposed to passing in
this vector
+ Modifiy tCDI.cc so that any time the original version of these
functions is called they are checked for consistency against the new
alternate functions.
Simplify some function signatures in CDI calls
Eliminate 8 build warnings (Visual Studio)
@GCZhang GCZhang merged commit 2884b1c into GCZhang:develop Feb 17, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

10 participants