code: @Override
      public boolean promoteObject(DataBuffer buffer) {
          AllocationPoint dstPoint = AtomicAllocator.getInstance().getAllocationPoint(buffer);
  
          if (dstPoint.getAllocationStatus() != AllocationStatus.HOST)
              return false;
  
          if (configuration.getMemoryModel() == Configuration.MemoryModel.DELAYED
                          && dstPoint.getAllocationStatus() == AllocationStatus.HOST) {
  
  
              // if we have constant buffer (aka shapeInfo or other constant stuff)
              if (buffer.isConstant()) {
                  Nd4j.getConstantHandler().moveToConstantSpace(buffer);
              } else {
  
                  PointersPair pair = memoryProvider.malloc(dstPoint.getShape(), dstPoint, AllocationStatus.DEVICE);
  
                  if (pair != null) {
                      Integer deviceId = getDeviceId();
                      //               log.info("Promoting object to device: [{}]", deviceId);
  
                      dstPoint.getPointers().setDevicePointer(pair.getDevicePointer());
                      dstPoint.setAllocationStatus(AllocationStatus.DEVICE);
  
                      deviceAllocations.get(deviceId).put(dstPoint.getObjectId(), dstPoint.getObjectId());
  
                      zeroAllocations.get(dstPoint.getBucketId()).remove(dstPoint.getObjectId());
                      deviceMemoryTracker.addToAllocation(Thread.currentThread().getId(), deviceId,
                                      AllocationUtils.getRequiredMemory(dstPoint.getShape()));
  
  
                      dstPoint.tickHostWrite();
                  } else
                      throw new RuntimeException("PewPew");
  
              }
          }
  
          return true;
      }
docs: This method moves specific object from zero-copy memory to device memory
  
  PLEASE NOTE:  DO NOT EVER USE THIS METHOD MANUALLY, UNLESS YOU 100% HAVE TO
  
  @return