Commit Graph

657 Commits

Author SHA1 Message Date
Tong Dong Qiu
4db112cafa Use row_wise mode to build jacMatrix 2022-04-21 17:19:01 +02:00
Tong Dong Qiu
1a1bc24bef Delay creating sparsity pattern for jacobi Matrix 2022-04-21 17:19:01 +02:00
Tong Dong Qiu
2683019280 Bugfix: set vector size for MSwells was removed during refactoring 2022-04-21 17:19:01 +02:00
Tong Dong Qiu
448af67ce6 Merge duplicate functions 2022-04-21 17:19:01 +02:00
Tong Dong Qiu
6ca5f167b2 Allow BISAI to use jacMatrix 2022-04-21 17:19:01 +02:00
Tong Dong Qiu
6f89629f92 Fix wrong print, remove unused variables 2022-04-21 17:19:01 +02:00
Tong Dong Qiu
1cec56fa68 Use implicit mode to build jacMatrix
Fix print variable
2022-04-21 17:19:01 +02:00
Tong Dong Qiu
550ce92902 Faster copying to jacMatrix 2022-04-21 17:19:01 +02:00
Tong Dong Qiu
3797b7297d Merge some duplicate functions 2022-04-21 17:19:01 +02:00
Tong Dong Qiu
d963820e48 Pass BlockedMatrix to BdaSolvers 2022-04-21 17:19:00 +02:00
Tong Dong Qiu
7f5322f7d4 Store a BlockedMatrix in BdaBridge 2022-04-21 17:19:00 +02:00
Tong Dong Qiu
9dec714590 Allow to use jacobi matrix for ILU with CPR
Fix whitespace
2022-04-21 17:19:00 +02:00
Tong Dong Qiu
61f693dbaf reenable normal opencl
Rebased
2022-04-21 17:18:54 +02:00
Tong Dong Qiu
dee5e16fb8 subdomain matrix for opencl
Rebased
2022-04-21 17:18:40 +02:00
Tong Dong Qiu
e360c00b73 add block-jacobi partitioner option. Add block-jacobi matrix for use in OpenCL preconditioner
Rebased
2022-04-21 17:18:32 +02:00
Tong Dong Qiu
c1cbf7a00f Fix ChowPatelIlu compilation errors,
introduced in recent PR
2022-02-03 10:42:27 +01:00
Tong Dong Qiu
6c8ada4cd2 Reduced header inclusion and updated comments 2022-02-03 10:42:22 +01:00
Tong Dong Qiu
275bfe2da4 Move cuda files to separate folder 2022-02-02 09:28:41 +01:00
Tong Dong Qiu
e81ca0526e Move opencl files to separate folder 2022-02-01 16:51:32 +01:00
Markus Blatt
3db9a4e3e5
Merge pull request #3750 from ducbueno/isai-ilu
Adds IncompleteSAI preconditioner to openclSolver
2022-01-18 12:38:39 +01:00
Eduardo Bueno
1df9d2e51f Adds BISAI preconditioner to openclSolver 2022-01-17 13:57:29 -03:00
Tong Dong Qiu
f48fe632cb Added comment to apply_stdwell kernels 2021-12-22 16:22:55 +01:00
Tong Dong Qiu
3decb73561 Fix stdwell_apply opencl kernel 2021-12-22 16:16:04 +01:00
Jose Eduardo Bueno
c7ac97e215 [OpenCL] Moves all OpenCL kernels to *.cl files.
Kernel files are located in opm/simulators/linalg/bda/opencl/kernels.
CMake will combine them for usage in
${PROJECT_BINARY_DIR}/clSources.cpp that becomes part of the library.
2021-12-22 12:43:18 +01:00
Arne Morten Kvarving
2d0d48d8c9 fix build with dune 2.6 2021-12-09 09:02:13 +01:00
Markus Blatt
ac41c318da Fixes compilation of opencl CPR without MPI 2021-12-08 20:24:14 +01:00
Tong Dong Qiu
374f8276dc Move opencl variables to Preconditioner 2021-12-01 14:15:59 +01:00
Tong Dong Qiu
94ea2dcd30 Change C to C++
Also bugfix wrong size when COPY_ROW_BY_ROW is active
2021-12-01 14:15:16 +01:00
Tong Dong Qiu
e0a4d271ea Formatting changes 2021-12-01 11:47:45 +01:00
Tong Dong Qiu
0881089406 Add Preconditioner, superclass of BILU0 and CPR 2021-12-01 11:47:45 +01:00
Tong Dong Qiu
50d0486b28 Allow a variable number of pre/post smooth steps during AMG 2021-12-01 11:47:44 +01:00
Tong Dong Qiu
a911d5d2be Add test for solve_transposed_3x3() 2021-12-01 11:47:44 +01:00
Tong Dong Qiu
56fb3948e5 Fill restriction matrix faster 2021-12-01 11:47:44 +01:00
Tong Dong Qiu
411d3c6a8d Replace spmv-prolongation by specialized kernel 2021-12-01 11:47:44 +01:00
Tong Dong Qiu
eaded9dcf7 Add prolongate_vector() kernel 2021-12-01 11:47:44 +01:00
Tong Dong Qiu
9d611f04ee Add timers to opencl CPR preconditioner 2021-12-01 11:47:44 +01:00
Tong Dong Qiu
f2225503c4 Combine BILU0 and CPR preconditioner 2021-12-01 11:47:44 +01:00
Tong Dong Qiu
11d54f31f5 Reuse umfpack object 2021-12-01 11:47:29 +01:00
Tong Dong Qiu
b9a12b64d9 Rename copy sparsity pattern function 2021-12-01 11:43:40 +01:00
Tong Dong Qiu
d7204c5be7 Create separate functions 2021-12-01 11:43:39 +01:00
Tong Dong Qiu
13646337f3 Reduce get_absmax() code 2021-12-01 11:43:39 +01:00
Tong Dong Qiu
5e85c23478 Renamed move_to_coarse/fine() in CPR 2021-12-01 11:43:39 +01:00
Tong Dong Qiu
19a0454b6f Update comments 2021-12-01 11:43:39 +01:00
Tong Dong Qiu
ca44351c72 Add error checks for OpenclMatrix 2021-12-01 11:43:39 +01:00
Tong Dong Qiu
de8073e689 Reuse Matrix constructor 2021-12-01 11:43:39 +01:00
Tong Dong Qiu
a71a5cd8fe Moved OpenclMatrix to new file 2021-12-01 11:43:39 +01:00
Tong Dong Qiu
a8b1d7c9dc Change header include guard name 2021-12-01 11:43:39 +01:00
Tong Dong Qiu
1306a65104 Remove unnecessary intermediate variables 2021-12-01 11:43:39 +01:00
Tong Dong Qiu
5385bd275e Rename get_opencl_kernel functions 2021-12-01 11:43:39 +01:00
Tong Dong Qiu
adb4649277 Changed block_size template to parameter for block functions 2021-12-01 11:43:39 +01:00
Tong Dong Qiu
288e548b89 Changed block_size template to variable for OpenclMatrix 2021-12-01 11:43:39 +01:00
Tong Dong Qiu
9acffab47e Changed block_size template to variable for BlockedMatrix 2021-12-01 11:43:39 +01:00
Tong Dong Qiu
a6b6a62b27 Changes needed for FPGA 2021-12-01 11:43:39 +01:00
Tong Dong Qiu
606143ef57 Add timer for cpr_apply 2021-12-01 11:43:39 +01:00
Tong Dong Qiu
6465cf9cbb Add CPR preconditioner for openclSolver and
change raw pointers to vector for Matrix
2021-12-01 11:43:30 +01:00
Markus Blatt
50867bf23c Guard include of WellContributions.cpp 2021-11-17 19:23:46 +01:00
Markus Blatt
d2caf41037 Fix incomplete type ‘Opm::WellContributions’ compiler error (g++-8)
Fixes
```
In file included from opm-simulators/opm/simulators/flow/BlackoilModelEbos.hpp:53,
                 from opm-simulators/opm/simulators/flow/SimulatorFullyImplicitBlackoilEbos.hpp:26,
                 from opm-simulators/flow/flow_ebos_gaswater.cpp:28:
opm-simulators/opm/simulators/linalg/ISTLSolverEbos.hpp: In member function ‘bool Opm::ISTLSolverEbos<TypeTag>::solve(Opm::ISTLSolverEbos<TypeTag>::Vector&)’:
opm-simulators/opm/simulators/linalg/ISTLSolverEbos.hpp:265:56: error: incomplete type ‘Opm::WellContributions’ used in nested name specifier
                 auto wellContribs = WellContributions::create(accelerator_mode, useWellConn_);
                                                        ^~~~~~
```
2021-11-17 17:30:01 +01:00
Bård Skaflestad
d163bebcdc
Merge pull request #3699 from blattms/man-page-spelling
Adds manpage and fixes several spelling issue found by lintian
2021-11-17 09:59:50 +01:00
Joakim Hove
4d1fb8c797
Merge pull request #3700 from blattms/gcc-11
Include limits header where needed for g++-11
2021-11-15 13:13:07 +01:00
Markus Blatt
b0792db164 Include limits header where needed for g++-11
Without this compilation fails on Debian unstable.
2021-11-15 12:11:25 +01:00
Markus Blatt
a2246d331b Spelling fixes
Gbp-Pq: Name 0005-Spelling-fixes.patch
2021-11-15 12:06:05 +01:00
Arne Morten Kvarving
e25caba8ed changed: refactor BDA well contributions
split in API specific classes for Cuda/OpenCL

