/** Returns {@code create(pointer, sizes, strides, true)} */ public static LongIndexer create(LongPointer pointer, long[] sizes, long[] strides) { return create(pointer, sizes, strides, true); } /**
/** Returns {@code this} where {@code l[offset:offset + length] = array/buffer[i]} */ public abstract LongIndexer get(long i, long[] l, int offset, int length); /** Returns {@code array/buffer[i * strides[0] + j]} */
/** Returns {@code this} where {@code array/buffer[i] = l[offset:offset + length]} */ public abstract LongIndexer put(long i, long[] l, int offset, int length); /** Returns {@code this} where {@code array/buffer[i * strides[0] + j] = l} */
: (I)IntIndexer.create(new IntPointer((IntBuffer)buffer), sizes, strides, false).indexable(this); case DEPTH_LONG: return array != null ? (I)LongIndexer.create((long[])array, sizes, strides).indexable(this) : direct ? (I)LongIndexer.create((LongBuffer)buffer, sizes, strides).indexable(this) : (I)LongIndexer.create(new LongPointer((LongBuffer)buffer), sizes, strides, false).indexable(this); case DEPTH_FLOAT: return array != null ? (I)FloatIndexer.create((float[])array, sizes, strides).indexable(this)
indexer = LongIndexer.create((LongPointer) pointer); Lindexer.put(i, s.readLong()); else if (t == Type.INT) Lindexer.put(i, s.readInt()); else if (t == Type.DOUBLE) Lindexer.put(i, (int) s.readDouble()); else if (t == Type.FLOAT) Lindexer.put(i, (int) s.readFloat()); else if (t == Type.HALF) Lindexer.put(i, (int) toFloat((int) s.readShort()));
: (I)IntIndexer.create(new IntPointer((IntBuffer)buffer), sizes, strides, false).indexable(this); case DEPTH_LONG: return array != null ? (I)LongIndexer.create((long[])array, sizes, strides).indexable(this) : direct ? (I)LongIndexer.create((LongBuffer)buffer, sizes, strides).indexable(this) : (I)LongIndexer.create(new LongPointer((LongBuffer)buffer), sizes, strides, false).indexable(this); case DEPTH_FLOAT: return array != null ? (I)FloatIndexer.create((float[])array, sizes, strides).indexable(this)
/** Returns {@code create(pointer, { pointer.limit() - pointer.position() }, { 1 }, true)} */ public static LongIndexer create(LongPointer pointer) { return create(pointer, new long[] { pointer.limit() - pointer.position() }, ONE_STRIDE); }
case DT_BFLOAT16: return (I)UShortIndexer.create(new ShortPointer(ptr).capacity(size/2), sizes, strides, direct).indexable(this); case DT_INT16: return (I)ShortIndexer.create(new ShortPointer(ptr).capacity(size/2), sizes, strides, direct).indexable(this); case DT_INT64: return (I)LongIndexer.create(new LongPointer(ptr).capacity(size/8), sizes, strides, direct).indexable(this); case DT_STRING: default: assert false;
/** Returns {@code this} where {@code l[offset:offset + length] = array/buffer[i * strides[0] + j]} */ public abstract LongIndexer get(long i, long j, long[] l, int offset, int length); /** Returns {@code array/buffer[i * strides[0] + j * strides[1] + k]} */
/** Returns {@code this} where {@code array/buffer[index(indices)] = l[offset:offset + length]} */ public abstract LongIndexer put(long[] indices, long[] l, int offset, int length);
/** * * @param data * @param copy */ public BaseDataBuffer(long[] data, boolean copy) { allocationMode = AllocUtil.getAllocationModeFromContext(); initTypeAndSize(); pointer = new LongPointer(data); setIndexer(LongIndexer.create((LongPointer) pointer)); length = data.length; underlyingLength = data.length; }
/** Returns {@code this} where {@code l[offset:offset + length] = array/buffer[index(indices)]} */ public abstract LongIndexer get(long[] indices, long[] l, int offset, int length);
/** Returns {@code this} where {@code array/buffer[i * strides[0] + j] = l[offset:offset + length]} */ public abstract LongIndexer put(long i, long j, long[] l, int offset, int length); /** Returns {@code this} where {@code array/buffer[i * strides[0] + j * strides[1] + k] = l} */
/** * Create a data buffer from * the given length * * @param buffer * @param length */ public BaseDataBuffer(ByteBuffer buffer, long length) { if (length < 1) throw new IllegalArgumentException("Length must be >= 1"); initTypeAndSize(); this.length = length; allocationMode = AllocUtil.getAllocationModeFromContext(); if (dataType() == Type.DOUBLE) { pointer = new DoublePointer(buffer.asDoubleBuffer()); setIndexer(DoubleIndexer.create((DoublePointer) pointer)); } else if (dataType() == Type.FLOAT) { pointer = new FloatPointer(buffer.asFloatBuffer()); setIndexer(FloatIndexer.create((FloatPointer) pointer)); } else if (dataType() == Type.INT) { pointer = new IntPointer(buffer.asIntBuffer()); setIndexer(IntIndexer.create((IntPointer) pointer)); } else if (dataType() == Type.LONG) { pointer = new LongPointer(buffer.asLongBuffer()); setIndexer(LongIndexer.create((LongPointer) pointer)); } // log.info("Creating new buffer of size: {}; dtype: {}; D", length, dataType()); }
@Override public double getDouble(long... indices) { return get(indices); } @Override public LongIndexer putDouble(long[] indices, double l) { return put(indices, (long)l); }
@Override public LongIndexer putDouble(long[] indices, double l) { return put(indices, (long)l); } }
/** * * @param length * @param elementSize */ public BaseDataBuffer(long length, int elementSize) { if (length < 1) throw new IllegalArgumentException("Length must be >= 1"); initTypeAndSize(); allocationMode = AllocUtil.getAllocationModeFromContext(); this.length = length; this.underlyingLength = length; this.elementSize = (byte) elementSize; if (dataType() == Type.DOUBLE) { pointer = new DoublePointer(length); indexer = DoubleIndexer.create((DoublePointer) pointer); } else if (dataType() == Type.FLOAT) { pointer = new FloatPointer(length); setIndexer(FloatIndexer.create((FloatPointer) pointer)); } else if (dataType() == Type.INT) { pointer = new IntPointer(length); setIndexer(IntIndexer.create((IntPointer) pointer)); } else if (dataType() == Type.LONG) { pointer = new LongPointer(length); setIndexer(LongIndexer.create((LongPointer) pointer)); } // log.info("Creating new buffer of size: {}; dtype: {}; C", length, dataType()); }
@Override public long getLong(long i) { if (dataType() == Type.FLOAT) { return (long) ((FloatIndexer) indexer).get(offset() + i); } else if (dataType() == Type.INT) { return (long) ((IntIndexer) indexer).get(offset() + i); } else if (dataType() == Type.DOUBLE) { return (long) ((DoubleIndexer) indexer).get(offset() + i); } else { return ((LongIndexer) indexer).get(offset() + i); } }
} else if (dataType() == Type.LONG) { pointer = new LongPointer(length()); setIndexer(LongIndexer.create((LongPointer) pointer));
@Override public int getInt(long i) { if (dataType() == Type.DOUBLE) { return (int) ((DoubleIndexer) indexer).get(offset() + i); } else if (dataType() == Type.INT) { return ((IntIndexer) indexer).get(offset() + i); } else if (dataType() == Type.LONG) { return (int) ((LongIndexer) indexer).get(offset() + i); } else { return (int) ((FloatIndexer) indexer).get(offset() + i); } }