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

Mech ABI: The final step. #1452

Merged
merged 110 commits into from
Jul 29, 2021
Merged

Conversation

thorstenhater
Copy link
Contributor

@thorstenhater thorstenhater commented Mar 22, 2021

Status Complete Review #1

  1. This is the final stage of the ABI proposal, as outlined in Add Mechanism ABI #1376.
  2. Review turned up the request for further simplification
  • Remove concrete_mechanism<Backend B>
  • Make mechanism a concrete type
  • Remove typeid from catalogues

Note Please read the docs first.

  • Add a public, plain-C (C11) (C99) compilable header for extensions to interface with.
  • Separate mechanisms into parts: one implementing the interface and one in arbor wrapping the interface type.
  • Document said interface.
    • Inline in header
    • Internal: extend mechanism catalogues
  • Adjust modcc to use this interface.
    • CPU/Scalar
    • CPU/SIMD
    • GPU
  • Test implementation.
    • CPU/Scalar
    • CPU/SIMD
    • GPU
  • Adjust unit tests.
    • modcc: output
    • rest: new API
    • Add unit tests
      • Memory initialisation
        • CPU
        • GPU
  • Adjust scripts/build_catalogue to insulate from arbor source tree.
    • Fix up docs.
  • Polish pass
    • See if we can unify mechanism CPU/GPU. No, memory abstraction is too weak.
    • See if mechcat can just store the interface type and produce mechanisms on. Postponed until after this PR.
    • Hoist methods from headers: done where possible
    • clean-up install

Also, this makes the following incidental changes

  • Add fmt for formatting in modc.
  • Fix some -pedantic warnings in files touched by the PR.
  • Early return in stimulus GPU kernel; avoids launch failure
  • Fix rev_pot mech classification

Closes #1376
Closes #1335
Closes #1590

@thorstenhater thorstenhater marked this pull request as draft March 22, 2021 13:37
@bcumming
Copy link
Member

Is there a specific reason for C11 for the API?

If possible, it is best to stick to ANSI C99, for maximum portability.

@thorstenhater
Copy link
Contributor Author

Just the the dream of C++20, which will be aligned with C11. But good point, I'll change that to C99.

thorstenhater and others added 11 commits July 2, 2021 09:55
* Define, use, and propagate minimum alignment expectations for SIMD-based
mechansism.
* Update fvm_lowered unit test with new mechanism field access wrappers.
* DTRT in multicore shared_state re: mechanism alignment and partition
width.
* Fix for uncalled procedure warning in SIMD generated code.
@thorstenhater
Copy link
Contributor Author

bors try

@bors
Copy link

bors bot commented Jul 21, 2021

try

Merge conflict.

@thorstenhater
Copy link
Contributor Author

bors try

bors bot added a commit that referenced this pull request Jul 21, 2021
@bors
Copy link

bors bot commented Jul 21, 2021

try

Build failed:

@thorstenhater
Copy link
Contributor Author

bors try

bors bot added a commit that referenced this pull request Jul 21, 2021
@bors
Copy link

bors bot commented Jul 21, 2021

try

Build failed:

@halfflat
Copy link
Contributor

bors try

bors bot added a commit that referenced this pull request Jul 28, 2021
@bors
Copy link

bors bot commented Jul 28, 2021

try

Build failed:

@halfflat
Copy link
Contributor

I'm going to merge despite the CSCS gitlab CI failure, which appears due to a problem with the way that git submodules are or are not updated in that process — manually building on the Fujitsu node demonstrates that unit tests compile and pass. There's a chance that once the new submodules are on master, it will fix itself; otherwise, we can address that as a separate issue.

@halfflat halfflat merged commit ff12bb8 into arbor-sim:master Jul 29, 2021
@thorstenhater thorstenhater deleted the feature/mech-abi-final branch August 1, 2022 07:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Reversal Potential Mechanisms are not executed where advertised Add Mechanism ABI Mechanism ABI
4 participants