iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >在macOS10.12系统上给thea
  • 649
分享到

在macOS10.12系统上给thea

系统thea 2023-01-31 08:01:55 649人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

首先查了一下,cuda只支持Nvida显卡,所以只好放弃了。转而选择gpuarray backend,这个版本还没有release,都是开发版。 根据官网提示,首先你需要先安装cmake、cython、nose等软件和py库。因为我之前安

首先查了一下,cuda只支持Nvida显卡,所以只好放弃了。转而选择gpuarray backend,这个版本还没有release,都是开发版。

根据官网提示,首先你需要先安装cmake、cython、nose等软件和py库。因为我之前安装过cmake,而且我使用的是anaconda,所以这些py库也都有。真是非常方便。

下面开始安装:

# 后面会发现这其实是一个大坑!
git clone https://GitHub.com/Theano/libgpuarray.git
cd libgpuarray

mkdir Build
cd Build

cmake .. -DCMAKE_BUILD_TYPE=Release
make
make install
cd ..

这一步看起来还算简单。
make install会在/usr/local/include/下创建gpuarray/目录,这里面有下面?build所需的一些头文件,同时在libgpuarray/lib下面会创建libgpuarray.dylib和libgpuarray-static.a这两个特别重要的动态链接库。

下一步安装pygpu,注意,可能需要先改一下setup.py中的include_dirslibrary_dirs2个变量如下:

include_dirs = ["/usr/local/include", np.get_include()]
library_dirs = ["lib"]

否则可能提示找不到头文件或者动态链接库。然后运行:

python setup.py build
Python setup.py install

这样pygpu就算安装完成了。

下一步就是测试gpu是否正常工作。
创建如下check1.py文件, 它的功能很简单,就是计算长度为vlen的随机数组每个元素的exp值。

### check1.py
from theano import function, config, shared, sandbox
import theano.tensor as T
import numpy
import time

vlen = 10 * 30 * 768  # 10 x #cores x # threads per core
iters = 1000

rng = numpy.random.RandomState(22)
x = shared(numpy.asarray(rng.rand(vlen), config.floatX))
f = function([], T.exp(x))
print(f.maker.fgraph.toposort())
t0 = time.time()
for i in range(iters):
    r = f()
t1 = time.time()
print("Looping %d times took %f seconds" % (iters, t1 - t0))
print("Result is %s" % (r,))
if numpy.any([isinstance(x.op, T.Elemwise) for x in f.maker.fgraph.toposort()]):
    print('Used the cpu')
else:
    print('Used the gpu')

测试cpu性能:

THEANO_FLAGS=device=cpu python check1.py

结果:

[Elemwise{exp,no_inplace}(<TensorType(float32, vector)>)]
Looping 1000 times took 3.219283 seconds
Result is [ 1.23178029  1.61879337  1.52278066 ...,  2.20771813  2.29967761
  1.62323284]
Used the cpu

测试gpu性能:

THEANO_FLAGS=device=opencl0:1 python check1.py

结果出现如下错误:

Wrong major api version for gpuarray:-9997 Make sure Theano and libgpuarray/pygpu are in sync.

看样子应该是版本不符合。Google了很久,发现原因是:我刚才从github上安装的是最新的gpuarray,而我的theano是0.8.2,可能不是最新的了,于是我只好更新一下theano:

pip install --upgrade --no-deps git+git://github.com/Theano/Theano.git

更新好theano,下面再执行上面的命令,还是有问题:

clang++ -dynamiclib -g -O3 -fno-math-errno -Wno-unused-label -Wno-unused-variable -Wno-write-strings -march=haswell -DNPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION -m64 -fPIC -undefined dynamic_lookup -I/Users/flybywind/anaconda3/lib/python3.5/site-packages/pygpu-0.2.1-py3.5-macosx-10.6-x86_64.egg/pygpu -I/Users/flybywind/anaconda3/lib/python3.5/site-packages/numpy/core/include -I/Users/flybywind/anaconda3/lib/python3.5/site-packages/numpy/core/include -I/Users/flybywind/anaconda3/include/python3.5m -I/Users/flybywind/anaconda3/lib/python3.5/site-packages/theano/gof -L/Users/flybywind/anaconda3/lib -fvisibility=hidden -o /Users/flybywind/.theano/compiledir_Darwin-16.0.0-x86_64-i386-64bit-i386-3.5.2-64/tmppv5z0wy8/mb4366a5a742592cc8864699a71f9f43c.so /Users/flybywind/.theano/compiledir_Darwin-16.0.0-x86_64-i386-64bit-i386-3.5.2-64/tmppv5z0wy8/mod.cpp -lgpuarray
/Users/flybywind/.theano/compiledir_Darwin-16.0.0-x86_64-i386-64bit-i386-3.5.2-64/tmppv5z0wy8/mod.cpp:4:10: fatal error: 'gpuarray/array.h' file not found

这个错误跟刚才类似,我也懒得去找-I是从哪里设置了,索性把/usr/local/include/gpuarray拷贝到/Users/flybywind/anaconda3/lib/python3.5/site-packages/pygpu-0.2.1-py3.5-Macosx-10.6-x86_64.egg/pygpu下面了。