this to
1) it's cleaner
2) it avoids pulling in openCL code in cuda classes which leads
to clashes between nvidia headers and opencl.hpp

there is still too much API specific things in interface between the
bda components to work through a virtual interface so we still have to cast
to the relevant implementation in various places.
2021-11-11 14:49:33 +01:00
Arne Morten Kvarving
352d31a1e9 BdaBridge: avoid FPGA include in header
already includ in the cpp file where it is required.
2021-11-11 13:39:46 +01:00
Arne Morten Kvarving
7fb39f8308 BdaBridge: avoid includes in header 2021-11-11 13:39:25 +01:00
Arne Morten Kvarving
be6c857b16 bda: use forwarding for WellContributions 2021-11-11 13:29:12 +01:00
Arne Morten Kvarving
4a1fb0b86a use std::vector for val_pointers 2021-11-11 13:15:29 +01:00
Arne Morten Kvarving
2b0508af8b changed: use unique_ptr for MultisegmentWellContributions
less manual pointer management is always good
2021-11-11 13:15:29 +01:00
Markus Blatt
c54e85a8eb Fixes compilation of WellContributions with deactivated OpenCL.
OpenCL header was included and OpenclKernels used unconditionally
in WellContributions.cpp. As this file is compiled if CUDA is found,
too it lead to undefined references for e.g. cl::CommandQueue if
opencl headers were there and compile error if not.
2021-11-10 19:41:59 +01:00
Arne Morten Kvarving
f27931c2e2 fixed: auto function parameters requires the concept-ts
use a regular template parameter instead
2021-11-10 10:25:27 +01:00
Markus Blatt
ad44564f27
Merge pull request #3619 from Tongdongq/opencl-refactor
Opencl refactor
2021-11-08 16:45:57 +01:00
Tong Dong Qiu
803a2ac2f4 Allow CMake to set CHOW_PATEL variables 2021-11-04 15:47:33 +01:00
Tong Dong Qiu
920eeee426 Rename namespace bda to Opm::Accelerator 2021-11-04 15:47:33 +01:00
Tong Dong Qiu
b945502a82 Minor improvements 2021-11-04 15:45:33 +01:00
Tong Dong Qiu
78b1714481 Move apply_stdwells kernels to OpenclKernels 2021-11-04 14:25:39 +01:00
Tong Dong Qiu
1583292bf4 Move opencl kernels to static class 2021-11-04 14:25:22 +01:00
Tong Dong Qiu
b8587daaa7 Move ChowPatel decomposition to appropriate file 2021-11-04 13:58:06 +01:00
Bård Skaflestad
869de90b56
Merge pull request #3663 from blattms/remove-warn-opencl
Fixes warning about catching polymorphic type by value.
2021-11-03 18:30:57 +01:00
Markus Blatt
02bbe995c3 Fixes warning about catching polymorphic type by value.
Removed message in amgclbackend was:
warning: catching polymorphic type ‘class
boost::property_tree::json_parser::json_parser_error’ by value
[-Wcatch-value=]
2021-11-03 18:07:56 +01:00
Atgeirr Flø Rasmussen
5503e6ca06 Remove ISTLSolverEbosFlexible and flow_blackoil_dunecpr.
The class ISTLSolverEbos has all features of the removed class, and
is not much more complex. The flow_blackoil_dunecpr is the only
program using it, and is redundant.
2021-11-02 15:02:48 +01:00
Markus Blatt
932ddcd32d
Merge pull request #3652 from akva2/use_opencl_hpp
changed: probe for cl/opencl.hpp and use if found
2021-11-02 09:31:05 +01:00
Arne Morten Kvarving
7de50b94c7 changed: probe for cl/opencl.hpp and use if found
this to avoid a spam of warnings
2021-11-01 19:41:05 +01:00
Atgeirr Flø Rasmussen
624d8b1343
Merge pull request #3651 from akva2/remove_gcc7_compat
use std::filesystem directly
2021-11-01 15:30:03 +01:00
Atgeirr Flø Rasmussen
5f81b77d14
Merge pull request #3639 from blattms/dune-fem-master
Fixes compilation with dune-fem 2.8
2021-11-01 13:10:17 +01:00
Arne Morten Kvarving
06bd25575f use std::filesystem directly 2021-11-01 12:31:58 +01:00
Markus Blatt
9197ee3e20 Prevent deprecation warning about cl2.hpp: __CL_ENABLE_EXCEPTIONS. 2021-10-28 17:09:22 +02:00
Markus Blatt
4de52a8d30 Use OpenCl's CL/cl2.hpp instead of CL/cl.hpp
We still request Standard version 1.2 only.
We need to use KernelFunctor instead of make_kernel.
In addition cl::Sources now works on std::string and
does not support std::pair<const char*, in> anymore.
2021-10-28 16:42:43 +02:00
Markus Blatt
a1e90be2aa Use grid view from simulator for element mapper.
With dune-fem the type of the grid view is
Dune::Fem::AdaptiveLeafGridPart and not the LeafGridView
of the grid. The old approach therefore did not compile
as we passed the wrong view.
2021-10-26 21:55:04 +02:00
Tor Harald Sandve
70c9d2e237
Merge pull request #3590 from daavid00/micp-2021-10
micp
2021-10-14 22:28:28 +02:00
daavid00
48b175904a first version of micp implementation in flow 2021-10-14 17:44:57 +02:00
Markus Blatt
f2ce097b4b
Merge pull request #3575 from Tongdongq/fix-ilu-decomp-gpu
Create and use scale kernel for relaxation of ILU
2021-10-07 15:55:17 +02:00
Elyes Ahmed
0202b00d59 clean up after review 2021-10-05 13:07:52 +02:00
Elyes Ahmed
f53c597f90 Replacing use of MPI_COMM_WORLD with a variable communicator. 2021-10-05 13:07:52 +02:00
Tong Dong Qiu
68adf85f52 Create and use scale kernel for relaxation of ILU 2021-10-05 10:49:21 +02:00
Atgeirr Flø Rasmussen
e5c85e88ce
Merge pull request #3552 from fgfuchs/cuda_improvements
cusparsesolver wrong size and type in cols,rows fixed
2021-09-28 11:41:17 +02:00
Franz Georg Fuchs
a0ccd1e754 cusparsesolver wrong size and type in cols,rows fixed 2021-09-27 13:53:26 +02:00
Markus Blatt
3cda8a2fdb Added missing parallel try-catch clause for updatePrimaryIntensities.
As Problem::updatePrimaryIntensities might throw we need to do this
to prevent dealocks in parallel run in case problem occurs.
2021-09-24 09:25:44 +02:00
Markus Blatt
c84b55c452 Fixes ILU for Dune 2.8
We got compile errors like:

