Skip to content
This repository has been archived by the owner on May 5, 2023. It is now read-only.

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
CHanzyLazer authored Mar 17, 2023
1 parent 0b04e5e commit 9479eda
Showing 1 changed file with 28 additions and 28 deletions.
56 changes: 28 additions & 28 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
[demo.m](demo.m) 作为 matlab 使用的基本例子,[demo.ipynb](demo.ipynb) 作为在 python 中使用的基本例子

# 使用方法
[Release](https://github.com/CHanzyLazer/SmartSLURM/releases/tag/v1.0) 中下载,
[Release](https://github.com/CHanzyLazer/SmartSLURM/releases/tag/v1.1) 中下载,
`SmartSLURM-with-demo.zip` 包含了可以运行的使用例子,`SmartSLURM.jar` 则只包含 jar 包

在 matlab 中,首先需要导入 java 类,在使用例子中 jar 包位于 include 目录下:
Expand All @@ -38,54 +38,54 @@ GATEWAY.shutdown()

# 接口说明
- `ServerSSH`: 提供基本的管理 ssh 服务器的方法,所有操作都会在连接中断后尝试一次重新连接
- `get(LocalWorkingDir, RemoteWorkingDir, Username, Hostname, [Port=22], [Password]) `:静态方法,获取 ssh 终端并且连接到终端,
- `get(LocalWorkingDir, RemoteWorkingDir, Username, Hostname, [Port=22], [Password])`:静态方法,获取 ssh 终端并且连接到终端,
在不提供密码时会使用密钥登录,默认会使用 `{user.home}/.ssh/id_rsa` 位置的密钥
- `getKey(LocalWorkingDir, RemoteWorkingDir, Username, Hostname, Port, KeyPath)`静 态 方法,获取 ssh 终端并且连接到终端,
- `getKey(LocalWorkingDir, RemoteWorkingDir, Username, Hostname, Port, KeyPath)`静态方法,获取 ssh 终端并且连接到终端,
使用 `KeyPath` 位置的密钥进行认证,
**注意 jsch 只支持经典格式的 openSSH 密钥,因此在生成密钥时需要加上 `-m pem` 参数**
- `setCompressionLevel(CompressionLevel)`: 设置 ssh 传输时的压缩等级(1-9),设置小于 等 于 0 的值会关闭压缩,默认不进行压缩
- `setCompressionLevel(CompressionLevel)`: 设置 ssh 传输时的压缩等级(1-9),设置小于等于 0 的值会关闭压缩,默认不进行压缩
- `isConnecting()`: 检测 ssh 是否正保持着连接
- `connect()`: 如果连接被断开则会重新连接,不需要手动调用因为基本所有方法都会尝试一次重 新 连接
- `connect()`: 如果连接被断开则会重新连接,不需要手动调用因为基本所有方法都会尝试一次重新连接
- `shutdown()`: 断开连接并且关闭此 ssh 终端,不再允许其他操作
- `system(Command)`: 在 ssh 终端上执行指令,类似 matlab 中的 system 函数
- `putDir(Dir, [ThreadNumber])`: 上传目录 `Dir` 到远程服务器,设置 `ThreadNumber` 则会 开 启并发上传,注意设置 `ThreadNumber=1` 与不设置并不等价。
支持递归子文件夹进行上传,对于大文件可以通过 `setCompressionLevel(CompressionLevel)` 来 开 启压缩来加速
- `getDir(Dir, [ThreadNumber])`: 下载远程服务器的目录 `Dir` 到本地,设置 `ThreadNumber` 则会开启并发下载,注意设置 `ThreadNumber=1` 与不设置并不等价。
支持递归子文件夹进行下载,对于大文件可以通过 `setCompressionLevel(CompressionLevel)` 来 开 启压缩来加速
- `putDir(Dir, [ThreadNumber])`: 上传目录 `Dir` 到远程服务器,设置 `ThreadNumber` 则会开 启并发上传,注意设置 `ThreadNumber=1` 与不设置并不等价。
支持递归子文件夹进行上传,对于大文件可以通过 `setCompressionLevel(CompressionLevel)` 来开 启压缩来加速
- `getDir(Dir, [ThreadNumber])`: 下载远程服务器的目录 `Dir` 到本地,设置 `ThreadNumber` 则会开启并发下载,注意设置 `ThreadNumber=1` 与不设置并不等价。
支持递归子文件夹进行下载,对于大文件可以通过 `setCompressionLevel(CompressionLevel)` 来开 启压缩来加速
- `clearDir(Dir)`: 清空远程服务器的目录 `Dir`,但是不删除文件夹,支持递归子文件夹进行清空
- `rmdir(Dir)`: 移除远程服务器的目录 `Dir`,支持递归子文件夹进行删除
- `mkdir(Dir)`: 在创建远程服务器上创建目录 `Dir`,支持跨文件夹创建文件夹
- `putWorkingDir(ThreadNumber=4)`: 上传整个工作目录到远程服务器,忽略 '.','_' 开头的 文 件和文件夹
- `getWorkingDir(ThreadNumber=4)`: 从远程服务器下载整个工作目录到本地,忽略 '.','_' 开 头的文件和文件夹
- `clearWorkingDir(ThreadNumber=4)`: 移除整个远程服务器的工作区,注意不忽略 '.','_' 开 头的文件和文件夹,等价于 `rmdir(".")`
- `pool(ThreadNumber)`: 获取一个可以并行执行指令的线程池,`ThreadNumber` 限制同时执行的 数 目
此 pool 提供和 [Matlab-JavaThreadPool](https://github.com/CHanzyLazer/ CSRC-AlloyDatabase) 中 `SystemThreadPool` 完全相同的接口,从而兼容其中的 `waitPools.m`
- `mkdir(Dir)`: 在创建远程服务器上创建目录 `Dir`,支持跨文件夹创建文件夹,如果已经存在文件夹或者创建文件夹成功则返回 true,创建文件夹失败返回 false
- `putWorkingDir(ThreadNumber=4)`: 上传整个工作目录到远程服务器,忽略 '.','_' 开头的 文件和文件夹
- `getWorkingDir(ThreadNumber=4)`: 从远程服务器下载整个工作目录到本地,忽略 '.','_' 开头的文件和文件夹
- `clearWorkingDir(ThreadNumber=4)`: 移除整个远程服务器的工作区,注意不忽略 '.','_' 开头的文件和文件夹,等价于 `rmdir(".")`
- `pool(ThreadNumber)`: 获取一个可以并行执行指令的线程池,`ThreadNumber` 限制同时执行的数目
此 pool 提供和 [Matlab-JavaThreadPool](https://github.com/CHanzyLazer/CSRC-AlloyDatabase)`SystemThreadPool` 完全相同的接口,从而兼容其中的 `waitPools.m`
- `submitSystem(Command)`: 向线程池中提交指令
- `waitUntilDone()`: 挂起程序直到线程池中的任务全部完成
- `getTaskNumber()`: 获取线程池中剩余任务数目,即正在执行的任务以及正在排队的任务的总 和
- `getTaskNumber()`: 获取线程池中剩余任务数目,即正在执行的任务以及正在排队的任务的总和
- `shutdown()`: 关闭内部的线程池,会等待所有任务完成
- `shutdownNow()`: 立刻关闭内部的线程池,不会等待任务完成
- `ServerSLURM`: 专门对支持 SLURM 系统的服务器进行适配的终端,
- `ServerSLURM`: 专门对支持 SLURM 系统的服务器进行适配的终端,
本身也提供了和 [Matlab-JavaThreadPool](https://github.com/CHanzyLazer/CSRC-AlloyDatabase)`SystemThreadPool` 完全相同的接口
- `get(ThreadNumber, LocalWorkingDir, RemoteWorkingDir, Username, Hostname, [Port=22], [Password])`:静态方法,获取 slurm 终端并且连接到终端,
- `get(ThreadNumber, LocalWorkingDir, RemoteWorkingDir, Username, Hostname, [Port=22], [Password])`:静态方法,获取 slurm 终端并且连接到终端,
指定 `ThreadNumber` 来限制在 SLURM 上同时运行的作业数目
- `getKey(ThreadNumber, LocalWorkingDir, RemoteWorkingDir, Username, Hostname, Port, KeyPath)`:静态方法,获取 slurm 终端并且连接到终端,
- `getKey(ThreadNumber, LocalWorkingDir, RemoteWorkingDir, Username, Hostname, Port, KeyPath)`:静态方法,获取 slurm 终端并且连接到终端,
使用 `KeyPath` 位置的密钥进行认证
- `ssh()`: 返回内部的 `ServerSSH` 实例,通过此实现一般的 ssh 操作
- `shutdown()`: 断开连接并且关闭此 ssh 终端,不再允许其他操作,在此之前会等待提交的任 全 部完成
- `shutdownNow()`: 立刻断开连接并且关闭此 ssh 终端,不再允许其他操作,不会等待任务完成 且 会强行取消掉正在执行的任务
- `submitSystem(Command, [Partition='work'], NodeNumber=1, OutputPath='.temp/slurm/ out-%j')`:
- `shutdown()`: 断开连接并且关闭此 ssh 终端,不再允许其他操作,在此之前会等待提交的任全部完成
- `shutdownNow()`: 立刻断开连接并且关闭此 ssh 终端,不再允许其他操作,不会等待任务完成且会强行取消掉正在执行的任务
- `submitSystem(Command, [Partition='work'], NodeNumber=1, OutputPath='.temp/slurm/out-%j')`:
向 SLURM 服务器提交指令,相当于此指令写入了一个 bash 脚本并且使用 sbatch 来提交
- `submitSrun(Command, [Partition='work'], TaskNumber=1, MaxTaskNumberPerNode=20, OutputPath='.temp/slurm/out-%j')`:
向 SLURM 服务器直接提交 srun 指令,相当于在指令前增加一个 srun 并且写入 bash 脚本然后 用 sbatch 来提交,会根据输入自动计算需要的节点数目
- `submitSrunBash(BashPath, [Partition='work'], TaskNumber=1, MaxTaskNumberPerNode=20, OutputPath='.temp/slurm/out-%j')`:
向 SLURM 服务器直接提交 srun 运行的脚本,首先会将本地的处于 `BashPath` 的脚本上传到远 服 务器,然后使用 srun 实行这个脚本,
- `submitSrun(Command, [Partition='work'], TaskNumber=1, MaxTaskNumberPerNode=20, OutputPath='.temp/slurm/out-%j')`:
向 SLURM 服务器直接提交 srun 指令,相当于在指令前增加一个 srun 并且写入 bash 脚本然后用sbatch 来提交,会根据输入自动计算需要的节点数目
- `submitSrunBash(BashPath, [Partition='work'], TaskNumber=1, MaxTaskNumberPerNode=20, OutputPath='.temp/slurm/out-%j')`:
向 SLURM 服务器直接提交 srun 运行的脚本,首先会将本地的处于 `BashPath` 的脚本上传到远 服务器,然后使用 srun 实行这个脚本,
并且将此操作写入 bash 脚本然后使用 sbatch 来提交,会根据输入自动计算需要的节点数目
- `jobNumber()`: 获取此用户在 SLURM 服务器上正在执行的任务数目
- `jobIDs()`: 获取此用户在 SLURM 服务器上正在执行的任务的编号
- `cancelAll()`: 取消此用户在 SLURM 服务器上正在执行的所有任务,即使这个任务不是通过这 对 象提交的。同时会清空此对象中排队的任务(如果有的话)
- `cancelAll()`: 取消此用户在 SLURM 服务器上正在执行的所有任务,即使这个任务不是通过这对象提交的。同时会清空此对象中排队的任务(如果有的话)
- `cancelThis()`: 取消这个对象提交的所有任务并且清空排队的任务
- `undo()`: 尝试取消最后一次提交的任务,如果在排队则取消成功返回对应的指令,如果已经提 则 取消失败,返回 null
- `undo()`: 尝试取消最后一次提交的任务,如果在排队则取消成功返回对应的指令,如果已经提则取消失败,返回 null
- `getActiveCount()`: 获取正在执行的任务数目(仅限本对象提交的)
- `getQueueSize()`: 获取正在排队的任务数目
- `waitUntilDone()`: 挂起程序直到任务全部完成
Expand Down

0 comments on commit 9479eda

Please sign in to comment.