public class HostMemoryBuffer extends MemoryBuffer
MemoryBuffer.EventHandler, MemoryBuffer.MemoryBufferCleaner
修饰符和类型 | 方法和描述 |
---|---|
static HostMemoryBuffer |
allocate(long bytes)
分配内存,但请务必关闭返回的缓冲区以避免内存泄漏。
|
static HostMemoryBuffer |
allocate(long bytes, boolean preferPinned)
分配内存,但请务必关闭返回的缓冲区以避免内存泄漏。
|
static HostMemoryBuffer |
allocateRaw(long bytes)
分配主机内存,绕过默认分配器。
|
ByteBuffer |
asByteBuffer()
返回一个提供访问底层内存的 ByteBuffer。
|
ByteBuffer |
asByteBuffer(long offset, int length)
返回一个提供访问底层内存的 ByteBuffer。
|
void |
copyFromDeviceBuffer(BaseDeviceMemoryBuffer deviceMemoryBuffer)
同步从 DeviceMemoryBuffer 复制到 HostMemoryBuffer
|
void |
copyFromDeviceBuffer(BaseDeviceMemoryBuffer deviceMemoryBuffer, Cuda.Stream stream)
使用指定的流从 DeviceMemoryBuffer 复制到 HostMemoryBuffer。
|
void |
copyFromDeviceBufferAsync(BaseDeviceMemoryBuffer deviceMemoryBuffer, Cuda.Stream stream)
使用指定的流从 DeviceMemoryBuffer 复制到 HostMemoryBuffer。
|
void |
copyFromHostBuffer(long destOffset, HostMemoryBuffer srcData, long srcOffset, long length)
将给定缓冲区的内容复制到此缓冲区。
|
void |
copyFromStream(long destOffset, InputStream in, long byteLength)
从 in 复制 len 字节到此缓冲区。
|
boolean |
getBoolean(long offset)
返回该偏移量处的布尔值。
|
byte |
getByte(long offset)
返回该偏移量处的字节值。
|
void |
getBytes(byte[] dst, long dstOffset, long srcOffset, long len)
从缓冲区中从偏移量开始复制一组字节到数组。
|
double |
getDouble(long offset)
返回该偏移量处的双精度浮点值。
|
float |
getFloat(long offset)
返回该偏移量处的单精度浮点值。
|
int |
getInt(long offset)
返回该偏移量处的整数值。
|
void |
getInts(int[] dst, long dstIndex, long srcOffset, int count)
从缓冲区中从偏移量开始复制一组整数到数组。
|
long |
getLong(long offset)
返回该偏移量处的长整数值。
|
void |
getLongs(long[] dst, long dstIndex, long srcOffset, int count)
从缓冲区中从偏移量开始复制一组长整数到数组。
|
short |
getShort(long offset)
返回该偏移量处的短整数值。
|
static HostMemoryBuffer |
mapFile(File path, FileChannel.MapMode mode, long offset, long length)
创建一个内存映射到文件的主机缓冲区。
|
void |
printBuffer()
警告:仅用于调试的打印缓冲区方法。
|
void |
printBuffer(int wordsPerRow)
警告:仅用于调试的打印缓冲区方法。
|
void |
setBoolean(long offset, boolean value)
设置该偏移量处的布尔值。
|
void |
setByte(long offset, byte value)
设置该偏移量处的字节值。
|
void |
setBytes(long offset, byte[] data, long srcOffset, long len)
从数组复制一组字节到缓冲区中从偏移量开始的位置。
|
void |
setDouble(long offset, double value)
设置该偏移量处的双精度浮点值。
|
void |
setDoubles(long offset, double[] data, long srcOffset, long len)
从数组复制一组双精度浮点值到缓冲区中从偏移量开始的位置。
|
void |
setFloat(long offset, float value)
设置该偏移量处的单精度浮点值。
|
void |
setFloats(long offset, float[] data, long srcOffset, long len)
从数组复制一组单精度浮点值到缓冲区中从偏移量开始的位置。
|
void |
setInt(long offset, int value)
设置该偏移量处的整数值。
|
void |
setInts(long offset, int[] data, long srcOffset, long len)
从数组复制一组整数到缓冲区中从偏移量开始的位置。
|
void |
setLong(long offset, long value)
设置该偏移量处的长整数值。
|
void |
setLongs(long offset, long[] data, long srcOffset, long len)
从数组复制一组长整数到缓冲区中从偏移量开始的位置。
|
void |
setMemory(long offset, long length, byte value)
在此缓冲区中重复设置值。
|
void |
setShort(long offset, short value)
设置该偏移量处的短整数值。
|
void |
setShorts(long offset, short[] data, long srcOffset, long len)
从数组复制一组短整数到缓冲区中从偏移量开始的位置。
|
HostMemoryBuffer |
slice(long offset, long len)
切割主机缓冲区的一部分。
|
HostMemoryBuffer |
sliceWithCopy(long offset, long len)
切割主机缓冲区的一部分,并实际复制数据。
|
addressOutOfBoundsCheck, close, copyFromMemoryBuffer, copyFromMemoryBufferAsync, getAddress, getEventHandler, getLength, getRefCount, incRefCount, noWarnLeakExpected, setEventHandler, toString
public static HostMemoryBuffer allocate(long bytes, boolean preferPinned)
bytes
- 要分配的字节大小preferPinned
- 如果设置为 true,将尽可能使用固定内存池,并回退到堆外内存。如果设置为 false,分配将始终来自堆外内存。public static HostMemoryBuffer allocate(long bytes)
bytes
- 要分配的字节大小public static HostMemoryBuffer allocateRaw(long bytes)
bytes
- 要分配的字节大小public static HostMemoryBuffer mapFile(File path, FileChannel.MapMode mode, long offset, long length) throws IOException
path
- 要映射到主机内存的文件路径mode
- 映射类型offset
- 映射开始的文件偏移量length
- 要映射的字节数IOException
public final ByteBuffer asByteBuffer()
public final ByteBuffer asByteBuffer(long offset, int length)
offset
- 起始偏移量length
- 包含的字节数。public final void copyFromHostBuffer(long destOffset, HostMemoryBuffer srcData, long srcOffset, long length)
destOffset
- 在此缓冲区中开始复制的目标字节偏移量srcData
- 要从中复制的缓冲区srcOffset
- 在 srcData 中开始复制的源字节偏移量length
- 要复制的字节数public final void copyFromStream(long destOffset, InputStream in, long byteLength) throws IOException
destOffset
- 在此缓冲区中开始复制的目标字节偏移量in
- 要从中复制字节的输入流byteLength
- 要复制的字节数EOFException
- 如果流中没有足够的字节可供复制。IOException
- 如果从流中读取时发生错误。public final byte getByte(long offset)
offset
- - 相对于地址的偏移量public final void setByte(long offset, byte value)
offset
- - 相对于地址的偏移量value
- - 要设置的值public final void getBytes(byte[] dst, long dstOffset, long srcOffset, long len)
dst
- 目标字节数组dstOffset
- 目标数组内的起始偏移量srcOffset
- 此缓冲区内的起始偏移量len
- 要复制的字节数public final void setBytes(long offset, byte[] data, long srcOffset, long len)
offset
- 相对于地址开始复制到的偏移量data
- 要复制的数据。public final short getShort(long offset)
offset
- - 相对于地址的偏移量public final void setShort(long offset, short value)
offset
- - 相对于地址的偏移量value
- - 要设置的值public final void setShorts(long offset, short[] data, long srcOffset, long len)
offset
- 相对于地址开始复制到的偏移量data
- 要复制的数据。srcOffset
- 数据中开始的索引。public final int getInt(long offset)
offset
- - 相对于地址的偏移量public final void getInts(int[] dst, long dstIndex, long srcOffset, int count)
dst
- 目标整数数组dstIndex
- 目标数组内的起始索引srcOffset
- 此缓冲区内的起始偏移量count
- 要复制的整数个数public final void setInt(long offset, int value)
offset
- - 相对于地址的偏移量value
- - 要设置的值public final void setInts(long offset, int[] data, long srcOffset, long len)
offset
- 相对于地址开始复制到的偏移量data
- 要复制的数据。srcOffset
- 数据中开始的索引public final long getLong(long offset)
offset
- - 相对于地址的偏移量public final void setLong(long offset, long value)
offset
- - 相对于地址的偏移量value
- - 要设置的值public final void getLongs(long[] dst, long dstIndex, long srcOffset, int count)
dst
- 目标长整数数组dstIndex
- 目标数组内的起始索引srcOffset
- 此缓冲区内的起始偏移量count
- 要复制的长整数个数public final void setLongs(long offset, long[] data, long srcOffset, long len)
offset
- 相对于地址开始复制到的偏移量data
- 要复制的数据。srcOffset
- 数据中开始的索引。public final float getFloat(long offset)
offset
- - 相对于地址的偏移量public final void setFloat(long offset, float value)
offset
- - 相对于地址的偏移量value
- - 要设置的值public final void setFloats(long offset, float[] data, long srcOffset, long len)
offset
- 相对于地址开始复制到的偏移量data
- 要复制的数据。srcOffset
- 数据中开始的索引public final double getDouble(long offset)
offset
- - 相对于地址的偏移量public final void setDouble(long offset, double value)
offset
- - 相对于地址的偏移量value
- - 要设置的值public final void setDoubles(long offset, double[] data, long srcOffset, long len)
offset
- 相对于地址开始复制到的偏移量data
- 要复制的数据。srcOffset
- 数据中开始的索引public final boolean getBoolean(long offset)
offset
- - 相对于地址的偏移量public final void setBoolean(long offset, boolean value)
offset
- - 相对于地址的偏移量value
- - 要设置的值public final void setMemory(long offset, long length, byte value)
offset
- - 相对于地址的偏移量length
- - 要设置的字节数value
- - 要设置的值public final void copyFromDeviceBuffer(BaseDeviceMemoryBuffer deviceMemoryBuffer)
deviceMemoryBuffer
- 要从中复制数据的缓冲区public final void copyFromDeviceBuffer(BaseDeviceMemoryBuffer deviceMemoryBuffer, Cuda.Stream stream)
deviceMemoryBuffer
- 要从中复制数据的缓冲区stream
- 要使用的 CUDA 流public final void copyFromDeviceBufferAsync(BaseDeviceMemoryBuffer deviceMemoryBuffer, Cuda.Stream stream)
deviceMemoryBuffer
- 要从中复制数据的缓冲区stream
- 要使用的 CUDA 流public final HostMemoryBuffer slice(long offset, long len)
MemoryBuffer
中的 slice
offset
- 切割的起始位置。len
- 要切割的字节数public final HostMemoryBuffer sliceWithCopy(long offset, long len)
offset
- 切割的起始位置。len
- 要切割的字节数public void printBuffer()
public void printBuffer(int wordsPerRow)
wordsPerRow
- 每行要打印的 32 位字数。版权所有 © 2025。保留所有权利。