/home/build/opm-simulators/opm/simulators/linalg/FlexibleSolver1.cpp:24:1:   required from here
/usr/include/dune/istl/ilu.hh:140:29: error: 'double' is not a class, struct, or union type

without this patch.
Hence we use the new internal ILU functions if available.
2021-09-13 12:25:49 +02:00
Arne Morten Kvarving
08e950686f use .empty() instead of .size() comparisons 2021-08-04 09:19:03 +02:00
Arne Morten Kvarving
78c5675daf changed: get rid of OPM_UNUSED macro usages
prefer anonymous parameters or c++17 [[maybe_unused]]
2021-08-02 14:55:41 +02:00
Markus Blatt
ea4e4a1520
Merge pull request #3346 from Tongdongq/amgcl-support
Amgcl support
2021-07-21 15:02:25 +02:00
Bård Skaflestad
48e1af8bbe Address Static Code Analysis Warnings
In particular, don't print uninitialized memory (Reorder.cpp:left)
and don't capture objects ('prm') that aren't actually used.  While
here, refactor the initialization of the MT19937 random number
generator.  Constructing this object is too expensive to do for each
try, especially when we can just run the generator in place.
2021-07-13 11:37:57 +02:00
Tong Dong Qiu
796d1b7f8a Allow to choose a platform and device when using amgcl with VexCL 2021-07-09 17:03:11 +02:00
Tong Dong Qiu
0ee6b58fb0 Only initialize VexCL once 2021-07-09 15:39:35 +02:00
Tong Dong Qiu
b0749ce7d4 Use default parameters if json file does not specify all.
Throw exception if json file cannot be parsed.
2021-07-09 14:07:55 +02:00
Tong Dong Qiu
f77d745b51 Factor out CUDA part of amgclSolver 2021-07-07 16:24:52 +02:00
Tong Dong Qiu
b2156a4edc Remove unused variable warnings 2021-07-07 16:24:52 +02:00
Tong Dong Qiu
b28c96699b Combine blocked and unblocked VexCL implementations 2021-07-07 16:24:52 +02:00
Tong Dong Qiu
5306ae6a60 Allow VexCL to use unblocked matrices 2021-07-07 16:24:52 +02:00
Tong Dong Qiu
47ffeaf24a Allow VexCL to use runtime parameters 2021-07-07 16:24:52 +02:00
Tong Dong Qiu
b4eb711c71 Enable the VexCL backend, disabled for blocksize=1 2021-07-07 16:24:52 +02:00
Tong Dong Qiu
a3d8d6655f Added enum for amgcl_backend_type 2021-07-07 16:24:52 +02:00
Markus Blatt
adc2bf46b9 Search for VexCL and create an imported target.
Unfortunately, we cannot us the imported targets. They add some compile
parameters using generator expressions based on the CXX_COMPILER_ID.
While we are using the system CXX compiler for most of the stuff, some
cuda code is compiled with nvcc which at least for some versions does
not support -Wno-catch-value (which gets passed as normal compiler
option).
2021-07-07 16:24:52 +02:00
Tong Dong Qiu
d45f9d08f7 Allow amgcl without CUDA 2021-07-07 16:24:52 +02:00
Tong Dong Qiu
e556124405 Allow to choose amgcl backend at runtime, added default amgcl params 2021-07-07 16:24:52 +02:00
Tong Dong Qiu
282f611f92 Make sure amgcl can be used without CUDA 2021-07-07 16:24:52 +02:00
Tong Dong Qiu
3c1bfeb72f Let amgcl use runtime parameters via JSON file 2021-07-07 16:24:52 +02:00
Tong Dong Qiu
a23d881817 Reuse amgcl parameters 2021-07-07 16:24:51 +02:00
Tong Dong Qiu
47e2899ba8 Moved amgcl declarations to header 2021-07-07 16:24:51 +02:00
Tong Dong Qiu
7c7911b9bc Allow to use amgcl when CUDA and OpenCL are not found 2021-07-07 16:24:51 +02:00
Tong Dong Qiu
c2869810e2 Added amgclSolverBackend 2021-07-07 16:24:51 +02:00
Tong Dong Qiu
5918c64b54 Add useWellConn parameter to WellContributions() 2021-07-07 16:24:51 +02:00
Markus Blatt
8d0a254211
Merge pull request #3364 from blattms/flexible-solver-determine-pressure-idx-from-model
Determine index of pressure from model used to increase usability
2021-07-01 15:22:50 +02:00
Markus Blatt
2260fde478
Merge pull request #3300 from Tongdongq/add-tests
Added tests for cusparseSolver and openclSolver
2021-06-17 22:31:23 +02:00
Bård Skaflestad
dc7a6018f6
Merge pull request #3381 from akva2/boost_version_include
fixed: add missing include for boost version
2021-06-14 13:29:14 +02:00
Arne Morten Kvarving
54d928583b fixed: add missing include for boost version 2021-06-14 11:50:57 +02:00
Arne Morten Kvarving
86b454f4c8 fixed: initialize to avoid sca warning 2021-06-14 09:26:32 +02:00
Markus Blatt
db0f19ba88 Determine index of pressure from model used.
Previously, the user had to specify it in the json file read from the
FlexibleSolver or 1 was used. Unfortunately, the index depends on the
model used and it seem rather opaque to a user what that index is.

