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()
相關文章
- oracle中資料倉儲的一些主要計算函式Oracle函式
- 計算日期的函式函式
- 從雲端計算到函式計算函式
- 函式計算——應用初探函式
- Mysql中日期計算函式MySql函式
- 遷移 Express 到函式計算Express函式
- 溫溼度計算露點函式函式
- 【機器學習】SVM核函式的計算機器學習函式
- 計算 CRC32 的逆函式函式
- 函式計算-HelloWorld應用開發函式
- 計算幾何常用的函式/方法函式
- 萬能的計算日期函式(轉)函式
- 關於分散式計算的一些概念分散式
- 外層函式的變數直接被巢狀函式引用計算函式變數巢狀
- SQL 10 函式 3 日期時間函式 - 5 計算日期差額SQL函式
- 函式計算支援 MySQL 例項繫結函式MySql
- Serverless 解惑——函式計算如何安裝字型Server函式
- 基於函式計算的 BFF 架構函式架構
- 遷移 Spring Boot 到函式計算Spring Boot函式
- Serverless 實戰 —— 函式計算 + Typescript 實踐Server函式TypeScript
- 筆記:PostgreSQL 、Node.js 、函式計算筆記SQLNode.js函式
- matchTemplate函式各個方法的計算公式函式公式
- Oracle 函式大全(字串函式,數學函式,日期函式,邏輯運算函式,其他函式)Oracle函式字串
- C語言程式設計>第八週 ② 編寫函式fun,函式的功能是:根據以下公式計算,計算結果作為函式值返回。C語言程式設計函式公式
- php的一些函式PHP函式
- 一些有用的函式函式
- 函式計算Python連線SQLServer小結函式PythonSQLServer
- 函式計算實踐——一個應用案例函式
- 計算誤差函式的積分--erf(x)函式
- css positioning計算和jquery對應函式CSSjQuery函式
- MySql中SUM函式計算錯誤問題MySql函式
- 阿里雲 函式計算 域名配置問題阿里函式
- 一些簡單的函式函式
- oracle的一些函式(一)Oracle函式
- javascript 冪函式運算JavaScript函式
- 利用CORDIC演算法計算三角函式演算法函式
- c++虛擬函式實現計算表示式子C++函式
- TDengine 2.6 正式釋出,新增大量計算函式函式