Exemplo n.º 1
0
  /**
   * This method checks specified device for specified amount of memory
   *
   * @param deviceId
   * @param requiredMemory
   * @return
   */
  public boolean pingDeviceForFreeMemory(Integer deviceId, long requiredMemory) {
    /*
    long[] totalMem = new long[1];
    long[] freeMem = new long[1];


    JCuda.cudaMemGetInfo(freeMem, totalMem);

    long free = freeMem[0];
    long total = totalMem[0];
    long used = total - free;

    /*
        We don't want to allocate memory if it's too close to the end of available ram.
     */
    // if (configuration != null && used > total * configuration.getMaxDeviceMemoryUsed()) return
    // false;

    /*
    if (free + requiredMemory < total * 0.85)
        return true;
    else return false;
    */
    long freeMem = nativeOps.getDeviceFreeMemory(-1);
    if (freeMem - requiredMemory < DEVICE_RESERVED_SPACE) return false;
    else return true;
  }