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

Hessian and Jacobian #117

Conversation

raneamri
Copy link
Contributor

@raneamri raneamri commented Jun 6, 2024

Description

Implementation of Hessian and Jacobian class methods as per #37.

Features:

  • Computation of Hessian and Jacobian matrices.

Unrelated changes:

  • Windows msvc 14.3 -> 14.4 to match latest.
  • New helper type traits for validating iterators.

Copy link

github-actions bot commented Jun 6, 2024

Test Results

    29 files  ±    0      29 suites  ±0   11m 26s ⏱️ +28s
 1 312 tests +   37   1 312 ✅ +   37  0 💤 ±0  0 ❌ ±0 
38 010 runs  +1 073  38 010 ✅ +1 073  0 💤 ±0  0 ❌ ±0 

Results for commit a6263b6. ± Comparison against base commit 1b8be41.

♻️ This comment has been updated with latest results.

@raneamri
Copy link
Contributor Author

raneamri commented Jun 6, 2024

Since fwd_adj is theoretically the fastest higher order mode for computing Hessians, I'm unsure if I should implement overloads for other modes or enforce fwd_adj with Hessian.

@auto-differentiation-dev
Copy link
Collaborator

auto-differentiation-dev commented Jun 6, 2024

Since fwd_adj is theoretically the fastest higher order mode for computing Hessians, I'm unsure if I should implement overloads for other modes or enforce fwd_adj with Hessian.

Edited: I think fwd_adj would be sufficient for the first version, covering all useful cases. The only other one that may be used is fwd_fwd in case of a small number of inputs, as that avoids the overheads of a tape and may be faster.

@auto-differentiation-dev auto-differentiation-dev marked this pull request as draft June 6, 2024 12:12
@coveralls
Copy link
Collaborator

coveralls commented Jun 6, 2024

Pull Request Test Coverage Report for Build 9400516425

Details

  • 45 of 45 (100.0%) changed or added relevant lines in 2 files are covered.
  • No unchanged relevant lines lost coverage.
  • Overall coverage increased (+0.02%) to 98.816%

Totals Coverage Status
Change from base Build 9366485824: 0.02%
Covered Lines: 2336
Relevant Lines: 2364

💛 - Coveralls

Copy link
Collaborator

@auto-differentiation-dev auto-differentiation-dev left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also we would like to eventually move the implementations of Hessian and Jacobian into source files, explicitly instantiating them for the possible types T where it makes sense. This gives us a chance to potentially optimise / parallelise the code in future directly with XAD compilation and keep the user code compatible.

You will also need to add some reference doc for these, but it's ok to do this at the end.

src/XAD/Hessian.hpp Outdated Show resolved Hide resolved
src/XAD/Hessian.hpp Outdated Show resolved Hide resolved
src/XAD/Jacobian.hpp Outdated Show resolved Hide resolved
src/XAD/Hessian.hpp Outdated Show resolved Hide resolved
test/Hessian_test.cpp Show resolved Hide resolved
@auto-differentiation-dev
Copy link
Collaborator

Also feel free to merge or rebase main into your branch to keep it up to date.

@coveralls
Copy link
Collaborator

coveralls commented Jun 6, 2024

Pull Request Test Coverage Report for Build 9402307189

Details

  • 45 of 45 (100.0%) changed or added relevant lines in 2 files are covered.
  • No unchanged relevant lines lost coverage.
  • Overall coverage increased (+0.02%) to 98.816%

Totals Coverage Status
Change from base Build 9366485824: 0.02%
Covered Lines: 2336
Relevant Lines: 2364

💛 - Coveralls

@coveralls
Copy link
Collaborator

coveralls commented Jun 7, 2024

Pull Request Test Coverage Report for Build 9416215933

Details

  • 166 of 166 (100.0%) changed or added relevant lines in 2 files are covered.
  • No unchanged relevant lines lost coverage.
  • Overall coverage increased (+0.08%) to 98.873%

Totals Coverage Status
Change from base Build 9366485824: 0.08%
Covered Lines: 2457
Relevant Lines: 2485

💛 - Coveralls

src/XAD/Hessian.hpp Outdated Show resolved Hide resolved
test/Hessian_test.cpp Outdated Show resolved Hide resolved
test/Jacobian_test.cpp Outdated Show resolved Hide resolved
@auto-differentiation-dev
Copy link
Collaborator

Also we would like to eventually move the implementations of Hessian and Jacobian into source files, explicitly instantiating them for the possible types T where it makes sense. This gives us a chance to potentially optimise / parallelise the code in future directly with XAD compilation and keep the user code compatible.

Please disregard this for now. The templated iterator approach will not allow to move this to a source file. We can worry at this later if it's needed.

@auto-differentiation-dev
Copy link
Collaborator

Microsoft has made a jump in the toolset version recently - latest Visual Studio 2022 is now toolset 14.4. That makes the Windows builds fail. I'd say we make the toolsets tested 14.0, 14.1, 14.2, 14.4 now.

@coveralls
Copy link
Collaborator

