1

全部,并行计算

我想使用Ilnumerics进行并行计算。它们完全脱钩。我需要它为 1)优化器随机重启(尤其是随机优化器,如模拟退火):解决从不同点开始平行相同的优化问题: 例如:argmin_x f(x)从x0_h h = 1开始, 2,..,K 2)对一组未解耦数据运行相同的优化;作为一个例子,考虑下面的无约束优化问题:给出函数f(R^dx R^p) - > R中R^d和p参数p中R^d的函数求解argmin_x f(x ,p_h),h = 1,2,...,K.

我希望符号足够清楚。

是否可以并行运行此循环,每次执行一些涉及ILnumerics对象的lambda表达式并利用多核架构?

由于提前,像往常一样,

GL

回答

1

这取决于:ILNumerics自动并行化的数学表达式等

C = A + B[":;2"]/0.4 * pinv(C) ... 

通过尝试并行运行这样的表达式的多个实例,使用多线程池中的线程,最终会由于太多的线程竞争CPU时隙而产生很多争用。在结果中,你的算法可能会比没有并行化的运行速度慢。

所以,在这种情况下,你可能会禁止内部自动并行ILNumerics透明地为你做:

Settings.MaxNumberThreads = 1; 

表达式像一个以上将在一个线程中后得到评估。但是,现在您有责任在多个线程上分配计算任务。此外,你将不得不相应地锁定你的数组 - 因为ILNumerics通常不是线程安全的!这允许你同时写入你的输出阵列,但也带来必须实现正确的锁定方案burdon ...

+0

Haymo,非常感谢你。晶莹剔透,像往常一样。 GL –