You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+4Lines changed: 4 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,10 @@
1
1
ThreadPinning.jl Changelog
2
2
=========================
3
3
4
+
Version 1.1
5
+
-------------
6
+
-![Feature][badge-feature] Added `setaffinities` and `setaffinities_cpuids` as multi-thread analogs of `setaffinity` and `setaffinity_cpuids`, respectively. They allow setting the affinity of all Julia threads at once, similar to how `pinthreads` relates to `pinthread`. A single mask/cpuid vector can be passed to broadcast the same affinity to all threads (e.g. `setaffinities_cpuids(numa(1))`).
7
+
4
8
Version 1.0
5
9
-------------
6
10
-![Feature][badge-feature] OpenBLAS: Almost all pinning and querying functions now have `openblas_*` analogs that provide (almost) all of the same features as for regular Julia threads. Example: `openblas_pinthreads(:cores)` now works. You can also visualize the placement of OpenBLAS threads via `threadinfo(; blas=true)`. These functions are now also part of the official API (and SemVer).
Returns the full path to the `libmkl_rt` library if the latter is loaded. Will try to
@@ -11,13 +13,32 @@ locate the library and, if successfull, will cache the result. Throws an error o
11
13
To force an update of the cache, provide `force_update=true`.
12
14
"""
13
15
functionmkl_fullpath(; force_update =false)
14
-
ifisnothing(MKL_PATH[]) || force_update
16
+
ifisnothing(MKL_PATH[])
17
+
# First-time lookup: just cache the path
15
18
mklpath =_find_mkl()
16
19
MKL_PATH[] = mklpath
20
+
elseif force_update
21
+
# Force a re-discovery of the path
22
+
mklpath =_find_mkl()
23
+
if MKL_PATH[] != mklpath
24
+
# Path changed: close any existing handle and invalidate cache
25
+
if MKL_HANDLE[] !=C_NULL
26
+
Libdl.dlclose(MKL_HANDLE[])
27
+
end
28
+
MKL_HANDLE[] =C_NULL
29
+
MKL_PATH[] = mklpath
30
+
end
17
31
end
18
32
return MKL_PATH[]
19
33
end
20
34
35
+
function_mkl_handle()
36
+
if MKL_HANDLE[] ==C_NULL
37
+
MKL_HANDLE[] = Libdl.dlopen(mkl_fullpath())
38
+
end
39
+
return MKL_HANDLE[]
40
+
end
41
+
21
42
"""
22
43
Check whether Intel MKL is currently loaded via libblastrampoline
23
44
"""
@@ -41,15 +62,15 @@ end
41
62
mkl_get_dynamic()
42
63
Wrapper around the MKL function [`mkl_get_dynamic`](https://www.intel.com/content/www/us/en/develop/documentation/onemkl-developer-reference-fortran/top/support-functions/threading-control/mkl-get-dynamic.html).
Wrapper around the MKL function [`mkl_set_dynamic`](https://www.intel.com/content/www/us/en/develop/documentation/onemkl-developer-reference-c/top/support-functions/threading-control/mkl-set-dynamic.html).
0 commit comments