Merge pull request #3702 from martin-frbg/issue3687
Add openblas_getaffinity() extension (Linux-only)
This commit is contained in:
commit
047a279f09
2
cblas.h
2
cblas.h
|
@ -28,6 +28,8 @@ char* openblas_get_corename(void);
|
|||
#ifdef OPENBLAS_OS_LINUX
|
||||
/* Sets thread affinity for OpenBLAS threads. `thread_idx` is in [0, openblas_get_num_threads()-1]. */
|
||||
int openblas_setaffinity(int thread_idx, size_t cpusetsize, cpu_set_t* cpu_set);
|
||||
/* Queries thread affinity for OpenBLAS threads. `thread_idx` is in [0, openblas_get_num_threads()-1]. */
|
||||
int openblas_getaffinity(int thread_idx, size_t cpusetsize, cpu_set_t* cpu_set);
|
||||
#endif
|
||||
|
||||
/* Get the parallelization type which is used by OpenBLAS */
|
||||
|
|
|
@ -352,6 +352,20 @@ int openblas_setaffinity(int thread_idx, size_t cpusetsize, cpu_set_t* cpu_set)
|
|||
|
||||
return pthread_setaffinity_np(thread, cpusetsize, cpu_set);
|
||||
}
|
||||
int openblas_getaffinity(int thread_idx, size_t cpusetsize, cpu_set_t* cpu_set) {
|
||||
const int active_threads = openblas_get_num_threads();
|
||||
|
||||
if (thread_idx < 0 || thread_idx >= active_threads) {
|
||||
errno = EINVAL;
|
||||
return -1;
|
||||
}
|
||||
|
||||
pthread_t thread = (thread_idx == active_threads - 1)
|
||||
? pthread_self()
|
||||
: blas_threads[thread_idx];
|
||||
|
||||
return pthread_getaffinity_np(thread, cpusetsize, cpu_set);
|
||||
}
|
||||
#endif
|
||||
|
||||
static void* blas_thread_server(void *arg){
|
||||
|
|
Loading…
Reference in New Issue