然后再运行,又挂了,这次提示:
ld: library not found for -lgpuarray
clang: error: linker command failed with exit code 1 (use -v to see invocation)

故技重施,把上面?libgpuarray/lib中的动态链接库拷贝到/Users/flybywind/anaconda3/lib下面好了。

继续试,终于好了:

Mapped name None to device opencl0:1: Iris
PCI Bus ID: (unsupported for device opencl0:1)
[GpuElemwise{exp,no_inplace}(<GpuArrayType<None>(float32, (False,))>), HostFromGpu(gpuarray)(GpuElemwise{exp,no_inplace}.0)]
Looping 1000 times took 1.042960 seconds
Result is [ 1.23178029  1.61879337  1.52278066 ...,  2.20771813  2.29967761
  1.62323284]
Used the gpu

好了,现在还有2个问题:

opencl0:1到底啥意思?

Device specifiers are composed of the type string and the device id like so:

"cuda0"
"opencl0:1"

For opencl the device id is the platfORM number, a colon (:) and the device number. There are no widespread and/or easy way to list available platforms and devices. You can experiement with the values, unavaiable ones will just raise an error, and there are no gaps in the valid numbers.

就是说,opencl表示类型,跟cuda类似。但是对于opencl,还要指定platform和设备编号,中间用":"分隔。编号都是连续的,所以这2个数从0开始往后试即可[来源]。一般platform就是0,所以我试了0:0, 发现不对,有问题:

Mapped name None to device opencl0:0: Intel(R) Core(TM) i5-4258U CPU @ 2.40GHz
PCI Bus ID: (unsupported for device opencl0:0)
[GpuElemwise{exp,no_inplace}(<GpuArrayType<None>(float32, (False,))>), HostFromGpu(gpuarray)(GpuElemwise{exp,no_inplace}.0)]
Looping 1000 times took 1.459022 seconds
Result is [ 1.23178029  1.61879325  1.52278078 ...,  2.20771813  2.29967737
  1.62323272]
Used the gpu

这个很有意思!首先时间确实缩短了,graph也是GpuElem,最后numpy的检测也显示是gpu,但是device却显示的是CPU。好像是一种混合体。。。
于是再试一下0:1, 发现终于对了:

Mapped name None to device opencl0:1: Iris
PCI Bus ID: (unsupported for device opencl0:1)
[GpuElemwise{exp,no_inplace}(<GpuArrayType<None>(float32, (False,))>), HostFromGpu(gpuarray)(GpuElemwise{exp,no_inplace}.0)]
Looping 1000 times took 1.042960 seconds
Result is [ 1.23178029  1.61879337  1.52278066 ...,  2.20771813  2.29967761
  1.62323284]
Used the gpu

此时设备显示也是对的,而时间进一步缩短!

PCI Bus ID: (unsupported for device opencl0:1)什么意思?
如果是cuda,最新的gpuarray是可以显示PCI总线id的:

Mapped name None to device cuda: GeForce 840M;

PCI Bus ID: 0000:0A:00.0

但是opencl就是这幅德行。所以,the end! 我终于解决了所有问题了。

--结束END--

本文标题: 在macOS10.12系统上给thea

