  Parallel processing is considered as todays and future trend for improving
performance of computers. Computing devices ranging from small embedded systems
to big clusters of computers rely on parallelizing applications to reduce
execution time. Many of current computing systems rely on Non-Uniform Memory
Access (NUMA) based processors architectures. In these architectures, analyzing
and considering the non-uniformity is of high importance for improving
scalability of systems. In this paper, we analyze and develop a NUMA based
approach for the OpenMP parallel programming model. Our technique applies a
smart threads allocation method and an advanced tasks scheduling strategy for
reducing remote memory accesses and consequently their extra time consumption.
We implemented our approach within the NANOS runtime system. A set of tests was
conducted using the BOTS benchmarks and results showed the capacity of our
technique in improving the performance of OpenMP applications especially those
dealing with a large amount of data.