coveralls commented Jun 7, 2024

Pull Request Test Coverage Report for Build 9416864531

Details

  • 166 of 170 (97.65%) changed or added relevant lines in 2 files are covered.
  • No unchanged relevant lines lost coverage.
  • Overall coverage decreased (-0.08%) to 98.714%

Changes Missing Coverage Covered Lines Changed/Added Lines %
src/XAD/Hessian.hpp 87 89 97.75%
src/XAD/Jacobian.hpp 79 81 97.53%
Totals Coverage Status
Change from base Build 9366485824: -0.08%
Covered Lines: 2457
Relevant Lines: 2489

💛 - Coveralls

@coveralls
Copy link
Collaborator

coveralls commented Jun 9, 2024

Pull Request Test Coverage Report for Build 9437069353

Details

  • 142 of 146 (97.26%) changed or added relevant lines in 2 files are covered.
  • No unchanged relevant lines lost coverage.
  • Overall coverage decreased (-0.09%) to 98.702%

Changes Missing Coverage Covered Lines Changed/Added Lines %
src/XAD/Hessian.hpp 74 76 97.37%
src/XAD/Jacobian.hpp 68 70 97.14%
Totals Coverage Status
Change from base Build 9366485824: -0.09%
Covered Lines: 2433
Relevant Lines: 2465

💛 - Coveralls

@coveralls
Copy link
Collaborator

coveralls commented Jun 10, 2024

Pull Request Test Coverage Report for Build 9449458656

Details

  • 104 of 108 (96.3%) changed or added relevant lines in 2 files are covered.
  • No unchanged relevant lines lost coverage.
  • Overall coverage decreased (-0.1%) to 98.681%

Changes Missing Coverage Covered Lines Changed/Added Lines %
src/XAD/Hessian.hpp 52 54 96.3%
src/XAD/Jacobian.hpp 52 54 96.3%
Totals Coverage Status
Change from base Build 9366485824: -0.1%
Covered Lines: 2395
Relevant Lines: 2427

💛 - Coveralls

@raneamri raneamri marked this pull request as ready for review June 10, 2024 13:48
src/XAD/Jacobian.hpp Outdated Show resolved Hide resolved
src/XAD/Jacobian.hpp Outdated Show resolved Hide resolved
src/XAD/Jacobian.hpp Show resolved Hide resolved
src/XAD/Jacobian.hpp Show resolved Hide resolved
src/XAD/Jacobian.hpp Outdated Show resolved Hide resolved
src/XAD/Jacobian.hpp Outdated Show resolved Hide resolved
src/XAD/Jacobian.hpp Outdated Show resolved Hide resolved
src/XAD/Jacobian.hpp Show resolved Hide resolved
@auto-differentiation-dev
Copy link
Collaborator

Also a note regarding the documentation you added. The files under docs/ref go verbatim onto the documentation reference section on the website. They need to be written in the style of a reference manual - showing the functions provided, listing/explaining their parameters, along with a short description what the function or header does. Similar to the other files there. I believe headers.md will also need to be adapted for the 2 new headers that aren't included by default.

We will have to extend the docs in this part of the website (not part of this repository), and we will take part of what you have written so far for that with the next release.

- Added sample programs for Hessian and Jacobian
- Added doc for Hessian and Jacobian
- Tweaked TypeTraits tests to be easier to understand
- Changed order of some checks for iterators

Upcoming:
- More efficient fwd Jacobian computation
- Possibly less evaluations of foo for Jacobian
@coveralls
Copy link
Collaborator

coveralls commented Jun 11, 2024

Pull Request Test Coverage Report for Build 9466495859

Details

  • 108 of 116 (93.1%) changed or added relevant lines in 2 files are covered.
  • No unchanged relevant lines lost coverage.
  • Overall coverage decreased (-0.3%) to 98.522%

Changes Missing Coverage Covered Lines Changed/Added Lines %
src/XAD/Hessian.hpp 54 58 93.1%
src/XAD/Jacobian.hpp 54 58 93.1%
Totals Coverage Status
Change from base Build 9366485824: -0.3%
Covered Lines: 2399
Relevant Lines: 2435

💛 - Coveralls

@coveralls
Copy link
Collaborator

coveralls commented Jun 11, 2024

Pull Request Test Coverage Report for Build 9467581491

Details

  • 110 of 118 (93.22%) changed or added relevant lines in 2 files are covered.
  • No unchanged relevant lines lost coverage.
  • Overall coverage decreased (-0.3%) to 98.523%

Changes Missing Coverage Covered Lines Changed/Added Lines %
src/XAD/Hessian.hpp 54 58 93.1%
src/XAD/Jacobian.hpp 56 60 93.33%
Totals Coverage Status
Change from base Build 9366485824: -0.3%
Covered Lines: 2401
Relevant Lines: 2437

💛 - Coveralls

@coveralls
Copy link
Collaborator

coveralls commented Jun 11, 2024

Pull Request Test Coverage Report for Build 9467629163

