Commit Graph

2041 Commits

Author SHA1 Message Date
Dmitriy Korchemkin 77ad8bb4e5 Change storage in BlockRandomAccessSparseMatrix
- TripletSparseMatrix in BlockRandomAccessSparseMatrix is replaced with
   BlockSparseMatrix
 - BlockSparseMatrix::ToCompressedRowSparseMatrix is performed in a
   direct sort-less way

Change-Id: Ib951fda1b9394050e2c47a9721172c5e3c674801
2023-04-18 01:34:30 +03:00
Sameer Agarwal d340f81bd0 Clang Tidy fixes
Change-Id: I51429acbf2a7b81605a2fd03a6b7c10317984674
2023-04-10 16:43:30 -07:00
Dmitriy Korchemkin 54ad3dd03c Reorganize ParallelFor source files
Change-Id: Ic4941919e59210b48e447cbb61e539200c8c89df
2023-04-11 00:33:55 +03:00
Sameer Agarwal ba360ab074 Change the value of BlockRandomAccessSparseMatrix::kMaxRowBlocks
1. Rename it to kRowShift.
2. Make it a static constexpr.
3. Change it to 2^32, which should allow for easier bit arithmetic
   for the compiler than the previously used value of 10000000.
4. Change the name of the two associated private methods from
   IntPairToLong to IntPairToInt64 and LongToIntPair to Int64ToIntPair.

Change-Id: I54d61bcf1121079b222ef518324de5cffc1be064
2023-04-09 14:04:58 -07:00
Sergiu Deitsch 0315c6ca9a Provide DynamicAutoDiffCostFunction deduction guide
The deduction guide allows to avoid repeating the CostFunctor type.

Change-Id: I2285de37071006a97f89988baa9b7054d82dae86
2023-03-08 23:46:33 +01:00
MaximSmolskiy 3cdfae110f Replace Hertzberg mentions with citations
Change-Id: Ife1b9c2b321593912bc18a5c57c39fbda27da51f
2023-03-04 04:10:45 +03:00
MaximSmolskiy 0af38a9fc2 Fix typos in documentation
Change-Id: I748c9c3d6cd1c5906daa9f68aea92d8ad536bf3b
2023-03-04 03:56:54 +03:00
MaximSmolskiy 4c969a6c1c Improve image of loss functions shape
Change-Id: Id226323a736038fb3c9b9009448e5ece12dc63ee
2023-03-03 04:07:01 +03:00
MaximSmolskiy b54f05b8ee Add missing TukeyLoss to documentation
Change-Id: I0b0a84c0a21b672f0414eb6b2283bb27e06cd266
2023-03-03 00:19:51 +03:00
Dmitriy Korchemkin 8bf4a2f42c Inexact check for ParallelAssign test
Change-Id: I3880f51868c55bce2901e7414cf5109385cccee7
2023-01-31 17:13:19 +03:00
Alexander Ivanov 9cddce73a5 Explicit conversions from long to int in benchmarks (for num_threads)
Change-Id: I175328a890efe79c97180be03997324532d4c7a7
2023-01-29 01:56:23 +00:00
Alexander Ivanov 5e787ab700 Using const ints in jacobian writers
Change-Id: I90ebb1956a15eddad2758bed7acaf3a2b90ce7c3
2023-01-28 03:42:03 +00:00
Alexander Ivanov f9bffbb6fb Removing -Wshorten-64-to-32 warnings from examples (part 1)
Change-Id: I3cdacc8306c1d1a07420d7171e18726a5bef0012
2023-01-19 23:40:20 +00:00
Sameer Agarwal e269b64f55 More ClangTidy fixes
Change-Id: I8288a61cf0db80efd7fd4862a555cc717797e8ba
2023-01-17 13:37:13 -08:00
Alexander Ivanov f4eb768e0b Using int64 in file.cc. Fixing compilation error in array_utils.cc
Change-Id: Ie38e257df59bf1884ef431d5d25b3c5ac0dde7a1
2023-01-17 18:59:36 +00:00
Alexander Ivanov 74a0f0d246 Using int64_t for sizes and indexes in array utils
Change-Id: I61177d868850c4538adbd77e413238d9cb2d9248
2023-01-17 15:27:56 +00:00
Sameer Agarwal 749a442d97 Clang-Tidy fixes
Change-Id: I58900a452591315a39754b329e94b315c34926cd
2023-01-16 07:38:05 -08:00
Sameer Agarwal c4ba975aea Fix rotation_test.cc to work with older versions of Eigen
Change-Id: I699e4b45f9a1cc09e72f8140e67c800c3bcef8e0
2023-01-14 06:08:10 -08:00
Sameer Agarwal 9602ed7b76 ClangFormat changes
Change-Id: I88c9e38b0450aed26c60e1dd54964ab6571e3eef
2023-01-14 05:54:24 -08:00
Sameer Agarwal 79a554ffcf Fix a bug in QuaternionRotatePoint.
In https://ceres-solver-review.git.corp.google.com/c/ceres-solver/+/23802

