@@ -13,26 +13,30 @@ Redistribution of Intel MKL as a crate. Tested on Linux, macOS, and Windows (sin
13
13
14
14
## Supported features
15
15
16
- - ` mkl-*-*-* ` features specify which MKL to be linked
17
- - ` static ` means MKL will be linked statically, and ` dynamic ` means MKL will be linked dynamically
18
- - ` lp64 ` means 32-bit integer interface, ` ilp64 ` means 64-bit integer interface
19
- - ` iomp ` means MKL uses Intel OpenMP, ` seq ` means sequential execution, e.g. no parallelization
20
- - OpenMP is not supported for Windows currently [ #46 ] ( https://github.com/rust-math/intel-mkl-src/issues/46 )
21
- - default is ` mkl-static-ilp64-seq ` , and you must choose one of them.
22
- - macOS is not supported [ #42 ] ( https://github.com/rust-math/intel-mkl-src/issues/42 )
23
-
24
- | feature name | Linux | macOS | Windows |
25
- | :-----------------------| :------------------:| :------------------:| :------------------:|
26
- | mkl-static-lp64-iomp | :heavy_check_mark : | - | - |
27
- | mkl-static-lp64-seq | :heavy_check_mark : | - | :heavy_check_mark : |
28
- | mkl-static-ilp64-iomp | :heavy_check_mark : | - | - |
29
- | mkl-static-ilp64-seq | :heavy_check_mark : | - | :heavy_check_mark : |
30
- | mkl-dynamic-lp64-iomp | :heavy_check_mark : | :heavy_check_mark : | - |
31
- | mkl-dynamic-lp64-seq | :heavy_check_mark : | :heavy_check_mark : | :heavy_check_mark : |
32
- | mkl-dynamic-ilp64-iomp | :heavy_check_mark : | :heavy_check_mark : | - |
33
- | mkl-dynamic-ilp64-seq | :heavy_check_mark : | :heavy_check_mark : | :heavy_check_mark : |
34
-
35
- - ` download ` feature enables downloading MKL archive managed by this project from AWS S3 (default ON)
16
+ ` mkl-*-*-* ` features specify which MKL to be linked as following.
17
+ If any feature is set, default to ` mkl-static-ilp64-iomp ` .
18
+
19
+ ### Link type (` static ` or ` dynamic ` )
20
+ ` dynamic ` means MKL is linked dynamically, i.e. the executable does not contains MKL libraries
21
+ and will seek them from filesystem while execution.
22
+ This is better choice when the MKL libraries are managed by the system package manager e.g. ` apt ` .
23
+
24
+ ` static ` means MKL is linked statically, i.e. the MKL binaries are embedded in the executable file.
25
+ This is better choice when creating portable executable, or system-managed MKL library does not exist.
26
+
27
+ ### Data model (` lp64 ` or ` ilp64 ` )
28
+
29
+ This specify the data model:
30
+
31
+ - ` ilp64 ` means ` int ` (i), ` long ` (l), and pointers (p) are 64-bit.
32
+ - ` lp64 ` means ` long ` (l) and pointers (p) are 64-bit, ` int ` is 32-bit.
33
+
34
+ ### Thread management
35
+
36
+ - ` iomp ` means MKL uses Intel OpenMP runtime
37
+ - ` seq ` means sequential (single thread) execution
38
+
39
+ Using GNU OpenMP runtime (` libgomp ` ) is not supported in this project.
36
40
37
41
## Usage
38
42
@@ -46,25 +50,15 @@ fftw-sys = { version = "0.4", features = ["intel-mkl"] }
46
50
47
51
## How to find system MKL libraries
48
52
49
- This crate seeks system MKL libraries, e.g. installed by [ apt ] , [ yum ] , or official manual installer, as following manner:
53
+ ` intel-mkl-tool ` crate seeks system MKL libraries, e.g. installed by various installer as following manner:
50
54
51
- - Check ` ${OUT_DIR} ` where previous build has downloaded
52
- - Seek using [ pkg-config] crate
53
- - ` ${PKG_CONFIG_PATH} ` has to be set correctly. It may not be set by default in usual install.
54
- - You can confirm it by checking the following command returns error.
55
- ```
56
- pkg-config --libs mkl-dynamic-lp64-iomp
57
- ```
58
- - Seek a directory set by `${MKLROOT}` environment variable
55
+ - Seek using ` pkg-config ` command
56
+ - Seek ` ${MKLROOT} ` directory
59
57
- Seek default installation path
60
58
- ` /opt/intel/mkl ` for Linux
61
- - `C:/Program Files (x86)/IntelSWTools/compilers_and_libraries/windows` for Windows
62
-
63
- If not found any MKL library and `download` feature is ON, this crate will download archive from AWS S3 `rust-intel-mkl` bucket.
59
+ - ` C:/Program Files (x86)/IntelSWTools/ ` and ` C:/Program Files (x86)/Intel/oneAPI ` for Windows
64
60
65
- [apt]: https://software.intel.com/content/www/us/en/develop/articles/installing-intel-free-libs-and-python-apt-repo.html
66
- [yum]: https://software.intel.com/content/www/us/en/develop/articles/installing-intel-free-libs-and-python-yum-repo.html
67
- [pkg-config]: https://github.com/rust-lang/pkg-config-rs
61
+ If ` intel-mkl-tool ` cannot find system MKL, ` intel-mkl-src ` try to download MKL binaries from OCI Registry.
68
62
69
63
## License
70
64
MKL is distributed under the Intel Simplified Software License for Intel(R) Math Kernel Library, See [ License.txt] ( License.txt ) .
0 commit comments