- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道Matlab
的svd
函数(以及许多其他函数)在默认情况下是多线程的。在台式机上工作时,这很棒,但对于许多用户同时提交作业且必须提前请求资源的群集而言,这是不希望的。如果用户尝试运行具有1个内核的matlab
脚本但调用svd
,则该作业将在我们的计算机上使用时最多使用20个内核。
我想将此类函数限制为预定义的,用户初始化的线程数。我知道您可以通过以matlab
开始它来限制singleCompThread
到一个线程,然后用N个线程调用一个parpool
,但是我无法让svd
使用这些 worker 。
在具有M
核心的主机上,是否有办法将“预多线程”功能限制为N
核心所在的1 < N < M
核心?
更新:
关于这个问题的目的,我会更深入一些。我们拥有一个大型集群,其中包含GPU节点,Hadoop系统,250多个主机,总共5000+内核和40+ TB的RAM,并且如果有可用的开放内核,则没有理由为什么用户应该共享cpu内核。因此,当用户提交作业时,他们告诉我们的排队系统他们要使用多少个内核。如果userA
提交多核作业,并且userB
提交多核作业,但都没有告诉我们的排队系统它们需要多少个核,则有可能将它们放置在同一主机上。可能还有其他(空闲)主机,但是这两台主机共享同一台主机,并且损害了它们的性能
为此,我希望我们的用户知道他们要使用多少个内核,并提前请求该数量的内核。他们可以轻松地说出他们想要一台机器上的所有20个内核,而不必担心matlab
将使用所有可能的线程这一事实,但是他们需要等待一台开放的机器,因为他们想要每个内核。更好的解决方案是教用户如何在预定义数量的内核中并行运行他们的代码,然后告诉我们的排队系统他们需要多少个内核。
另一个问题是,我们的许多用户都使用“引导”解决方案,因此在需要高吞吐量工作的地方解决了他们的问题。每个作业都是单线程的,但是他们希望一次运行数千个。在这种情况下,并行运行代码实际上会伤害他们(请相信我)。
因此问题仍然存在:如何使用预先指定的线程数运行svd
或类似的多线程函数,以确保我们可以为所有用户优化集群上的资源?
最佳答案
关于multithreading - Matlab 'svd'在N个线程上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32566171/
我是一名优秀的程序员,十分优秀!