message: Fix warnings about non-primary contexts.
  The old code reports false warnings when CUDADriver::CreateContext gets called
  with the current context being the primary context of another device. This CL
  fixes the issue by checking the device of the current context before report
  warnings.
diff: @@ -516,13 +516,25 @@ bool DeviceOptionsToContextFlags(const DeviceOptions &device_options,
  former_context = CUDADriver::CurrentContextOrDie();
  res = cuDevicePrimaryCtxRetain(&new_context, device);
  if (former_context != nullptr) {
  + CUdevice former_device;
  + if (cuCtxGetDevice(&former_device) == CUDA_SUCCESS) {
  + if (former_device == device) {
  if (former_context == new_context) {
  VLOG(2) << "The primary context " << former_context
  + << " for device " << device
  << " exists before initializing the StreamExecutor.";
  } else {
  - LOG(WARNING) << "A non-primary context " << former_context
  - << " exists before initializing the StreamExecutor. We "
  - "haven't verified StreamExecutor works with that.";
  + LOG(WARNING)
  + << "A non-primary context " << former_context << " for device "
  + << device
  + << " exists before initializing the StreamExecutor. The "
  + << "primary context is now " << new_context << ". We "
  + << "haven't verified StreamExecutor works with that.";
  + }
  + }
  + } else {
  + LOG(ERROR) << "Failed to get the device of the current context "
  + << former_context;
  }
  }
  #else
  