cuda-Python GPU编程

我目前正在使用python开发一个项目,我想利用GPU进行一些计算。

乍一看,似乎有许多可用的工具。 乍一看,我觉得我错过了一些东西。

Copperhead看起来很棒,但尚未发布。 看来,我只限于编写低级CUDA或openCL内核。 没有推力,没有cudpp。 如果id想要进行某种排序,我必须自己完成。

在我看来,这似乎不太正确。 我确实想念什么吗? 还是这种GPU脚本还不完全符合宣传要求?

编辑:GPULIB似乎可能是我需要的。 文档是基本的,并且仅以顺便提及了python绑定,但是我现在正在申请下载链接。 是否有人对此有经验,或是否有类似的供学术免费使用的GPU库的链接? 重新编辑:好的,python绑定实际上不存在。

Edit2:所以我猜我最好的选择是用C / CUDA编写一些东西,然后从python调用它?

7个解决方案

28 votes

PyCUDA提供了与CUDA的很好的集成,并且具有多个帮助程序接口,与直接编写C api相比,使编写CUDA代码更加容易。 这是来自Wiki的示例,该示例无需任何C代码即可进行2D FFT。

Joseph Lisee answered 2020-01-13T17:19:08Z

10 votes

我将在这里发布一些我在reddit上阅读的信息。 对于不了解不同程序包功能以及如何将cuda与Python连接的人来说将很有用:

从:Reddit

在这个线程中,关于各种项目打算做什么以及它们准备得如何有很多困惑。 没有“用于NumPy的GPU后端”(对于SciPy的任何功能都少得多)。 有几种方法可以在Python和一些类似GPU数组的对象中编写CUDA代码,这些对象支持NumPy的ndarray方法的子集(但不支持其余的NumPy,例如linalg,fft等)。

PyCUDA和PyOpenCL最接近。 它们消除了启动GPU内核周围的许多麻烦问题(简化了阵列创建和内存传输,无需手动释放等等)。 但是,在大多数情况下,您仍然无法手动编写CUDA内核,它们恰好以三引号字符串的形式出现在Python文件中。 PyCUDA的GPUarray确实包含一些类似于NumPy的功能,因此,如果您做的非常简单,则可能无需自己编写任何内核就可以逃脱。

NumbaPro包含一个“ cuda.jit”装饰器,使您可以使用Python语法编写CUDA内核。 实际上,与PyCUDA所做的事情(引用的内核源代码)相比,并没有太大的进步,只是您的代码现在看起来更像Python。 但是,它绝对不会自动在GPU上运行现有的NumPy代码。

Theano允许您构造符号表达树,然后编译它们以在GPU上运行。 它不是NumPy,仅具有一小部分NumPy功能的等效项。

gnumpy是围绕CudaMat的薄薄包装纸。 唯一受支持的元素类型是float32,并且仅实现了NumPy的一小部分。

Ramon Martinez answered 2020-01-13T17:19:57Z

7 votes

我知道这个线程很旧,但是我想我可以带一些相关信息来回答所问的问题。

Continuum Analytics的软件包中包含可为您解析CUDA计算的库。 基本上,您需要用装饰器检测需要并行化(在函数内)的代码,并且需要导入库。 因此,您不需要任何有关CUDA指令的知识。

信息可以在NVIDIA页面上找到

