CUDA功能和通用功能
本文描述了类似于CUDA ufunc的对象。
为了支持CUDA程序的编程模式,CUDA Vectorize和GUVectorize无法产生常规的ufunc。而是返回类似ufunc的对象。该对象是一个近似的对象,但与常规的NumPy ufunc不完全兼容。CUDA ufunc增加了对传递设备内阵列(已在GPU设备上)的支持,以减少PCI Express总线上的流量。它还接受用于以异步模式启动的stream关键字。
示例:基本示例
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
示例:调用设备功能
所有CUDA ufunc内核都可以调用其他CUDA设备功能:
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上执行通用ufunc。这可以通过以下方式完成:
from numba import guvectorize

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

有时gufunc内核会使用过多的GPU资源,这可能会导致内核启动失败。用户可以通过在已编译的gufunc对象上设置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

CUDA功能和通用功能相关推荐

  1. 华为如何拍火烧云_华为手机拍照功能介绍-设置通用功能

    相比起OPPO手机之类的拍照手机,华为手机的拍照功能很多,对于懂得使用的人来说这些功能可以让他们拍出好照片,然而对于那些不会使用这些功能的人来说,拍出来的照片还不如OPPO之类的拍照手机拍出来的好看. ...

  2. 借Google Guava学习发现和开发通用功能模块

    如何发现通用的功能模块? 很多人觉得做业务开发没有挑战,实际上,做业务开发也会涉及很多非业务功能的开发,比如我们前面讲到的 ID 生成器.性能计数器.EventBus.DI 容器,以及后面会讲到的限流 ...

  3. 手游测试之新功能的通用测试点

    当我们测试手游的一个新功能的时候,除了具体的功能需求外,也需要考虑测试点,这篇文章的目的就是为了提高测试点的覆盖率,总结的一些手游测试的通用测试点,可以拿来直接用. 一.UI 1.按钮不可拖动 按钮除 ...

  4. 微信公众号报修系统常见通用功能开发

    微信公众号报修系统常见通用功能开发 51报修系统是一款基于微信的用户报修.维修师傅接单.公司进行管理的一站式维修服务平台,实现报修.派单.接单.支付.评价.回访等功能.涵盖了各类生活维修服务,包括水电 ...

  5. 计算机操作中通用的快捷键及其功能,ZDM快捷键大全(通用功能+专业功能).pdf

    ZDM 水利制图软件快捷键大全 (通用功能类) 绘图类 画线 LL 交点插矩园 JDCZ 画梯形 TX 画扇形 SX 画图折断线 DMX 画圆柱折断线 YDX 标记线 BZLINE 端点连线 DXL ...

  6. 公司的Java框架应具备的通用功能

    以前在学校的时候自己以为是不是每个做JAVA开发的公司每次做项目的时候都要搭建一个SSH框架呢,工作之后才发现每个公司都有自己的一套框架,要不是在SSH基础上,要不是在SSI基础上进行了符合自己公司需 ...

  7. 整体功能大于部分功能之和_功能性思考,第3部分

    关于本系列 本系列旨在将您的观点重新定位为实用的心态,帮助您以新的方式看待常见问题并找到改善日常编码的方式. 它探讨了函数式编程的概念,允许在Java语言中进行函数式编程的框架,在JVM上运行的函数式 ...

  8. Aurelia与AngularJS 1.x —按功能比较的功能

    2016年7月23日更新 :有人对这篇文章将Aurelia与Angular 1.x(而不是Angular 2)进行了比较的评论. 这是设计使然. 虽然Aurelia vs Angular 2的确是一个 ...

  9. 隐藏esp_仅需一分钟教你看懂汽车内的隐藏功能,哪些功能是你不知道的?

    车内的按键多种多样,而且越高档的车,按键就越多.除了少数国产车,绝大部分车辆的按键标识都是用英文字母表示,从而导致不少车主只能通过查看说明书才知道是什么意思. 今天小编整理了车内各种按键标识,不是很清 ...

最新文章

  1. eax ax ah al
  2. 20141016--for 菱形
  3. 【Linux shell】sed实践(2)
  4. yolov3yolov4yolov5比较
  5. Intellij Idea/Webstorm/Phpstorm 的高效快捷键
  6. 给销售范围组合分配定价过程
  7. Python Redis pipeline操作(秒杀实现)
  8. Android 中如何计算 App 的启动时间?
  9. 入局视频会议市场 揭秘“腾讯会议”背后的创新黑科技
  10. %3c故乡%3e中语言描写的作用是什么,第三单元考试题
  11. URL重写步骤 【有用】
  12. mac python安装第三方库jupyter_Mac搭建jupyter环境
  13. android 布局属性
  14. android 3.10. 内核,编译android 3.10内核源码时出错
  15. hbase基础操作命令
  16. python 对比文件内容差异_Python-文件差异对比
  17. [设备驱动] 最简单的内核设备驱动--字符驱动
  18. 让古天乐心动的这位女星,鼻子塌却美得风华绝代
  19. 图像形态学处理(3)
  20. copy与deepcopy、赋值的区别

热门文章

  1. 在装有Ubuntu16.04的VMware虚拟机下安装OpenCV3.2.0
  2. tf.expand_dims()
  3. 适用于CUDA GPU的Numba例子
  4. Vitis-AI集成
  5. 2021年大数据Hadoop(二十七):YARN运行流程
  6. 2021年大数据常用语言Scala(十九):基础语法学习 iterator迭代器
  7. 2021年大数据Spark(四十九):Structured Streaming 整合 Kafka
  8. DCN-2655同异步端口
  9. mysql数据库是一个软件呐_15款好用的mysql管理软件
  10. HarmonyOS 使用DevEcoStudio创建一个xml布局以及引用布局