UPC: Distributed Shared-Memory Programming