当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python cudf.DataFrame.apply_chunks用法及代码示例


用法:

DataFrame.apply_chunks(func, incols, outcols, kwargs=None, pessimistic_nulls=True, chunks=None, blkct=None, tpb=None)

使用用户提供的函数转换用户指定的块。

参数

dfDataFrame

源 DataFrame 。

func函数

将在 CUDA GPU 上执行的转换函数。

incols: list or dict

与函数参数匹配的输入列的名称列表。或者,将输入列名称映射到它们相应的函数参数的字典,例如 {‘col1’: ‘arg1’}。

outcols: dict

输出列名称及其 dtype 的字典。

kwargs: dict

name-value 的额外参数。这些值直接传递给函数。

pessimistic_nullsbool

当任何相应的输入为空时,apply_rows 输出是否应为空。如果为 False,则所有输出都将为非空,但将是对基础列数据应用 func 的结果,这可能是垃圾。

chunks整数或Series-like

如果它是 int ,则它是块大小。如果它是一个数组,它包含每个块开始的整数偏移量。对于任何 i + 1 < chunks.size ,块 i-th 的块的跨度是 data[chunks[i] : chunks[i + 1]] ;或者,data[chunks[i]:] 用于 i == len(chunks) - 1

tpb诠释;可选的

底层内核的threads-per-block。如果未指定(默认),则使用 Numba .forall(...) 内置查询 CUDA 驱动程序 API 以确定最佳内核启动配置。指定 1 以模拟每个块的串行执行。这是一个很好的起点,但效率低下。它的最大可能值受可用 CUDA GPU 资源的限制。

blkct诠释;可选的

底层内核的块数。如果未指定(默认)和 tpb 未指定(默认),则使用 Numba .forall(...) 内置查询 CUDA 驱动程序 API 以确定最佳内核启动配置。如果未指定(默认)并且指定了tpb,则使用chunks 作为块数。

例子

对于 tpb > 1 , functpb 线程数同时执行。要访问线程 ID 和计数,请分别使用 numba.cuda.threadIdx.xnumba.cuda.blockDim.x (参见 numba CUDA kernel documentation )。

在下面的示例中,kernel 在每个指定的块上同时调用。 kernel 计算块的相应输出。

通过循环 range(cuda.threadIdx.x, in1.size, cuda.blockDim.x) 范围,kernel 函数可以有效地与任何 tpb 一起使用。

>>> from numba import cuda
>>> @cuda.jit
... def kernel(in1, in2, in3, out1):
...      for i in range(cuda.threadIdx.x, in1.size, cuda.blockDim.x):
...          x = in1[i]
...          y = in2[i]
...          z = in3[i]
...          out1[i] = x * y + z

相关用法


注:本文由纯净天空筛选整理自rapids.ai大神的英文原创作品 cudf.DataFrame.apply_chunks。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。