Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
  • Sign in
  • E elsa
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Locked Files
  • Issues 51
    • Issues 51
    • List
    • Boards
    • Service Desk
    • Milestones
    • Iterations
  • Merge requests 17
    • Merge requests 17
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
    • Test Cases
  • Deployments
    • Deployments
    • Releases
  • Packages and registries
    • Packages and registries
    • Container Registry
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Code review
    • Insights
    • Issue
    • Repository
  • External wiki
    • External wiki
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • IPIP
  • elsa
  • Merge requests
  • !6

Copy-On-Write

  • Review changes

  • Download
  • Email patches
  • Plain diff
Merged Ghost User requested to merge feature/copy_on_write into master Oct 09, 2019
  • Overview 11
  • Commits 2
  • Pipelines 8
  • Changes 5

Implements copy-on-write as discussed in #5 (closed). This is still a work-in-progress.

The test test_BinaryMethod seems to fail from time to time. I have to further investigate this.


      Start 19: Scenario: Calls to functions of super class

19: Test command: /home/jp/Programming/MA/elsa/build/elsa/projectors/tests/test_BinaryMethod "Scenario: Calls to functions of super class"
19: Test timeout computed to be: 9.99988e+06
19: Filters: Scenario: Calls to functions of super class
19: [2019-10-09 17:18:21.188] [Timing] [info] Execution of BinaryMethod: apply took 4 ms
19: [2019-10-09 17:18:21.204] [Timing] [info] Execution of BinaryMethod: apply took 15 ms
19:
19: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
19: test_BinaryMethod is a Catch v2.8.0 host application.
19: Run with -? for options
19:
19: -------------------------------------------------------------------------------
19: Scenario: Calls to functions of super class
19:       Given: A projector
19:        When: Projector is cloned
19:        Then: Results do not change (may still be slightly different due to
19:              summation being performed in a different order)
19: -------------------------------------------------------------------------------
19: /home/jp/Programming/MA/elsa/elsa/projectors/tests/test_BinaryMethod.cpp:465
19: ...............................................................................
19:
19: /home/jp/Programming/MA/elsa/elsa/projectors/tests/test_BinaryMethod.cpp:468: FAILED:
19:   REQUIRE( sino == sinoClone )
19: with expansion:
19:   {?} == {?}
19:
19: ===============================================================================
19: test cases: 1 | 1 failed
19: assertions: 1 | 1 failed
19:
19/36 Test #19: Scenario: Calls to functions of super class ..................................***Failed    0.02 sec

Benchmark results

I did a quick memory profiling with valgrind --tool=massif ... using the example2d. It seems that the CoW implementation does its job. Further benchmarking with larger examples necessary.

Results with CoW:

--------------------------------------------------------------------------------
  n        time(i)         total(B)   useful-heap(B) extra-heap(B)    stacks(B)
--------------------------------------------------------------------------------
 65    637,923,233          514,224          450,874        63,350            0

Results w/o CoW:

--------------------------------------------------------------------------------
  n        time(i)         total(B)   useful-heap(B) extra-heap(B)    stacks(B)
--------------------------------------------------------------------------------
 81    568,530,524          784,632          721,218        63,414            0

Next steps

  • investigate test failure
  • write test cases
  • extensive benchmarks
Edited Oct 11, 2019 by Ghost User
Assignee
Assign to
Reviewers
Request review from
Time tracking
Source branch: feature/copy_on_write

LRZ Homepage | Datenschutz | Dokumentation und Betriebsbedingungen | Impressum