Unified virtual addressing, GPU-to-GPU communication and enhanced C++ template libraries enable more developers to take advantage of GPU computing