Parallel Programming with Global Asynchronous Memory: Models, C++ APIs and Implementations