【发布时间】:2012-07-03 02:09:27
【问题描述】:
是否有可能拒绝 Matlab 访问所有内核?目前机器上有 8 个,但我想将 Matlab 的使用量减少到每个用户 3 个,这样一个用户就不会在所有 8 个上开始工作,从而在此过程中减慢其他用户的速度。
我没有分布式计算服务器许可证...只是普通的旧并行 proc 工具箱
【问题讨论】:
标签: parallel-processing matlab
是否有可能拒绝 Matlab 访问所有内核?目前机器上有 8 个,但我想将 Matlab 的使用量减少到每个用户 3 个,这样一个用户就不会在所有 8 个上开始工作,从而在此过程中减慢其他用户的速度。
我没有分布式计算服务器许可证...只是普通的旧并行 proc 工具箱
【问题讨论】:
标签: parallel-processing matlab
无法在 MATLAB 中强制实施严格限制,但您可以设置本地调度程序的“ClusterSize”属性。不幸的是,这必须为每个用户完成。除此之外,您需要使用操作系统功能,但我不确定是否存在这样的事情。
【讨论】:
您可以通过在提交之前设置作业对象的MaximumNumberOfWorkers 属性来自愿限制用于作业的工人数量。
jobMgr = findResource(...appropriate parameters for your job manager here...);
job = createJob(jobMgr);
set(job, 'MaximumNumberOfWorkers', 3);
% create some tasks and add them to the job here
submit(job);
waitForState(job, 'finished');
results = getAllOutputArguments(job);
【讨论】:
当您说每个用户时,您是否暗示多个用户能够一次提交到这台机器?这肯定会使事情复杂化,因为我有一些示例代码可能会揭示一些您不熟悉的命令,这些命令将帮助您实现目标。
这是我用来尽可能多地使用内核的一些代码,最多 8 个。
ncores = feature('numCores'); nworkers = min(8,ncores);
【讨论】: