标签: pyopencl

PyOpenCl:如何调试分段错误?

我有使用OpenCL C内核代码的PyOpenCL代码.我运行我的应用程序时捕获分段错误错误.如何使用某些调试器或其他一些开发工具调试此类错误?我不知道究竟要做什么来找出问题所在.我想到选择printf或什么,但我想使用更强大的东西.

我相信内核代码中的错误,所以我想先调试内核代码.

UPD.我在linux(Arch Linux,3.6.11),python 2或3,PyOpenCl 2012.1上

python debugging opencl segmentation-fault pyopencl

15
推荐指数
1
解决办法
1688
查看次数

如何构建大型OpenCL内核?

我曾在几个项目中使用OpenCL,但始终将内核编写为一个(有时候相当大)的函数.现在我正在开发一个更复杂的项目,并希望在几个内核之间共享功能.

但是我可以找到的示例都将内核显示为单个文件(甚至很少调用辅助函数).似乎应该可以使用多个文件 - clCreateProgramWithSource()接受多个字符串(并假设它们结合起来) - 尽管pyopencl Program()只需要一个源.

所以我希望听到任何有这方面经验的人:

  • 是否存在与多个源文件相关的任何问题?
  • pyopencl最好的解决方法是简单地连接文件吗?
  • 有没有办法编译函数库(而不是使用每个内核传入库源,即使不是全部都使用)?
  • 如果每次都需要传入库源,是否丢弃了未使用的函数(没有开销)?
  • 还有其他最佳做法/建议吗?

谢谢.

coding-style gpgpu opencl pyopencl

14
推荐指数
2
解决办法
3589
查看次数

无论如何要在带有 AMD GPU 的 Mac 中使用 Keras?

我有一台配备 AMD 处理器的 MacBook Pro,我想在这个 GPU 中运行 Keras(Tensorflow 后端)。我开始知道 Keras 只适用于 NVIDIA GPU。解决方法是什么(如果可能)?

pyopencl amd-gpu keras tensorflow2.0 plaidml

12
推荐指数
1
解决办法
7490
查看次数

PyOpenCL入门

我最近发现了GP-GPU(通用图形处理单元)的强大功能,并希望利用它在一台机器上执行"繁重"的科学和数学计算(否则需要大型CPU集群).

我知道有几个接口可以在GPU上运行,其中最突出的是CUDA和OpenCL.后者具有防止CUDA在大多数显卡(NVIDIA,AMD,Intel)上运行的优势,而不仅仅是NVIDA卡.在我的情况下,我有一个普通的Intel 4000 GPU似乎与OpenCL很好地合作.

现在,我需要学习如何使用PyOpenCL来进一步操作!所以这里有一个问题:

我怎样才能开始使用PyOpenCL?有什么先决条件?我真的需要有Python和/或OpenCL的经验吗?

我的背景是在fortran中,事实上我需要将冗长的fortran代码翻译并并行化为python(或pyopencl),主要处理PDE和对角化矩阵.

我已阅读了两个相关网站http://enja.org/2011/02/22/adventures-in-pyopencl-part-1-getting-started-with-python/http://documen.tician.de/ pyopencl /但它们对新手(即假人)并没有真正的帮助.

我只是不知道该怎么做.我不想成为该领域的专家,只是为了了解如何在pyopencl上并行化简单的数学和线性代数.

任何建议和帮助都非常欢迎!

python gpgpu opencl pyopencl

10
推荐指数
2
解决办法
8256
查看次数

python中数学函数的优化和加速

该数学函数的目的是使用二面角计算两个(或更多)蛋白质结构之间的距离:

在此输入图像描述

例如,它在结构生物学中非常有用.我已经使用numpy在python中编写了这个函数,但目标是实现更快.作为计算时间参考,我使用scikit-learn包中提供的欧几里德距离函数.

这是我目前的代码:

import numpy as np
import numexpr as ne
from sklearn.metrics.pairwise import euclidean_distances

# We have 10000 structures with 100 dihedral angles
n = 10000
m = 100

# Generate some random data
c = np.random.rand(n,m)
# Generate random int number
x = np.random.randint(c.shape[0])

print c.shape, x

