1
1
# intel-mkl-src
2
2
3
- | crate | crate.io | description |
4
- | :-------------| :---------------------------------------------------------------------------------------------------| :----------------------------------------------------------------------|
5
- | intel-mkl-src | [ ![ Crate] ( http://meritbadge.herokuapp.com/intel-mkl-src )] ( https://crates.io/crates/intel-mkl-src ) | Source crate for Intel-MKL |
6
- | intel-mkl-sys | [ ![ Crate] ( http://meritbadge.herokuapp.com/intel-mkl-sys )] ( https://crates.io/crates/intel-mkl-sys ) | FFI for Intel-MKL [ vector math] [ VM ] , and [ statistical functions] [ VSL ] |
7
- | intel-mkl-tool| [ ![ Crate] ( http://meritbadge.herokuapp.com/intel-mkl-tool )] ( https://crates.io/crates/intel-mkl-tool ) | CLI utility for redistributing Intel-MKL |
8
-
9
- Redistribution of Intel MKL as a crate. Tested on Linux, macOS, and Windows (since 0.4.0)
3
+ | crate | crate.io | docs.rs | description |
4
+ | :-------------| :-------------------------------------------------------------------------------------------------------| :--------------------------------------------------------------------------------------| :---------------------------------------------------------------|
5
+ | intel-mkl-src | [ ![ crate] ( https://img.shields.io/crates/v/intel-mkl-src.svg )] ( https://crates.io/crates/intel-mkl-src ) | [ ![ docs.rs] ( https://docs.rs/intel-mkl-src/badge.svg )] ( https://docs.rs/intel-mkl-src ) | Source crate for Intel-MKL |
6
+ | intel-mkl-sys | [ ![ Crate] ( https://img.shields.io/crates/v/intel-mkl-sys.svg )] ( https://crates.io/crates/intel-mkl-sys ) | [ ![ docs.rs] ( https://docs.rs/intel-mkl-sys/badge.svg )] ( https://docs.rs/intel-mkl-sys ) | FFI for Intel-MKL [ vector math] [ VM ] , and [ statistical functions] [ VSL ] |
7
+ | intel-mkl-tool| [ ![ Crate] ( https://img.shields.io/crates/v/intel-mkl-tool.svg )] ( https://crates.io/crates/intel-mkl-tool ) | [ ![ docs.rs] ( https://docs.rs/intel-mkl-tool/badge.svg )] ( https://docs.rs/intel-mkl-tool ) | Seek Intel-MKL libraries from filesystem |
10
8
11
9
[ VM ] : https://software.intel.com/en-us/mkl-developer-reference-c-vector-mathematical-functions
12
10
[ VSL ] : https://software.intel.com/en-us/mkl-developer-reference-c-statistical-functions
13
11
14
12
## Supported features
15
13
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)
14
+ ` mkl-*-*-* ` features specify which MKL to be linked as following.
15
+ If any feature is set, default to ` mkl-static-ilp64-iomp ` .
16
+
17
+ ### Link type (` static ` or ` dynamic ` )
18
+ ` dynamic ` means MKL is linked dynamically, i.e. the executable does not contains MKL libraries
19
+ and will seek them from filesystem while execution.
20
+ This is better choice when the MKL libraries are managed by the system package manager e.g. ` apt ` .
21
+
22
+ ` static ` means MKL is linked statically, i.e. the MKL binaries are embedded in the executable file.
23
+ This is better choice when creating portable executable, or system-managed MKL library does not exist.
24
+
25
+ ### Data model (` lp64 ` or ` ilp64 ` )
26
+
27
+ This specify the data model:
28
+
29
+ - ` ilp64 ` means ` int ` (i), ` long ` (l), and pointers (p) are 64-bit.
30
+ - ` lp64 ` means ` long ` (l) and pointers (p) are 64-bit, ` int ` is 32-bit.
31
+
32
+ ### Thread management (` iomp ` or ` seq ` )
33
+
34
+ - ` iomp ` means MKL uses Intel OpenMP runtime
35
+ - ` seq ` means sequential (single thread) execution
36
+
37
+ Using GNU OpenMP runtime (` libgomp ` ) is not supported in this project.
36
38
37
39
## Usage
38
40
@@ -46,25 +48,15 @@ fftw-sys = { version = "0.4", features = ["intel-mkl"] }
46
48
47
49
## How to find system MKL libraries
48
50
49
- This crate seeks system MKL libraries, e.g. installed by [ apt ] , [ yum ] , or official manual installer, as following manner:
51
+ ` intel-mkl-tool ` crate seeks system MKL libraries, e.g. installed by various installer as following manner:
50
52
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
53
+ - Seek using ` pkg-config ` command
54
+ - Seek ` ${MKLROOT} ` directory
59
55
- Seek default installation path
60
56
- ` /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.
57
+ - ` C:/Program Files (x86)/IntelSWTools/ ` and ` C:/Program Files (x86)/Intel/oneAPI ` for Windows
64
58
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
59
+ If ` intel-mkl-tool ` cannot find system MKL, ` intel-mkl-src ` try to download MKL binaries from OCI Registry.
68
60
69
61
## License
70
62
MKL is distributed under the Intel Simplified Software License for Intel(R) Math Kernel Library, See [ License.txt] ( License.txt ) .
0 commit comments