the computation of the norm of a quaternion

scale = 1/sqrt(q[0] * q[0] + q[1] * q[1] + q[2] * q[2] + q[3] * q[3]);

was replaced by

scale = 1/hypot(q[0], q[1], hypot(q[2], q[3]));

while this appear to be a more accurate computation because of the
use of hypot which can handle over and underflow it introduces a
bug for the case where q[2] = q[3] = 0.

While the hypot(q[2], q[3]) == 0 as scalars, if q[2] and q[3] are
jets, then the derivative will be NaN. Which means that even though
q[0] or q[1] is non-zero and the norm of the quaternion is non-zero,
and the resulting derivative is finite, this way of computing the
scale will produce nans in the derivative of scale.

The following quaternion will replicate the problem described above.

using Jet = ceres::Jet<double, 4>;
std::array<Jet, 4> quaternion = {Jet(1.0, 0), Jet(0.0, 1), Jet(0.0, 2), Jet(0.0, 3)};

This CL reverts the change to QuaternionRotatePoint and
adds a test for it.

Thanks to Jonathan Taylor for reproducing this bug.

Change-Id: I0fbbcc77d6945a38563d82efba4429f4b5278cd5
2023-01-13 11:37:27 -08:00
Alexander Ivanov f1113c08ab Commenting unused parameters for better readibility
Change-Id: Idc285fa68ba787636a69a3ea3350e0282b9f8569
2023-01-12 17:25:42 +00:00
Alexander Ivanov 772d927e19 Replacing old style typedefs with new style usings
Change-Id: I85d353708fc431df8312a2337d0508df6aee071f
2023-01-12 09:09:35 +00:00
Alexander Ivanov 53df5ddcfd Removing using std::...
Change-Id: I584402e2a34869183c1d59071a15d97b216c52fb
2023-01-11 16:51:38 +00:00
Alexander Ivanov e1ca3302af Increasing bazel timeout for heavy BA tests
Change-Id: I9c6f5ca0f2094891db21a08796d5f5e4430265dc
2023-01-11 13:53:20 +00:00
Alexander Ivanov f982d3071d Fixing bazel build
Change-Id: I610c5a1f4f8c46d7ef75dd4861e31e98c2fa825d
2023-01-09 06:19:18 +00:00
Sergiu Deitsch cb6b306623 Use hypot to compute the L^2 norm
Change-Id: I908eaaa279452aa16346dfd3f25aac53685e3172
2023-01-05 21:44:53 +01:00
Sergiu Deitsch 1e2a24a8bd Update Github actions to avoid deprecation warnings
Change-Id: Ifc7b2b2337bbe03ce44649891830f78381b0749d
2023-01-04 17:05:49 +00:00
Sergiu Deitsch 285e5f9f45 Do not update brew formulae upon install
Change-Id: Ifc726b9456f4643b77e9f2eefc1bd37efbc50150
2023-01-03 21:45:50 +01:00
Sameer Agarwal 73d95b03fa Clang-Tidy fixes
Change-Id: Ib391357fe365e2321e75b106ffac5f832abbb8fa
2023-01-03 11:59:43 -08:00
Joydeep Biswas 51d52c3ea5 Correct epsilon in CUDA QR test changed by last commit.
Change-Id: I84d40b1df36a972eb4b17e6cdfc803a5367cb48a
2022-12-28 12:37:51 -06:00
Joydeep Biswas 546f5337bd Updates to CUDA dense linear algebra tests
* Use relative error instead of absolute error.
* Update tolerance to account for embedded GPUs such as the Jetson TX2.

