이번역페이지는최신내용을담고있지않습니다。최신내용을영문으로보려면여기를클릭하십시오。
여러워커에서병렬로为
루프반복실행
parfor
는병렬풀에있는워커들에서loopVar
=initVal
:endVal
;语句
;结束为
루프반복을병렬로실행합니다。
MATLAB®은initVal
과endVal
사이의loopVar
값에대해루프본문명령语句
를실행합니다。loopVar
은1씩증가하는정수값으로구성된벡터를지정합니다。并行计算工具箱™가있으면멀티코어컴퓨터또는클러스터에병렬풀로조직된워커들을사용하여语句
반복을실행할수있습니다。为
루프와마찬가지로语句
에한줄또는여러줄을포함할수있습니다。
parfor
를사용하여처리량을증가시킬수있는방법을알아보려면parfor를언제사용할지결정하기항목을참조하십시오。
parfor
는기존의为
루프와는다음과같이다릅니다。
루프반복이비결정적순서(不确定的顺序)로병렬실행됩니다。즉,parfor
를사용하려면코드를수정해야할수있습니다。자세한내용은对于루프를parfor루프로변환하기항목을참조하십시오。
루프반복이연속으로증가하는정수값이어야합니다。
parfor
루프의본문은독립적이어야합니다。반복은비결정적순서로실행되므로하나의루프반복이이전반복에종속될수없습니다。자세한내용은parfor루프반복이서로독립적이어야함항목을참조하십시오。
parfor
루프를또다른parfor
루프내에사용할수없습니다。자세한내용은중첩parfor루프와중첩为루프및기타parfor요구사항항목을참조하십시오。
parfor (
루프본문에있는loopVar
=initVal
:endVal
,米
);语句
;结束语句
를실행할때사용할병렬풀의최대워커개수를米
을사용하여지정합니다。米
은음이아닌정수여야합니다。
기본적으로MATLAB은사용자의병렬풀에있는워커들을사용합니다。홈탭의환경섹션에서병렬연산>병렬기본설정을선택하여워커개수를변경할수있습니다。parpool
을사용하여병렬풀의디폴트워커개수를재정의할수있습니다。풀에사용가능한워커가없거나米
0인이경우,MATLAB은병렬연산을수행하지는않지만계속비결정적순서로루프본문을실행합니다。이구문을사용하면코드를테스트할때병렬실행과직렬실행간에전환할수있습니다。
이구문을사용하여반복을병렬로실행하려면워커로구성된병렬풀이있어야합니다。기본적으로parfor
를실행하면,디폴트클러스터프로파일로정의된클러스터에워커로구성된병렬풀이자동으로만들어집니다。디폴트클러스터는当地的입니다。병렬기본설정에서클러스터를변경할수있습니다。자세한내용은병렬기본설정지정하기항목을참조하십시오。
다음과같은경우에parfor
를사용합니다。
간단한계산으로구성된루프반복이많이있는경우。parfor
는루프반복을그룹으로나누고각스레드가하나의반복그룹을실행할수있도록합니다。
실행시간이오래걸리는일부루프반복이있는경우。
루프의반복이다른반복결과에따라달라지는경우에는parfor
루프를사용하지마십시오。
귀결(减少)은이규칙에대한한가지예외입니다。귀결변수는매반복마다달라지는값을계속누적하지만반복회차간에는독립적인값을가집니다。자세한내용은减少变量항목을참조하십시오。
parfor
를사용하는경우결과를얻으려면루프가완료되기를기다려야합니다。클라이언MATLAB이트차단되어루프를일찍중단할수없습니다。중간결과를구하거나为
루프를일찍중단하려면대신parfeval
을사용해보십시오。
集群객체를지정하지않는한parfor
루프는기존병렬풀에서실행됩니다。풀이없는경우,병렬기본설정에서자동풀시작이비활성화되어있지않는한parfor
는새병렬풀을시작합니다。병렬풀이없는경우와parfor
가병렬풀을시작할수없는경우에는루프가클라이언트세션에서직렬로실행됩니다。
병렬풀에대한클러스터프로파일의AutoAttachFiles
속성이真正的
로설정된경우,MATLAB이parfor
루프를분석하여루프실행에필요한코드파일을결정합니다。listAutoAttachedFiles
를참조하십시오。MATLAB은코드가워커에사용될수있도록병렬풀에이러한코드파일을자동으로연결합니다。
parfor
루프에서직접스크립트를호출할수는없습니다。대신,스크립트를호출하는함수를호출할수있습니다。
清晰的
는작업공간투명성을위반하므로parfor
루프내에서사용하지마십시오。parfor루프또는spmd문에서투명성확보하기항목을참조하십시오。
parfor
루프를사용하는대신parsim
명령을사용하여仿真金宝app软件®모델을병렬로실행할수있습니다。金宝app仿真软件의병렬사용에대한자세한내용과예제는运行多个模拟(金宝app模型)항목을참조하십시오。