Участник:VolkovNikita94: различия между версиями
мНет описания правки |
Исправление описания примеров визуализации. Добавлены XML файлы и исходники. Часть XML-файлов не откорректирована, части исходников не хват. |
||
| Строка 1: | Строка 1: | ||
<tabs> | <tabs> | ||
| Строка 10: | Строка 9: | ||
}} | }} | ||
<br> | <br> | ||
Чисто последовательная структура в 2D-представлении (последовательное суммирование) | |||
Чисто последовательная структура в 2D-представлении | <source lang = "c++"> | ||
</ | int seqSum(const std::vector<int>& _src) | ||
{ | |||
int resSum = 0; | |||
for (int srcId = 0; srcId < _src.size(); ++srcId) | |||
{ | |||
resSum += _src[srcId]; | |||
} | |||
return resSum; | |||
} | |||
</source> | |||
<source lang = "xml"> | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<algograph version="0.0.1"> | |||
<algorithm num_ext_params="1" num_groups="2"> | |||
<ext_param name="n"/> | |||
<group id="0" num_or_parts="1" num_oper="1"> | |||
<or_part id="0" num_and_parts="1"> | |||
<and_part id="0"><![CDATA[]]></and_part> | |||
<statement id="0" num_inputs="1"> | |||
<input id="0" num_solutions="0"/> | |||
</statement> | |||
</or_part> | |||
</group> | |||
<loop> | |||
<loop> | |||
<group id="1" num_or_parts="1" num_oper="1"> | |||
<or_part id="0" num_and_parts="4"> | |||
<and_part id="0"><![CDATA[-i1<=-1]]></and_part> | |||
<and_part id="1"><![CDATA[i1<=n]]></and_part> | |||
<and_part id="2"><![CDATA[-i2<=-1]]></and_part> | |||
<and_part id="3"><![CDATA[i2<=n]]></and_part> | |||
<statement id="0" num_inputs="3"> | |||
<input id="0" num_solutions="0"/> | |||
<input id="1" num_solutions="3"> | |||
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"> | |||
<altarea num_conditions="5"> | |||
<condition><![CDATA[i2-n<=0]]></condition> | |||
<condition><![CDATA[-n+2<=0]]></condition> | |||
<condition><![CDATA[i1-n<=0]]></condition> | |||
<condition><![CDATA[-i1+1<=0]]></condition> | |||
<condition><![CDATA[-i2+2<=0]]></condition> | |||
</altarea> | |||
<dependency> | |||
<coordinate><![CDATA[i1]]></coordinate> | |||
<coordinate><![CDATA[i2-1]]></coordinate> | |||
</dependency> | |||
</solution> | |||
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"> | |||
<altarea num_conditions="5"> | |||
<condition><![CDATA[-i2+1<=0]]></condition> | |||
<condition><![CDATA[-n+2<=0]]></condition> | |||
<condition><![CDATA[i1-n<=0]]></condition> | |||
<condition><![CDATA[-i1+2<=0]]></condition> | |||
<condition><![CDATA[i2-1<=0]]></condition> | |||
</altarea> | |||
<dependency> | |||
<coordinate><![CDATA[i1-1]]></coordinate> | |||
<coordinate><![CDATA[n]]></coordinate> | |||
</dependency> | |||
</solution> | |||
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"> | |||
<altarea num_conditions="5"> | |||
<condition><![CDATA[-n+1<=0]]></condition> | |||
<condition><![CDATA[-i2+1<=0]]></condition> | |||
<condition><![CDATA[-i1+1<=0]]></condition> | |||
<condition><![CDATA[i2-1<=0]]></condition> | |||
<condition><![CDATA[i1-1<=0]]></condition> | |||
</altarea> | |||
</solution> | |||
</input> | |||
<input id="2" num_solutions="0"/> | |||
</statement> | |||
</or_part> | |||
</group> | |||
</loop> | |||
</loop> | |||
</algorithm> | |||
</algograph> | |||
</source> | |||
</tab> | </tab> | ||
| Строка 23: | Строка 100: | ||
}} | }} | ||
<br> | <br> | ||
Набор одномерных последовательных структур, независимых между собой - 2D вариант | |||
Набор одномерных последовательных структур, независимых между собой | <source lang = "c++"> | ||
</ | void seqParSum(const std::vector<std::vector<int> >& _src, std::vector<int>& _res) | ||
{ | |||
if (_src.size() != _res.size()) | |||
return; | |||
for (int srcGrpId = 0; srcGrpId < _src.size(); ++srcGrpId) | |||
{ | |||
for (int srcElId = 0; srcElId < _src[srcGrpId].size(); ++srcElId ) | |||
{ | |||
_res[srcGrpId] += _src[srcGrpId][srcElId]; | |||
} | |||
} | |||
return; | |||
} | |||
</source> | |||
<source lang = "xml"> | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<algograph version="0.0.1"> | |||
<algorithm num_ext_params="1" num_groups="2"> | |||
<ext_param name="n"/> | |||
<group id="0" num_or_parts="1" num_oper="1"> | |||
<or_part id="0" num_and_parts="1"> | |||
<and_part id="0"><![CDATA[]]></and_part> | |||
<statement id="0" num_inputs="1"> | |||
<input id="0" num_solutions="0"/> | |||
</statement> | |||
</or_part> | |||
</group> | |||
<loop> | |||
<loop> | |||
<group id="1" num_or_parts="1" num_oper="1"> | |||
<or_part id="0" num_and_parts="4"> | |||
<and_part id="0"><![CDATA[-i1<=-1]]></and_part> | |||
<and_part id="1"><![CDATA[i1<=n]]></and_part> | |||
<and_part id="2"><![CDATA[-i2<=-1]]></and_part> | |||
<and_part id="3"><![CDATA[i2<=n]]></and_part> | |||
<statement id="0" num_inputs="3"> | |||
<input id="0" num_solutions="0"/> | |||
<input id="1" num_solutions="3"> | |||
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"> | |||
<altarea num_conditions="5"> | |||
<condition><![CDATA[i2-n<=0]]></condition> | |||
<condition><![CDATA[-n+2<=0]]></condition> | |||
<condition><![CDATA[i1-n<=0]]></condition> | |||
<condition><![CDATA[-i1+1<=0]]></condition> | |||
<condition><![CDATA[-i2+2<=0]]></condition> | |||
</altarea> | |||
<dependency> | |||
<coordinate><![CDATA[i1]]></coordinate> | |||
<coordinate><![CDATA[i2-1]]></coordinate> | |||
</dependency> | |||
</solution> | |||
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="0"> | |||
<altarea num_conditions="5"> | |||
<condition><![CDATA[-i2+1<=0]]></condition> | |||
<condition><![CDATA[-n+2<=0]]></condition> | |||
<condition><![CDATA[i1-n<=0]]></condition> | |||
<condition><![CDATA[-i1+2<=0]]></condition> | |||
<condition><![CDATA[i2-1<=0]]></condition> | |||
</altarea> | |||
</solution> | |||
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"> | |||
<altarea num_conditions="5"> | |||
<condition><![CDATA[-n+1<=0]]></condition> | |||
<condition><![CDATA[-i2+1<=0]]></condition> | |||
<condition><![CDATA[-i1+1<=0]]></condition> | |||
<condition><![CDATA[i2-1<=0]]></condition> | |||
<condition><![CDATA[i1-1<=0]]></condition> | |||
</altarea> | |||
</solution> | |||
</input> | |||
<input id="2" num_solutions="0"/> | |||
</statement> | |||
</or_part> | |||
</group> | |||
</loop> | |||
</loop> | |||
</algorithm> | |||
</algograph> | |||
</source> | |||
</tab> | </tab> | ||
| Строка 36: | Строка 192: | ||
}} | }} | ||
<br> | <br> | ||
Двумерная структура со скошенным параллелизмом | Двумерная структура со скошенным параллелизмом | ||
</ | <source lang = "xml"> | ||
<?xml version="1.0" encoding="UTF-8"?> | |||
<algograph version="0.0.1"> | |||
<algorithm num_ext_params="1" num_groups="2"> | |||
<ext_param name="n"/> | |||
<group id="0" num_or_parts="1" num_oper="1"> | |||
<or_part id="0" num_and_parts="1"> | |||
<and_part id="0"><![CDATA[]]></and_part> | |||
<statement id="0" num_inputs="1"> | |||
<input id="0" num_solutions="0"/> | |||
</statement> | |||
</or_part> | |||
</group> | |||
<loop> | |||
<loop> | |||
<group id="1" num_or_parts="1" num_oper="1"> | |||
<or_part id="0" num_and_parts="4"> | |||
<and_part id="0"><![CDATA[-i1<=-1]]></and_part> | |||
<and_part id="1"><![CDATA[i1<=n]]></and_part> | |||
<and_part id="2"><![CDATA[-i2<=-1]]></and_part> | |||
<and_part id="3"><![CDATA[i2<=n]]></and_part> | |||
<statement id="0" num_inputs="3"> | |||
<input id="0" num_solutions="0"/> | |||
<input id="1" num_solutions="3"> | |||
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"> | |||
<altarea num_conditions="5"> | |||
<condition><![CDATA[i2-n<=0]]></condition> | |||
<condition><![CDATA[-n+2<=0]]></condition> | |||
<condition><![CDATA[i1-n<=0]]></condition> | |||
<condition><![CDATA[-i1+1<=0]]></condition> | |||
<condition><![CDATA[-i2+2<=0]]></condition> | |||
</altarea> | |||
<dependency> | |||
<coordinate><![CDATA[i1]]></coordinate> | |||
<coordinate><![CDATA[i2-1]]></coordinate> | |||
</dependency> | |||
</solution> | |||
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"> | |||
<altarea num_conditions="5"> | |||
<condition><![CDATA[i2-n<=0]]></condition> | |||
<condition><![CDATA[-n+2<=0]]></condition> | |||
<condition><![CDATA[i1-n<=0]]></condition> | |||
<condition><![CDATA[-i1+2<=0]]></condition> | |||
<condition><![CDATA[-i2+1<=0]]></condition> | |||
</altarea> | |||
<dependency> | |||
<coordinate><![CDATA[i1-1]]></coordinate> | |||
<coordinate><![CDATA[i2]]></coordinate> | |||
</dependency> | |||
</solution> | |||
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"> | |||
<altarea num_conditions="5"> | |||
<condition><![CDATA[-n+1<=0]]></condition> | |||
<condition><![CDATA[-i2+1<=0]]></condition> | |||
<condition><![CDATA[-i1+1<=0]]></condition> | |||
<condition><![CDATA[i2-1<=0]]></condition> | |||
<condition><![CDATA[i1-1<=0]]></condition> | |||
</altarea> | |||
</solution> | |||
</input> | |||
<input id="2" num_solutions="0"/> | |||
</statement> | |||
</or_part> | |||
</group> | |||
</loop> | |||
</loop> | |||
</algorithm> | |||
</algograph> | |||
</source> | |||
</tab> | </tab> | ||
| Строка 49: | Строка 272: | ||
}} | }} | ||
<br> | <br> | ||
Двумерная структура со скошенным параллелизмом и скошенной передачей данных | Двумерная структура со скошенным параллелизмом и скошенной передачей данных | ||
</ | <source lang = "xml"> | ||
<?xml version="1.0" encoding="UTF-8"?> | |||
<algograph version="0.0.1"> | |||
<algorithm num_ext_params="1" num_groups="2"> | |||
<ext_param name="n"/> | |||
<group id="0" num_or_parts="1" num_oper="1"> | |||
<or_part id="0" num_and_parts="1"> | |||
<and_part id="0"><![CDATA[]]></and_part> | |||
<statement id="0" num_inputs="1"> | |||
<input id="0" num_solutions="0"/> | |||
</statement> | |||
</or_part> | |||
</group> | |||
<loop> | |||
<loop> | |||
<group id="1" num_or_parts="1" num_oper="1"> | |||
<or_part id="0" num_and_parts="4"> | |||
<and_part id="0"><![CDATA[-i1<=-1]]></and_part> | |||
<and_part id="1"><![CDATA[i1<=n]]></and_part> | |||
<and_part id="2"><![CDATA[-i2<=-1]]></and_part> | |||
<and_part id="3"><![CDATA[i2<=n]]></and_part> | |||
<statement id="0" num_inputs="3"> | |||
<input id="0" num_solutions="0"/> | |||
<input id="1" num_solutions="3"> | |||
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"> | |||
<altarea num_conditions="5"> | |||
<condition><![CDATA[i2-n<=0]]></condition> | |||
<condition><![CDATA[-n+2<=0]]></condition> | |||
<condition><![CDATA[i1-n<=0]]></condition> | |||
<condition><![CDATA[-i1+1<=0]]></condition> | |||
<condition><![CDATA[-i2+2<=0]]></condition> | |||
</altarea> | |||
<dependency> | |||
<coordinate><![CDATA[i1]]></coordinate> | |||
<coordinate><![CDATA[i2-1]]></coordinate> | |||
</dependency> | |||
</solution> | |||
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"> | |||
<altarea num_conditions="5"> | |||
<condition><![CDATA[i2-n<=0]]></condition> | |||
<condition><![CDATA[-n+2<=0]]></condition> | |||
<condition><![CDATA[i1-n<=0]]></condition> | |||
<condition><![CDATA[-i1+3<=0]]></condition> | |||
<condition><![CDATA[-i2+2<=0]]></condition> | |||
</altarea> | |||
<dependency> | |||
<coordinate><![CDATA[i1-2]]></coordinate> | |||
<coordinate><![CDATA[i2-1]]></coordinate> | |||
</dependency> | |||
</solution> | |||
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"> | |||
<altarea num_conditions="5"> | |||
<condition><![CDATA[-n+1<=0]]></condition> | |||
<condition><![CDATA[-i2+1<=0]]></condition> | |||
<condition><![CDATA[-i1+1<=0]]></condition> | |||
<condition><![CDATA[i2-1<=0]]></condition> | |||
<condition><![CDATA[i1-n<=0]]></condition> | |||
</altarea> | |||
</solution> | |||
</input> | |||
<input id="2" num_solutions="0"/> | |||
</statement> | |||
</or_part> | |||
</group> | |||
</loop> | |||
</loop> | |||
</algorithm> | |||
</algograph> | |||
</source> | |||
</tab> | </tab> | ||
| Строка 62: | Строка 352: | ||
}} | }} | ||
<br> | <br> | ||
Двумерная структура с квадратным параллелизмом и массовыми рассылками по каждому измерению | Двумерная структура с квадратным параллелизмом и массовыми рассылками по каждому измерению | ||
</ | <source lang = "xml"> | ||
<?xml version="1.0" encoding="UTF-8"?> | |||
<algograph version="0.0.1"> | |||
<algorithm num_ext_params="1" num_groups="2"> | |||
<ext_param name="n"/> | |||
<group id="0" num_or_parts="1" num_oper="1"> | |||
<or_part id="0" num_and_parts="1"> | |||
<and_part id="0"><![CDATA[]]></and_part> | |||
<statement id="0" num_inputs="1"> | |||
<input id="0" num_solutions="0"/> | |||
</statement> | |||
</or_part> | |||
</group> | |||
<loop> | |||
<loop> | |||
<group id="1" num_or_parts="1" num_oper="1"> | |||
<or_part id="0" num_and_parts="4"> | |||
<and_part id="0"><![CDATA[-i1<=-1]]></and_part> | |||
<and_part id="1"><![CDATA[i1<=n]]></and_part> | |||
<and_part id="2"><![CDATA[-i2<=-1]]></and_part> | |||
<and_part id="3"><![CDATA[i2<=n]]></and_part> | |||
<statement id="0" num_inputs="3"> | |||
<input id="0" num_solutions="0"/> | |||
<input id="1" num_solutions="5"> | |||
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"> | |||
<altarea num_conditions="5"> | |||
<condition><![CDATA[i2-n<=0]]></condition> | |||
<condition><![CDATA[-n+2<=0]]></condition> | |||
<condition><![CDATA[i1-n<=0]]></condition> | |||
<condition><![CDATA[-i1+1<=0]]></condition> | |||
<condition><![CDATA[-i2+2<=0]]></condition> | |||
</altarea> | |||
<dependency> | |||
<coordinate><![CDATA[i1]]></coordinate> | |||
<coordinate><![CDATA[i2-1]]></coordinate> | |||
</dependency> | |||
</solution> | |||
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"> | |||
<altarea num_conditions="5"> | |||
<condition><![CDATA[i2-n<=0]]></condition> | |||
<condition><![CDATA[-n+2<=0]]></condition> | |||
<condition><![CDATA[i1-n<=0]]></condition> | |||
<condition><![CDATA[-i2+1<=0]]></condition> | |||
<condition><![CDATA[-i1+2<=0]]></condition> | |||
</altarea> | |||
<dependency> | |||
<coordinate><![CDATA[i1-1]]></coordinate> | |||
<coordinate><![CDATA[i2]]></coordinate> | |||
</dependency> | |||
</solution> | |||
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"> | |||
<altarea num_conditions="5"> | |||
<condition><![CDATA[i2-n<=0]]></condition> | |||
<condition><![CDATA[-n+2<=0]]></condition> | |||
<condition><![CDATA[i1-n<=0]]></condition> | |||
<condition><![CDATA[-i1+1<=0]]></condition> | |||
<condition><![CDATA[-i2+3<=0]]></condition> | |||
</altarea> | |||
<dependency> | |||
<coordinate><![CDATA[i1]]></coordinate> | |||
<coordinate><![CDATA[1]]></coordinate> | |||
</dependency> | |||
</solution> | |||
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2"> | |||
<altarea num_conditions="5"> | |||
<condition><![CDATA[i2-n<=0]]></condition> | |||
<condition><![CDATA[-n+2<=0]]></condition> | |||
<condition><![CDATA[i1-n<=0]]></condition> | |||
<condition><![CDATA[-i2+1<=0]]></condition> | |||
<condition><![CDATA[-i1+3<=0]]></condition> | |||
</altarea> | |||
<dependency> | |||
<coordinate><![CDATA[1]]></coordinate> | |||
<coordinate><![CDATA[i2]]></coordinate> | |||
</dependency> | |||
</solution> | |||
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"> | |||
<altarea num_conditions="5"> | |||
<condition><![CDATA[-n+1<=0]]></condition> | |||
<condition><![CDATA[-i2+1<=0]]></condition> | |||
<condition><![CDATA[-i1+1<=0]]></condition> | |||
<condition><![CDATA[i2-1<=0]]></condition> | |||
<condition><![CDATA[i1-n<=0]]></condition> | |||
</altarea> | |||
</solution> | |||
</input> | |||
<input id="2" num_solutions="0"/> | |||
</statement> | |||
</or_part> | |||
</group> | |||
</loop> | |||
</loop> | |||
</algorithm> | |||
</algograph> | |||
</source> | |||
</tab> | </tab> | ||
| Строка 75: | Строка 458: | ||
}} | }} | ||
<br> | <br> | ||
< | Набор независимых последовательно-параллельных 2D-структур с массовой рассылкой данных в каждой | ||
<source lang = "xml"> | |||
</ | <?xml version="1.0" encoding="UTF-8"?> | ||
<algograph version="0.0.1"> | |||
<algorithm num_ext_params="2" num_groups="2"> | |||
<ext_param name="n"/> | |||
<ext_param name="m"/> | |||
<group id="0" num_or_parts="1" num_oper="1"> | |||
<or_part id="0" num_and_parts="1"> | |||
<and_part id="0"><![CDATA[]]></and_part> | |||
<statement id="0" num_inputs="1"> | |||
<input id="0" num_solutions="0"/> | |||
</statement> | |||
</or_part> | |||
</group> | |||
<loop> | |||
<loop> | |||
<loop> | |||
<group id="1" num_or_parts="1" num_oper="1"> | |||
<or_part id="0" num_and_parts="6"> | |||
<and_part id="0"><![CDATA[-i1<=-1]]></and_part> | |||
<and_part id="1"><![CDATA[i1<=n]]></and_part> | |||
<and_part id="2"><![CDATA[-i2<=-1]]></and_part> | |||
<and_part id="3"><![CDATA[i2<=m]]></and_part> | |||
<and_part id="4"><![CDATA[i3>=0]]></and_part> | |||
<and_part id="5"><![CDATA[i3<=n-1]]></and_part> | |||
<statement id="0" num_inputs="3"> | |||
<input id="0" num_solutions="0"/> | |||
<input id="1" num_solutions="3"> | |||
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"> | |||
<altarea num_conditions="7"> | |||
<condition><![CDATA[-m+2<=0]]></condition> | |||
<condition><![CDATA[i1-n<=0]]></condition> | |||
<condition><![CDATA[i3-n+1<=0]]></condition> | |||
<condition><![CDATA[-i2+2<=0]]></condition> | |||
<condition><![CDATA[i2<=m]]></condition> | |||
<condition><![CDATA[-i1+1<=0]]></condition> | |||
<condition><![CDATA[-i3<=0]]></condition> | |||
</altarea> | |||
<dependency> | |||
<coordinate><![CDATA[i1]]></coordinate> | |||
<coordinate><![CDATA[i2-1]]></coordinate> | |||
<coordinate><![CDATA[i3]]></coordinate> | |||
</dependency> | |||
</solution> | |||
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"> | |||
<altarea num_conditions="7"> | |||
<condition><![CDATA[-m+2<=0]]></condition> | |||
<condition><![CDATA[i1-n<=0]]></condition> | |||
<condition><![CDATA[i3-n+1<=0]]></condition> | |||
<condition><![CDATA[-i2+2<=0]]></condition> | |||
<condition><![CDATA[i2<=m]]></condition> | |||
<condition><![CDATA[-i1+1<=0]]></condition> | |||
<condition><![CDATA[-i3<=0]]></condition> | |||
</altarea> | |||
<dependency> | |||
<coordinate><![CDATA[1]]></coordinate> | |||
<coordinate><![CDATA[i2-1]]></coordinate> | |||
<coordinate><![CDATA[i3]]></coordinate> | |||
</dependency> | |||
</solution> | |||
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"> | |||
<altarea num_conditions="6"> | |||
<condition><![CDATA[i2-1<=0]]></condition> | |||
<condition><![CDATA[i2-1>=0]]></condition> | |||
<condition><![CDATA[-i1+1<=0]]></condition> | |||
<condition><![CDATA[-i3<=0]]></condition> | |||
<condition><![CDATA[i1-n<=0]]></condition> | |||
<condition><![CDATA[i3-n+1<=0]]></condition> | |||
</altarea> | |||
</solution> | |||
</input> | |||
<input id="2" num_solutions="0"/> | |||
</statement> | |||
</or_part> | |||
</group> | |||
</loop> | |||
</loop> | |||
</loop> | |||
</algorithm> | |||
</algograph> | |||
</source> | |||
</tab> | </tab> | ||
| Строка 88: | Строка 550: | ||
}} | }} | ||
<br> | <br> | ||
< | Набор одномерных последовательных структур, независимых между собой - 3D вариант | ||
<source lang = "xml"> | |||
</ | <?xml version="1.0" encoding="UTF-8"?> | ||
<algograph version="0.0.1"> | |||
<algorithm num_ext_params="2" num_groups="2"> | |||
<ext_param name="n"/> | |||
<ext_param name="m"/> | |||
<group id="0" num_or_parts="1" num_oper="1"> | |||
<or_part id="0" num_and_parts="1"> | |||
<and_part id="0"><![CDATA[]]></and_part> | |||
<statement id="0" num_inputs="1"> | |||
<input id="0" num_solutions="0"/> | |||
</statement> | |||
</or_part> | |||
</group> | |||
<loop> | |||
<loop> | |||
<loop> | |||
<group id="1" num_or_parts="1" num_oper="1"> | |||
<or_part id="0" num_and_parts="6"> | |||
<and_part id="0"><![CDATA[-i1<=-1]]></and_part> | |||
<and_part id="1"><![CDATA[i1<=n]]></and_part> | |||
<and_part id="2"><![CDATA[-i2<=-1]]></and_part> | |||
<and_part id="3"><![CDATA[i2<=m]]></and_part> | |||
<and_part id="4"><![CDATA[i3>=0]]></and_part> | |||
<and_part id="5"><![CDATA[i3<=n-1]]></and_part> | |||
<statement id="0" num_inputs="3"> | |||
<input id="0" num_solutions="0"/> | |||
<input id="1" num_solutions="2"> | |||
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3"> | |||
<altarea num_conditions="7"> | |||
<condition><![CDATA[-m+2<=0]]></condition> | |||
<condition><![CDATA[i1-n<=0]]></condition> | |||
<condition><![CDATA[i3-n+1<=0]]></condition> | |||
<condition><![CDATA[-i2+1<=0]]></condition> | |||
<condition><![CDATA[i2+1<=m]]></condition> | |||
<condition><![CDATA[-i1+1<=0]]></condition> | |||
<condition><![CDATA[-i3<=0]]></condition> | |||
</altarea> | |||
<dependency> | |||
<coordinate><![CDATA[i1]]></coordinate> | |||
<coordinate><![CDATA[i2+1]]></coordinate> | |||
<coordinate><![CDATA[i3]]></coordinate> | |||
</dependency> | |||
</solution> | |||
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0"> | |||
<altarea num_conditions="6"> | |||
<condition><![CDATA[i2-m<=0]]></condition> | |||
<condition><![CDATA[i2-m>=0]]></condition> | |||
<condition><![CDATA[-i1+1<=0]]></condition> | |||
<condition><![CDATA[-i3<=0]]></condition> | |||
<condition><![CDATA[i1-n<=0]]></condition> | |||
<condition><![CDATA[i3-n+1<=0]]></condition> | |||
</altarea> | |||
</solution> | |||
</input> | |||
<input id="2" num_solutions="0"/> | |||
</statement> | |||
</or_part> | |||
</group> | |||
</loop> | |||
</loop> | |||
</loop> | |||
</algorithm> | |||
</algograph> | |||
</source> | |||
</tab> | </tab> | ||
| Строка 101: | Строка 626: | ||
}} | }} | ||
<br> | <br> | ||
Пример массовой рассылки данных в 2D-структуре | |||
</tab> | </tab> | ||
| Строка 114: | Строка 637: | ||
}} | }} | ||
<br> | <br> | ||
Искуственный пример, демонстрирующий элементы визуализации | |||
</tab> | </tab> | ||
| Строка 127: | Строка 648: | ||
}} | }} | ||
<br> | <br> | ||
Последовательный набор 3D-структур, содержащих скошенный параллелизм | |||
</tab> | </tab> | ||
| Строка 140: | Строка 659: | ||
}} | }} | ||
<br> | <br> | ||
Пример массовой рассылки данных в 3D-структуре | |||
</tab> | </tab> | ||
| Строка 153: | Строка 670: | ||
}} | }} | ||
<br> | <br> | ||
Пример 3D-структуры с различными видами скошенного параллелизма | |||
</tab> | </tab> | ||
| Строка 166: | Строка 681: | ||
}} | }} | ||
<br> | <br> | ||
Последовательно-параллельное перемножение матриц | |||
</tab> | </tab> | ||
</tabs> | </tabs> | ||
Версия от 19:25, 17 апреля 2019
<tabs>
<tab name="Пример 1">
Чисто последовательная структура в 2D-представлении (последовательное суммирование)
int seqSum(const std::vector<int>& _src)
{
int resSum = 0;
for (int srcId = 0; srcId < _src.size(); ++srcId)
{
resSum += _src[srcId];
}
return resSum;
}
<?xml version="1.0" encoding="UTF-8"?>
<algograph version="0.0.1">
<algorithm num_ext_params="1" num_groups="2">
<ext_param name="n"/>
<group id="0" num_or_parts="1" num_oper="1">
<or_part id="0" num_and_parts="1">
<and_part id="0"><![CDATA[]]></and_part>
<statement id="0" num_inputs="1">
<input id="0" num_solutions="0"/>
</statement>
</or_part>
</group>
<loop>
<loop>
<group id="1" num_or_parts="1" num_oper="1">
<or_part id="0" num_and_parts="4">
<and_part id="0"><![CDATA[-i1<=-1]]></and_part>
<and_part id="1"><![CDATA[i1<=n]]></and_part>
<and_part id="2"><![CDATA[-i2<=-1]]></and_part>
<and_part id="3"><![CDATA[i2<=n]]></and_part>
<statement id="0" num_inputs="3">
<input id="0" num_solutions="0"/>
<input id="1" num_solutions="3">
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2">
<altarea num_conditions="5">
<condition><![CDATA[i2-n<=0]]></condition>
<condition><![CDATA[-n+2<=0]]></condition>
<condition><![CDATA[i1-n<=0]]></condition>
<condition><![CDATA[-i1+1<=0]]></condition>
<condition><![CDATA[-i2+2<=0]]></condition>
</altarea>
<dependency>
<coordinate><![CDATA[i1]]></coordinate>
<coordinate><![CDATA[i2-1]]></coordinate>
</dependency>
</solution>
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2">
<altarea num_conditions="5">
<condition><![CDATA[-i2+1<=0]]></condition>
<condition><![CDATA[-n+2<=0]]></condition>
<condition><![CDATA[i1-n<=0]]></condition>
<condition><![CDATA[-i1+2<=0]]></condition>
<condition><![CDATA[i2-1<=0]]></condition>
</altarea>
<dependency>
<coordinate><![CDATA[i1-1]]></coordinate>
<coordinate><![CDATA[n]]></coordinate>
</dependency>
</solution>
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0">
<altarea num_conditions="5">
<condition><![CDATA[-n+1<=0]]></condition>
<condition><![CDATA[-i2+1<=0]]></condition>
<condition><![CDATA[-i1+1<=0]]></condition>
<condition><![CDATA[i2-1<=0]]></condition>
<condition><![CDATA[i1-1<=0]]></condition>
</altarea>
</solution>
</input>
<input id="2" num_solutions="0"/>
</statement>
</or_part>
</group>
</loop>
</loop>
</algorithm>
</algograph>
</tab>
<tab name="Пример 2">
Набор одномерных последовательных структур, независимых между собой - 2D вариант
void seqParSum(const std::vector<std::vector<int> >& _src, std::vector<int>& _res)
{
if (_src.size() != _res.size())
return;
for (int srcGrpId = 0; srcGrpId < _src.size(); ++srcGrpId)
{
for (int srcElId = 0; srcElId < _src[srcGrpId].size(); ++srcElId )
{
_res[srcGrpId] += _src[srcGrpId][srcElId];
}
}
return;
}
<?xml version="1.0" encoding="UTF-8"?>
<algograph version="0.0.1">
<algorithm num_ext_params="1" num_groups="2">
<ext_param name="n"/>
<group id="0" num_or_parts="1" num_oper="1">
<or_part id="0" num_and_parts="1">
<and_part id="0"><![CDATA[]]></and_part>
<statement id="0" num_inputs="1">
<input id="0" num_solutions="0"/>
</statement>
</or_part>
</group>
<loop>
<loop>
<group id="1" num_or_parts="1" num_oper="1">
<or_part id="0" num_and_parts="4">
<and_part id="0"><![CDATA[-i1<=-1]]></and_part>
<and_part id="1"><![CDATA[i1<=n]]></and_part>
<and_part id="2"><![CDATA[-i2<=-1]]></and_part>
<and_part id="3"><![CDATA[i2<=n]]></and_part>
<statement id="0" num_inputs="3">
<input id="0" num_solutions="0"/>
<input id="1" num_solutions="3">
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2">
<altarea num_conditions="5">
<condition><![CDATA[i2-n<=0]]></condition>
<condition><![CDATA[-n+2<=0]]></condition>
<condition><![CDATA[i1-n<=0]]></condition>
<condition><![CDATA[-i1+1<=0]]></condition>
<condition><![CDATA[-i2+2<=0]]></condition>
</altarea>
<dependency>
<coordinate><![CDATA[i1]]></coordinate>
<coordinate><![CDATA[i2-1]]></coordinate>
</dependency>
</solution>
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="0">
<altarea num_conditions="5">
<condition><![CDATA[-i2+1<=0]]></condition>
<condition><![CDATA[-n+2<=0]]></condition>
<condition><![CDATA[i1-n<=0]]></condition>
<condition><![CDATA[-i1+2<=0]]></condition>
<condition><![CDATA[i2-1<=0]]></condition>
</altarea>
</solution>
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0">
<altarea num_conditions="5">
<condition><![CDATA[-n+1<=0]]></condition>
<condition><![CDATA[-i2+1<=0]]></condition>
<condition><![CDATA[-i1+1<=0]]></condition>
<condition><![CDATA[i2-1<=0]]></condition>
<condition><![CDATA[i1-1<=0]]></condition>
</altarea>
</solution>
</input>
<input id="2" num_solutions="0"/>
</statement>
</or_part>
</group>
</loop>
</loop>
</algorithm>
</algograph>
</tab>
<tab name="Пример 3">
Двумерная структура со скошенным параллелизмом
<?xml version="1.0" encoding="UTF-8"?>
<algograph version="0.0.1">
<algorithm num_ext_params="1" num_groups="2">
<ext_param name="n"/>
<group id="0" num_or_parts="1" num_oper="1">
<or_part id="0" num_and_parts="1">
<and_part id="0"><![CDATA[]]></and_part>
<statement id="0" num_inputs="1">
<input id="0" num_solutions="0"/>
</statement>
</or_part>
</group>
<loop>
<loop>
<group id="1" num_or_parts="1" num_oper="1">
<or_part id="0" num_and_parts="4">
<and_part id="0"><![CDATA[-i1<=-1]]></and_part>
<and_part id="1"><![CDATA[i1<=n]]></and_part>
<and_part id="2"><![CDATA[-i2<=-1]]></and_part>
<and_part id="3"><![CDATA[i2<=n]]></and_part>
<statement id="0" num_inputs="3">
<input id="0" num_solutions="0"/>
<input id="1" num_solutions="3">
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2">
<altarea num_conditions="5">
<condition><![CDATA[i2-n<=0]]></condition>
<condition><![CDATA[-n+2<=0]]></condition>
<condition><![CDATA[i1-n<=0]]></condition>
<condition><![CDATA[-i1+1<=0]]></condition>
<condition><![CDATA[-i2+2<=0]]></condition>
</altarea>
<dependency>
<coordinate><![CDATA[i1]]></coordinate>
<coordinate><![CDATA[i2-1]]></coordinate>
</dependency>
</solution>
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2">
<altarea num_conditions="5">
<condition><![CDATA[i2-n<=0]]></condition>
<condition><![CDATA[-n+2<=0]]></condition>
<condition><![CDATA[i1-n<=0]]></condition>
<condition><![CDATA[-i1+2<=0]]></condition>
<condition><![CDATA[-i2+1<=0]]></condition>
</altarea>
<dependency>
<coordinate><![CDATA[i1-1]]></coordinate>
<coordinate><![CDATA[i2]]></coordinate>
</dependency>
</solution>
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0">
<altarea num_conditions="5">
<condition><![CDATA[-n+1<=0]]></condition>
<condition><![CDATA[-i2+1<=0]]></condition>
<condition><![CDATA[-i1+1<=0]]></condition>
<condition><![CDATA[i2-1<=0]]></condition>
<condition><![CDATA[i1-1<=0]]></condition>
</altarea>
</solution>
</input>
<input id="2" num_solutions="0"/>
</statement>
</or_part>
</group>
</loop>
</loop>
</algorithm>
</algograph>
</tab>
<tab name="Пример 4">
Двумерная структура со скошенным параллелизмом и скошенной передачей данных
<?xml version="1.0" encoding="UTF-8"?>
<algograph version="0.0.1">
<algorithm num_ext_params="1" num_groups="2">
<ext_param name="n"/>
<group id="0" num_or_parts="1" num_oper="1">
<or_part id="0" num_and_parts="1">
<and_part id="0"><![CDATA[]]></and_part>
<statement id="0" num_inputs="1">
<input id="0" num_solutions="0"/>
</statement>
</or_part>
</group>
<loop>
<loop>
<group id="1" num_or_parts="1" num_oper="1">
<or_part id="0" num_and_parts="4">
<and_part id="0"><![CDATA[-i1<=-1]]></and_part>
<and_part id="1"><![CDATA[i1<=n]]></and_part>
<and_part id="2"><![CDATA[-i2<=-1]]></and_part>
<and_part id="3"><![CDATA[i2<=n]]></and_part>
<statement id="0" num_inputs="3">
<input id="0" num_solutions="0"/>
<input id="1" num_solutions="3">
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2">
<altarea num_conditions="5">
<condition><![CDATA[i2-n<=0]]></condition>
<condition><![CDATA[-n+2<=0]]></condition>
<condition><![CDATA[i1-n<=0]]></condition>
<condition><![CDATA[-i1+1<=0]]></condition>
<condition><![CDATA[-i2+2<=0]]></condition>
</altarea>
<dependency>
<coordinate><![CDATA[i1]]></coordinate>
<coordinate><![CDATA[i2-1]]></coordinate>
</dependency>
</solution>
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2">
<altarea num_conditions="5">
<condition><![CDATA[i2-n<=0]]></condition>
<condition><![CDATA[-n+2<=0]]></condition>
<condition><![CDATA[i1-n<=0]]></condition>
<condition><![CDATA[-i1+3<=0]]></condition>
<condition><![CDATA[-i2+2<=0]]></condition>
</altarea>
<dependency>
<coordinate><![CDATA[i1-2]]></coordinate>
<coordinate><![CDATA[i2-1]]></coordinate>
</dependency>
</solution>
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0">
<altarea num_conditions="5">
<condition><![CDATA[-n+1<=0]]></condition>
<condition><![CDATA[-i2+1<=0]]></condition>
<condition><![CDATA[-i1+1<=0]]></condition>
<condition><![CDATA[i2-1<=0]]></condition>
<condition><![CDATA[i1-n<=0]]></condition>
</altarea>
</solution>
</input>
<input id="2" num_solutions="0"/>
</statement>
</or_part>
</group>
</loop>
</loop>
</algorithm>
</algograph>
</tab>
<tab name="Пример 5">
Двумерная структура с квадратным параллелизмом и массовыми рассылками по каждому измерению
<?xml version="1.0" encoding="UTF-8"?>
<algograph version="0.0.1">
<algorithm num_ext_params="1" num_groups="2">
<ext_param name="n"/>
<group id="0" num_or_parts="1" num_oper="1">
<or_part id="0" num_and_parts="1">
<and_part id="0"><![CDATA[]]></and_part>
<statement id="0" num_inputs="1">
<input id="0" num_solutions="0"/>
</statement>
</or_part>
</group>
<loop>
<loop>
<group id="1" num_or_parts="1" num_oper="1">
<or_part id="0" num_and_parts="4">
<and_part id="0"><![CDATA[-i1<=-1]]></and_part>
<and_part id="1"><![CDATA[i1<=n]]></and_part>
<and_part id="2"><![CDATA[-i2<=-1]]></and_part>
<and_part id="3"><![CDATA[i2<=n]]></and_part>
<statement id="0" num_inputs="3">
<input id="0" num_solutions="0"/>
<input id="1" num_solutions="5">
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2">
<altarea num_conditions="5">
<condition><![CDATA[i2-n<=0]]></condition>
<condition><![CDATA[-n+2<=0]]></condition>
<condition><![CDATA[i1-n<=0]]></condition>
<condition><![CDATA[-i1+1<=0]]></condition>
<condition><![CDATA[-i2+2<=0]]></condition>
</altarea>
<dependency>
<coordinate><![CDATA[i1]]></coordinate>
<coordinate><![CDATA[i2-1]]></coordinate>
</dependency>
</solution>
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2">
<altarea num_conditions="5">
<condition><![CDATA[i2-n<=0]]></condition>
<condition><![CDATA[-n+2<=0]]></condition>
<condition><![CDATA[i1-n<=0]]></condition>
<condition><![CDATA[-i2+1<=0]]></condition>
<condition><![CDATA[-i1+2<=0]]></condition>
</altarea>
<dependency>
<coordinate><![CDATA[i1-1]]></coordinate>
<coordinate><![CDATA[i2]]></coordinate>
</dependency>
</solution>
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2">
<altarea num_conditions="5">
<condition><![CDATA[i2-n<=0]]></condition>
<condition><![CDATA[-n+2<=0]]></condition>
<condition><![CDATA[i1-n<=0]]></condition>
<condition><![CDATA[-i1+1<=0]]></condition>
<condition><![CDATA[-i2+3<=0]]></condition>
</altarea>
<dependency>
<coordinate><![CDATA[i1]]></coordinate>
<coordinate><![CDATA[1]]></coordinate>
</dependency>
</solution>
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="2">
<altarea num_conditions="5">
<condition><![CDATA[i2-n<=0]]></condition>
<condition><![CDATA[-n+2<=0]]></condition>
<condition><![CDATA[i1-n<=0]]></condition>
<condition><![CDATA[-i2+1<=0]]></condition>
<condition><![CDATA[-i1+3<=0]]></condition>
</altarea>
<dependency>
<coordinate><![CDATA[1]]></coordinate>
<coordinate><![CDATA[i2]]></coordinate>
</dependency>
</solution>
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0">
<altarea num_conditions="5">
<condition><![CDATA[-n+1<=0]]></condition>
<condition><![CDATA[-i2+1<=0]]></condition>
<condition><![CDATA[-i1+1<=0]]></condition>
<condition><![CDATA[i2-1<=0]]></condition>
<condition><![CDATA[i1-n<=0]]></condition>
</altarea>
</solution>
</input>
<input id="2" num_solutions="0"/>
</statement>
</or_part>
</group>
</loop>
</loop>
</algorithm>
</algograph>
</tab>
<tab name="Пример 6">
Набор независимых последовательно-параллельных 2D-структур с массовой рассылкой данных в каждой
<?xml version="1.0" encoding="UTF-8"?>
<algograph version="0.0.1">
<algorithm num_ext_params="2" num_groups="2">
<ext_param name="n"/>
<ext_param name="m"/>
<group id="0" num_or_parts="1" num_oper="1">
<or_part id="0" num_and_parts="1">
<and_part id="0"><![CDATA[]]></and_part>
<statement id="0" num_inputs="1">
<input id="0" num_solutions="0"/>
</statement>
</or_part>
</group>
<loop>
<loop>
<loop>
<group id="1" num_or_parts="1" num_oper="1">
<or_part id="0" num_and_parts="6">
<and_part id="0"><![CDATA[-i1<=-1]]></and_part>
<and_part id="1"><![CDATA[i1<=n]]></and_part>
<and_part id="2"><![CDATA[-i2<=-1]]></and_part>
<and_part id="3"><![CDATA[i2<=m]]></and_part>
<and_part id="4"><![CDATA[i3>=0]]></and_part>
<and_part id="5"><![CDATA[i3<=n-1]]></and_part>
<statement id="0" num_inputs="3">
<input id="0" num_solutions="0"/>
<input id="1" num_solutions="3">
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3">
<altarea num_conditions="7">
<condition><![CDATA[-m+2<=0]]></condition>
<condition><![CDATA[i1-n<=0]]></condition>
<condition><![CDATA[i3-n+1<=0]]></condition>
<condition><![CDATA[-i2+2<=0]]></condition>
<condition><![CDATA[i2<=m]]></condition>
<condition><![CDATA[-i1+1<=0]]></condition>
<condition><![CDATA[-i3<=0]]></condition>
</altarea>
<dependency>
<coordinate><![CDATA[i1]]></coordinate>
<coordinate><![CDATA[i2-1]]></coordinate>
<coordinate><![CDATA[i3]]></coordinate>
</dependency>
</solution>
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3">
<altarea num_conditions="7">
<condition><![CDATA[-m+2<=0]]></condition>
<condition><![CDATA[i1-n<=0]]></condition>
<condition><![CDATA[i3-n+1<=0]]></condition>
<condition><![CDATA[-i2+2<=0]]></condition>
<condition><![CDATA[i2<=m]]></condition>
<condition><![CDATA[-i1+1<=0]]></condition>
<condition><![CDATA[-i3<=0]]></condition>
</altarea>
<dependency>
<coordinate><![CDATA[1]]></coordinate>
<coordinate><![CDATA[i2-1]]></coordinate>
<coordinate><![CDATA[i3]]></coordinate>
</dependency>
</solution>
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0">
<altarea num_conditions="6">
<condition><![CDATA[i2-1<=0]]></condition>
<condition><![CDATA[i2-1>=0]]></condition>
<condition><![CDATA[-i1+1<=0]]></condition>
<condition><![CDATA[-i3<=0]]></condition>
<condition><![CDATA[i1-n<=0]]></condition>
<condition><![CDATA[i3-n+1<=0]]></condition>
</altarea>
</solution>
</input>
<input id="2" num_solutions="0"/>
</statement>
</or_part>
</group>
</loop>
</loop>
</loop>
</algorithm>
</algograph>
</tab>
<tab name="Пример 7">
Набор одномерных последовательных структур, независимых между собой - 3D вариант
<?xml version="1.0" encoding="UTF-8"?>
<algograph version="0.0.1">
<algorithm num_ext_params="2" num_groups="2">
<ext_param name="n"/>
<ext_param name="m"/>
<group id="0" num_or_parts="1" num_oper="1">
<or_part id="0" num_and_parts="1">
<and_part id="0"><![CDATA[]]></and_part>
<statement id="0" num_inputs="1">
<input id="0" num_solutions="0"/>
</statement>
</or_part>
</group>
<loop>
<loop>
<loop>
<group id="1" num_or_parts="1" num_oper="1">
<or_part id="0" num_and_parts="6">
<and_part id="0"><![CDATA[-i1<=-1]]></and_part>
<and_part id="1"><![CDATA[i1<=n]]></and_part>
<and_part id="2"><![CDATA[-i2<=-1]]></and_part>
<and_part id="3"><![CDATA[i2<=m]]></and_part>
<and_part id="4"><![CDATA[i3>=0]]></and_part>
<and_part id="5"><![CDATA[i3<=n-1]]></and_part>
<statement id="0" num_inputs="3">
<input id="0" num_solutions="0"/>
<input id="1" num_solutions="2">
<solution num_altareas="1" group_id="1" or_part_id="0" statement_id="0" dimsolut="3">
<altarea num_conditions="7">
<condition><![CDATA[-m+2<=0]]></condition>
<condition><![CDATA[i1-n<=0]]></condition>
<condition><![CDATA[i3-n+1<=0]]></condition>
<condition><![CDATA[-i2+1<=0]]></condition>
<condition><![CDATA[i2+1<=m]]></condition>
<condition><![CDATA[-i1+1<=0]]></condition>
<condition><![CDATA[-i3<=0]]></condition>
</altarea>
<dependency>
<coordinate><![CDATA[i1]]></coordinate>
<coordinate><![CDATA[i2+1]]></coordinate>
<coordinate><![CDATA[i3]]></coordinate>
</dependency>
</solution>
<solution num_altareas="1" group_id="0" or_part_id="0" statement_id="0" dimsolut="0">
<altarea num_conditions="6">
<condition><![CDATA[i2-m<=0]]></condition>
<condition><![CDATA[i2-m>=0]]></condition>
<condition><![CDATA[-i1+1<=0]]></condition>
<condition><![CDATA[-i3<=0]]></condition>
<condition><![CDATA[i1-n<=0]]></condition>
<condition><![CDATA[i3-n+1<=0]]></condition>
</altarea>
</solution>
</input>
<input id="2" num_solutions="0"/>
</statement>
</or_part>
</group>
</loop>
</loop>
</loop>
</algorithm>
</algograph>
</tab>
<tab name="Пример 8">
Пример массовой рассылки данных в 2D-структуре
</tab>
<tab name="Пример 9">
Искуственный пример, демонстрирующий элементы визуализации
</tab>
<tab name="Пример 10">
Последовательный набор 3D-структур, содержащих скошенный параллелизм
</tab>
<tab name="Пример 11">
Пример массовой рассылки данных в 3D-структуре
</tab>
<tab name="Пример 12">
Пример 3D-структуры с различными видами скошенного параллелизма
</tab>
<tab name="Пример 13">
Последовательно-параллельное перемножение матриц
</tab>
</tabs>