With this commit we determine the pressure index from the model.
2021-06-10 16:19:18 +02:00
Arne Morten Kvarving
b7e2ad3bfe added: PropertyTree class
this is a thin wrapper around boost::property_tree
with this we avoid parsing property tree headers in all
simulator objects
2021-06-09 15:21:52 +02:00
Arne Morten Kvarving
29ae002a87 changed: avoid templating in setupPropertyTree
simply pass the required params to function instead.
2021-06-09 12:54:14 +02:00
Tong Dong Qiu
74b46e4d8d Added tests for cusparseSolver and openclSolver 2021-06-07 11:40:03 +02:00
Tong Dong Qiu
0e63cda518 Instantiate whole class instead of each function 2021-06-07 11:40:03 +02:00
Markus Blatt
7c17db3d06 Fixes unused variable warnings for CUDA only. 2021-05-28 16:26:46 +02:00
Markus Blatt
6ffde47096 Fixes compilation with CUDA but without OpenCL.
Using statements should not be in namespaces anyway...
2021-05-28 16:26:46 +02:00
Arne Morten Kvarving
a4c0af09d9 fixed: do not use Opm:: prefix when inside namespace Opm 2021-05-05 11:59:18 +02:00
Bård Skaflestad
7be6e5bbf1
Merge pull request #3196 from akva2/use_forwarding
Use forwarding where possible in some headers
2021-04-30 16:00:41 +02:00
Arne Morten Kvarving
3c77b97cae MultisegmentWellContribution: remove unused members 2021-04-30 13:09:25 +02:00
Arne Morten Kvarving
b30fc4eac1 ExtractParallelGridInfoToISTL: use forwarding 2021-04-29 12:50:19 +02:00
Markus Blatt
824df60e94
Merge pull request #3150 from Tongdongq/always_print_prec_info
Always print CHOW_PATEL info if used
2021-04-21 19:51:22 +02:00
Arne Morten Kvarving
b9c19958fb fixed: mark possibly unused variables as such to quell warnings
also take chance to break an extremely long line
2021-04-19 09:49:20 +02:00
Tong Dong Qiu
5466b0f5f2 Always print CHOW_PATEL info if used 2021-04-09 16:19:45 +02:00
Tong Dong Qiu
8ea19c66aa Reduced code duplication in BdaBridge 2021-03-12 11:15:02 +01:00
Tong Dong Qiu
81c0a3d9f9 Simplified CPU fallback warnings 2021-03-12 11:15:02 +01:00
Giacomo Marchiori
b4aa28771f Added fpgaSolver 2021-03-12 11:14:59 +01:00
Markus Blatt
3ec181e231
Merge pull request #3089 from Tongdongq/exact-ilu-decomp-gpu
Exact ilu decomp gpu
2021-03-08 17:25:04 +01:00
Tong Dong Qiu
87e3f1d72d Added timers to ChowPatelIlu 2021-03-03 17:12:46 +01:00
Tong Dong Qiu
b87e9dad9a Updated comments 2021-03-03 16:36:27 +01:00
Tong Dong Qiu
0caae966b8 Add more waiting for opencl functions, using shortened opencl kernel params in WellContributions 2021-03-03 14:04:06 +01:00
Tong Dong Qiu
688d8ff627 Shorten opencl kernel params, add source file for openclKernels 2021-03-03 13:09:24 +01:00
Tong Dong Qiu
61bf85bf24 Add waiting for enqueueWriteBuffer 2021-03-03 10:37:01 +01:00
Tong Dong Qiu
18bf7c4b19 Replace diagfinding with std::find 2021-03-03 09:50:33 +01:00
Tong Dong Qiu
5b4deab7e4 Generating opencl kernels 2021-03-01 10:26:44 +01:00
Tong Dong Qiu
141af23db5 Exact ILU decomp is now performed on GPU 2021-03-01 10:26:35 +01:00
Tong Dong Qiu
748dc4ccb3 Reduced header inclusion, also moved WellContributions OpenCL initialization 2021-03-01 09:42:56 +01:00
Franz Georg Fuchs
17126ba229 throw specific error if json file does not exist 2021-02-24 11:31:36 +01:00
Markus Blatt
00df3d06c2 Allow usage of non-gpu devices with OpenCL.
This is needed to use the CPU backend of PoCL http://portablecl.org/
which seems handy for debugging.
2021-02-09 10:45:19 +01:00
tqiu
c8dca99fad Renamed fgpilu to ChowPatelIlu 2021-02-03 17:43:54 +01:00
tqiu
a64a342104 Added symmetry check in Debug mode 2021-02-01 11:19:38 +01:00
tqiu
363cc31316 Made waiting for a GPUcopy more explicit 2021-01-28 15:40:10 +01:00
tqiu
d222dffcfd Improved initial guess of L 2021-01-28 13:46:01 +01:00
tqiu
837a83fc16 Added error checking and std::call_once 2021-01-26 17:32:18 +01:00
tqiu
1e09b1f4d9 Added comments and rewrote if 2021-01-26 15:42:38 +01:00
tqiu
dba20adf04 Bugfix: extra swap was done on odd number of sweeps 2021-01-20 11:00:30 +01:00
tqiu
48ebef7808 Updated comments 2021-01-19 11:06:39 +01:00
tqiu
123e3fa89e Use std::find and added comments 2021-01-18 17:10:46 +01:00
tqiu
a8e524fc9d Minor C to C++ changes 2021-01-18 14:11:07 +01:00
tqiu
0f9ae3695d Made reordering optional for WellContributions
Removed unnecessary alloc
2021-01-13 12:34:56 +01:00
tqiu
f26e58c6ca Reordering is now actually skipped when NONE is chosen.
Also made reordering optional for openclSolver.
2021-01-12 15:25:47 +01:00
tqiu
71692ff52b Disabled FGPILU by default 2021-01-12 15:21:19 +01:00
tqiu
9f92a69037 Added CPU and GPU implementations of Fine-Grained Parallel ILU (FGPILU) 2021-01-12 15:21:19 +01:00
Markus Blatt
c037bd762d
Merge pull request #2990 from atgeirr/testing-precfactory-operators
Only add AMG preconditioners to factory if sensible.
2020-12-22 09:52:53 +01:00
Atgeirr Flø Rasmussen
d910d42f6e Only add AMG preconditioners to factory if sensible.
Also add test using a new operator class, that would not compile
without the change.
2020-12-17 14:54:59 +01:00
Markus Blatt
065e2f34f1 Do not include config.h in header (not even in *_impl.hpp)
I was getting warnings about redefined definitions (e.g. HAVE_PARMETIS).
2020-12-11 17:53:24 +01:00
Atgeirr Flø Rasmussen
374764fc6f
Merge pull request #2946 from atgeirr/add-more-amg-options
Add more AMG options to allow setting from JSON.
2020-11-27 08:57:04 +01:00
Atgeirr Flø Rasmussen
6e31c77234 Add more AMG options to allow setting from JSON. 2020-11-26 15:37:50 +01:00
Tor Harald Sandve
f924ac7ffe
Merge pull request #2933 from totto82/dunefem
WIP make Flow compile with dune-fem
2020-11-26 15:10:34 +01:00
Atgeirr Flø Rasmussen
a0ca8dd0b5 Use better-suited AMG criterion.
Use SymmetricDependency instead of SymmetricMatrixDependency.
Our matrices are structurally symmetric, but not numerically symmetric.
2020-11-25 16:40:03 +01:00
Markus Blatt
b21b6cf28c
Merge pull request #2914 from ducbueno/rm-oclcontainer
Removed WellContributionsOCLContainer class
2020-11-19 21:27:55 +01:00
Tor Harald Sandve
c4c0b7a756 Make it compile with dune-fem 2020-11-19 15:45:37 +01:00
Markus Blatt
ea3c899080
Merge pull request #2882 from atgeirr/msw-add-well-contrib
Implement addWellContributions() for multi-segment wells
2020-11-18 13:44:24 +01:00
Jose Eduardo Bueno
a9c2a684c6 Removed WellContributionsOCLContainer class (rebase) 2020-11-18 09:14:31 -03:00
Markus Blatt
64fa5a2b30
Merge pull request #2858 from Tongdongq/ilu-reorder-strategy
Added cmdline parameter --ilu-reorder-strategy
2020-11-17 09:35:12 +01:00
Atgeirr Flø Rasmussen
db7cd1053f Add the multMatrixImpl() utility. 2020-11-16 11:37:44 +01:00
Tor Harald Sandve
fbccdbf68e Make a flow version that uses the polyhedreal grid
Currently the simulator creats the polyhedreal grid from an eclGrid from opm-common

