在Ubuntu上安装pycuda记录

news2024/11/24 4:18:45

1.  安装CUDA Toolkit 11.8
从MZ小师妹的摸索过程来看,其他版本的会有bug,12.0的版本太高,11.5的太低(感谢小师妹让我少走弯路)
参考网址:CUDA Toolkit 11.8 Downloads | NVIDIA Developer

在命令行输入命令:
 

wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run
sudo sh cuda_11.8.0_520.61.05_linux.run

2. 确定自己用的是cuda 11.8:

如果不是,在自己的~/.bashrc文件中添加路径:

export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64
export PATH=$PATH:/usr/local/cuda-11.8/bin

3. 安装pycuda:
conda install -c conda-forge pycuda

4. 测试pycuda:
来源 PyCUDA - 上海交大超算平台用户手册 Documentation

import pycuda.driver as drv
import pycuda.autoinit
from pycuda.compiler import SourceModule
import numpy

# 定义核函数
mod = SourceModule(
    """
    __global__ void add_vectors(float *a, float *b, float *c, int n)
    {
        int idx = threadIdx.x + blockIdx.x * blockDim.x;
        if (idx < n)
        {
            c[idx] = a[idx] + b[idx];
        }
    }
"""
)

# 定义向量大小
n = 10000

# 生成随机向量数据
a = numpy.random.randn(n).astype(numpy.float32)
b = numpy.random.randn(n).astype(numpy.float32)

# 分配输出内存空间
c = numpy.zeros_like(a)

# 将输入输出数据复制到 GPU
a_gpu = drv.mem_alloc(a.nbytes)
b_gpu = drv.mem_alloc(b.nbytes)
c_gpu = drv.mem_alloc(c.nbytes)

drv.memcpy_htod(a_gpu, a)
drv.memcpy_htod(b_gpu, b)

# 定义块和网格大小
blocksize = 256
gridsize = (n + blocksize - 1) // blocksize

# 执行核函数
add_vectors = mod.get_function("add_vectors")
add_vectors(
    a_gpu, b_gpu, c_gpu, numpy.int32(n), block=(blocksize, 1, 1), grid=(gridsize, 1)
)

# 将结果从 GPU 复制回 CPU
drv.memcpy_dtoh(c, c_gpu)

# 检查计算结果是否正确
assert numpy.allclose(c, a + b), "result not correct"

# 输出结果
print("a:", a)
print("b:", b)
print("c:", c)

 

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

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

相关文章

Whale 帷幄创始人叶生晅荣获亿欧 2023 中国泛人工智能优秀人物 TOP 20

近日&#xff0c;亿欧在 WIM 2023&#xff08;World Innovators Meet&#xff0c;世界创新者年会&#xff09;上发布 2023 世界创新奖「2023 中国泛人工智能优秀人物 TOP 20」&#xff0c;表彰那些过去一年中在泛人工智能领域做出突出贡献的领导者、开拓者。「Whale 帷幄」创始…

L1-086 斯德哥尔摩火车上的题(Java)

上图是新浪微博上的一则趣闻&#xff0c;是瑞典斯德哥尔摩火车上的一道题&#xff0c;看上去是段伪代码&#xff1a; s a 1112031584 for (i 1; i < length(a); i) {if (a[i] % 2 a[i-1] % 2) {s max(a[i], a[i-1])} } goto_url(www.multisoft.se/ s) 其中字符串的…

LeetCode 热题 100 | 滑动窗口

目录 1 3. 无重复字符的最长子串 2 438. 找到字符串中所有字母异位词 菜鸟做题第二周&#xff0c;语言是 C 1 3. 无重复字符的最长子串 解题思路&#xff1a; 设置两个指针&#xff0c;左指针和右指针&#xff0c;二者之间形成窗口右指针不断右移&#xff0c;新字母被纳…

用通俗易懂的方式讲解:使用 MongoDB 和 Langchain 构建生成型AI聊天机器人

想象一下&#xff1a;你收到了你梦寐以求的礼物&#xff1a;一台非凡的时光机&#xff0c;可以将你带到任何地方、任何时候。 你只有10分钟让它运行&#xff0c;否则它将消失。你拥有一份2000页的PDF&#xff0c;详细介绍了关于这台时光机的一切&#xff1a;它的历史、创造者、…

【一站解决您的问题】mac 利用命令升级nodejs、npm、安装Nodejs的多版本管理器n、nodejs下载地址

一&#xff1a;下载nodejs 官网地址&#xff0c;点击下载稳定版 https://nodejs.org/en 如果官网下载特别慢&#xff0c;可以点击这个地址下载 点击这里 https://nodejs.cn/download/current/ 安装完成后&#xff0c;就包含了nodejs 和 npm。此时您的版本就是下载安装的版本…

慎用“from pwn import *”!和re库findall方法重名引发的问题

今天搓一个sage脚本遇到一个很无语的问题&#xff0c;经过调试&#xff0c;发现是pwntools库中的findall方法和re库中的findall方法重名导致的。这两个findall方法的用法完全不一样&#xff0c;稍有不慎就会踩坑。 文章目录 区分问题引发如何规避 区分 re 是 Python 中用于处理…

使用Python自动化操作手机,自动执行常见任务,例如滑动手势、呼叫、发送短信等等

