public class JCudfSerialization extends Object
目标是利用内置的 Java 通信通道,尽可能快速高效地将数据从本地 GPU 传输到远程 GPU。CUDF 不同版本之间不保证兼容性。这样做是为了让我们能够在内部内存布局和格式发生变化时进行适应。
此版本优化了内存传输,因此在将数据重新放入 GPU 时会尽量减少传输次数。这意味着它会将一个较大的内存缓冲区切片成结果 ColumnVector 使用的较小缓冲区。缺点是通常在所有 ColumnVector 关闭之前,任何内存都无法释放。假设这不会成为问题,因为为了处理效率,数据传输后可能会与其他进程中的类似批次合并到一个更大的缓冲区中。
修饰符和类型 | 类和描述 |
---|---|
静态类 |
JCudfSerialization.HostConcatResult
用于保存主机端连接的结果头部和缓冲区对的类
|
静态类 |
JCudfSerialization.SerializedColumnHeader
保存关于序列化列的元数据。
|
静态类 |
JCudfSerialization.SerializedTableHeader
保存关于序列化表的元数据。
|
静态类 |
JCudfSerialization.TableAndRowCountPair
保存反序列化表的结果。
|
构造器和描述 |
---|
JCudfSerialization() |
public static long getSerializedSizeInBytes(HostColumnVector[] columns, long rowOffset, long numRows)
columns
- 要序列化的列。rowOffset
- 要序列化的起始行。numRows
- 要序列化的行数。public static void writeToStream(Table t, OutputStream out, long rowOffset, long numRows) throws IOException
t
- 要写入的表。out
- 写入序列化表的流。rowOffset
- 要写入的起始行。numRows
- 要写入的行数。IOException
public static void writeToStream(ColumnVector[] columns, OutputStream out, long rowOffset, long numRows) throws IOException
columns
- 要写入的列。out
- 写入序列化表的流。rowOffset
- 要写入的起始行。numRows
- 要写入的行数。IOException
public static void writeToStream(HostColumnVector[] columns, OutputStream out, long rowOffset, long numRows) throws IOException
columns
- 要写入的列。out
- 写入序列化表的流。rowOffset
- 要写入的起始行。numRows
- 要写入的行数。IOException
public static void writeRowsToStream(OutputStream out, long numRows) throws IOException
out
- 写入序列化表的流。numRows
- 要写入的行数。IOException
public static void writeConcatedStream(JCudfSerialization.SerializedTableHeader[] headers, HostMemoryBuffer[] dataBuffers, OutputStream out) throws IOException
headers
- 从多个流解析出的头部信息。dataBuffers
- 包含数据的缓冲区数组,每个头部对应一个缓冲区。out
- 写入数据的目标。IOException
- 出现任何错误时。public static Table readAndConcat(JCudfSerialization.SerializedTableHeader[] headers, HostMemoryBuffer[] dataBuffers) throws IOException
IOException
public static ContiguousTable concatToContiguousTable(JCudfSerialization.SerializedTableHeader[] headers, HostMemoryBuffer[] dataBuffers) throws IOException
headers
- 与主机表缓冲区对应的表头部信息dataBuffers
- 每个待连接输入表的主机表缓冲区IOException
public static JCudfSerialization.HostConcatResult concatToHostBuffer(JCudfSerialization.SerializedTableHeader[] headers, HostMemoryBuffer[] dataBuffers, HostMemoryAllocator hostMemoryAllocator) throws IOException
headers
- 与主机表缓冲区对应的表头部信息dataBuffers
- 每个待连接输入表的主机表缓冲区hostMemoryAllocator
- 主机内存缓冲区的分配器IOException
public static JCudfSerialization.HostConcatResult concatToHostBuffer(JCudfSerialization.SerializedTableHeader[] headers, HostMemoryBuffer[] dataBuffers) throws IOException
IOException
public static HostColumnVector[] unpackHostColumnVectors(JCudfSerialization.SerializedTableHeader header, HostMemoryBuffer hostBuffer)
header
- 序列化的表头部信息hostBuffer
- 包含序列化表中所有列数据的缓冲区public static void readTableIntoBuffer(InputStream in, JCudfSerialization.SerializedTableHeader header, HostMemoryBuffer buffer) throws IOException
in
- 读取数据的流。header
- 刚刚完成读取的头部信息。buffer
- 写入数据的缓冲区。如果缓冲区没有足够的空间存储数据,则不会读取数据,并且 header 中的 dataRead 仍将设置为 false。IOException
public static JCudfSerialization.TableAndRowCountPair readTableFrom(JCudfSerialization.SerializedTableHeader header, HostMemoryBuffer hostBuffer)
public static JCudfSerialization.TableAndRowCountPair readTableFrom(InputStream in, HostMemoryAllocator hostMemoryAllocator) throws IOException
in
- 读取表数据的流。hostMemoryAllocator
- 用于中间主机内存缓冲区的主机内存分配器IOException
- 出现任何错误时。EOFException
- 如果数据流在处理过程中意外结束。public static JCudfSerialization.TableAndRowCountPair readTableFrom(InputStream in) throws IOException
IOException
版权所有 © 2025。保留所有权利。