/** * Alternative version of {@link #map(com.jme3.opencl.CommandQueue, long, com.jme3.opencl.MappingAccess) }, * sets {@code size} to {@link #getSize() }. * <b>Important:</b> The mapped memory MUST be released by calling * {@link #unmap(com.jme3.opencl.CommandQueue, java.nio.ByteBuffer) }. */ public ByteBuffer map(CommandQueue queue, MappingAccess access) { return map(queue, getSize(), access); }
/** * Alternative version of {@link #copyToAsync(com.jme3.opencl.CommandQueue, com.jme3.opencl.Buffer, long) }, * sets {@code size} to {@code this.getSize()}. */ public Event copyToAsync(CommandQueue queue, Buffer dest) { return copyToAsync(queue, dest, getSize()); }
Buffer buffer = clContext.createBuffer(size*4); float value = 5; Event event = kernel.Run1(clQueue, new com.jme3.opencl.Kernel.WorkSize(buffer.getSize() / 4), buffer, value); event.waitForFinished(); ByteBuffer buf = buffer.map(clQueue, MappingAccess.MAP_READ_ONLY); FloatBuffer buff = buf.asFloatBuffer(); for (int i=0; i<size; ++i) { assertEquals(value, v, "Buffer filled with the wrong value at index "+i); buffer.unmap(clQueue, buf); buffer.release(); kernel.release(); program.release();
ByteBuffer bb = buffer.map(clQueue, MappingAccess.MAP_READ_ONLY); if (bb.get() == 0) { LOG.severe("Matrix inversion failed"); return false; buffer.unmap(clQueue, bb); testMatrix3fKernel1.release(); Matrix3f mRes = new Matrix3f(-31.68f, -165.703f, 1.51f, 12.468f, 62.4f, 86, -83.99f, 2.6f, -13.025f); testMatrix3fKernel2.Run1NoEvent(clQueue, new Kernel.WorkSize(1), m1, -2.0f, m2, mRes, buffer); bb = buffer.map(clQueue, MappingAccess.MAP_READ_ONLY); if (bb.get() == 0) { LOG.severe("Matrix add, multiply, transpose failed"); return false; buffer.unmap(clQueue, bb); testMatrix3fKernel2.release(); buffer.release();
ByteBuffer tmpByteBuffer = BufferUtils.createByteBuffer(8 * count); tmpByteBuffer.asLongBuffer().put(seeds); seedsBuffer.write(clQueue, tmpByteBuffer); testBoolKernel.Run1NoEvent(clQueue, ws, seedsBuffer, resultBuffer); resultByteBuffer.rewind(); resultBuffer.read(clQueue, resultByteBuffer); for (int i=0; i<count; ++i) { assertEquals(randoms[i].nextBoolean() ? 1 : 0, resultByteBuffer.get(i), "randBool at i="+i); testIntKernel.Run1NoEvent(clQueue, ws, seedsBuffer, resultBuffer); resultByteBuffer.rewind(); resultBuffer.read(clQueue, resultByteBuffer); for (int i=0; i<count; ++i) { assertEquals(randoms[i].nextInt(), resultIntBuffer.get(i), "randInt at i="+i); testIntNKernel.Run1NoEvent(clQueue, ws, seedsBuffer, 186, resultBuffer); resultByteBuffer.rewind(); resultBuffer.read(clQueue, resultByteBuffer); for (int i=0; i<count; ++i) { assertEquals(randoms[i].nextInt(186), resultIntBuffer.get(i), "randInt at i="+i+" with n="+186); resultBuffer.read(clQueue, resultByteBuffer); for (int i=0; i<count; ++i) { assertEquals(randoms[i].nextInt(97357), resultIntBuffer.get(i), "randInt at i="+i+" with n="+97357); testLongKernel.Run1NoEvent(clQueue, ws, seedsBuffer, resultBuffer); resultByteBuffer.rewind(); resultBuffer.read(clQueue, resultByteBuffer);
/** * Alternative version of {@link #writeAsync(com.jme3.opencl.CommandQueue, java.nio.ByteBuffer, long) }, * sets {@code size} to {@link #getSize() }. */ public Event writeAsync(CommandQueue queue, ByteBuffer src) { return writeAsync(queue, src, getSize()); }
/** * Alternative version of {@link #mapAsync(com.jme3.opencl.CommandQueue, long, com.jme3.opencl.MappingAccess) }, * sets {@code size} to {@link #getSize() }. * <b>Important:</b> The mapped memory MUST be released by calling * {@link #unmap(com.jme3.opencl.CommandQueue, java.nio.ByteBuffer) }. */ public AsyncMapping mapAsync(CommandQueue queue, MappingAccess access) { return mapAsync(queue, getSize(), 0, access); }
/** * Alternative version of {@link #map(com.jme3.opencl.CommandQueue, long, long, com.jme3.opencl.MappingAccess) }, * sets {@code offset} to zero. * <b>Important:</b> The mapped memory MUST be released by calling * {@link #unmap(com.jme3.opencl.CommandQueue, java.nio.ByteBuffer) }. */ public ByteBuffer map(CommandQueue queue, long size, MappingAccess access) { return map(queue, size, 0, access); }
/** * Alternative version of {@link #copyTo(com.jme3.opencl.CommandQueue, com.jme3.opencl.Buffer, long, long, long) }, * sets {@code srcOffset} and {@code destOffset} to zero. */ public void copyTo(CommandQueue queue, Buffer dest, long size) { copyTo(queue, dest, size, 0, 0); }
/** * Alternative version of {@link #write(com.jme3.opencl.CommandQueue, java.nio.ByteBuffer, long, long) }, * sets {@code offset} to zero. */ public void write(CommandQueue queue, ByteBuffer src, long size) { write(queue, src, size, 0); }
/** * Alternative version of {@link #readAsync(com.jme3.opencl.CommandQueue, java.nio.ByteBuffer, long, long) }, * sets {@code offset} to zero. */ public Event readAsync(CommandQueue queue, ByteBuffer dest, long size) { return readAsync(queue, dest, size, 0); }
/** * Alternative version of {@link #read(com.jme3.opencl.CommandQueue, java.nio.ByteBuffer, long, long) }, * sets {@code offset} to zero. */ public void read(CommandQueue queue, ByteBuffer dest, long size) { read(queue, dest, size, 0); }
@Override public String toString() { return "Buffer (" + getSize() + "B)"; }
/** * Alternative version of {@link #mapAsync(com.jme3.opencl.CommandQueue, long, long, com.jme3.opencl.MappingAccess) }, * sets {@code offset} to zero. * <b>Important:</b> The mapped memory MUST be released by calling * {@link #unmap(com.jme3.opencl.CommandQueue, java.nio.ByteBuffer) }. */ public AsyncMapping mapAsync(CommandQueue queue, long size, MappingAccess access) { return mapAsync(queue, size, 0, access); } /**
/** * Alternative version of {@link #copyToAsync(com.jme3.opencl.CommandQueue, com.jme3.opencl.Buffer, long, long, long) }, * sets {@code srcOffset} and {@code destOffset} to zero. */ public Event copyToAsync(CommandQueue queue, Buffer dest, long size) { return copyToAsync(queue, dest, size, 0, 0); }