Skip to content

Commit 659512b

Browse files
committed
Rewrite supported features
1 parent 1b547be commit 659512b

File tree

1 file changed

+29
-35
lines changed

1 file changed

+29
-35
lines changed

README.md

Lines changed: 29 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -13,26 +13,30 @@ Redistribution of Intel MKL as a crate. Tested on Linux, macOS, and Windows (sin
1313

1414
## Supported features
1515

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.
3640

3741
## Usage
3842

@@ -46,25 +50,15 @@ fftw-sys = { version = "0.4", features = ["intel-mkl"] }
4650

4751
## How to find system MKL libraries
4852

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:
5054

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
5957
- Seek default installation path
6058
- `/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
6460

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.
6862

6963
## License
7064
MKL is distributed under the Intel Simplified Software License for Intel(R) Math Kernel Library, See [License.txt](License.txt).

0 commit comments

Comments
 (0)