This HTML5 document contains 42 embedded RDF statements represented using HTML+Microdata notation.

The embedded RDF content will be recognized by any processor of HTML5 Microdata.

Namespace Prefixes

PrefixIRI
dcthttp://purl.org/dc/terms/
dbohttp://dbpedia.org/ontology/
foafhttp://xmlns.com/foaf/0.1/
n6https://global.dbpedia.org/id/
dbthttp://dbpedia.org/resource/Template:
dbpedia-ruhttp://ru.dbpedia.org/resource/
rdfshttp://www.w3.org/2000/01/rdf-schema#
n11https://web.archive.org/web/20170629022949/http:/sc.tamu.edu/help/power/powerlearn/html/ScalarOptnw/
dbpedia-fahttp://fa.dbpedia.org/resource/
rdfhttp://www.w3.org/1999/02/22-rdf-syntax-ns#
owlhttp://www.w3.org/2002/07/owl#
wikipedia-enhttp://en.wikipedia.org/wiki/
dbphttp://dbpedia.org/property/
dbchttp://dbpedia.org/resource/Category:
provhttp://www.w3.org/ns/prov#
xsdhhttp://www.w3.org/2001/XMLSchema#
wikidatahttp://www.wikidata.org/entity/
dbrhttp://dbpedia.org/resource/
dbpedia-jahttp://ja.dbpedia.org/resource/

Statements

