[ https://issues.apache.org/jira/browse/ARROW-8831?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Neville Dipale resolved ARROW-8831. ----------------------------------- Fix Version/s: 1.0.0 Resolution: Fixed Issue resolved by pull request 7204 [https://github.com/apache/arrow/pull/7204] > [Rust] incomplete SIMD implementation in simd_compare_op > -------------------------------------------------------- > > Key: ARROW-8831 > URL: https://issues.apache.org/jira/browse/ARROW-8831 > Project: Apache Arrow > Issue Type: Improvement > Components: Rust > Affects Versions: 0.17.0 > Reporter: Yordan Pavlov > Priority: Major > Labels: pull-request-available > Fix For: 1.0.0 > > Time Spent: 40m > Remaining Estimate: 0h > > Currently the simd_compare_op function defined here > [https://github.com/apache/arrow/blob/master/rust/arrow/src/compute/kernels/comparison.rs#L204] > is only about 10% faster compared to the non-SIMD implementation and is > taking approximately the same time for types of different length (which > indicates that the SIMD implementation is not complete). Below are results > from benchmarks with Int8 and Float32 types: > eq Int8 time: [947.53 us 947.81 us 948.05 us] > eq Int8 simd time: [855.02 us 858.26 us 862.48 us] > neq Int8 time: [904.09 us 907.34 us 911.44 us] > neq Int8 simd time: [848.49 us 849.28 us 850.28 us] > lt Int8 time: [900.87 us 902.65 us 904.86 us] > lt Int8 simd time: [850.32 us 850.96 us 851.90 us] > lt_eq Int8 time: [974.68 us 983.03 us 991.98 us] > lt_eq Int8 simd time: [851.83 us 852.22 us 852.74 us] > gt Int8 time: [908.48 us 911.76 us 914.72 us] > gt Int8 simd time: [851.93 us 852.43 us 853.04 us] > gt_eq Int8 time: [981.53 us 983.37 us 986.31 us] > gt_eq Int8 simd time: [855.59 us 856.83 us 858.61 us] > eq Float32 time: [911.46 us 911.70 us 912.01 us] > eq Float32 simd time: [884.74 us 885.97 us 887.74 us] > neq Float32 time: [904.26 us 904.73 us 905.27 us] > neq Float32 simd time: [884.40 us 892.32 us 901.98 us] > lt Float32 time: [907.90 us 908.54 us 909.34 us] > lt Float32 simd time: [883.23 us 886.05 us 889.31 us] > lt_eq Float32 time: [911.44 us 911.62 us 911.82 us] > lt_eq Float32 simd time: [882.78 us 886.78 us 891.05 us] > gt Float32 time: [906.88 us 907.96 us 909.32 us] > gt Float32 simd time: [879.78 us 883.03 us 886.63 us] > gt_eq Float32 time: [924.72 us 926.03 us 928.29 us] > gt_eq Float32 simd time: [884.80 us 885.93 us 887.35 us] > In the benchmark results above, notice how both the SIMD and non-SIMD > operations take similar amounts of time for types of different size (Int8 and > Float32). This is normal for a non-SIMD implementation but is not normal for > a SIMD implementation as SIMD operations can be executed on more values of > smaller size. > > This pull request attempts to fix that: > [https://github.com/apache/arrow/pull/7204] -- This message was sent by Atlassian Jira (v8.3.4#803005)