  Asymmetric multicore processors (AMPs) couple high-performance big cores and
low-power small cores with the same instruction-set architecture but different
features, such as clock frequency or microarchitecture. Previous work has shown
that asymmetric designs may deliver higher energy efficiency than symmetric
multicores for diverse workloads. Despite their benefits, AMPs pose significant
challenges to runtime systems of parallel programming models. While previous
work has mainly explored how to efficiently execute task-based parallel
applications on AMPs, via enhancements in the runtime system, improving the
performance of unmodified data-parallel applications on these architectures is
still a big challenge. In this work we analyze the particular case of
loop-based OpenMP applications, which are widely used today in scientific and
engineering domains, and constitute the dominant application type in many
parallel benchmark suites used for performance evaluation on multicore systems.
We observed that conventional loop-scheduling OpenMP approaches are unable to
efficiently cope with the load imbalance that naturally stems from the
different performance delivered by big and small cores.
  To address this shortcoming, we propose \textit{Asymmetric Iteration
Distribution} (AID), a set of novel loop-scheduling methods for AMPs that
distribute iterations unevenly across worker threads to efficiently deal with
performance asymmetry. We implemented AID in \textit{libgomp} --the GNU OpenMP
runtime system--, and evaluated it on two different asymmetric multicore
platforms. Our analysis reveals that the AID methods constitute effective
replacements of the \texttt{static} and \texttt{dynamic} methods on AMPs, and
are capable of improving performance over these conventional strategies by up
to 56\% and 16.8\%, respectively.
