pycuda-一些計算函式
單通自定義表示式評估
評估GPUArray
例項上涉及的表示式可能有些低效,因為為每個中間結果建立了一個新的臨時表。模組pycuda.elementwise
中的功能包含有助於生成核心的工具,這些核心在一次傳遞中評估一個或多個運算元上的多階段表示式。
class pycuda.elementwise.
ElementwiseKernel
(arguments,operation,name =“kernel”,keep = False,options = [],preamble =“” )
如果該引數是向量,則生成一個帶有許多標量或向量引數的核心,並對其引數的每個條目 執行標量運算。
arguments被指定為格式化為C引數列表的字串。 operation被指定為C賦值語句,沒有分號。運算中的向量應該由變數i索引。
name指定編譯核心的名稱,keep 和options未經修改地傳遞給pycuda.compiler.SourceModule
。
preamble指定在元素核心規範之前包含的一些原始碼。您可以使用它來包含其他檔案和/或定義操作使用的函式。
__call__
(* args,range = None,slice = None )
呼叫生成的標量核心。引數可以是標量或 GPUArray
例項。
如果範圍給出,它必須是一個slice
物件,並指定索引的範圍我的量,操作被執行。
如果切片中給出,它必須是一個slice
物件,並指定索引的範圍我的量,操作進行時,截斷到容器上。此外,slice可能包含相對於陣列末尾的索引的負索引。
如果給出了stream,它必須是一個pycuda.driver.Stream
物件,執行將被序列化。
這是一個用法示例:
import pycuda.gpuarray as gpuarray import pycuda.driver as cuda import pycuda.autoinit import numpy from pycuda.curandom import rand as curand a_gpu = curand((50,)) b_gpu = curand((50,)) from pycuda.elementwise import ElementwiseKernel lin_comb = ElementwiseKernel( "float a, float *x, float b, float *y, float *z", "z[i] = a*x[i] + b*y[i]", "linear_combination") c_gpu = gpuarray.empty_like(a_gpu) lin_comb(5, a_gpu, 6, b_gpu, c_gpu) import numpy.linalg as la assert la.norm((c_gpu - (5*a_gpu+6*b_gpu)).get()) < 1e-5
(您可以examples/demo_elementwise.py
在PyCuda發行版中找到此示例。)
自定義縮減
class pycuda.reduction.
ReductionKernel
(dtype_out,neutral,reduce_expr,map_expr = None,arguments = None,name =“reduce_kernel”,keep = False,options = [],preamble =“”,allocator = None )
生成一個帶有多個標量或向量引數 (至少一個向量引數)的核心,對vector引數的每個條目執行map_expr,然後對其結果執行reduce_expr。 中性作為初始值。preamble提供了在實際的簡化核心程式碼之前新增預處理程式指令和其他程式碼(如輔助函式)的可能性。
map_expr中的向量應該由變數i索引。reduce_expr 使用形式值“a”和“b”來指示二進位制縮減操作的兩個運算元。如果未指定map_expr,則會自動假定“in [i]” - 因此只存在一個輸入引數。
dtype_out指定numpy.dtype
執行縮減的位置以及返回結果的位置。中性被指定為float或整數,格式為string。reduce_expr和 map_expr被指定為字串格式化的操作,引數 被指定為格式化為C引數列表的字串。name指定編譯核心的名稱,keep和options未經修改地傳遞給pycuda.compiler.SourceModule
。preamble被指定為一串程式碼。
這是一個用法示例:
a = gpuarray.arange(400, dtype=numpy.float32) b = gpuarray.arange(400, dtype=numpy.float32) krnl = ReductionKernel(numpy.float32, neutral="0", reduce_expr="a+b", map_expr="x[i]*y[i]", arguments="float *x, float *y") my_dot_prod = krnl(a, b).get()
相關文章
- 函式計算——應用初探函式
- 從雲端計算到函式計算函式
- 遷移 Express 到函式計算Express函式
- 溫溼度計算露點函式函式
- 遷移 Spring Boot 到函式計算Spring Boot函式
- 函式計算-HelloWorld應用開發函式
- 計算 CRC32 的逆函式函式
- 關於分散式計算的一些概念分散式
- 外層函式的變數直接被巢狀函式引用計算函式變數巢狀
- 函式計算Python連線SQLServer小結函式PythonSQLServer
- 阿里雲 函式計算 域名配置問題阿里函式
- Serverless 實戰 —— 函式計算 + Typescript 實踐Server函式TypeScript
- 函式計算支援 MySQL 例項繫結函式MySql
- Serverless 解惑——函式計算如何安裝字型Server函式
- 基於函式計算的 BFF 架構函式架構
- 筆記:PostgreSQL 、Node.js 、函式計算筆記SQLNode.js函式
- matchTemplate函式各個方法的計算公式函式公式
- C語言程式設計>第八週 ② 編寫函式fun,函式的功能是:根據以下公式計算,計算結果作為函式值返回。C語言程式設計函式公式
- php的一些函式PHP函式
- MySql中SUM函式計算錯誤問題MySql函式
- 阿里雲函式計算 VSCode 使用,及部署 Docusaurus阿里函式VSCode
- 函式計算實踐——一個應用案例函式
- 製作表格統計函式計算Excel 2021簡體中文函式Excel
- 部署基於pythonwsgiweb框架的工程到函式計算PythonWeb框架函式
- GO語言————6.11 計算函式執行時間Go函式
- 函式計算安裝依賴庫方法小結函式
- 快速遷移 Next.js 應用到函式計算JS函式
- 基於阿里雲函式計算實現AI推理阿里函式AI
- 基於函式計算快速搭建Django Blog部落格函式Django
- Serverless 在阿里雲函式計算中的實踐Server阿里函式
- TDengine 2.6 正式釋出,新增大量計算函式函式
- 陣列操作,計算組元素的極值函式陣列函式
- 利用CORDIC演算法計算三角函式演算法函式
- c++虛擬函式實現計算表示式子C++函式
- 專案裡的一些小函式函式
- 函式計算工具鏈新成員——FunLocal釋出啦函式
- 開發函式計算的正確姿勢 —— 爬蟲函式爬蟲
- 如何在函式計算內部中自定義DNS解析函式DNS