最近从甲骨文那里薅了一台 ARM 的主机。想用来远程 Jupyter Notebook 。 这个可以直接像普通 Linux 一样使用吗?还是需要上 docker ?
1
villivateur 2022-03-23 08:30:40 +08:00 1
常用的软件都有 ARM 版,如果你的工作不涉及 CPU 底层的话,ARM 跟 x86 没有区别
|
2
nevin47 2022-03-23 09:01:24 +08:00 1
如果只是数据分析,那基本感知不到太大的区别
ARM 和 X86 服务器的差异越靠近上层越不明显 |
4
interim 2022-03-23 09:05:11 +08:00
一直信用卡通不过验证...
|
5
e9pWeUbh9PGCnp95 2022-03-23 09:05:27 +08:00
Do you know the memory order?
|
6
nothingistrue 2022-03-23 09:07:28 +08:00
别的不知道,但是如果不一样的话,你不管是上 docker 还是上虚拟机都没用,跨架构的虚拟化,性能损耗非常大。
|
7
iotbase 2022-03-23 09:12:24 +08:00
测试回复
|
10
nevin47 2022-03-23 09:16:34 +08:00
|
11
nothingistrue 2022-03-23 09:24:23 +08:00
@nevin47 #10 不管是容器,还是分区,这都是在不改变 CPU 架构的情况下搞的。垮了 CPU 架构,因为指令集不同,必须要搞虚拟化或者指令模拟。跨架构虚拟化肯定损耗很大性能,指令模拟需要很大的投入成本,做得要不好还不如虚拟化。说个简单的例子,windows 下的 docker ,是要先用 hyper-v 搞个 linux 虚拟机的,这还只是跨系统没跨 CPU 架构。
|
12
duke807 2022-03-23 09:28:21 +08:00 via Android
linux 是跨架構最無痛的系統,沒有之一
|
13
princelai 2022-03-23 09:32:35 +08:00
跑都能跑,但是我说一个可能影响的因素,MKL,Jupyter Notebook 通常配合 numpy 和 pandas,甚至 numba,如果有 MKL 速度会快很多
|
14
lithiumii 2022-03-23 09:32:46 +08:00 via Android
远程 jupyter 没问题,大多数 python 库都能用,底层的依赖其实有区别但是开发者已经处理好了
|
16
jessun1990 2022-03-23 10:03:10 +08:00 2
我这里工作偶尔会有 arm 的环境,能感受到的区别就是:
1. 同版本的 centos 的 arm 版和 x64 版中的 glibc 版本号可能会不一样,倒是部分二进制可能需要重新编译。 2. 某些时候,同样的二进制可执行文件,在两个平台上要求的依赖有一些差异,不过 yum install 一下就好了。 3. 华为云的 arm 环境下,编译 mysql 必须要遵循华为的官方文档的步骤。如果按照 mysql 文档走,一定会出现意外错误。例如: https://support.huaweicloud.com/prtg-kunpengdbs/kunpengmysql5727_02_0012.html 。 |
17
dayeye2006199 2022-03-23 10:36:00 +08:00 1
Numpy 底层也都是调用各种矩阵运算库来加速的,例如 blas lapack 。这些矩阵运算库为了性能,需要专门针对不同的 CPU 架构的指令集进行实现。所以 arm 架构需要专门编译这些底层库。
这些库还有商用实现,例如 Intel mkl ,由于 intel 是专门卖 x86 处理器的,所以可想而知不会主动去支持 arm 。 但一般用户使用可能不会接触这些细节,一些包管理软件例如 conda 已经可以很好的管理不同架构下的包,这些编译工作也已经有人做好了。 |
18
3dwelcome 2022-03-23 10:42:53 +08:00
arm 适合小而美的 web 集群服务器。
你拿它来做密集型计算和数据分析,估计有点悬。 当然 x86 也未必行,现在科学计算都是 gpu 的天下了。 |
19
nevin47 2022-03-23 10:47:40 +08:00
@nothingistrue #11 这位同学……你在说啥啊,你这说法感觉你根本就不懂 Hypervisor 和 Container 的基本原理和区别
Windows 用 Docker 需要虚拟机,是因为 Docker 依赖 Linux Kernel 的 namespace 和 cgroup 啊😂Windows 自己又没有容器能力。另外 我印象中,docker 是没有调用 VMX/EL2 的,这本身就是一个跑在 Kernel 之上的一个应用层,根本不需要翻译啥指令,现在 cgroup 本身就是一个 arch 不敏感的东西。 我建议你如果想细致学习的话,可以读一下 cgroup v2 v3 两个 patch ,然后再看看 Intel 的 IA32/64 3C 卷的 VMX 章节,基本上就清楚容器技术和虚拟化技术的本质区别了…… |
20
nevin47 2022-03-23 10:55:14 +08:00
@dayeye2006199 #17 我印象中 ARM 版本的 numpy ,是有用 ARMPL 做底层库编译了的,替代了 MKL 来编译 BLAS
|
21
lovestudykid 2022-03-23 11:04:41 +08:00
不要依赖甲骨文这个机器,随时无通知删机
|
22
nothingistrue 2022-03-23 11:06:05 +08:00
@nevin47 #19 我建议你还是先去仔细区分下 CPU 架构 /指令集,操作系统,虚拟化,容器化的区别。
|
23
MaxTan 2022-03-23 11:06:08 +08:00
@nevin47 #19 这里要杠一下,windows 还真有容器😅 跑的都是 windows 那一套东西。
不过这东西不好用,也没什么人用,还不如用 hyper-v 套一层用 linux container |
24
nevin47 2022-03-23 11:15:14 +08:00
@nothingistrue #22 我拒绝和你继续交流,容器本身就是一个 Arch less 的东西,你非要把 arch sensitive 的 docker image 搅进来,你开心就好……而且绕回 OP 的最初需求,OP 的需求不需要上 Docker ,这个讨论本身就是和问题无关的无意义讨论
|
25
jim9606 2022-03-23 11:28:03 +08:00
你没具体说分析用啥软件库。
目前比较有可能有差别的是 numpy ,默认链接 openBLAS ,但 x86 还可以找到链接 intel mkl 的二进制包。 不过应该没有性能以外的差距。 |
26
ryd994 2022-03-23 12:29:43 +08:00 via Android
1. 可以,但是需要 arm 的软件包 /库。debian 官方源已经有很多软件了。其他一些软件需要你自己编译。另一些软件完全不支持 arm 。
2. 不需要。你要用也可以用,但是需要 arm 的 image 。原因同上。 |
27
libook 2022-03-23 13:28:50 +08:00
不知道具体是什么硬件,但主流 ARM 架构的计算机是受到了广泛支持的,大多主流应用程度应该都可以跑,只要确保你跑的是专门为 ARM 架构的计算机编译的程序,包括专门为 ARM 构建的 Docker 镜像。
区别应该就是性能上,ARM 没有 x86 的部分复杂指令,也就是说某些计算用 x86 可以一个指令搞定,但是用 ARM 需要很多个指令组合才能完成,如果你的程序是对 x86 特有指令进行优化的,那么 ARM 计算机可能性能会稍差。 |
28
w4087 2022-03-23 13:35:54 +08:00
我的 mastercard 信用卡一直过不去,朋友中行 visa 双币的没啥问题,草了
|
29
aneostart173 2022-03-23 15:22:50 +08:00
主要看一些依赖库有没有 ARM 版本。尤其在高性能计算方面,arm 生态差一些。
|
30
BrettD 2022-03-23 16:04:51 +08:00
@nothingistrue ARM 也有原生的 Docke 镜像……运行原生 Docker 不会涉及到跨指令集的问题
|
31
BrettD 2022-03-23 16:06:33 +08:00
大部分开源软件在 Oracle Linux 上已经有打好的 ARM 二进制包,没有打包的话绝大部分软件从源码编译一下就能跑了,比较头痛的只有一些用到 x64 汇编的开源软件和不提供源码也不提供 ARM 二进制的闭源软件
|
32
redsonic 2022-03-23 17:59:15 +08:00
要看是跑在什么 ARM 处理器上,国产的那一堆 ARM 折腾的够呛,IO 太孱弱。oracle 的 Ampere A1 不太了解。
|