10个使用Numba CUDA进行编程的例子

以下是10个使用Numba CUDA进行编程的例子,这些例子涵盖了基本的向量加法、矩阵乘法以及其他一些常见操作:

  1. 向量加法
from numba import cuda
import numpy as np
@cuda.jit
def vector_add(a, b, c):i = cuda.grid(1)if i < len(a):c[i] = a[i] + b[i]
a = np.array([1, 2, 3], dtype=np.float32)
b = np.array([4, 5, 6], dtype=np.float32)
c = np.zeros_like(a)
threads_per_block = 32
blocks_per_grid = (len(a) + (threads_per_block - 1)) // threads_per_block
vector_add[blocks_per_grid, threads_per_block](a, b, c)
print(c)
  1. 矩阵乘法
@cuda.jit
def matmul(A, B, C):i, j = cuda.grid(2)if i < C.shape[0] and j < C.shape[1]:tmp = 0.for k in range(A.shape[1]):tmp += A[i, k] * B[k, j]C[i, j] = tmp
A = np.array([[1, 2], [3, 4]], dtype=np.float32)
B = np.array([[5, 6], [7, 8]], dtype=np.float32)
C = np.zeros((2, 2), dtype=np.float32)
threads_per_block = (16, 16)
blocks_per_grid_x = math.ceil(A.shape[0] / threads_per_block[0])
blocks_per_grid_y = math.ceil(B.shape[1] / threads_per_block[1])
blocks_per_grid = (blocks_per_grid_x, blocks_per_grid_y)
matmul[blocks_per_grid, threads_per_block](A, B, C)
print(C)
  1. 向量点乘
@cuda.jit
def dot_product(a, b, result):i = cuda.grid(1)tmp = 0.0if i < a.shape[0]:tmp = a[i] * b[i]cuda.atomic.add(result, 0, tmp)
a = np.array([1, 2, 3], dtype=np.float32)
b = np.array([4, 5, 6], dtype=np.float32)
result = np.zeros(1, dtype=np.float32)
threads_per_block = 32
blocks_per_grid = (len(a) + (threads_per_block - 1)) // threads_per_block
dot_product[blocks_per_grid, threads_per_block](a, b, result)
print(result[0])
  1. 向量乘法
@cuda.jit
def vector_multiply(a, b, c):i = cuda.grid(1)if i < len(a):c[i] = a[i] * b[i]
# 同向量加法示例中的初始化和调用方式
  1. 向量除法
@cuda.jit
def vector_divide(a, b, c):i = cuda.grid(1)if i < len(a):c[i] = a[i] / b[i]
# 同向量加法示例中的初始化和调用方式
  1. 向量求和
@cuda.jit
def vector_sum(a, result):i = cuda.grid(1)tmp = 0.0if i < a.shape[0]:tmp = a[i]cuda.atomic.add(result, 0, tmp)
# 同向量点乘示例中的初始化和调用方式
  1. 向量求最大值
@cuda.jit
def vector_max(a, result):i = cuda.grid(1)if i < a.shape[0]:cuda.atomic.max(result, 0, a[i])
# 同向量点乘示例中的初始化和调用方式
  1. 向量求最小值
@cuda.jit
def vector_min(a, result):i = cuda.grid(1)if i < a.shape[0]:cuda.atomic.min(result, 0, a[i])
# 同向量点乘示例中的初始化和调用方式
  1. 向量排序(冒泡排序)
@cuda.jit
def bubble_sort(arr):i = cuda.grid(1)n = arr.shape[0]if i < n:for j in range(n - 1):if arr[i] > arr[j]:arr[i], arr[j] = arr[j], arr[i]
# 同向量加法示例中的初始化

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/45375.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32智能交通监测系统教程