# First version with numpy of the dihedral_distances function
def dihedral_distances(a, b):
    l = 1./a.shape[0]
    return np.sqrt(l* np.sum((0.5)*(1. - np.cos(a-b)), axis=1))

# Accelerated version with numexpr
def dihedral_distances_ne(a, b):
    l = …
Run Code Online (Sandbox Code Playgroud)

python numpy cython pyopencl numexpr

10
推荐指数
1
解决办法
761
查看次数

下载适用于 windows 和 linux 的 OpenCL AMD APP SDK 3.0

我想下载适用于 Windows 和 Linux 的 OpenCL AMD APP SDK 3.0 的独立版本。

amd opencl pyopencl amd-app

9
推荐指数
1
解决办法
3万
查看次数

Pyopencl:to_device和Buffer之间的区别

import pyopencl as cl
import pyopencl.array as cl_array
import numpy
a = numpy.random.rand(50000).astype(numpy.float32)
mf = cl.mem_flags
Run Code Online (Sandbox Code Playgroud)

有什么区别

a_gpu = cl.Buffer(self.ctx, mf.READ_ONLY | mf.COPY_HOST_PTR, hostbuf=a)
Run Code Online (Sandbox Code Playgroud)

a_gpu = cl_array.to_device(self.ctx, self.queue, a)
Run Code Online (Sandbox Code Playgroud)

有什么区别

result =  numpy.empty_like(a)
cl.enqueue_copy(self.queue, result, result_gpu)
Run Code Online (Sandbox Code Playgroud)

result = result_gpu.get()
Run Code Online (Sandbox Code Playgroud)

python numpy opencl pyopencl

8
推荐指数
1
解决办法
2572
查看次数

如何使用PyOpenCL检查GPU内存是否可用

我想知道在函数使用之前是否有办法检查可用的GPU内存量.我的代码通常使用1.5 GB或更多的GPU内存,如果我的程序想要使用它时其他东西正在使用GPU,我会得到一个MemoryError异常或类似的东西.

我想实现某种代码,以便我可以检查GPU是否有足够的可用内存,如果有,请继续运行,但如果没有,请等到它可用.

(最好,我想在尝试使用GPU之前检查,而不是使用try-except循环,只是在失败时重试)

我检查了PyOpenCL文档,看看device_info下是否有相关内容,但我找不到任何实际的描述.

python pyopencl

8
推荐指数
1
解决办法
1745
查看次数

即使使用最新的驱动程序,Python pyopencl DLL加载也失败了

我为我的GPU安装了最新的CUDA和驱动程序.我在Win7 64bit上使用Python 2.7.10.我尝试从以下位置安装pyopencl:

a.http://www.lfd.uci.edu/~gohlke/pythonlibs/#pyopencl上的非官方Windows二进制文件

b.从https://pypi.python.org/pypi/pyopencl获取源代码后编译自己的代码

两种情况下安装都成功但我尝试导入后会收到相同的错误消息:

>>> import pyopencl
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python27\lib\site-packages\pyopencl-2015.1-py2.7-win-amd64.egg\pyope
cl\__init__.py", line 30, in <module>
    import pyopencl._cl as _cl
ImportError: DLL load failed: The specified procedure could not be found.
>>>
Run Code Online (Sandbox Code Playgroud)

我有Visual C++可再发行从安装Visual Studio 2015年https://www.microsoft.com/en-us/download/details.aspx?id=48145.

我还尝试了2种不同版本的GPU驱动程序(包括最新版本).一样.很多人似乎都得到了相同的错误,在一些论坛上,我通过将GPU驱动程序更新到最新版本来阅读,它运行正常.但不适合我.

谁知道如何解决这个问题?

python nvidia opencl pyopencl

8
推荐指数
1
解决办法
3833
查看次数

对于多平台GPGPU计算,是否有OpenCL + PyOpenCL的替代方案?

在Mac上支持OpenCL 将在macOS 10.15中结束,因此人们投资PyOpenCL + OpenCL作为进行通用GPU(+ CPU)计算的手段很快就会开始失去一个关键平台.

所以我的问题是:

  1. 是否有任何可行的多平台GPGPU计算替代PyOpenCL + OpenCL?
  2. 福尔康用Python包装是一种可能性?

python gpgpu opencl pyopencl vulkan

8
推荐指数
1
解决办法
492
查看次数