clintropolis opened a new pull request, #19768: URL: https://github.com/apache/druid/pull/19768
### Description Adds a bunch of simd optimizations of the remaining double unary operators. The operators do not have direct intrinsics but are backed by a vectorized math library that depends on platform and jdk build, so performance may vary. Along the way I found sinh, cosh, and tanh were not wired up to SQL, so have added those Testing with a M1 mac I generally saw a pretty nice improvement: ``` SELECT SUM(LN(double1)) FROM expressions SELECT SUM(LN(long1)) FROM expressions SELECT SUM(EXP(double1)) FROM expressions SELECT SUM(EXP(long1)) FROM expressions SELECT SUM(LOG10(double1)) FROM expressions SELECT SUM(LOG10(long1)) FROM expressions SELECT SUM(CBRT(double1)) FROM expressions SELECT SUM(CBRT(long1)) FROM expressions SELECT SUM(SIN(double1)) FROM expressions SELECT SUM(SIN(long1)) FROM expressions SELECT SUM(COS(double1)) FROM expressions SELECT SUM(COS(long1)) FROM expressions SELECT SUM(TAN(double1)) FROM expressions SELECT SUM(TAN(long1)) FROM expressions SELECT SUM(ASIN(double1)) FROM expressions SELECT SUM(ASIN(long1)) FROM expressions SELECT SUM(ACOS(double1)) FROM expressions SELECT SUM(ACOS(long1)) FROM expressions SELECT SUM(ATAN(double1)) FROM expressions SELECT SUM(ATAN(long1)) FROM expressions SELECT SUM(SINH(double1)) FROM expressions SELECT SUM(SINH(long1)) FROM expressions SELECT SUM(COSH(double1)) FROM expressions SELECT SUM(COSH(long1)) FROM expressions SELECT SUM(TANH(double1)) FROM expressions SELECT SUM(TANH(long1)) FROM expressions ``` ``` Benchmark (complexCompression) (deferExpressionDimensions) (jsonObjectStorageEncoding) (query) (rowsPerSegment) (schemaType) (storageType) (stringEncoding) (useVectorApi) (vectorize) Mode Cnt Score Error Units SqlExpressionBenchmark.querySql NONE singleString SMILE 71 1500000 explicit MMAP UTF8 false force avgt 5 30.285 ± 1.411 ms/op SqlExpressionBenchmark.querySql NONE singleString SMILE 71 1500000 explicit MMAP UTF8 true force avgt 5 12.606 ± 2.843 ms/op SqlExpressionBenchmark.querySql NONE singleString SMILE 72 1500000 explicit MMAP UTF8 false force avgt 5 28.189 ± 1.549 ms/op SqlExpressionBenchmark.querySql NONE singleString SMILE 72 1500000 explicit MMAP UTF8 true force avgt 5 14.588 ± 0.554 ms/op SqlExpressionBenchmark.querySql NONE singleString SMILE 73 1500000 explicit MMAP UTF8 false force avgt 5 29.777 ± 1.107 ms/op SqlExpressionBenchmark.querySql NONE singleString SMILE 73 1500000 explicit MMAP UTF8 true force avgt 5 10.653 ± 0.623 ms/op SqlExpressionBenchmark.querySql NONE singleString SMILE 74 1500000 explicit MMAP UTF8 false force avgt 5 22.288 ± 4.846 ms/op SqlExpressionBenchmark.querySql NONE singleString SMILE 74 1500000 explicit MMAP UTF8 true force avgt 5 11.983 ± 0.744 ms/op SqlExpressionBenchmark.querySql NONE singleString SMILE 75 1500000 explicit MMAP UTF8 false force avgt 5 35.076 ± 1.976 ms/op SqlExpressionBenchmark.querySql NONE singleString SMILE 75 1500000 explicit MMAP UTF8 true force avgt 5 13.469 ± 0.812 ms/op SqlExpressionBenchmark.querySql NONE singleString SMILE 76 1500000 explicit MMAP UTF8 false force avgt 5 33.361 ± 0.889 ms/op SqlExpressionBenchmark.querySql NONE singleString SMILE 76 1500000 explicit MMAP UTF8 true force avgt 5 14.979 ± 0.777 ms/op SqlExpressionBenchmark.querySql NONE singleString SMILE 79 1500000 explicit MMAP UTF8 false force avgt 5 33.913 ± 1.415 ms/op SqlExpressionBenchmark.querySql NONE singleString SMILE 79 1500000 explicit MMAP UTF8 true force avgt 5 14.416 ± 1.236 ms/op SqlExpressionBenchmark.querySql NONE singleString SMILE 80 1500000 explicit MMAP UTF8 false force avgt 5 28.261 ± 1.315 ms/op SqlExpressionBenchmark.querySql NONE singleString SMILE 80 1500000 explicit MMAP UTF8 true force avgt 5 17.651 ± 1.072 ms/op SqlExpressionBenchmark.querySql NONE singleString SMILE 81 1500000 explicit MMAP UTF8 false force avgt 5 34.117 ± 1.413 ms/op SqlExpressionBenchmark.querySql NONE singleString SMILE 81 1500000 explicit MMAP UTF8 true force avgt 5 15.238 ± 0.762 ms/op SqlExpressionBenchmark.querySql NONE singleString SMILE 82 1500000 explicit MMAP UTF8 false force avgt 5 28.001 ± 1.855 ms/op SqlExpressionBenchmark.querySql NONE singleString SMILE 82 1500000 explicit MMAP UTF8 true force avgt 5 18.244 ± 0.971 ms/op SqlExpressionBenchmark.querySql NONE singleString SMILE 83 1500000 explicit MMAP UTF8 false force avgt 5 46.805 ± 2.455 ms/op SqlExpressionBenchmark.querySql NONE singleString SMILE 83 1500000 explicit MMAP UTF8 true force avgt 5 17.212 ± 0.605 ms/op SqlExpressionBenchmark.querySql NONE singleString SMILE 84 1500000 explicit MMAP UTF8 false force avgt 5 47.951 ± 1.824 ms/op SqlExpressionBenchmark.querySql NONE singleString SMILE 84 1500000 explicit MMAP UTF8 true force avgt 5 23.149 ± 0.962 ms/op SqlExpressionBenchmark.querySql NONE singleString SMILE 85 1500000 explicit MMAP UTF8 false force avgt 5 28.384 ± 0.810 ms/op SqlExpressionBenchmark.querySql NONE singleString SMILE 85 1500000 explicit MMAP UTF8 true force avgt 5 11.907 ± 1.053 ms/op SqlExpressionBenchmark.querySql NONE singleString SMILE 86 1500000 explicit MMAP UTF8 false force avgt 5 22.639 ± 1.056 ms/op SqlExpressionBenchmark.querySql NONE singleString SMILE 86 1500000 explicit MMAP UTF8 true force avgt 5 13.509 ± 0.615 ms/op SqlExpressionBenchmark.querySql NONE singleString SMILE 87 1500000 explicit MMAP UTF8 false force avgt 5 29.227 ± 5.817 ms/op SqlExpressionBenchmark.querySql NONE singleString SMILE 87 1500000 explicit MMAP UTF8 true force avgt 5 12.091 ± 0.466 ms/op SqlExpressionBenchmark.querySql NONE singleString SMILE 88 1500000 explicit MMAP UTF8 false force avgt 5 22.917 ± 0.659 ms/op SqlExpressionBenchmark.querySql NONE singleString SMILE 88 1500000 explicit MMAP UTF8 true force avgt 5 14.683 ± 1.046 ms/op SqlExpressionBenchmark.querySql NONE singleString SMILE 89 1500000 explicit MMAP UTF8 false force avgt 5 34.433 ± 2.669 ms/op SqlExpressionBenchmark.querySql NONE singleString SMILE 89 1500000 explicit MMAP UTF8 true force avgt 5 15.296 ± 0.497 ms/op SqlExpressionBenchmark.querySql NONE singleString SMILE 90 1500000 explicit MMAP UTF8 false force avgt 5 27.284 ± 0.832 ms/op SqlExpressionBenchmark.querySql NONE singleString SMILE 90 1500000 explicit MMAP UTF8 true force avgt 5 16.977 ± 1.177 ms/op SqlExpressionBenchmark.querySql NONE singleString SMILE 91 1500000 explicit MMAP UTF8 false force avgt 5 38.460 ± 1.404 ms/op SqlExpressionBenchmark.querySql NONE singleString SMILE 91 1500000 explicit MMAP UTF8 true force avgt 5 16.669 ± 0.656 ms/op SqlExpressionBenchmark.querySql NONE singleString SMILE 92 1500000 explicit MMAP UTF8 false force avgt 5 22.888 ± 0.748 ms/op SqlExpressionBenchmark.querySql NONE singleString SMILE 92 1500000 explicit MMAP UTF8 true force avgt 5 17.944 ± 1.868 ms/op SqlExpressionBenchmark.querySql NONE singleString SMILE 93 1500000 explicit MMAP UTF8 false force avgt 5 35.114 ± 2.037 ms/op SqlExpressionBenchmark.querySql NONE singleString SMILE 93 1500000 explicit MMAP UTF8 true force avgt 5 16.522 ± 1.252 ms/op SqlExpressionBenchmark.querySql NONE singleString SMILE 94 1500000 explicit MMAP UTF8 false force avgt 5 22.599 ± 0.924 ms/op SqlExpressionBenchmark.querySql NONE singleString SMILE 94 1500000 explicit MMAP UTF8 true force avgt 5 17.941 ± 0.951 ms/op SqlExpressionBenchmark.querySql NONE singleString SMILE 95 1500000 explicit MMAP UTF8 false force avgt 5 35.517 ± 0.967 ms/op SqlExpressionBenchmark.querySql NONE singleString SMILE 95 1500000 explicit MMAP UTF8 true force avgt 5 37.003 ± 1.007 ms/op SqlExpressionBenchmark.querySql NONE singleString SMILE 96 1500000 explicit MMAP UTF8 false force avgt 5 20.983 ± 0.902 ms/op SqlExpressionBenchmark.querySql NONE singleString SMILE 96 1500000 explicit MMAP UTF8 true force avgt 5 16.690 ± 0.919 ms/op ``` -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
