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. Web Essentials之通用功能

    返回Web Essentials功能目录 本篇目录 功能 快捷方式 WEIgnore 功能 通用功能应用于很多方面. 设置 所有的设置都可以在VS选择工具 -> 选项 -> Web Ess ...

  2. Dynamic CRM 2013学习笔记(十二)实现子表合计(汇总,求和)功能的通用插件

    上一篇 Dynamic CRM 2013学习笔记(十一)利用Javascript实现子表合计(汇总,求和)功能 , 介绍了如何用js来实现子表合计功能,这种方法要求在各个表单上添加js方法,如果有很多 ...

  3. CustomDialog——一个多功能、通用、可自定义的Dialog

    CustomDialog--一个多功能.通用.可自定义的Dialog  依赖 compile 'com.github.SiberiaDante:CustomDialog:v1.0.1'  说明[Cus ...

  4. VB将MSHFlexGrid数据导出到Excel文件通用功能

    1.通用导出Excel功能. 2.将 MSHFlexGrid数据导出到Excel文件通用功能. 3.具体代码如下: '将下列代码保存到一模块文件中,调用方法:Export fgrid1,cd1 Pub ...

  5. WPF4.5 中的新增功能和增强功能的信息

    本主题包含有关 Windows Presentation Foundation (WPF) 版本 4.5 中的新增功能和增强功能的信息. 本主题包含以下各节: 功能区控件 改善性能,当显示大时设置分组 ...

  6. JMessage是让App 同时集成 Push 功能与 IM 功能最完美的方案

    历经几个月的沉寂,以及兄弟们的奋战,极光推送的兄弟产品诞生了:极光IM,英文名 JMessage. 极光IM 是我们团队基于大量客户的需求反馈,在很多客户的殷切期盼下所开发的.团队成员一方面要支撑极光 ...

  7. spring boot集成websocket实现聊天功能和监控功能

    本文参考了这位兄台的文章: https://blog.csdn.net/ffj0721/article/details/82630134 项目源码url: https://github.com/zhz ...

  8. (三)微信小程序首页的分类功能和搜索功能的实现笔记

    就在昨天,微信宣布了微信小程序开发者工具新增“云开发”功能 下载最新的开发者工具,现在无需服务器即可实现小程序的快速迭代! 分类功能和搜索功能的效果图 1.首页分类功能的实现 boxtwo方法(.js ...

  9. X5webview完美去掉分享功能和缓存功能(2)

    前段时间比较忙,没有来得及写完如何将X5WEBVIEW分享功能和缓存功能屏蔽,下面直接来干货,上代码. 1.首先在布局文件中增加一个全屏的布局, <!-- 视频全屏--> <Fram ...

随机推荐

  1. hdu4067 费用流(混合欧拉的宽展和延伸)

    题意:        给以一个图,每个有向边都有两个权值,a,b其中a是保留这条边的花费,b是删除这条边的花费,让你删去一些边使图满足一下要求: (1)只有一个起点和一个终点 (2)所有的边都是又向的 ...

  2. 基于三层交换机的VRRP技术--MSTP、VRRP的综合运用

    MSTP (多生成树) 每个VLAN或者几个VLAN拥有一颗生成树,基于实例的生成树.instance 1.instance 2 每个实例拥有一颗生成树.MSTP可以实现多VLAN 的负载分担,可以实 ...

  3. UVA11722(见面概率)

    题意:       有一个车站,两个人想要在这个车站见面,第一个人会在t1到t2之间的任意一个时刻到(时间上任意一点概率一样),并且停留w时间,第二个人是s2到s2的时间段到,停留也是w,问两个人的见 ...

  4. 逆向 stdio.h 函数库 fopen 函数(调试版本)

    0x01 fopen 函数 函数原型:FILE *fopen(const char *filename, const char *mode) 返回值为 FILE 类型 函数功能:使用给定的模式 mod ...

  5. 【TensorFlow】使用Object Detection API 训练自己的数据集报错

    错误1:  训练正常开始后,能正常看到日志输出,但中途报错 ResourceExhaustedError (see above for traceback): OOM when allocating ...

  6. (四)Jira Api对接:缺陷分析和任务分析

    迭代进行期间或者结束后,在我们的测试日报或者测试报告中需要体现缺陷详细情况,甚至大家工作效率情况.本文就讨论下如何通过jira api获取缺陷信息并进行分析,同时获取需求子任务情况来了解测试和开发的工 ...

  7. pip安装模块或者更新出现问题Error:Could not install packages due to an EnvironmentError

    问题分析 出现此问题大致的原因: 就是包安装的位置没有读写的权限,这个多半是因为安装python的时候安装在了C盘,或者其他programs这类的文件夹里 或者就是环境变量的设置的安装位置的问题,导致 ...

  8. 剑指offer 数组中的重复数字

    问题描述: 在长度为n的数组中,所有的元素都是0到n-1的范围内. 数组中的某些数字是重复的,但不知道有几个重复的数字,也不知道重复了几次,请找出任意重复的数字. 例如,输入长度为7的数组{2,3,1 ...

  9. 排坑&#183;IPhone&IOS中不兼容正则中的断言匹配

    阅文时长 | 1.14分钟 字数统计 | 1834.4字符 主要内容 | 1.问题切入 2.什么是断言匹配 3.断言匹配的替换方案 4.声明与参考资料 『排坑·IPhone&IOS中不兼容正则 ...

  10. [设计模式] 设计模式课程(十六)-- 备忘录模式(Memento)

    概述 也叫快照(SnapShot) 属于行为类设计模式 允许在不暴露对象实现细节的情况下保存和恢复对象之前的状态 软件构建过程中,某些对象的状态在转换过程中,可能由于某种需要,要求程序能回溯到对象之前 ...