Uploaded image for project: 'Apache Arrow'
  1. Apache Arrow
  2. ARROW-8792

[C++] Improved declarative compute function / kernel development framework, normalize calling conventions

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • 1.0.0
    • C++

    Description

      I'm working on a significant revamp of the way that kernels are implemented in the project as discussed on the mailing list. PR to follow within the next week or sooner

      A brief list of features:

      • Kernel selection that takes into account the shape of inputs (whether Scalar or Array, so you can provide an implementation just for Arrays and a separate one just for Scalars if you want)
      • More customizable / less monolithic type-to-kernel dispatch
      • Standardized C++ function signature for kernel implementations (rather than every one being a little bit special)
      • Multiple implementations of the same function can coexist (e.g. with / without SIMD optimizations) so that you can choose the one you want at runtime
      • Browsable function registry (see all available kernels and their input type signatures)
      • Central code path for type-checking and argument validation
      • Central code path for kernel execution on ChunkedArray inputs

      There's a lot of JIRAs in the backlog that will follow from this work so I will attach those to this issue for visibility but this issue will cover the initial refactoring work to port the existing code to the new framework without altering existing features.

      Attachments

        Issue Links

          Activity

            People

              wesm Wes McKinney
              wesm Wes McKinney
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 17h 40m
                  17h 40m