本文链接: https://www.lsjlt.com/news/193355.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 在macOS10.12系统上给thea
    首先查了一下,cuda只支持Nvida显卡,所以只好放弃了。转而选择gpuarray backend,这个版本还没有release,都是开发版。 根据官网提示,首先你需要先安装cmake、cython、nose等软件和py库。因为我之前安...
    99+
    2023-01-31
    系统 thea
  • 写给正在入坑linux系统的伙伴
    光阴似箭,时光如梭,转年出来工作已经3年了。从一个职场新人慢慢熟悉职场的工作方式,适应职场工作的环境,学习了很多知识,也总结了很多经验。现在的目标就是一步一个脚印,慢慢打磨自己,希望早日成为取代其他人后的无可取代。我的工作是运维工程师, 从...
    99+
    2023-06-06
  • ESXI安装MacOS系统,VMware安装MacOs系统,MacOs10.14.iso下载,MacOS10.13下载,MacOS10.12下载,unlocker下载
    ESXI安装MacOs系统 一、用到的工具和软件系统版本一、用到的工具二、需要用到的安装包 二、安装过程1.连接远程ESXI服务器2.上传iso文件和几个文件到ESXI服务器3.给VmWare打补丁,支持安装MacOS虚拟机4....
    99+
    2023-08-30
    ESXI安装MacOS系统 VMWare安装Mac虚拟机 MacOS镜像ISO下载 unlocker下载 安装MacOS虚拟机
  • 在 Linux 系统上下载 Android SDK
    使用ubuntu系统进行车机开发,今天开始配置环境,首先是下载android studio,然后下载android sdk,这里需要注意的是linux系统不能使用windows系统下的Android sdk,亲测会出现各种问题。 常规思路,...
    99+
    2023-09-02
    android
  • sqlite3 在linux系统上的安装
    sqlite3是一个小型关系型数据库,在嵌入式设备非常通用。下载地址:www.sqlite.org 完整包:Download -> Source Code -> sqlite-autoconf-3080704.tar.gz简易包...
    99+
    2023-01-31
    系统 linux
  • 怎么在Ubuntu系统上部署分布式系统Ceph
    这篇文章主要讲解了“怎么在Ubuntu系统上部署分布式系统Ceph”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么在Ubuntu系统上部署分布式系统Ceph”吧!Ceph是统一存储系统,支...
    99+
    2023-06-13
  • 在windows系统上使用linux系统的最佳姿势
    前言 经常使用电脑的同学一定不陌生Linux操作系统,Linux作为一种开源操作系统其好处自不必说:免费、稳定、兼容性等等,对于从事IT研发工作的同学,Linux操作系统就更加的不可或缺了。 但现实情况却是绝大部分个人PC都是Wind...
    99+
    2023-09-15
    linux windows 服务器 Powered by 金山文档
  • 给云服务器装系统
    安装 云服务器的安装非常简单。只需按照相应的指南在控制台或命令行工具中输入云服务器的IP地址、用户名和密码,即可启动服务器。安装完成后,需要进行一些配置工作,以确保服务器能够正常运行。 配置 配置云服务器需要进行一系列的配置工作。具体包括...
    99+
    2023-10-28
    服务器 系统
  • 怎么给电脑换系统
    本篇文章给大家分享的是有关怎么给电脑换系统,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。简介 大家都知道台式机安装系统是十分的简单,随便买张系统盘,调一下CMOS里的启动项即可...
    99+
    2023-06-14
  • 怎么在Ubuntu系统上安装GitLab
    Ubuntu GitLab安装GitLab是一个基于Web的Git仓库管理工具,可以提供代码仓库、代码审核、问题跟踪、CI/CD、Wiki等功能。它是一个自托管的Git仓库,可以在云平台或本地安装来管理自己的代码。本文将为大家介绍在Ubun...
    99+
    2023-10-22
  • 如何在Linux系统上搭建GitLab
    GitLab是一个基于Git版本控制系统的Web应用程序,旨在管理代码库、代码审核、发布与协作等,是一个非常适合团队协作的开源项目管理平台。本文将介绍如何在Linux系统上搭建GitLab,以及如何进行中文化,并使用邮件通知的功能。环境准备...
    99+
    2023-10-22
  • 在Windows系统上可以用Docker吗
    这篇文章主要讲解了“在Windows系统上可以用Docker吗”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“在Windows系统上可以用Docker吗”吧!Docker,或者准确一点说,容器...
    99+
    2023-06-04
  • win11系统怎么在vm上安装
    这篇文章主要讲解了“win11系统怎么在vm上安装”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“win11系统怎么在vm上安装”吧!win11可以在vm上装吗答:win11可以在vm上装。首...
    99+
    2023-07-01
  • 如何在Linux系统上玩游戏
    这篇文章跟大家分析一下“如何在Linux系统上玩游戏”。内容详细易懂,对“如何在Linux系统上玩游戏”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮助。下面跟着小编一起深入学习“如何在Linux系统上玩游戏”...
    99+
    2023-06-28
  • 如何在CentOS7系统上安装postgreSQL11
    这篇文章主要介绍“如何在CentOS7系统上安装postgreSQL11”,在日常操作中,相信很多人在如何在CentOS7系统上安装postgreSQL11问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何在...
    99+
    2023-06-05
  • 怎么在Linux系统上升级OpenSSL
    这篇文章主要讲解了“怎么在Linux系统上升级OpenSSL”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么在Linux系统上升级OpenSSL”吧!我是用的Centos ,目前官方说受威...
    99+
    2023-06-13
  • 怎么在Windows系统上安装Perl
    要在Windows系统上安装Perl,可以按照以下步骤进行操作: 访问Perl官方网站(https://www.perl.org...
    99+
    2023-10-23
    Windows Perl
  • 如何在Linux系统上刷抖音
    自从抖音出了网页版 很多小伙伴,上班刷起来了 今天,写一篇教大家如何使用linux刷抖音   抖音入驻PC端之后,其实就是一个终端的网站页面 看看我们如何在Linux端, 完成搜索、截图、访问网页等等功能 一、首先增加一下新yum ...
    99+
    2023-09-02
    linux 运维 Java python php
  • 如何在 Windows 系统上安装 Git?
    Git 是一款非常流行的版本控制系统,它能够帮助程序员管理代码并进行协作开发。本文将介绍如何在 Windows 系统上安装 Git,并提供一些演示代码,帮助读者更好地理解。 一、下载 Git 首先,我们需要下载 Git 的安装程序。在 Wi...
    99+
    2023-11-11
    windows npm git
  • 在Linux系统上安装mysql补丁
    首先,备份 MySQL 数据库的数据和配置文件,以防止补丁安装出现问题导致数据丢失。 下载需要安装的 MySQL 补丁文件,可以从 MySQL 官方网站或者第三方网站下载。 停止 MySQL 服务,可以使用以下命令: sudo sy...
    99+
    2023-09-08
    mysql linux 数据库
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作