[https://developer.nvidia.com/anaconda-accelerate]

或者您可以直接转到Continuum Analytics'页面

[https://store.continuum.io/cshop/anaconda/]

试用期为30天,并为学者提供免费许可证。

我广泛使用它,并将代码加速10到50次。

Bogdan answered 2020-01-13T17:20:48Z

5 votes

Theano看起来可能就是您要找的东西。 据我了解,它非常有能力在GPU上进行一些繁重的数学运算,并且似乎可以得到积极维护。

祝好运!

katzenklavier answered 2020-01-13T17:21:13Z

2 votes

检查此页面以获取随Anaconda分发的开源库[https://www.anaconda.com/blog/developer-blog/open-sourcing-anaconda-accelerate/]

“今天,我们发布了两个新的Numba子项目pyculib和pyculib_sorting,其中包含NVIDIA GPU库Python包装器和Accelerate的排序功能。这些包装器可与NumPy阵列和Numba GPU设备阵列配合使用,以从中访问加速功能 :cuBLAS:线性代数cuFFT:快速傅立叶变换cuSparse:稀疏矩阵运算cuRand:随机数生成(仅主机功能)排序:从CUB和ModernGPU移植的快速排序算法展望未来,Numba项目将负责pyculib和pyculib_sorting,并在新的Numba版本发布时根据需要发布更新。 这些项目都是BSD许可的,就像Numba一样,

Cristiana S. Parada answered 2020-01-13T17:21:39Z

1 votes

您看过PyGPU吗?

[http://fileadmin.cs.lth.se/cs/Personal/Calle_Lejdfors/pygpu/]

onteria_ answered 2020-01-13T17:22:03Z

0 votes

我可以推荐scikits.cuda。 但为此,您需要下载CULA完整版(学生免费)。 另一个是CUV。如果您正在寻找更好的东西并且愿意为此付出代价,还可以看看array fire。

Moj answered 2020-01-13T17:22:24Z

python的gpu编程_cuda-Python GPU编程相关推荐

  1. python实现简单的神经网络,python的神经网络编程

    最受欢迎的 15 大 Python 库有哪些 1.Pandas:是一个Python包,旨在通过"标记"和"关系"数据进行工作,简单直观.它设计用于快速简单的数据 ...

  2. python经典程序实例代码,python编程应用实例

    python递归算法经典实例有哪些? 程序调用自身的编程技巧称为递归( recursion).递归做为一种算法在程序设计语言中广泛应用. 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法. ...

  3. 自学python单片机编程-用Python语言控制单片机

    早年,虽然Python是一款比较容易上手的脚本语言,而且有强大的社区支持,一些非计算机专业领域的人都选它作为入门语言.遗憾的是,它不能实现一些非常底层的操控,所以在硬件领域并不起眼.本文引用地址:ht ...

  4. 自学python单片机编程-用Python语言控制单片机-可编程逻辑-与非网

    早年,虽然 Python 是一款比较容易上手的脚本语言,而且有强大的社区支持,一些非计算机专业领域的人都选它作为入门语言.遗憾的是,它不能实现一些非常底层的操控,所以在硬件领域并不起眼. 然而今时不同 ...

  5. 并发编程之多进程编程(python版)

    目录 1 python多进程编程概述 2 需求和方案 背景: 需求: 解决思路: 需要解决的问题和方案: 3 完整代码 1 python多进程编程概述 python中的多线程无法利用多核优势,如果想要 ...

  6. python从0开始学编程课件_小白从零开始学编程(三)--python基本概念

    前言 从2020年3月份开始,计划写一系列文档--<小白从零开始学编程>,记录自己从0开始学习的一些东西. 第一个系列:python,计划从安装.环境搭建.基本语法.到利用Django和F ...

  7. Task05:青少年软件编程(Python)等级考试模拟卷(一级)

    「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复[Scratch]或[Python],即可进入.如果加入了之前的社群不需要重复加入. 电子学会 软件编程(Python)一级训 ...

  8. Task04:青少年软件编程(Python)等级考试模拟卷(一级)

    「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复[Scratch]或[Python],即可进入.如果加入了之前的社群不需要重复加入. 电子学会 软件编程(Python)一级训 ...

  9. python函数式编程模式_函数式编程指引

    概述¶ 本章介绍函数式编程的基本概念.如您仅想学习 Python 语言的特性,可跳过本章直接查看 迭代器. 编程语言支持通过以下几种方式来解构具体问题: 大多数的编程语言都是 过程式 的,所谓程序就是 ...

  10. python 图形化socket编程_Python黑帽编程2.8 套接字编程

    Python黑帽编程2.8 套接字编程 套接字编程在本系列教程中地位并不是很突出,但是我们观察网络应用,绝大多数都是基于Socket来做的,哪怕是绝大多数的木马程序也是如此.官方关于socket编程的 ...

最新文章

  1. android 高级画布绘图
  2. asp.net web 开发登录相关操作的控件LoginName、LoginStatus和LoginView控件使用详解
  3. mysql---视图
  4. 多选取值_机制砂如何控制MB值和石粉含量
  5. numpy.ndarray.flat/flatten 与 Spark 下的 flatMap
  6. js 里不能使用${pageContext.request.contextPath}解决方案
  7. CF984B Minesweeper
  8. 试议软件开发与硬件开发的异同。
  9. Windows7不再卡五叶草,更新了bootx64.efi和bootmgfw.efi文件,支持安全启动,不用关闭安全启动和打开csm支持.
  10. 微信+html5+播放音频+自动播放,html5音频实现微信语音播放效果
  11. python处理nc文件时,遇到不同的产品中经度坐标的排序不一致
  12. 在Python中安装了graphvize还出现报错:ExecutableNotFound: failed to execute ‘dot‘, make sure the Graphviz execut
  13. Qt读写Excel--QXlsx通过Document对象操作工作表3
  14. 项目实施过程中的风险控制
  15. Android init.rc介绍及其语法
  16. wow Warlock shushia PVP DZ
  17. jzoj 3837 心灵终结
  18. fpga卷积神经网络加速器,FPGA卷积神经网络综述
  19. [BZOJ2876] [NOI2012]骑行川藏
  20. SQL注入Cookie注入

热门文章

  1. 漏电保护插座插排真的有用吗?同为科技(TOWE)漏保系列PDU产品
  2. Android 拍照和图库功能(适配Android 6.0和7.0系统和华为机型问题)
  3. oracle cmd窗口输入sqlplus / as sysdba 报协议适配器错误
  4. Techila联手Windows Azure在赫尔辛基大学加速癌症的突破性研究
  5. 一眼看穿flatMap和map的区别
  6. 2021年度“快手百大主播”名单揭晓,快手一千零一夜官宣定档2月27日
  7. 机顶盒从ubuntu16更换到archLinux2021最新版,搞个远程下载支持智能电视直接播放
  8. Insert into select 锁表
  9. Python 爬取 13966 条运维招聘信息,这些岗位最吃香!
  10. [工具集]等比序列帧图片切割工具