forked from lanl/Draco
-
Notifications
You must be signed in to change notification settings - Fork 0
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
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
+ 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.
Add support for Grizzly.
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).
Fix GSL discovery.
Fix broken draco_info tool.
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.
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.
Another tweak to FMA.hh
Win32: Fix CAFS issues wrt CMake-3.13+
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
Fix RelWithDebInfo builds.
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)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Purpose of Pull Request
Pre-Merge Code Review