A Study of a Software Cache Implementation of the OpenMP Memory Model for Multicore and Manycore Architectures