Change-Id: I05742ecbfd915e797fcbc4137acc5d1b513cd465
2022-12-28 12:20:20 -06:00
Sameer Agarwal 19ab2c1793 BlockRandomAccessMatrix Refactor
1. Add threading to all three subclasses of BlockRandomAccessMatrix.
   i.e. BlockRandomAccessDenseMatrix, BlockRandomAccessSparseMatrix
   and BlockRandomAccessDenseMatrix.

   For BlockRandomAccessDenseMatrix and BlockRandomAccessSparseMatrix
   this just means SetZero is parallelized. Which by itself is no
   big deal, but by doing so, the constructor for all three subclasses
   become uniform.

   BlockRandomAccessSparseMatrix::SymmetricRightMultiplyAndAccumulate
   maybe threaded in the future if needed.

   BlockRandomAccessDiagonalMatrix is the biggest beneficiary. SetZero
   Invert and RightMultiplyAndAccumulate are all threaded now.

2. Change the storage in BlockRandomAccessDiagonalMatrix from
   TripletSparseMatrix to CompressedRowSparseMatrix. This has no
   performance implications since we do not really use the capabilities
   of the underlying matrix indexing representation. This is a forward
   looking change when we decide to transfer this matrix to the GPU,
   a CompressedRowSparseMatrix will save on a data conversion.

3. Use std::unique_ptr as needed and eliminate the need for custom
   destructors.

4. Modify CompressedRowSparseMatrix::CreateBlockDiagonalMatrix to
   take a nullptr as the data vector.

Fixes https://github.com/ceres-solver/ceres-solver/issues/936
Fixes https://github.com/ceres-solver/ceres-solver/issues/935

Change-Id: Ia6487f2d924fbe669835bdcc38abf2b451bda4ee
2022-12-23 06:45:28 -08:00
Sameer Agarwal a3a062d72c Add a missing header
Change-Id: I26705eb557a8e21b6acc7d18a01471d38a3c1c23
2022-12-19 06:42:35 -08:00
Sameer Agarwal 2b88bedb28 Remove unused variables
Change-Id: Ieaecce32d8a94c61876e097b957627d689e72fe7
2022-12-19 06:27:59 -08:00
Sameer Agarwal 9beea728f6 Fix a bug in CoordinateDescentMinimizer
CoordinateDescentMinimizer optimizes one parameter block at a time.
To do this, it manipulates the parameter block object. It was doing
so inconsistently, where the tangent space offset was being set to
zero but the ambient state offset was not being set to zero. This
did not cause problems because these offsets were not really being
used inside the CoordinateDescentMinimizer. However the recent
change which parallelizes Program::Plus uncovered this bug.

The reason this bug was not caught was because, CoordinateDescentMinimizer
does not have any tests. I will fix this shortly, but in the interim
to unbreak inner iterations at head, this small change should go in.

Change-Id: I55d2698e8509f9cb5751e7a5180427129d86e720
2022-12-17 17:32:03 -08:00
Sameer Agarwal 8e5d83f07d ClangFormat and ClangTidy changes
Change-Id: Ib457dcc55ffb405aeaeac711c20bd9217b32f90e
2022-12-17 17:29:42 -08:00
Dmitriy Korchemkin b158515089 Parallel operations on vectors
Main focus of this change is to parallelize remaining operations (most of them
are operations on vectors) in code-path utilized with iterative Schur
complement.

Parallelization is handled using lazy evaluation of Eigen expressions.

