CUDA功能和通用功能

2022-02-03 11:21:20 字數 2498 閱讀 8774

cuda功能和通用功能

本文描述了類似於cuda ufunc的物件。

為了支援cuda程式的程式設計模式,cuda vectorize和guvectorize無法產生常規的ufunc。而是返回類似ufunc的物件。該物件是乙個近似的物件,但與常規的numpy ufunc不完全相容。cuda ufunc增加了對傳遞裝置內陣列(已在gpu裝置上)的支援,以減少pci express匯流排上的流量。它還接受用於以非同步模式啟動的stream關鍵字。

示例:基本示例

importmath

fromnumbaimportvectorize, cuda

importnumpyasnp

@vectorize(['float32(float32, float32, float32)',

'float64(float64, float64, float64)'],

target='cuda')

defcu_discriminant(a, b, c):

returnmath.sqrt(b ** 2 - 4 * a * c)

n = 10000

dtype = np.float32

# prepare the input

a = np.array(np.random.sample(n), dtype=dtype)

b = np.array(np.random.sample(n) + 10, dtype=dtype)

c = np.array(np.random.sample(n), dtype=dtype)

d = cu_discriminant(a, b, c)

print(d)  # print result

示例:呼叫裝置功能

所有cuda ufunc核心都可以呼叫其他cuda裝置功能:

fromnumbaimportvectorize, cuda

# define a device function

@cuda.jit('float32(float32, float32, float32)', device=true, inline=true)

defcu_device_fn(x, y, z):

returnx ** y / z

# define a ufunc that calls our device function

@vectorize(['float32(float32, float32, float32)'], target='cuda')

defcu_ufunc(x, y, z):

returncu_device_fn(x, y, z)

通用cuda功能

類似於cuda ufunc功能,可以使用cuda在gpu上執行通用ufunc。這可以通過以下方式完成:

fromnumbaimportguvectorize

@guvectorize(['void(float32[:,:], float32[:,:], float32[:,:])'],

'(m,n),(n,p)->(m,p)', target='cuda')

defmatmulcore(a, b, c):

...有時gufunc核心會使用過多的gpu資源,這可能會導致核心啟動失敗。使用者可以通過在已編譯的gufunc物件上設定max_blocksize屬性來顯式控制線程塊的最大size。

fromnumbaimportguvectorize

@guvectorize(..., target='cuda')

defvery_complex_kernel(a, b, c):

...very_complex_kernel.max_blocksize = 32  # limits to 32 threads per block

通用功能點

1.介面 1 列表的更新 新增 刪除 排序等操作 各種操作後的選擇行 2 windows選單操作 3 功能介面常用的功能點 增 刪 改 列表查詢 詳細查詢 重新整理 4 介面顯示的元素通過資料庫獲得,如按鈕名稱 2.功能 1 系統的使用 1 使用者 2 許可權 3 登陸 4 系統設定 a.基礎資料維...

PG通用 常用 功能

檢視各個表所占用記憶體 select table schema table name as table full name,pg size pretty pg total relation size table schema table name as size from information s...

Web Essentials之通用功能

返回web essentials功能目錄 通用功能應用於很多方面。設定所有的設定都可以在vs選擇工具 選項 web essentials中找到 解決方案作用域設定 設定可以是全域性的或者針對某些特定的解決方案。通過單獨解決方案作用域設定,你可以確保所有的團隊成員都在使用相同的設定。要開啟解決方案的設...