目录 引言环境准备智能交通监测系统基础代码实现&#xff1a;实现智能交通监测系统 4.1 数据采集模块 4.2 数据处理与控制模块 4.3 通信与网络系统实现 4.4 用户界面与数据可视化应用场景&#xff1a;交通监测与管理问题解决方案与优化收尾与总结 1. 引言 智能交通监测系统通…

Linux--线程池(包含日志的解释)

线程系列&#xff1a; Linux–线程的认识(一) Linux–线程的分离、线程库的地址关系的理解、线程的简单封装&#xff08;二&#xff09; 线程的互斥&#xff1a;临界资源只能在同一时间被一个线程使用 生产消费模型 信号量 线程池 线程池&#xff08;Thread Pool&#xff09;是…

Qt 统计图编程

学习目标&#xff1a;Qt 折线图&#xff0c;柱形图和扇形统计图编程 学习基础 Qt QChart 曲线图表操作-CSDN博客 学习内容 Qt中绘制三种常见的图表非常方便, 主要步骤如下: 1. 折线图: - 使用QLineSeries定义折线数据,添加多个坐标点 - 使用QValueAxis创建X轴和Y轴 - 将…

dockerfile配置和yml配置

dockerfile docker build 使用dockerfile自动构建镜像文件 FROM python:3.9WORKDIR /appCOPY requirements.txt. RUN pip install -r requirements.txtCOPY..CMD ["python", "main.py"]docker build dockerifle自动构建拉取python3.9镜像&#xff0c;并执…

拷贝文件的一些操作