On linux pc with intel 8176 processor parallelization of vector operations has
the following effect:

Running ./bin/parallel_vector_operations_benchmark
Run on (112 X 3200.32 MHz CPU s)
CPU Caches:
  L1 Data 32 KiB (x56)
  L1 Instruction 32 KiB (x56)
  L2 Unified 1024 KiB (x56)
  L3 Unified 39424 KiB (x2)
Load Average: 3.30, 8.41, 11.82
-----------------------------------
Benchmark                      Time
-----------------------------------
SetZero                 10009532 ns
SetZeroParallel/1       10024139 ns
...
SetZeroParallel/16        877606 ns

Negate                   4978856 ns
NegateParallel/1         5145413 ns
...
NegateParallel/16         721823 ns

Assign                  10731408 ns
AssignParallel/1        10749944 ns
...
AssignParallel/16        1829381 ns

D2X                     15214399 ns
D2XParallel/1           15623245 ns
...
D2XParallel/16           2687060 ns

DivideSqrt               8220050 ns
DivideSqrtParallel/1     9088467 ns
...
DivideSqrtParallel/16     905569 ns

Clamp                    3502010 ns
ClampParallel/1          4507897 ns
...
ClampParallel/16          759576 ns

Norm                     4426782 ns
NormParallel/1           4442805 ns
...
NormParallel/16           430290 ns

Dot                      9023276 ns
DotParallel/1            9031304 ns
...
DotParallel/16           1157267 ns

Axpby                   14608289 ns
AxpbyParallel/1         14570825 ns
...
AxpbyParallel/16         2672220 ns
-----------------------------------

Multi-threading of vector operations in ISC and program evaluation results into
the following improvement:

Running ./bin/evaluation_benchmark
--------------------------------------------------------------------------------------
Benchmark                                                               this   2fd81de
--------------------------------------------------------------------------------------
Residuals<problem-13682-4456117-pre.txt>/1                           4136 ms   4292 ms
Residuals<problem-13682-4456117-pre.txt>/2                           2919 ms   2670 ms
Residuals<problem-13682-4456117-pre.txt>/4                           2065 ms   2198 ms
Residuals<problem-13682-4456117-pre.txt>/8                           1458 ms   1609 ms
Residuals<problem-13682-4456117-pre.txt>/16                          1152 ms   1227 ms

ResidualsAndJacobian<problem-13682-4456117-pre.txt>/1               19759 ms  20084 ms
ResidualsAndJacobian<problem-13682-4456117-pre.txt>/2               10921 ms  10977 ms
ResidualsAndJacobian<problem-13682-4456117-pre.txt>/4                6220 ms   6941 ms
ResidualsAndJacobian<problem-13682-4456117-pre.txt>/8                3490 ms   4398 ms
ResidualsAndJacobian<problem-13682-4456117-pre.txt>/16               2277 ms   3172 ms

Plus<problem-13682-4456117-pre.txt>/1                                 339 ms    322 ms
Plus<problem-13682-4456117-pre.txt>/2                                 220 ms
Plus<problem-13682-4456117-pre.txt>/4                                 128 ms
Plus<problem-13682-4456117-pre.txt>/8                                78.0 ms
Plus<problem-13682-4456117-pre.txt>/16                               49.8 ms

ISCRightMultiplyAndAccumulate<problem-13682-4456117-pre.txt>/1       2434 ms   2478 ms
ISCRightMultiplyAndAccumulate<problem-13682-4456117-pre.txt>/2       2706 ms   2688 ms
ISCRightMultiplyAndAccumulate<problem-13682-4456117-pre.txt>/4       1430 ms   1548 ms
ISCRightMultiplyAndAccumulate<problem-13682-4456117-pre.txt>/8        742 ms    883 ms
ISCRightMultiplyAndAccumulate<problem-13682-4456117-pre.txt>/16       438 ms    555 ms

ISCRightMultiplyAndAccumulateDiag<problem-13682-4456117-pre.txt>/1   2438 ms   2481 ms
ISCRightMultiplyAndAccumulateDiag<problem-13682-4456117-pre.txt>/2   2565 ms   2790 ms
ISCRightMultiplyAndAccumulateDiag<problem-13682-4456117-pre.txt>/4   1434 ms   1551 ms
ISCRightMultiplyAndAccumulateDiag<problem-13682-4456117-pre.txt>/8    765 ms    892 ms
ISCRightMultiplyAndAccumulateDiag<problem-13682-4456117-pre.txt>/16   435 ms    559 ms

JacobianSquaredColumnNorm<problem-13682-4456117-pre.txt>/1           1278 ms
JacobianSquaredColumnNorm<problem-13682-4456117-pre.txt>/2           1555 ms
JacobianSquaredColumnNorm<problem-13682-4456117-pre.txt>/4            833 ms
JacobianSquaredColumnNorm<problem-13682-4456117-pre.txt>/8            459 ms
JacobianSquaredColumnNorm<problem-13682-4456117-pre.txt>/16           250 ms

JacobianScaleColumns<problem-13682-4456117-pre.txt>/1                1468 ms
JacobianScaleColumns<problem-13682-4456117-pre.txt>/2                1871 ms
JacobianScaleColumns<problem-13682-4456117-pre.txt>/4                 957 ms
JacobianScaleColumns<problem-13682-4456117-pre.txt>/8                 528 ms
JacobianScaleColumns<problem-13682-4456117-pre.txt>/16                294 ms

End-to-end improvements with bundle_adjuster invoked with
./bin/bundle_adjuster --num_threads 28 --num_iterations 40 \
                      --linear_solver iterative_schur \
                      --preconditioner jacobi --input
---------------------------------------------
Problem                         this  2fd81de
---------------------------------------------
problem-13682-4456117-pre.txt  508.6    892.7
problem-1778-993923-pre.txt    763.8   1129.9
problem-1723-156502-pre.txt      6.3     14.4
problem-356-226730-pre.txt      76.3    116.2
problem-257-65132-pre.txt       38.6     52.0

Change-Id: Ie31cc5015f13fa479c16ffb5ce48c9b880990d49
2022-12-17 02:52:27 +03:00
Dmitriy Korchemkin 2fd81de12d Add build configuration with CUDA on Linux
Change-Id: I3144a44692a7a129857b65ed84fb2a5637b25b5d
2022-11-29 18:51:13 +03:00
Sameer Agarwal 06bfe6ffac Remove OpenMP and No threading backends.
Since c++11, we can depend on C++ threads always being available.
With the recent work on the performance of CXX threading, the
additional complexity of maintaining multiple backends for some
minor performance delta is not worth it

https://github.com/ceres-solver/ceres-solver/issues/886

Change-Id: Idee480b22a498daec9c4366da8589aa58eaf36a1
2022-11-27 21:06:33 -08:00
Sergiu Deitsch 352b320ab1 Fixed SuiteSparse 6.0 version parsing
The version component macro names are delimited by multiple spaces in
the new release resulting in a failure to parse the version.

An additional guard ensures that if the version cannot be correctly
parsed it is discarded and a user warning is issued.

Fixes #919

Change-Id: I630f30dba0fd23979b6fe5d854e59701c22c3469
2022-11-18 17:46:50 +00:00
Sameer Agarwal 8fd7828e3d ClangTidy fixes
Change-Id: I07141aa81203dd58fb6de5c15859fffbd1b91da1
2022-11-18 09:43:06 -08:00
Dmitriy Korchemkin 0424615dcc Fix PartitionedMatrixView usage in evaluation_benchmark
Change-Id: I50a3fee923ce15a8c37a168126cb410239566025
2022-11-18 01:02:59 +03:00
Dmitriy Korchemkin 77a54dd3d2 Parallel updates to block-diagonal EtE FtF
--------------------------------------------------------------------------------
Benchmark                                                                   Time
--------------------------------------------------------------------------------
PMVUpdateBlockDiagonalFtF<final/problem-13682-4456117-pre.txt>/1   5056275941 ns
PMVUpdateBlockDiagonalFtF<final/problem-13682-4456117-pre.txt>/2   3677677097 ns
PMVUpdateBlockDiagonalFtF<final/problem-13682-4456117-pre.txt>/4   1932236015 ns
PMVUpdateBlockDiagonalFtF<final/problem-13682-4456117-pre.txt>/8    984585015 ns
PMVUpdateBlockDiagonalFtF<final/problem-13682-4456117-pre.txt>/16   614918752 ns

