OneDAL takes many common mathematical functions used by statistical calculations from MKL, such as CDF of the normal distribution, inverse CDF, inverse error function, and similar.
These kinds of functions are not part of the C++ standard, and not part of any common library. Hence, the reference implementation used in the aarch64 and riscv builds fails silently, by filling with NaNs.
For example:
|
static float sErfInv(float in) { return std::numeric_limits<float>::quiet_NaN(); } |
Perhaps some dependency could be added to the reference implementation for those functions. Issue would be with the licensing though - there are GPL implementations out there, but they would be incompatible with the Apache license of oneDAL.
Perhaps the cephes library which SciPy uses could be incorporated, but the licensing around that library is very unclear. Maybe a third-party dependency akin to OpenRNG could be created with those functions.
CC @rakshithgb-fujitsu @theComputeKid @keeranroth
OneDAL takes many common mathematical functions used by statistical calculations from MKL, such as CDF of the normal distribution, inverse CDF, inverse error function, and similar.
These kinds of functions are not part of the C++ standard, and not part of any common library. Hence, the reference implementation used in the aarch64 and riscv builds fails silently, by filling with NaNs.
For example:
oneDAL/cpp/daal/src/externals/service_math_ref.h
Line 236 in 039b034
Perhaps some dependency could be added to the reference implementation for those functions. Issue would be with the licensing though - there are GPL implementations out there, but they would be incompatible with the Apache license of oneDAL.
Perhaps the cephes library which SciPy uses could be incorporated, but the licensing around that library is very unclear. Maybe a third-party dependency akin to OpenRNG could be created with those functions.
CC @rakshithgb-fujitsu @theComputeKid @keeranroth