利用fputc 、fgetc实现文件的拷贝 int main(int argc, const char *argv[]) {FILE* rfpfopen(argv[1],"r");FILE* wfpfopen(argv[2],"w");if(rfpNULL || wfpNULL){perror("fopen");return 1;}while(1){char resfgetc(rfp);if(feof(rfp)1){break;…

PointCloudLib LocalMaximum_DeleteMaxPoint C++版本

测试效果 简介 在点云库&#xff08;Point Cloud Library&#xff0c;PCL&#xff09;中&#xff0c;处理点云数据时&#xff0c;经常需要去除局部最大点&#xff08;Local Maximum&#xff09;&#xff0c;这通常用于去除噪声、提取特定形状的特征或者简化点云数据。局部最大…

[米联客-安路飞龙DR1-FPSOC] FPGA基础篇连载-14 SPI MASET发送程序设计

软件版本&#xff1a;Anlogic -TD5.9.1-DR1_ES1.1 操作系统&#xff1a;WIN10 64bit 硬件平台&#xff1a;适用安路(Anlogic)FPGA 实验平台&#xff1a;米联客-MLK-L1-CZ06-DR1M90G开发板 板卡获取平台&#xff1a;https://milianke.tmall.com/ 登录“米联客”FPGA社区 ht…

数据库管理-第220期 Oracle的高可用-03(20240715)

数据库管理220期 2024-07-15 数据库管理-第220期 Oracle的高可用-03&#xff08;20240715&#xff09;1 AC/TAC2 配置Service3 用户权限4 端口开放总结 数据库管理-第220期 Oracle的高可用-03&#xff08;20240715&#xff09; 作者&#xff1a;胖头鱼的鱼缸&#xff08;尹海文…

Modbus - 笔记

1 Modbus Poll/Slave 模拟器使用教程 Modbus Poll/Slave 模拟器使用教程_modbus poll 使用教程-CSDN博客 https://item.jd.com/67488830087.html

Node.js 爬虫开发实战:构建一个高效、优雅的网络数据抓取器

在大数据时代&#xff0c;从网页上自动抓取数据的需求日益增长。Node.js&#xff0c;以其异步非阻塞I/O模型&#xff0c;成为了构建高性能网络爬虫的理想选择。本文将引导你如何使用Node.js&#xff0c;结合axios和cheerio两个流行库&#xff0c;创建一个能够从目标网站抓取信息…

51单片机10(蜂鸣器介绍)

一、蜂鸣器介绍&#xff1a; 1、蜂鸣器是一种一体化结构的电子讯响器&#xff0c;采用直流电压供电&#xff0c;广泛应用于电子产品中作为发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器。 &#xff08;1&#xff09;压电式蜂鸣器&#xff0c;它主要由多谐的一个增胀器…

【学习笔记】无人机(UAV)在3GPP系统中的增强支持(八)-通过无人机进行无线接入

引言 本文是3GPP TR 22.829 V17.1.0技术报告&#xff0c;专注于无人机&#xff08;UAV&#xff09;在3GPP系统中的增强支持。文章提出了多个无人机应用场景&#xff0c;分析了相应的能力要求&#xff0c;并建议了新的服务级别要求和关键性能指标&#xff08;KPIs&#xff09;。…

电脑出现错误——找不到msvcp140.dll无法继续执行代码,有效解决错误dll文件

msvcp140.dll是一个属于 Microsoft Visual C Redistributable for Visual Studio 2015 的 DLL 文件。这个文件是许多Windows应用程序&#xff08;尤其是使用 C 开发的程序&#xff09;所必需的&#xff0c;因为它包含了标准 C 库的函数实现&#xff0c;用于处理数学运算、数据转…

【React Hooks原理 - useRef】

概述 在Function Component项目中当我们需要操作dom的时候&#xff0c;第一时间想到的就是使用useRef这个Hook来绑定dom。但是这个仅仅是使用这个Hook而已&#xff0c;为了更好的学习React Hooks内部实现原理&#xff0c;知其所以然。所以本文根据源码从useRef的基础使用场景一…

使用shell脚本打印99乘法表

一、简介 前一段时间在旧电脑上安装 antiX 23.1 操作系统&#xff0c;遇到一些问题需要使用shell脚本解决问题&#xff0c;所以专门学习了几天&#xff0c;打印99乘法表是其中的一个练习作业。 二、学习Linux可行的几种方式 虚拟机安装Linux进行学习直接双系统安装在实体电脑…

Ubuntu新系统的使用

1.安装显卡驱动 直接到软件与更新里面&#xff0c;就是一个A字图标的那个软件打开&#xff0c;到附加驱动里选择。要选择“server driver”的&#xff0c;选择后确认即可。 然后输入&#xff1a;nvidia-sim查看 别的方法太复杂&#xff0c;这个方法我亲测了两台电脑&#xff…

kubebuilder入门

1. 安装kubebuilder brew install kubebuilder 2. 需求描述 开发一个zk operator。 cr定义为ZooKeeperCluster 3. 开发过程 3.1 创建一个空的文件夹zk-operator mkdir zk-operator 3.2 进入该文件夹 cd zk-operator 3.3 执行初始化 kubebuilder init --domain my.doma…

MWA(Modern Web App)初学那些事-2-Basic HTML CSS

初学MWA(Modern Web App&#xff09;那些事-2-Basic HTML & CSS 目录 初学MWA(Modern Web App&#xff09;那些事-2-Basic HTML & CSS前言一、本节学习目标二、HTML基础内容2.1关键元素2.4 Scripts 三、CSS 基础内容3.1 级联样式表-用于设置网页样式和布局3.2 CSS规则语…

springcloud使用微服务的搭建

微服务的搭建 1.配置对应信息 Springboot 、springcloud、springcloud alibaba对应关系 https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E 2.pom.xml的配置 2.1 总项目pom.xml引入依赖 <parent><groupId>org.sprin…

阿里通义音频生成大模型 FunAudioLLM 开源

简介 近年来&#xff0c;人工智能&#xff08;AI&#xff09;技术的进步极大地改变了人类与机器的互动方式&#xff0c;特别是在语音处理领域。阿里巴巴通义实验室最近开源了一个名为FunAudioLLM的语音大模型项目&#xff0c;旨在促进人类与大型语言模型&#xff08;LLMs&…