【问题标题】:Nested Parallel While Loops嵌套并行 While 循环
【发布时间】:2013-07-11 00:58:38
【问题描述】:

为了获取数据,我正在尝试并行运行两个 while 循环。 该程序将运行“n”个num_trials,每次试用都有特定的试用期。

在每次试用期间,该程序将在跟踪试用时长的同时收集数据。例如,第一个试验在 1 秒开始收集数据,并在 10 秒停止。此过程将在剩余的试验次数中重复

如何同时运行两个 while 循环?

基本上,我只想要一个方法,一旦指定的试用期完成,就会中断第二个 while 循环?

提前致谢。

count = 0;
num_trials = 5; % Number of Trials = 5 Trials
trial_duration = 10; % Trial Duration = 10 Seconds

global check 
check = 0;

% Number of Trials
for i = 1:num_trials

    fprintf('Starting Trial %i\n', i);

    t_start = tic;

    % Start counting and Collecting Data
    while toc(t_start) < trial_duration

        % Data Collection
        while (check ~= 1)  
            count = count +1;
        end

    end

    fprintf('Ending Trial %i\n', i);
end

【问题讨论】:

  • 你指的是哪两个while循环?我认为您需要重新考虑如何存储数据。
  • @jdero 代码中只有while循环。第一个是计时器,第二个是数据收集。我暂时不关心存储数据。
  • 你看过并行工具箱吗?
  • @Marcin 我已经尝试过 parfor 循环,但这不适用于此应用程序。我正在查看 SPMD,但我不确定它们是否在单独的工作节点上独立计算。我需要第一个 while 循环在几秒钟后停止第二个 while 循环。

标签: multithreading matlab parallel-processing multiprocessing matlab-guide


【解决方案1】:

您是否尝试过使用带有 &amp;&amp; 的单个循环?

while (toc(t_start) < trial_duration) && (check ~= 1)

        % Data Collection
        count = count +1;

end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    相关资源
    最近更新 更多