TODO
 - make it possible to create the grid directly from DGF or MRST format
 - fix issue on norne.
2020-11-10 15:49:59 +01:00
Atgeirr Flø Rasmussen
adfb8ef771
Merge pull request #2898 from blattms/always-accu-to-one-proc-as-default
Always accumulates data in AMG to 1 process on coarse levels.
2020-11-05 15:41:57 +01:00
Markus Blatt
d83ae17e5b Always accumulates data in AMG to 1 process on coarse levels.
In OPM the matrix graph might be unsymmetric as we do not store
the full sparsity pattern for copy rows but only the diagonal.
Unfortunately, DUNE assumes that matrices from finite elements and
finite volumes have a symmetric sparsity pattern for copy rows to
and uses this assumption to create the graphs for PTScotch/ParMETIS
more easily. But PTScotch/ParMetis assume a symmetric graph.
2020-11-03 22:13:27 +01:00
Arne Morten Kvarving
4121e0a3c4 fix typo 2020-11-03 13:48:09 +01:00
tqiu
d25405d39a Renamed parameter to OpenclIluReorder and moved error checking to BdaBridge constructor. 2020-10-19 11:36:25 +02:00
tqiu
a372a1e4bd Added cmdline parameter --ilu-reorder-strategy 2020-10-19 11:33:32 +02:00
Atgeirr Flø Rasmussen
e7d1d6603a Silence unused argument warning. 2020-10-19 09:13:37 +02:00
Bård Skaflestad
9a71bbe4b0 Move 'gridForConn' Into Cuda/OpenCL Block
It is only used within this context and produces a warning of the
form

  ISTLSolverEbos.hpp:128:25: warning: unused variable ‘gridForConn’