Details

  • 110 of 118 (93.22%) changed or added relevant lines in 2 files are covered.
  • No unchanged relevant lines lost coverage.
  • Overall coverage decreased (-0.3%) to 98.523%

Changes Missing Coverage Covered Lines Changed/Added Lines %
src/XAD/Hessian.hpp 54 58 93.1%
src/XAD/Jacobian.hpp 56 60 93.33%
Totals Coverage Status
Change from base Build 9366485824: -0.3%
Covered Lines: 2401
Relevant Lines: 2437

💛 - Coveralls

@coveralls
Copy link
Collaborator

coveralls commented Jun 11, 2024

Pull Request Test Coverage Report for Build 9468181393

Details

  • 114 of 118 (96.61%) changed or added relevant lines in 2 files are covered.
  • No unchanged relevant lines lost coverage.
  • Overall coverage decreased (-0.1%) to 98.687%

Changes Missing Coverage Covered Lines Changed/Added Lines %
src/XAD/Hessian.hpp 56 58 96.55%
src/XAD/Jacobian.hpp 58 60 96.67%
Totals Coverage Status
Change from base Build 9366485824: -0.1%
Covered Lines: 2405
Relevant Lines: 2437

💛 - Coveralls

@coveralls
Copy link
Collaborator

coveralls commented Jun 11, 2024

Pull Request Test Coverage Report for Build 9468434477

Details

  • 113 of 116 (97.41%) changed or added relevant lines in 2 files are covered.
  • No unchanged relevant lines lost coverage.
  • Overall coverage decreased (-0.07%) to 98.727%

Changes Missing Coverage Covered Lines Changed/Added Lines %
src/XAD/Hessian.hpp 55 56 98.21%
src/XAD/Jacobian.hpp 58 60 96.67%
Totals Coverage Status
Change from base Build 9366485824: -0.07%
Covered Lines: 2404
Relevant Lines: 2435

💛 - Coveralls

@coveralls
Copy link
Collaborator

coveralls commented Jun 11, 2024

Pull Request Test Coverage Report for Build 9472794925

Details

  • 113 of 116 (97.41%) changed or added relevant lines in 2 files are covered.
  • No unchanged relevant lines lost coverage.
  • Overall coverage decreased (-0.07%) to 98.727%

Changes Missing Coverage Covered Lines Changed/Added Lines %
src/XAD/Hessian.hpp 55 56 98.21%
src/XAD/Jacobian.hpp 58 60 96.67%
Totals Coverage Status
Change from base Build 9366485824: -0.07%
Covered Lines: 2404
Relevant Lines: 2435

💛 - Coveralls

@coveralls
Copy link
Collaborator

coveralls commented Jun 11, 2024

Pull Request Test Coverage Report for Build 9472947691

Details

  • 113 of 116 (97.41%) changed or added relevant lines in 2 files are covered.
  • No unchanged relevant lines lost coverage.
  • Overall coverage decreased (-0.07%) to 98.727%

Changes Missing Coverage Covered Lines Changed/Added Lines %
src/XAD/Hessian.hpp 55 56 98.21%
src/XAD/Jacobian.hpp 58 60 96.67%
Totals Coverage Status
Change from base Build 9366485824: -0.07%
Covered Lines: 2404
Relevant Lines: 2435

💛 - Coveralls

Copy link
Collaborator

@auto-differentiation-dev auto-differentiation-dev left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's nearly there now - many of our comments are small consistency corrections / doc changes, that you should be able to just accept. Otherwise a few small changes are still needed.

docs/ref/hessian.md Outdated Show resolved Hide resolved
docs/ref/hessian.md Outdated Show resolved Hide resolved
docs/ref/hessian.md Outdated Show resolved Hide resolved
docs/ref/hessian.md Outdated Show resolved Hide resolved
docs/ref/hessian.md Outdated Show resolved Hide resolved
src/XAD/Jacobian.hpp Show resolved Hide resolved
test/Hessian_test.cpp Outdated Show resolved Hide resolved
test/Hessian_test.cpp Outdated Show resolved Hide resolved
test/Jacobian_test.cpp Show resolved Hide resolved
test/Jacobian_test.cpp Outdated Show resolved Hide resolved
@coveralls
Copy link
Collaborator

coveralls commented Jun 12, 2024

Pull Request Test Coverage Report for Build 9480444406

Details

  • 113 of 116 (97.41%) changed or added relevant lines in 2 files are covered.
  • No unchanged relevant lines lost coverage.
  • Overall coverage decreased (-0.07%) to 98.727%

Changes Missing Coverage Covered Lines Changed/Added Lines %
src/XAD/Hessian.hpp 55 56 98.21%
src/XAD/Jacobian.hpp 58 60 96.67%
Totals Coverage Status
Change from base Build 9366485824: -0.07%
Covered Lines: 2404
Relevant Lines: 2435

💛 - Coveralls

@auto-differentiation-dev auto-differentiation-dev merged commit 26d2385 into auto-differentiation:main Jun 12, 2024
56 of 57 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants