oneMKL
oneMKL copied to clipboard
Use external interfaces in oneMKL for mklcpu and mklgpu backends
Description
Replaces calls to internal oneMKL functions with calls to the usual external interface. This should make the mklcpu and mklgpu backends more robust and predictable.
Fixes #114
112 out of 3338 tests fail after these changes due to the underlying issue in #204. In fact these tests were never really passing because we were previously testing the reference Netlib BLAS against itself rather than testing the mklcpu backend.
The tests are intended to check the cblas_ interface to reference BLAS against DPC++ interfaces to oneMKL BLAS. Previously these used the same symbols, so we tested reference BLAS against itself. In most cases ( example ) we tested the cblas_ interface against itself. In a few cases that use an increment parameter ( example ), we tested instead the fortran interface. These latter tests are exactly the ones that fail with the changes in this PR because negative values for the increment parameter are handled differently in the two cases.
Fixing the tests will require more serious changes to how the project as a whole handles dynamic libraries as documented in #204.
Checklist
All Submissions
- [x] Do all unit tests pass locally? Attach a log.
- [x] Have you formatted the code using clang-format?
@mkrainiuk Can you take a look at this PR please when you get a chance?
Ping @mkrainiuk can you approve if you don't have additional concerns? Thanks!