unless the build configures accelerator support.
2020-10-19 02:28:05 +02:00
Markus Blatt
44fadfb88a Fixes compilation of CUDA.
nvcc exits compilation if the header dune/istl/basearray.hh (form DUNE
2.6) is included as it does not seem to understand the friend declaration
there (friend class for a struct).

```
/usr/include/dune/istl/basearray.hh:101:49: error: ‘typename Dune::Imp::base_array_unmanaged<B, A>::RealIterator’ names ‘template<class B, class A> template<class T> struct Dune::Imp::base_array_unmanaged<B, A>::RealIterator’, which is not a type
       friend class RealIterator<const ValueType>;
                                                 ^
```
2020-10-14 19:23:57 +02:00
Atgeirr Flø Rasmussen
43d5d2c532
Merge pull request #2850 from atgeirr/silence-warnings
Silence warnings from range-for.
2020-10-13 08:19:48 +02:00
Atgeirr Flø Rasmussen
ea0abd1331 Bugfix: do not substr() on too small strings. 2020-10-12 21:58:58 +02:00
Atgeirr Flø Rasmussen
dedbe78cee Copyright additions. 2020-10-12 17:06:11 +02:00
Atgeirr Flø Rasmussen
316b28923d Rename parameter --linear-solver-configuration to --linsolver. 2020-10-12 17:03:00 +02:00
Atgeirr Flø Rasmussen
f169cf90d8 Remove --linear-solver-configuration-file parameter.
This is now handled by passing a string to --linear-solver-configuration that
ends with ".json".
2020-10-12 16:41:09 +02:00
Atgeirr Flø Rasmussen
f262eec9bf Silence warnings from range-for. 2020-10-12 09:39:37 +02:00
Atgeirr Flø Rasmussen
385880485a Fix logic of shouldCreateSolver(). 2020-10-11 22:46:02 +02:00
Atgeirr Flø Rasmussen
30a4fe55b0 Add "amg" option to --linear-solver-configuration. 2020-10-11 09:31:48 +02:00
Atgeirr Flø Rasmussen
842afd312e Refactor setupPropertyTree(). 2020-10-11 09:24:05 +02:00
Atgeirr Flø Rasmussen
00438c4860 Remove unused parts (not just comment out). 2020-10-11 08:44:21 +02:00
Atgeirr Flø Rasmussen
0a70d95bee Refactor shouldCreateSolver(). 2020-10-11 08:20:19 +02:00
Atgeirr Flø Rasmussen
1c208e9a92 Avoid unnecessary extra matrix manipulation.
When using the ParallelOverlappingILU0 it is not necessary to fix the overlap rows.
2020-10-10 10:09:23 +02:00
Atgeirr Flø Rasmussen
65817c9068 Removed old amg/cpr code that can be replaced.
The replacement consists of using the FlexibleSolver code.
2020-10-08 15:12:41 +02:00
Markus Blatt
ec884183a5
Merge pull request #2828 from blattms/add-mswells
[opencl] deletes assignment operator of WellContributionsOCLContainer
2020-10-01 22:35:09 +02:00
Markus Blatt
e8c030be17
Merge pull request #2821 from ducbueno/add-mswells
Reintroduced multisegment wells to OpenCL backend
2020-10-01 21:52:25 +02:00
Markus Blatt
684b58564c use auto in for-loop as at other occasions. 2020-10-01 15:56:50 +02:00
Markus Blatt
f306f78737 Delete assignment operator of WellContributionsOCLContainer, too 2020-10-01 15:55:57 +02:00
Jose Eduardo Bueno
fbbb21d482 Removed smart pointers; + delete for copy constr 2020-10-01 10:27:34 -03:00
Jose Eduardo Bueno
89cefd8d95 Fixed seg fault when there are only mswells 2020-09-30 18:34:50 -03:00
Jose Eduardo Bueno
7aad035bcf Added smart pointers 2020-09-30 17:31:35 -03:00
Markus Blatt
d30f6d272b [gpu] Support UMFPack with DUNE 2.7
The index type changed from int to long int with 2.7.
2020-09-30 20:10:21 +02:00
Jose Eduardo Bueno
3a680f728e Removed unnecessary vector clear operations 2020-09-30 09:14:20 -03:00
Jose Eduardo Bueno
99e4419b3c Reintroduced multisegment wells 2020-09-30 09:11:20 -03:00
Jose Eduardo Bueno
a3a15a744c Corrected kernel 2020-09-28 18:06:13 -03:00
Jose Eduardo Bueno
9fe6ee85a4 Throws exception if well dimensions aren't correct 2020-09-28 18:01:42 -03:00
Jose Eduardo Bueno
268bcd95e8 Implemented reinit; reduced sync events 2020-09-28 17:27:12 -03:00
Jose Eduardo Bueno
bedf3d16cf Querying number of work items with get_local_size 2020-09-28 12:56:22 -03:00
Jose Eduardo Bueno
77bcadff45 Events wellContribs write calls & update sparsity 2020-09-28 09:40:39 -03:00
Jose Eduardo Bueno
d653873735 Added destructor for WellContributionsOCLContainer 2020-09-28 09:15:17 -03:00
Jose Eduardo Bueno
d236079173 Bug fixes 2020-09-25 11:31:17 -03:00
Jose Eduardo Bueno
ab57d5ecd2 Fixed errors 2020-09-24 18:07:10 -03:00
Jose Eduardo Bueno
1ba81cece2 First commit 2020-09-24 16:35:36 -03:00
Jose Eduardo Bueno
c43648076f Fixed kernel; fixed time step chopping; 2020-09-24 16:35:36 -03:00
Jose Eduardo Bueno
c41aafcc58 Simplified initialize_wellContribs calls 2020-09-24 16:35:36 -03:00
Joakim Hove
0565d6f402 Remove unused #include of exceptions 2020-09-21 11:12:15 +02:00
Markus Blatt
53005c477d
Merge pull request #2762 from ducbueno/opencl-stdwell-clean
Fixed out of resources problem
2020-09-03 19:50:39 +02:00
Jose Eduardo Bueno
525faf7b5d Changed work_group_size 2020-09-03 14:25:50 -03:00
Jose Eduardo Bueno
f8898e3158 New function for setting OpenCL in wellContribs 2020-09-03 13:30:12 -03:00
Arne Morten Kvarving
273d465c32 fixed: use the proper linear operator without wells in matrix in serial 2020-09-03 15:53:57 +02:00
Jose Eduardo Bueno
c7adc3495f Initial commit 2020-09-03 09:46:44 -03:00
Markus Blatt
27931c4303 [opencl] Fixes shadowing variable warnings.
These seemed familar and I would have sworn that I already fixed them
somewhen. Might have been reintroduced by rebasing.
2020-09-02 22:46:44 +02:00
Markus Blatt
e997d7b130
Merge pull request #2751 from ducbueno/opencl-stdwell-clean
AddStandardWell functionality in OpenCL backend
2020-09-02 22:02:05 +02:00
Jose Eduardo Bueno
4d10d9ac76 Fixed issue when no std wells are present 2020-09-02 15:44:46 -03:00
Jose Eduardo Bueno
56c1c0862c Added StandardWell functionality to OpenCL backend 2020-09-02 15:00:34 -03:00
Arne Morten Kvarving
7305f84351 use std::make_unique where applicable 2020-09-02 15:35:39 +02:00
Arne Morten Kvarving
3b21a8a481 changed: remove SET_TYPE_PROP macro usage 2020-08-28 10:44:53 +02:00
Arne Morten Kvarving
93a3ebf8f7 changed: remove NEW_PROP_TAG macro usage 2020-08-28 10:44:53 +02:00
Arne Morten Kvarving
941e4916f8 changed: remove SET_PROP macro usage 2020-08-27 14:02:05 +02:00
Arne Morten Kvarving
7d853d2e05 changed: remove SET_SCALAR_PROP macro usage 2020-08-27 13:01:51 +02:00
Arne Morten Kvarving
fca83318aa changed: remove SET_INT_PROP macro usage 2020-08-27 13:01:51 +02:00
Arne Morten Kvarving
a79c37a041 changed: remove SET_STRING_PROP macro usage 2020-08-27 13:01:51 +02:00
Arne Morten Kvarving
0e71c0e29b changed: remove SET_BOOL_PROP macro usage 2020-08-27 13:01:51 +02:00
Arne Morten Kvarving
e8248b44ff changed: remove NEW_TYPE_TAG macro usage 2020-08-27 13:01:51 +02:00
Arne Morten Kvarving
914053ac3c changed: remove GET_PROP_VALUE macro usage 2020-08-27 13:01:51 +02:00
Arne Morten Kvarving
74fac38d85 changed: remove GET_PROP_TYPE / GET_PROP macro usage 2020-08-27 08:19:39 +02:00
Arne Morten Kvarving
70908d9017 changed: remove BEGIN_PROPERTIES/END_PROPERTIES macro usage 2020-08-21 15:50:35 +02:00
Markus Blatt
5743a979e3 Formatting: added missing space. 2020-08-07 09:38:10 +02:00
Markus Blatt
8d3eac81a5 [OpenCL] Fixes out of bounds read in reordering code in ILU0.
rowPerColor only has size numColors!
2020-08-05 21:22:01 +02:00
Markus Blatt
c28a12636a Also free memory allocated with CUDA also with CUDA
With multisegment wells we allocate WellContributions::hx and hy with
`CudaMallocHost`. Yet we tried to deallocate them with
`delete[]`. This caused segementation faults e.g. for
model1/MSW_MODEL_1. Now we use `CudaFreeHost` for freeing if we used
CUDA.

Closes #2719
2020-08-04 12:54:27 +02:00