Commits


Yuqi Gu authored and Matthew Topol committed d19280898a1
ARROW-15320: [Go] Implement memset_neon with Arm64 GoLang Assembly ### Benchmark: Before: ``` BenchmarkSet_32-46 50375077 20.79 ns/op 1539.46 MB/s BenchmarkSet_64-46 33885868 35.44 ns/op 1806.12 MB/s BenchmarkSet_500-46 4830316 244.8 ns/op 2042.77 MB/s BenchmarkSet_512-46 4715967 250.0 ns/op 2047.66 MB/s BenchmarkSet_1000-46 2502268 473.5 ns/op 2112.03 MB/s BenchmarkSet_1024-46 2455328 484.5 ns/op 2113.36 MB/s BenchmarkSet_2000-46 1284357 932.9 ns/op 2143.94 MB/s BenchmarkSet_2048-46 1254939 952.7 ns/op 2149.64 MB/s BenchmarkSet_4000-46 649353 1846 ns/op 2166.42 MB/s BenchmarkSet_4096-46 632190 1892 ns/op 2164.46 MB/s BenchmarkSet_8000-46 277814 3682 ns/op 2172.91 MB/s BenchmarkSet_8192-46 281846 3774 ns/op 2170.57 MB/s ``` After: ``` BenchmarkSet_32-46 124619421 9.609 ns/op 3330.07 MB/s BenchmarkSet_64-46 108461996 11.05 ns/op 5793.86 MB/s BenchmarkSet_500-46 30755696 34.08 ns/op 14671.42 MB/s BenchmarkSet_512-46 38423780 26.72 ns/op 19164.37 MB/s BenchmarkSet_1000-46 25968873 43.92 ns/op 22770.37 MB/s BenchmarkSet_1024-46 25674890 41.33 ns/op 24775.83 MB/s BenchmarkSet_2000-46 15052582 75.31 ns/op 26557.55 MB/s BenchmarkSet_2048-46 15718210 70.64 ns/op 28994.00 MB/s BenchmarkSet_4000-46 8946339 130.3 ns/op 30700.07 MB/s BenchmarkSet_4096-46 8686082 133.1 ns/op 30764.04 MB/s BenchmarkSet_8000-46 4817458 245.3 ns/op 32614.89 MB/s BenchmarkSet_8192-46 4715134 250.6 ns/op 32686.20 MB/s ``` Get 3x ~ 15x performance uplift. ### Test result: Passed ARM_ENABLE_EXT=NEON make test ``` go test ./... ok github.com/apache/arrow/go/v7/arrow (cached) ok github.com/apache/arrow/go/v7/arrow/array (cached) ok github.com/apache/arrow/go/v7/arrow/arrio (cached) ok github.com/apache/arrow/go/v7/arrow/bitutil (cached) ? github.com/apache/arrow/go/v7/arrow/cdata [no test files] ok github.com/apache/arrow/go/v7/arrow/csv (cached) ok github.com/apache/arrow/go/v7/arrow/decimal128 (cached) ? github.com/apache/arrow/go/v7/arrow/endian [no test files] ok github.com/apache/arrow/go/v7/arrow/flight (cached) ok github.com/apache/arrow/go/v7/arrow/float16 (cached) ? github.com/apache/arrow/go/v7/arrow/internal/arrdata [no test files] ok github.com/apache/arrow/go/v7/arrow/internal/arrjson (cached) ok github.com/apache/arrow/go/v7/arrow/internal/cpu (cached) ? github.com/apache/arrow/go/v7/arrow/internal/debug [no test files] ? github.com/apache/arrow/go/v7/arrow/internal/flatbuf [no test files] ? github.com/apache/arrow/go/v7/arrow/internal/flight_integration [no test files] ? github.com/apache/arrow/go/v7/arrow/internal/flight_integration/cmd/arrow-flight-integration-client [no test files] ? github.com/apache/arrow/go/v7/arrow/internal/flight_integration/cmd/arrow-flight-integration-server [no test files] ? github.com/apache/arrow/go/v7/arrow/internal/testing/gen [no test files] ok github.com/apache/arrow/go/v7/arrow/internal/testing/tools (cached) ? github.com/apache/arrow/go/v7/arrow/internal/testing/types [no test files] ok github.com/apache/arrow/go/v7/arrow/ipc (cached) ok github.com/apache/arrow/go/v7/arrow/ipc/cmd/arrow-cat (cached) ok github.com/apache/arrow/go/v7/arrow/ipc/cmd/arrow-file-to-stream (cached) ok github.com/apache/arrow/go/v7/arrow/ipc/cmd/arrow-json-integration-test (cached) ok github.com/apache/arrow/go/v7/arrow/ipc/cmd/arrow-ls (cached) ok github.com/apache/arrow/go/v7/arrow/ipc/cmd/arrow-stream-to-file (cached) ok github.com/apache/arrow/go/v7/arrow/math (cached) ok github.com/apache/arrow/go/v7/arrow/memory (cached) ok github.com/apache/arrow/go/v7/arrow/scalar (cached) ok github.com/apache/arrow/go/v7/arrow/tensor (cached) ``` Closes #12138 from guyuqi/ARROW-15320 Authored-by: Yuqi Gu <yuqi.gu@arm.com> Signed-off-by: Matthew Topol <mtopol@factset.com>