文章13
标签6
分类2

Intel DevCloud海量CPU核数内存试用与rootless玩法

Intel DevCloud

官方说法:在一个由最新的英特尔®硬件和软件组成的集群上免费学习、制作原型、测试和运行您的工作负载。

网上的教程大多是对devcloud的线上IDE进行试用,比如wzfou认为英特尔Intel DevCloud是一个限制10小时80H256G的WebIDE。

在经过研究后发现oneAPI具有更多的玩法

警告⚠:Intel DevCloud是一个学习平台,请严格遵守ToS,使用proot和挖矿行为(甚至内网穿透)会导致账号被封禁!

传统玩法

注册账号:https://www.intel.com/content/www/us/en/forms/idz/simple-registration.html?tgt=https%3A%2F%2Fwww.intel.com%2Fcontent%2Fwww%2Fus%2Fen%2Fforms%2Fidz%2Fdevcloud-enrollment%2Fedge-request.html

官网:https://software.intel.com/content/www/us/en/develop/tools/devcloud/edge/overview.html

服务器:https://software.intel.com/content/www/us/en/develop/tools/devcloud/edge/build.html 

注册部分可以参考 英特尔Intel DevCloud免费云服务器和AppOnFly免费试用Windows Server服务器 - 挖站否-挖掘建站的乐趣 (wzfou.com),这里不再赘述。

至此,你获得了一台平平无奇的“小鸡”

重头戏

10小时的单次运行限制和Jupyter环境未免不够极客,我们能否让它更加极客呢?

答案是可以,而且就写在oneAPI的文档里(不知道为什么网上几乎没有相关的介绍,可能rootless和时限减少了滥用)。

首先我们要透过ssh与Intel login-2堡垒机建立连接,在https://devcloud.intel.com/oneapi/documentation/connect-with-ssh-linux-macos/ 页面里,下载包含账号私钥信息的setup-devcloud-access-xxxxxx.txt,然后执行网页上给出的命令,不出意外的话,就可以与login-2的终端进行交互了。

这个堡垒机只有10H16G,完全不符合我们的性能需求,我们要通过qsub来提交任务请求,获得集群中的高性能机器供我们使用。

在login-2终端中输入pbsnodes,我们可以获取到所有的节点状态。这样呈现的数据可能比较乱,我们可以使用pbsnodes | sort | grep properties | uniq,仅展示关键数据properties.

properties呈现了各种关键参数“core/xeon”、“Tiger Lake/Coffee Lake/Comet Lake/Skylake/Ice Lake”、内存大小、GPU等,我们提交任务请求时需要通过它指定机型。

我使用 qsub -I -l nodes=1:ramgb:ppn=2,walltime=24:00:00,cput=100:00:00 -d . 进行演示,其中ramgb可以替换成其他参数,这样我们就得到了100小时CPU时间,24小时单次运行时间的128H256G的节点。除了没有root权限,与其他机器无异。

rootless玩法

Intel DevCloud自带完整的运行库和编译链,而且我们拥有不俗的性能,理论上借助编译安装我们可以运行绝大多数user mode软件。

但是如果不借助包管理软件,这依然是一件头大的事情,而且我们可能要维护不同的工具链和glibc...这里,笔者尝试使用homebrew进行包管理,安装代码如下:

#!/bin/bash
set -ex

export HOMEBREW_PREFIX=~/homebrew
# export HOMEBREW_NO_ANALYTICS=1
mkdir -p "${HOMEBREW_PREFIX}"
curl -fsSLk https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C "${HOMEBREW_PREFIX}"

ls -laR "${HOMEBREW_PREFIX}"

export PATH="${HOMEBREW_PREFIX}/bin:${PATH}"
type -a brew

type -a openssl || :
openssl version -a || :

type -a curl || :
curl -V || :

# Fails to lock a .git/config file.
##brew analytics off

# No "brew update" until installing the proper openssl and a curl that uses it.
# brew update

# brew remove openssl || :
brew install openssl
brew link --force openssl

# brew remove curl || :
brew install --with-openssl curl
brew link --force curl || :
curl -V

ls -la "${HOMEBREW_PREFIX}/opt"
ls -la "${HOMEBREW_PREFIX}/bin"
ls -laLR "${HOMEBREW_PREFIX}/opt/curl/"

除此以外,我们还要在.bash_profile中加入

export HOMEBREW_PREFIX=~/homebrew
export PATH="${HOMEBREW_PREFIX}/bin:${PATH}"

以确保下次可以直接使用homebrew,brew install 即可安装(当然是存在很多坑的,自己解决啦)

其他问题

  1. Intel DevCloud 网络带宽配置相当低,网络需求比较大的应用可以不用试了
  2. brew install screen 应该是基本操作,你可以自定义lock的路径到userhome来持久化screen子进程;
  3. 有了homebrew,为什么不试试 Modern Unix 呢?
  4. 请按需使用DevCloud,把资源留给需要的人