-
Notifications
You must be signed in to change notification settings - Fork 10.5k
[Accelerate] [vDSP] Swift Overlays #24184
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
Merged
swift-ci
merged 116 commits into
swiftlang:master
from
FlexMonkey:Accelerate_Swift-vDSP-Overlays
Apr 20, 2019
Merged
[Accelerate] [vDSP] Swift Overlays #24184
swift-ci
merged 116 commits into
swiftlang:master
from
FlexMonkey:Accelerate_Swift-vDSP-Overlays
Apr 20, 2019
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This PR contains a suite of overlays to the vDSP conversion functions.
* Correct copyright year from 2017 to 2019 * `towardsZero` -> `towardZero` * `towardsNearestInteger` -> `towardNearestInteger`
A suite of Swift overlays to vDSP's fill, clear, window, and ramp generation operations.
This commit contains operations for: * Split complex to/from interleaved complex conversion. * Polar to/from rectangular coordinate conversion. * Power and amplitude to decibel conversion.
A suite of Swift overlays to the vDSP elementwise arithmetic operations.
Swift overlays to functions for summing, averaging, and finding extrema in collections. Note current guidance is to not abbreviate "minimum" and "maximum" in new APIs, hence me avoiding `min` and `max` function names.
…ename `differenceEquation` to `twoPoleTwoZeroFilter`.
…ions A suite of Swift overlays to vDSP operations for vector-vector extrema, absolute and negation, in-place reversing and sorting, and single-vector arithmetic.
Swift overlays for calculating phase, copying, conjugating, and general arithmetic against `DSPSplitComplex`.
* Fix parameter / operation naming mismatch.
…:)`. Also, remove unnecessary import.
…nto Accelerate_Swift-vDSP-Overlays
…ion' into Accelerate_Swift-vDSP-Overlays
…s' into Accelerate_Swift-vDSP-Overlays
…o Accelerate_Swift-vDSP-Overlays
…ccelerate_Swift-vDSP-Overlays
…onAndDownsampling' into Accelerate_Swift-vDSP-Overlays
… into Accelerate_Swift-vDSP-Overlays
…rArithmetic' into Accelerate_Swift-vDSP-Overlays
… into Accelerate_Swift-vDSP-Overlays
…tion' into Accelerate_Swift-vDSP-Overlays
…eshold' into Accelerate_Swift-vDSP-Overlays
…o Accelerate_Swift-vDSP-Overlays
…ations' into Accelerate_Swift-vDSP-Overlays
Contains the following: [Accelerate] [vDSP] Swift Overlays to Sliding Window Summation Operations [Accelerate] [vDSP] Swift Overlays to Linear Interpolation Operations [Accelerate] [vDSP] Swift Overlays to Complex Vector Operations [Accelerate] [vDSP] Swift overlays to 1D and 2D convolution operations. [Accelerate] [vDSP] Swift overlays to dot product and distance functions. [Accelerate] [vDSP] Swift overlays to `vDSP_desamp` and `vDSP_deq22`. [Accelerate] [vDSP] Vector Reduction Functions [Accelerate] [vDSP] Elementwise Vector-Vector and Vector-Scalar Arithmetic [Accelerate] [vDSP] Miscellaneous Conversion Functions [Accelerate] [vDSP] Polynomial Evaluation Functions [Accelerate] [vDSP] Clipping, Limit, and Threshold Functions [Accelerate] [vDSP] Fill, Clear, and Generation Functions [Accelerate] [vDSP] Integration Functions [Accelerate] [vDSP] Vector Type Conversion Functions [Accelerate] [vDSP] Swift overlays to Vector-Vector Extrema and Single-Vector Operations
@swift-ci please test |
Build failed |
The one test failure is unrelated to this change. Let's proceed. |
@swift-ci please smoke test and merge. |
stephentyrone
pushed a commit
to stephentyrone/swift
that referenced
this pull request
Apr 25, 2019
stephentyrone
added a commit
that referenced
this pull request
Apr 26, 2019
* [Accelerate] [Quadrature] New Quadrature Overlay (#23127) * [Accelerate] [Quadrature] New Quadrature Overlay A class that simplifies approximating the definite integral of a function. * Fixes in response to PR Review. Change `@_exported import Accelerate` to `import Accelerate`. Correct date in copyright comment. * Code Review Fixes. * Remove mutable integrator, simply set options in init(). * Remove mutable `maxIntervals` and `qagPointsPerInterval`. * Update tests. * Code Review Fixes. * Use standard library `Result`. * Implement `QAGPointsPerInterval` as a struct. * Tidy up Passing Integrand to `quadrature_integrate_function`. Pass the integrand closure directly to the `quadrature_integrate_function` initialiser rather than attaching as a property of the `Quadrature` class. * Make `Quadrature` a struct, and remove requirement for `integrand` to be escaping. * Code Review Changes * Add long-form integrator algorithm aliases (update tests to use these aliases). * Make quadrature error description public. * New tests for error description and `QAGPointsPerInterval`. * Vectorized Integrand for Quadrature Create an alternative implementation of `integrate` that accepts an integrand of type `(_ input: UnsafeBufferPointer<Double>, _ result: UnsafeMutableBufferPointer<Double>)`. * Vectorized Integrand for Quadrature Create an alternative implementation of `integrate` that accepts an integrand of type `(_ input: UnsafeBufferPointer<Double>, _ result: UnsafeMutableBufferPointer<Double>)`. * Vectorized Integrand for Quadrature Remove _ContiguousCollection - it's no longer used. * Delete ContiguousCollection.swift Not required. * Refactor tests. * Accelerate vForce (#24152) * [Accelerate] [vForce] New vForce Overlay This PR contains a suite of overlays to the vForce transcendental and trigonometric functions on vectors of any length. The overlays simplify the API to the existing functions and accept collections that implement a new protocol called AccelerateBuffer. Conformances are provided for the most useful stdlib Collections. * Merge pull request #24184 from FlexMonkey/Accelerate_Swift-vDSP-Overlays * Fix a case where vDSP is missing a cast (#24197) * Add missing cast to new vDSP_FIR overlay. * Use macOS instead of OSX in availability annotations. * Reorder Accelerate/CMakeLists.txt alphabetically. * [Accelerate] [vImage] Swift Overlays (#23592) * Accelerate vImage Swift Overlays A suite of functions, enumerations, and option sets to make working with vImage in Swift simpler. * vImage_Buffer - new initializers to instantiate and initialize buffers with a single function call. * vImage_Buffer - new functions to copy buffers and create CGImage instances from contents. * vImage_CGImageFormat - new initializers. * vImage_CGImageFormat - new equivalence operator. * vImageConverter - methods to wrap free functions. * vImageConverter - new make and convert functions. * vImageCVImageFormat - new make functions. * vImageCVImageFormat - methods to wrap free functions. * vImage_Error - errorDescription function. * vImage flags as an option set. * Add new methods for generating CV -> CG and CG -> CV converters. * update comments: `height` and `width` to `size`. * `vImage_CGImageFormat.componentCount` should be `Int`. * `vImage_CGImageFormat.componentCount` should be `Int` * Move `self.init()` to after the size check for kvImageNoAllocate init. * Buffer initializers to width and height rather than size. * change vImage_CGImageFormat lightweight initializer to accept Int for `bitsPerComponent` and `bitsPerPixel`. * Flesh out docs for vImage_Buffer.size * Remove faux initializer in favor of new static function: `preferredAlignmentAndRowBytes`. * Change functions to use proper error handling rather than inout error codes. * Removed `flags` from basic init. The only real flag to pass here is print diagnostics to console, and I now throw proper errors. * Tests to check error throwing for buffer copy. * remove unnecessary import, add missing docs. * Add comments to error enums. * Fix bug creating string from format code. * Make `vImageCVImageFormat.formatCode` a `UInt32`. * Remove equivalence operator from `CGImageFormat`. * [Accelerate] [vDSP] DFT, FFT, DCT, and Biquad (#24207) * Swift overlay to vDSP cascaded biquad IIR filter. * update comment in test * Swift overlay to vDSP Discrete Cosine Transform * Swift Overlays to vDSP Fast Fourier Transform and Discrete Fourier Transform * Tests for DFT and FFT * Some refactoring and begin documentation. * Swift overlays to FFT and DFT operations. * Expand docs. * Implement `vDSP_destroy_fftsetup` and `vDSP_destroy_fftsetupD` * Refactor Tests * Refactor Tests * Provide transform function that returns the result. Refactoring: parameter names more consistent with other vDSP operations, push `fileprivate` symbols to bottom of file. * Add apply() function that returns the result. * Added a version of DFT transform that returns the result. * update some DFT comments * Remove FFT overlays from this branch to separate DFT and FFT pull requests. * [Accelerate] [vDSP] Swift Overlays to FFT Operations This PR contains Swift overlays to simplify performing 1D and 2D fast Fourier transforms on single- and double-precision data. This PR includes a subset of the operations (e.g. vDSP_fft_zrop for FFT). My plan is to add the additional operations (e.g. multiple signals, in-place operations, etc.) in a subsequent PR once this is approved. cc: @moiseev @airspeedswift @stephentyrone * Composite Branch Contains FFT, DFT, DCT, and Biquad branches. * Merge pull request #24232 from stephentyrone/veclib-enum-availability * Merge pull request #24275 from stephentyrone/disable-broken-vImage-test Temporarily disable a new vImage test that's failing for some platforms. * Remove magic-symbols-for-install-name.c from Accelerate CMakeLists.txt This file exists on master but not on 5.1. * Apparently GYB_SOURCES hasn't made it onto 5.1. * Slice should only conform to AB when the Base conforms to AB.
stephentyrone
added a commit
to stephentyrone/swift
that referenced
this pull request
Apr 26, 2019
* [Accelerate] [Quadrature] New Quadrature Overlay (swiftlang#23127) * [Accelerate] [Quadrature] New Quadrature Overlay A class that simplifies approximating the definite integral of a function. * Fixes in response to PR Review. Change `@_exported import Accelerate` to `import Accelerate`. Correct date in copyright comment. * Code Review Fixes. * Remove mutable integrator, simply set options in init(). * Remove mutable `maxIntervals` and `qagPointsPerInterval`. * Update tests. * Code Review Fixes. * Use standard library `Result`. * Implement `QAGPointsPerInterval` as a struct. * Tidy up Passing Integrand to `quadrature_integrate_function`. Pass the integrand closure directly to the `quadrature_integrate_function` initialiser rather than attaching as a property of the `Quadrature` class. * Make `Quadrature` a struct, and remove requirement for `integrand` to be escaping. * Code Review Changes * Add long-form integrator algorithm aliases (update tests to use these aliases). * Make quadrature error description public. * New tests for error description and `QAGPointsPerInterval`. * Vectorized Integrand for Quadrature Create an alternative implementation of `integrate` that accepts an integrand of type `(_ input: UnsafeBufferPointer<Double>, _ result: UnsafeMutableBufferPointer<Double>)`. * Vectorized Integrand for Quadrature Create an alternative implementation of `integrate` that accepts an integrand of type `(_ input: UnsafeBufferPointer<Double>, _ result: UnsafeMutableBufferPointer<Double>)`. * Vectorized Integrand for Quadrature Remove _ContiguousCollection - it's no longer used. * Delete ContiguousCollection.swift Not required. * Refactor tests. * Accelerate vForce (swiftlang#24152) * [Accelerate] [vForce] New vForce Overlay This PR contains a suite of overlays to the vForce transcendental and trigonometric functions on vectors of any length. The overlays simplify the API to the existing functions and accept collections that implement a new protocol called AccelerateBuffer. Conformances are provided for the most useful stdlib Collections. * Merge pull request swiftlang#24184 from FlexMonkey/Accelerate_Swift-vDSP-Overlays * Fix a case where vDSP is missing a cast (swiftlang#24197) * Add missing cast to new vDSP_FIR overlay. * Use macOS instead of OSX in availability annotations. * Reorder Accelerate/CMakeLists.txt alphabetically. * [Accelerate] [vImage] Swift Overlays (swiftlang#23592) * Accelerate vImage Swift Overlays A suite of functions, enumerations, and option sets to make working with vImage in Swift simpler. * vImage_Buffer - new initializers to instantiate and initialize buffers with a single function call. * vImage_Buffer - new functions to copy buffers and create CGImage instances from contents. * vImage_CGImageFormat - new initializers. * vImage_CGImageFormat - new equivalence operator. * vImageConverter - methods to wrap free functions. * vImageConverter - new make and convert functions. * vImageCVImageFormat - new make functions. * vImageCVImageFormat - methods to wrap free functions. * vImage_Error - errorDescription function. * vImage flags as an option set. * Add new methods for generating CV -> CG and CG -> CV converters. * update comments: `height` and `width` to `size`. * `vImage_CGImageFormat.componentCount` should be `Int`. * `vImage_CGImageFormat.componentCount` should be `Int` * Move `self.init()` to after the size check for kvImageNoAllocate init. * Buffer initializers to width and height rather than size. * change vImage_CGImageFormat lightweight initializer to accept Int for `bitsPerComponent` and `bitsPerPixel`. * Flesh out docs for vImage_Buffer.size * Remove faux initializer in favor of new static function: `preferredAlignmentAndRowBytes`. * Change functions to use proper error handling rather than inout error codes. * Removed `flags` from basic init. The only real flag to pass here is print diagnostics to console, and I now throw proper errors. * Tests to check error throwing for buffer copy. * remove unnecessary import, add missing docs. * Add comments to error enums. * Fix bug creating string from format code. * Make `vImageCVImageFormat.formatCode` a `UInt32`. * Remove equivalence operator from `CGImageFormat`. * [Accelerate] [vDSP] DFT, FFT, DCT, and Biquad (swiftlang#24207) * Swift overlay to vDSP cascaded biquad IIR filter. * update comment in test * Swift overlay to vDSP Discrete Cosine Transform * Swift Overlays to vDSP Fast Fourier Transform and Discrete Fourier Transform * Tests for DFT and FFT * Some refactoring and begin documentation. * Swift overlays to FFT and DFT operations. * Expand docs. * Implement `vDSP_destroy_fftsetup` and `vDSP_destroy_fftsetupD` * Refactor Tests * Refactor Tests * Provide transform function that returns the result. Refactoring: parameter names more consistent with other vDSP operations, push `fileprivate` symbols to bottom of file. * Add apply() function that returns the result. * Added a version of DFT transform that returns the result. * update some DFT comments * Remove FFT overlays from this branch to separate DFT and FFT pull requests. * [Accelerate] [vDSP] Swift Overlays to FFT Operations This PR contains Swift overlays to simplify performing 1D and 2D fast Fourier transforms on single- and double-precision data. This PR includes a subset of the operations (e.g. vDSP_fft_zrop for FFT). My plan is to add the additional operations (e.g. multiple signals, in-place operations, etc.) in a subsequent PR once this is approved. cc: @moiseev @airspeedswift @stephentyrone * Composite Branch Contains FFT, DFT, DCT, and Biquad branches. * Merge pull request swiftlang#24232 from stephentyrone/veclib-enum-availability * Merge pull request swiftlang#24275 from stephentyrone/disable-broken-vImage-test Temporarily disable a new vImage test that's failing for some platforms. * Remove magic-symbols-for-install-name.c from Accelerate CMakeLists.txt This file exists on master but not on 5.1. * Apparently GYB_SOURCES hasn't made it onto 5.1. * Slice should only conform to AB when the Base conforms to AB.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains Swift overlays drawn from the following pull withdrawn PR's:
cc: @moiseev @airspeedswift @stephentyrone