启用For循环并行执行后,可使用并行实例接线端(P)和块大小接线端(C)通过编程来改变For循环的执行速度。这两个接线端的默认配置可以在大多数情况下保证For循环实现最佳性能,极少情况下才需要手动配置。但是,可以使用这两个接线端自定义For循环的实际执行速度。

使用并行实例接线端改变For循环的执行速度

启用并行循环执行后,For循环内部会出现一个并行实例接线端。将一个数值连接至并行实例接线端,表示并行执行的实例的数量。编译时,LabVIEW生成的并行实例的数量是For循环并行迭代对话框生成的并行循环实例数量和并行实例接线端连接的数值中的较小值。处理器会同时执行并行实例以提高For循环的执行速度。

如不连接并行实例接线端,LabVIEW将自动检测计算机逻辑处理器的数量,并将其作为默认的并行实例接线端的值。在多数情况下,当执行的并行实例与计算机的处理器数量相同时,For循环的运行速度最高。所以,大多数情况下不用连接并行实例接线端。

如For循环中有等待的代码,当并行执行的实例超过逻辑处理器的数量时可实现For循环最佳性能。这种情况被称为,过载。例如,一个For循环并行实例等待从外部硬件上采集来的数据,过载可以使处理器在第一个实例的等待时执行第二个并行实例。如For循环并行实例同时还要处理计算量庞大的代码,并行执行的实例数量少于逻辑处理器的数量时,For循环的性能达到最佳。这种情况被称为,低载。例如,For循环和某子VI同时执行,低载可以使处理器资源既分配给For循环又分配给其他操作。

使用块大小接线端指定自定义循环次序

LabVIEW将For循环分成若干块,每块包含若干次循环。在启用For循环的条件下,处理器同时执行循环块,以提高执行速度。默认情况下,LabVIEW先执行大块,然后执行小块。先执行较大的块可以减少任务排序的开销,后执行较小的块也可以减少处理器的空闲时间。只有当执行次序与默认次序不同(例如,先执行小块,后执行大块)且非默认次序能提高For循环的执行效率时,才需要手动配置块大小。

启用For循环并行执行后,按照下列执行使用块大小接线端配置循环执行次序:

  1. 右键单击For循环,选择配置循环并行。LabVIEW将打开For循环并行迭代对话框
  2. 循环分配调度部分,选择通过块大小(C)接线端设定分配方法。块大小接线端在并行实例接线端下方。
  3. 将一个数值或一个数值数组连接至块大小接线端。

连接一个数值至块大小接线端时,数值指定的是每个块中的循环次数。数值数组能更精确地控制块大小。数组中的值指定每块的循环次数,第一个块从索引0开始。

注: 如连接的数组中元素太多,LabVIEW可忽略多余的值。如连接的数组元素太少,LabVIEW可使用数组中最后的元素确定循环剩余块的大小。