Subject Item
dbr:Loop_fission_and_fusion
rdfs:label
Расщепление тела цикла Loop fission and fusion ループ分割とループ融合
rdfs:comment
In computer science, loop fission (or loop distribution) is a compiler optimization in which a loop is broken into multiple loops over the same index range with each taking only a part of the original loop's body. The goal is to break down a large loop body into smaller ones to achieve better utilization of locality of reference. This optimization is most efficient in multi-core processors that can split a task into multiple tasks for each processor. Расщепление тела цикла (англ. loop fission) — оптимизация компилятора, которая разбивает цикл в программе на несколько циклов, каждый из которых имеет те же индексные границы, однако содержит только часть тела исходного цикла. Например, следующий код: int i, a[100], b[100]; for (i = 0; i < 100; i++) { a[i] = 1; b[i] = 2; } в результате применения оптимизации преобразовывается в: int i, a[100], b[100]; for (i = 0; i < 100; i++) { a[i] = 1; } for (i = 0; i < 100; i++) { b[i] = 2; } コンピュータ科学の分野において、ループ分割(英語: loop fission, loop distribution)は、コンパイラ最適化手法の1つであり、1つのループを、同じインデックスの範囲を持つ複数のループに分解し、各ループでは元のループ本体の一部だけをもたせる、という手法である。大きなループ本体を小さなループに分割することで、参照の局所性をよりよく活用することが目的である。この最適化が最も効率よく実行できるのは、1つのタスクを複数のタスクに分割して、各タスクをそれぞれのコアで並列に実行できるマルチコアプロセッサである。 逆に、ループ融合(英語: loop fusion, loop jamming)は、複数のループを1つのループに置換するという、コンパイラ最適化およびの手法である。2つのループが同じ範囲でイテレートしており、互いにデータの参照が存在しない場合に適用可能である。ループ融合は、必ずしもランタイムの速度向上に寄与するとは限らない。実際、一部のアーキテクチャでは、たとえば、各ループ内でのデータの局所性が高まるため、2つのループの方が1つのループより性能が良いことがある。
dct:subject
dbc:Compiler_optimizations dbc:Articles_with_example_C_code
dbo:wikiPageID
3409777
dbo:wikiPageRevisionID
1106685666
dbo:wikiPageWikiLink
dbr:Data_locality dbr:Loop_(computing) dbr:Locality_of_reference dbr:Loop_transformation dbr:Multi-core_processor dbc:Compiler_optimizations dbr:Computer_architectures dbr:Julia_(programming_language) dbr:Clang dbr:C++ dbr:Computer_processor dbc:Articles_with_example_C_code dbr:Compiler_optimization dbr:Control_flow dbr:GNU_Compiler_Collection dbr:Instruction-level_parallelism dbr:Computer_science dbr:Expression_templates
dbo:wikiPageExternalLink
n11:sld031.htm
owl:sameAs
n6:4qzyL dbpedia-ru:Расщепление_тела_цикла dbpedia-ja:ループ分割とループ融合 wikidata:Q6675821 dbpedia-fa:شکافت_و_ادغام_حلقه
dbp:wikiPageUsesTemplate
dbt:Reflist dbt:Compiler_optimizations
dbo:abstract
In computer science, loop fission (or loop distribution) is a compiler optimization in which a loop is broken into multiple loops over the same index range with each taking only a part of the original loop's body. The goal is to break down a large loop body into smaller ones to achieve better utilization of locality of reference. This optimization is most efficient in multi-core processors that can split a task into multiple tasks for each processor. Conversely, loop fusion (or loop jamming) is a compiler optimization and loop transformation which replaces multiple loops with a single one. Loop fusion does not always improve run-time speed. On some architectures, two loops may actually perform better than one loop because, for example, there is increased data locality within each loop. One of the main benefits of loop fusion is that it allows temporary allocations to be avoided, which can lead to huge performance gains in numerical computing languages such as Julia when doing elementwise operations on arrays (however, Julia's loop fusion is not technically a compiler optimization, but a syntactic guarantee of the language). Other benefits of loop fusion are that it avoids the overhead of the loop control structures, and also that it allows the loop body to be parallelized by the processor by taking advantage of instruction-level parallelism. This is possible when there are no data dependencies between the bodies of the two loops (this is in stark contrast to the other main benefit of loop fusion described above, which only presents itself when there are data dependencies that require an intermediate allocation to store the results). If loop fusion is able to remove redundant allocations, performance increases can be large. Otherwise, there is a more complex trade-off between data locality, instruction-level parallelism, and loop overhead (branching, incrementing, etc.) that may make loop fusion, loop fission, or neither, the preferable optimization. Расщепление тела цикла (англ. loop fission) — оптимизация компилятора, которая разбивает цикл в программе на несколько циклов, каждый из которых имеет те же индексные границы, однако содержит только часть тела исходного цикла. Например, следующий код: int i, a[100], b[100]; for (i = 0; i < 100; i++) { a[i] = 1; b[i] = 2; } в результате применения оптимизации преобразовывается в: int i, a[100], b[100]; for (i = 0; i < 100; i++) { a[i] = 1; } for (i = 0; i < 100; i++) { b[i] = 2; } Ключевой задачей таких оптимизаций является сокращение числа операций цикла. Здесь основным методом оптимизации является расщепление цикла на несколько циклов, для каждого из которых число команд, необходимых для упаковки тела цикла, строго меньше числа команд для исходного цикла. Распределение полезно для изоляции цикловых зависимостей по данным при подготовке к векторизации цикла, для перестановок циклов или повышения вероятности кеширования в процессоре за счёт уменьшения общего количества данных, на которые делаются ссылки при полном выполнении каждого цикла. コンピュータ科学の分野において、ループ分割(英語: loop fission, loop distribution)は、コンパイラ最適化手法の1つであり、1つのループを、同じインデックスの範囲を持つ複数のループに分解し、各ループでは元のループ本体の一部だけをもたせる、という手法である。大きなループ本体を小さなループに分割することで、参照の局所性をよりよく活用することが目的である。この最適化が最も効率よく実行できるのは、1つのタスクを複数のタスクに分割して、各タスクをそれぞれのコアで並列に実行できるマルチコアプロセッサである。 逆に、ループ融合(英語: loop fusion, loop jamming)は、複数のループを1つのループに置換するという、コンパイラ最適化およびの手法である。2つのループが同じ範囲でイテレートしており、互いにデータの参照が存在しない場合に適用可能である。ループ融合は、必ずしもランタイムの速度向上に寄与するとは限らない。実際、一部のアーキテクチャでは、たとえば、各ループ内でのデータの局所性が高まるため、2つのループの方が1つのループより性能が良いことがある。
prov:wasDerivedFrom
wikipedia-en:Loop_fission_and_fusion?oldid=1106685666&ns=0
dbo:wikiPageLength
9438
foaf:isPrimaryTopicOf
wikipedia-en:Loop_fission_and_fusion