PMVUpdateBlockDiagonalEtE<final/problem-13682-4456117-pre.txt>/1    449324491 ns
PMVUpdateBlockDiagonalEtE<final/problem-13682-4456117-pre.txt>/2    273147462 ns
PMVUpdateBlockDiagonalEtE<final/problem-13682-4456117-pre.txt>/4    150742698 ns
PMVUpdateBlockDiagonalEtE<final/problem-13682-4456117-pre.txt>/8     81602564 ns
PMVUpdateBlockDiagonalEtE<final/problem-13682-4456117-pre.txt>/16    47010769 ns

PMVUpdateBlockDiagonalFtF<venice/problem-1778-993923-pre.txt>/1     774598200 ns
PMVUpdateBlockDiagonalFtF<venice/problem-1778-993923-pre.txt>/2     611312877 ns
PMVUpdateBlockDiagonalFtF<venice/problem-1778-993923-pre.txt>/4     326701149 ns
PMVUpdateBlockDiagonalFtF<venice/problem-1778-993923-pre.txt>/8     165634457 ns
PMVUpdateBlockDiagonalFtF<venice/problem-1778-993923-pre.txt>/16     90631068 ns

PMVUpdateBlockDiagonalEtE<venice/problem-1778-993923-pre.txt>/1      80651817 ns
PMVUpdateBlockDiagonalEtE<venice/problem-1778-993923-pre.txt>/2      49688691 ns
PMVUpdateBlockDiagonalEtE<venice/problem-1778-993923-pre.txt>/4      27199153 ns
PMVUpdateBlockDiagonalEtE<venice/problem-1778-993923-pre.txt>/8      14301768 ns
PMVUpdateBlockDiagonalEtE<venice/problem-1778-993923-pre.txt>/16      8683479 ns

PMVUpdateBlockDiagonalFtF<ladybug/problem-1723-156502-pre.txt>/1    104422529 ns
PMVUpdateBlockDiagonalFtF<ladybug/problem-1723-156502-pre.txt>/2     81555176 ns
PMVUpdateBlockDiagonalFtF<ladybug/problem-1723-156502-pre.txt>/4     43227593 ns
PMVUpdateBlockDiagonalFtF<ladybug/problem-1723-156502-pre.txt>/8     22177895 ns
PMVUpdateBlockDiagonalFtF<ladybug/problem-1723-156502-pre.txt>/16    12505813 ns

PMVUpdateBlockDiagonalEtE<ladybug/problem-1723-156502-pre.txt>/1     14205253 ns
PMVUpdateBlockDiagonalEtE<ladybug/problem-1723-156502-pre.txt>/2      7102357 ns
PMVUpdateBlockDiagonalEtE<ladybug/problem-1723-156502-pre.txt>/4      3806598 ns
PMVUpdateBlockDiagonalEtE<ladybug/problem-1723-156502-pre.txt>/8      2112615 ns
PMVUpdateBlockDiagonalEtE<ladybug/problem-1723-156502-pre.txt>/16     1245771 ns

PMVUpdateBlockDiagonalFtF<dubrovnik/problem-356-226730-pre.txt>/1   190102870 ns
PMVUpdateBlockDiagonalFtF<dubrovnik/problem-356-226730-pre.txt>/2   157359897 ns
PMVUpdateBlockDiagonalFtF<dubrovnik/problem-356-226730-pre.txt>/4    82657662 ns
PMVUpdateBlockDiagonalFtF<dubrovnik/problem-356-226730-pre.txt>/8    42746490 ns
PMVUpdateBlockDiagonalFtF<dubrovnik/problem-356-226730-pre.txt>/16   23434967 ns

