當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。