1#ifndef IRLBA_PARALLEL_HPP
2#define IRLBA_PARALLEL_HPP
8#ifndef IRLBA_CUSTOM_PARALLEL
9#include "subpar/subpar.hpp"
32template<
typename Task_,
class Run_>
34#ifndef IRLBA_CUSTOM_PARALLEL
36 subpar::parallelize_simple<true>(num_tasks, std::move(run_task));
38 IRLBA_CUSTOM_PARALLEL(num_tasks, run_task);
70 EigenThreadScope([[maybe_unused]]
int num_threads) : my_previous(Eigen::nbThreads()) {
71#ifdef IRLBA_CUSTOM_PARALLEL
72#ifdef IRLBA_CUSTOM_PARALLEL_USES_OPENMP
73 Eigen::setNbThreads(num_threads);
75 Eigen::setNbThreads(1);
78#ifdef SUBPAR_USES_OPENMP_SIMPLE
79 Eigen::setNbThreads(num_threads);
81 Eigen::setNbThreads(1);
91 Eigen::setNbThreads(my_previous);
Restrict the number of available threads for Eigen.
Definition parallel.hpp:57
EigenThreadScope(int num_threads)
Definition parallel.hpp:63
Implements IRLBA for approximate SVD.
Definition compute.hpp:22
void parallelize(Task_ num_tasks, Run_ run_task)
Definition parallel.hpp:33