使用Python自动化操作手机,自动执行常见任务,例如滑动手势、呼叫、发送短信等等。 此自动化脚本将帮助你使用 Python 中的 Android 调试桥 (ADB) 自动化你的智能手机。下面我将展示如何自动执行常见任务,例如滑动手势、呼叫、发送短信等等。 您可以了解有关 ADB 的更多信息,…

C++中的this关键字

2024年1月23日 内容来自 The Cherno:C系列 --------------------------------------------------------------------------------------------------------------------------------- 通过关键字this可以访问成员函数&#xff08;属于某个类的函数&#xff09;&#xff0c;也…

Redis(五)管道

文章目录 官网总结Pipeline与原生批量命令对比Pipeline与事务对比使用Pipeline注意事项 官网 https://redis.io/docs/manual/pipelining/ Pipeline是为了解决RTT往返回时&#xff0c;仅仅是将命令打包一次性发送对整个Redis的执行不造成其它任何影响 总结 Pipeline与原生批量…

从零学习开发一个RISC-V操作系统(四)丨RISC-V汇编语言编程

本篇文章的内容 一、RISC-V汇编语言简介1.1 RISC-V 汇编语言的基本格式1.2 RISC-V 汇编指令操作对象1.3 RISC-V 汇编指令编码格式1.4 RISC-V 汇编指令分类 二、RISC-V汇编语言详解2.1 add 加法指令2.2 sub 减法指令 本系列是博主参考B站课程学习开发一个RISC-V的操作系统的学习…

Leetcode—216.组合总和III【中等】

2023每日刷题&#xff08;七十八&#xff09; Leetcode—216.组合总和III 算法思想 实现代码 class Solution { public:vector<vector<int>> combinationSum3(int k, int n) {vector<vector<int>> ans;vector<int> path;function<void(int,…

Docker初次体验:WSL+Docker+portanier

文章目录 前言Docker是什么&#xff1f;Docker的优点Docker的使用场景&#xff1a;一件安装 Docker安装开启虚拟化安装wsl下载慢的请看这个下载成功 安装Docker修改Docker安装位置 配置Docker安装portanier&#xff08;可视化的Docker操作页面&#xff09;登录网址 总结 前言 …

Git仓库里嵌着别的仓库导致出现问题

例如这样&#xff0c;git仓库里面有箭头&#xff0c;且仓库打开是一个空仓库。 解决问题的方法 1.到子仓库路径下&#xff0c;使用ls -a指令可以看到文件夹下有一个.git文件夹。 我们使用rm -rf <子仓库路径>/.git删除每个子仓库下面的.git文件夹。 2.执行git rm --cache…

ROS:rosdep与ROS2的安装记录

鱼香ROS一键安装&#xff1a; 一键安装微信使用指南 | 鱼香ROS rosdep安装&#xff1a; rosdep 是一个在ROS&#xff08;Robot Operating System&#xff09;生态系统中非常重要的工具&#xff0c;它用于安装ROS包的依赖项。rosdep 确保了ROS包所需的系统依赖项能够被正确安装…

JVM篇----第二篇

系列文章目录 文章目录 系列文章目录前言一、JVM 选项 -XX:+UseCompressedOops 有什么作用?为什么要使用二、怎样通过 Java 程序来判断 JVM 是 32 位 还是 64位?三、32 位 JVM 和 64 位 JVM 的最大堆内存分别是多数?四、JRE、JDK、JVM 及 JIT 之间有什么不同?前言 前些天发…

STM32之002--软件安装 Keil

文章目录&#xff1a; 一、安装 Keil 二、注册 三、安装芯片支持包 一、安装 Keil 重点 1&#xff1a; 安装时&#xff0c;不能使用中文路径&#xff0c;否则无法正常使用!! 重点 2&#xff1a; 不要安装 V5.36 及以上的版本&#xff0c;其默认AC6编译器&#xff0c…

PyQt ------ QLineEditor

PyQt ------ QLineEditor 引言正文示例1------基础示例示例2------进阶示例 引言 这里给大家介绍一下 PyQt6 中的 QLineEditor 组件用法。 正文 QLineEditor 是用于做单行字符串输出的组件&#xff0c;它只能够将字符串在一行进行输出&#xff0c;如果要进行多行输出&#x…

processing集训day04

编程英语 mouse 鼠标 pressed 压平的 height 高 parent 父亲 / 母亲 else 否则 sound 声音 file 文档 music 音乐 new 新 key 键 pressed 压平的 mouse 鼠标 height 高 鼠标事件监听 监听鼠标按钮是否被按下&#xff1a; mousePressed 变量 mous…

基于SpringBoot的药品管理系统

文章目录 项目介绍主要功能截图&#xff1a;部分代码展示设计总结项目获取方式 &#x1f345; 作者主页&#xff1a;超级无敌暴龙战士塔塔开 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、 简历模板、学习资料、面试题库【关注我&#xff0c;都给你】 &…

宝塔面板优惠券(折扣券)领取入口及使用教程

宝塔面板是一款服务器管理软件&#xff0c;支持Linux与Windows系统&#xff0c;提供了丰富的功能和插件&#xff0c;让服务器管理变得更加简单、安全、高效。为了让更多用户体验到宝塔面板的便利&#xff0c;官方会不定期推出优惠券活动。本文将为大家详细介绍宝塔面板优惠券的…