Scientific applications, like the ones involving numerical simulations, keep requiring more and more processing power out of HPC platforms. These machines expose a constantly growing number of processing units, most of the time organized on a hierarchical fashion. Applications programmers need to express massive fine-grain parallelism to occupy all these cores and control its execution to exploit them at their full potential. Parallel programming environments like OpenMP usually ease the pain of the application programmer, providing him with ways of expressing structured parallelism in a portable way. However, while being a crucial element to achieve good performance on nowadays platforms, controlling the way OpenMP parallel regions are executed on a hierarchical multicore machine is still the burden of the programmer. This thesis introduces a runtime-level approach to apply efficient mappings of OpenMP threads in a dynamic and portable way. The associated software, called ForestGOMP, captures the structure of OpenMP applications and uses this information to schedule related threads over a subset of any hierarchical platform that shares different levels of memory (cache, NUMA bank, ...). Nested parallelism provides a way of structuring OpenMP parallelism, and the ForestGOMP runtime system implement several schedulers able to dynamically map this structure on any hierarchical set of cores of any shared-memory platform, demonstrating the interest of a strong communication between the application and the runtime system to achieve portability of performance.