日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

CUDA功能和通用功能

發(fā)布時(shí)間:2023/11/28 生活经验 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CUDA功能和通用功能 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

CUDA功能和通用功能
本文描述了類似于CUDA ufunc的對(duì)象。
為了支持CUDA程序的編程模式,CUDA Vectorize和GUVectorize無法產(chǎn)生常規(guī)的ufunc。而是返回類似ufunc的對(duì)象。該對(duì)象是一個(gè)近似的對(duì)象,但與常規(guī)的NumPy ufunc不完全兼容。CUDA ufunc增加了對(duì)傳遞設(shè)備內(nèi)陣列(已在GPU設(shè)備上)的支持,以減少PCI Express總線上的流量。它還接受用于以異步模式啟動(dòng)的stream關(guān)鍵字。
示例:基本示例
import math
from numba import vectorize, cuda
import numpy as np

@vectorize([‘float32(float32, float32, float32)’,
‘float64(float64, float64, float64)’],
target=‘cuda’)
def cu_discriminant(a, b, c):
return math.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
示例:調(diào)用設(shè)備功能
所有CUDA ufunc內(nèi)核都可以調(diào)用其他CUDA設(shè)備功能:
from numba import vectorize, cuda

define a device function

@cuda.jit(‘float32(float32, float32, float32)’, device=True, inline=True)
def cu_device_fn(x, y, z):
return x ** y / z

define a ufunc that calls our device function

@vectorize([‘float32(float32, float32, float32)’], target=‘cuda’)
def cu_ufunc(x, y, z):
return cu_device_fn(x, y, z)
通用CUDA功能
類似于CUDA ufunc功能,可以使用CUDA在GPU上執(zhí)行通用ufunc。這可以通過以下方式完成:
from numba import guvectorize

@guvectorize([‘void(float32[:,:], float32[:,:], float32[:,:])’],
‘(m,n),(n,p)->(m,p)’, target=‘cuda’)
def matmulcore(A, B, C):

有時(shí)gufunc內(nèi)核會(huì)使用過多的GPU資源,這可能會(huì)導(dǎo)致內(nèi)核啟動(dòng)失敗。用戶可以通過在已編譯的gufunc對(duì)象上設(shè)置max_blocksize屬性來顯式控制線程塊的最大size。
from numba import guvectorize

@guvectorize(…, target=‘cuda’)
def very_complex_kernel(A, B, C):

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

總結(jié)

以上是生活随笔為你收集整理的CUDA功能和通用功能的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。