PMVUpdateBlockDiagonalEtE<dubrovnik/problem-356-226730-pre.txt>/1    18894355 ns
PMVUpdateBlockDiagonalEtE<dubrovnik/problem-356-226730-pre.txt>/2    12138228 ns
PMVUpdateBlockDiagonalEtE<dubrovnik/problem-356-226730-pre.txt>/4     6808771 ns
PMVUpdateBlockDiagonalEtE<dubrovnik/problem-356-226730-pre.txt>/8     3829718 ns
PMVUpdateBlockDiagonalEtE<dubrovnik/problem-356-226730-pre.txt>/16    2103688 ns

PMVUpdateBlockDiagonalFtF<trafalgar/problem-257-65132-pre.txt>/1     34230036 ns
PMVUpdateBlockDiagonalFtF<trafalgar/problem-257-65132-pre.txt>/2     20121184 ns
PMVUpdateBlockDiagonalFtF<trafalgar/problem-257-65132-pre.txt>/4     10899938 ns
PMVUpdateBlockDiagonalFtF<trafalgar/problem-257-65132-pre.txt>/8      6186359 ns
PMVUpdateBlockDiagonalFtF<trafalgar/problem-257-65132-pre.txt>/16     4207103 ns

PMVUpdateBlockDiagonalEtE<trafalgar/problem-257-65132-pre.txt>/1      3077110 ns
PMVUpdateBlockDiagonalEtE<trafalgar/problem-257-65132-pre.txt>/2      2224104 ns
PMVUpdateBlockDiagonalEtE<trafalgar/problem-257-65132-pre.txt>/4      1274841 ns
PMVUpdateBlockDiagonalEtE<trafalgar/problem-257-65132-pre.txt>/8       721140 ns
PMVUpdateBlockDiagonalEtE<trafalgar/problem-257-65132-pre.txt>/16      437715 ns

Change-Id: If5a342a063869bd9c0505bf96b6d957da5169c1d
2022-11-17 23:17:01 +03:00
Sameer Agarwal 946fa50de7 ClangTidy fixes
Change-Id: I4b54a0b2d3a84f632ce6f5f99af6c694f9695f93
2022-11-15 16:46:27 -08:00
Sameer Agarwal e4bef95054 Refactor PartitionedMatrixView to cache the partitions
The constructor now takes a LinearSolver::Options as input
and uses that to compute the partitioning once and uses it
for its lifetime.

Change-Id: I9ef30df0b60f8fa91c8b5601c397b2d9314a2cc7
2022-11-15 16:34:04 -08:00
Sergiu Deitsch d3201798ea Clean up sparse_cholesky_test
Change-Id: I210d1181d4696b237094af1fa040064f293baa6a
2022-11-15 19:17:47 +01:00
Sameer Agarwal addcd342fd ClangTidy fixes
Change-Id: I2e7c8dad3afce24072eb81fa4690378e1cc33417
2022-11-14 12:00:18 -08:00
Sameer Agarwal c2e7002d2c Remove an unused variable from evaluation_benchmark.cc
Change-Id: Ibc1133d0fb0ee4dd160712fb3c1c72aec54f2b08
2022-11-14 10:53:01 -08:00
Dmitriy Korchemkin fef6d5875b Parallel left products for PartitionedMatrixView
Parallel left products for PartitionedMatrixView using parallel for
loops with fair partitioning.
Updates for evaluation benchmark including replacing program with a
preprocessed one

Change-Id: Ia1cc3293f106cec6b7d933675cea4e7c5a6b71e4
2022-11-14 18:37:46 +03:00
Sergiu Deitsch 37a3cb3841 Update SuiteSparse in MSVC Github workflow
The new SuiteSparse deployment bundles METIS 5.1.0 instead of 5.1.1 to
avoid heap corruption.

Fixes #918

Change-Id: Ie779dc2015c60e928c237529675e21d4635716a2
2022-11-14 03:38:00 +01:00