# Taiwania3 $\alpha$ test note
## Hardware comparison
| | Taiwania 1 || Taiwania 2 | Taiwania 3 ||
| :--------: | :--------: | :--------: | :--------: | :--------: | :--------: |
| CPU | "Intel Xeon Platinum 6148(2.4GHz)" || "Intel Xeon Gold 6154(3.0GHz)" | "Intel Xeon Platinum 8280(2.7GHz)" |
| GPU | NA || "NVIDIA Tesla V100-SXM2-32GB" || "NVIDIA Tesla V100-32GB"(Only 96 GPU) |
| MEMORY | 192GB | 384GB | 768GB | 192GB ||
| cores/node | 40 || 32(36) | 56 |
| NVMe | -------- | 480GB | -------- | 3.2TB |
| Network | "Intel Omni-Path (100 Gb/s)" || "InfiniBand EDR (100 Gb/s)" | "InfiniBand HDR100 (100 Gb/s)" |
| NODES | 562 | 188 | 252 | 900 | 12 |
| cores(gpus) | 22480 | 7520 | 9072(2016) | 50400 | 672(96) |
### lstopo
Login node:
![Login node](https://i.imgur.com/sFhH6Ez.png)
CPU computing node:
![CPU computing node](https://i.imgur.com/DEim4GG.png)
GPU computing node:
![GPU computing node](https://i.imgur.com/VTvXC8Q.png)
### lscpu
Taiwania3(Login/CPU Computing/GPU Computing node)
```
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 112
On-line CPU(s) list: 0-111
Thread(s) per core: 2
Core(s) per socket: 28
Socket(s): 2
NUMA node(s): 2
Vendor ID: GenuineIntel
CPU family: 6
Model: 85
Model name: Intel(R) Xeon(R) Platinum 8280 CPU @ 2.70GHz
Stepping: 7
CPU MHz: 2700.000
BogoMIPS: 5400.00
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 1024K
L3 cache: 39424K
NUMA node0 CPU(s): 0-27,56-83
NUMA node1 CPU(s): 28-55,84-111
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch epb cat_l3 cdp_l3 invpcid_single intel_ppin intel_pt ssbd mba ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm cqm mpx rdt_a avx512f avx512dq rdseed adx smap clflushopt clwb avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local dtherm ida arat pln pts hwp_epp pku ospke avx512_vnni md_clear spec_ctrl intel_stibp flush_l1d arch_capabilities
```
### numactl
Taiwania3(Login/CPU Computing/GPU Computing node)
```
available: 2 nodes (0-1)
node 0 cpus: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
node 0 size: 191894 MB
node 0 free: 176448 MB
node 1 cpus: 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
node 1 size: 193494 MB
node 1 free: 177814 MB
node distances:
node 0 1
0: 10 21
1: 21 10
```
### nvidia-smi
Taiwania3(GPU Computing node)
```
Tue Jan 12 17:40:26 2021
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 450.51.05 Driver Version: 450.51.05 CUDA Version: 11.0 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 Tesla V100-SXM2... On | 00000000:1B:00.0 Off | 0 |
| N/A 27C P0 38W / 300W | 0MiB / 32510MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
| 1 Tesla V100-SXM2... On | 00000000:1C:00.0 Off | 0 |
| N/A 27C P0 39W / 300W | 0MiB / 32510MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
| 2 Tesla V100-SXM2... On | 00000000:3D:00.0 Off | 0 |
| N/A 28C P0 39W / 300W | 0MiB / 32510MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
| 3 Tesla V100-SXM2... On | 00000000:3E:00.0 Off | 0 |
| N/A 27C P0 41W / 300W | 0MiB / 32510MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
| 4 Tesla V100-SXM2... On | 00000000:B1:00.0 Off | 0 |
| N/A 26C P0 39W / 300W | 0MiB / 32510MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
| 5 Tesla V100-SXM2... On | 00000000:B2:00.0 Off | 0 |
| N/A 26C P0 39W / 300W | 0MiB / 32510MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
| 6 Tesla V100-SXM2... On | 00000000:DB:00.0 Off | 0 |
| N/A 27C P0 41W / 300W | 0MiB / 32510MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
| 7 Tesla V100-SXM2... On | 00000000:DC:00.0 Off | 0 |
| N/A 28C P0 39W / 300W | 0MiB / 32510MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
```
### Network Topology
![](https://cos.twcc.ai/SYS-MANUAL/uploads/upload_978c56bb0ccf1e74301116e54b3b6432.jpeg)
#### Spine-Leaf Architecture
![](https://cos.twcc.ai/SYS-MANUAL/uploads/upload_81eb0cd554a7b4b174642287823d5fe2.jpeg)
adopt from [Aruba](https://www.arubanetworks.com/spine-leaf-architecture/)
[聊一聊Spine/Leaf是什麼](https://showipprotocols-tw.blogspot.com/2016/08/spine-leaf.html)
## Software
### OPENHPC software stack
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAwMAAAJZCAYAAAD1QOkGAAAFOHRFWHRteGZpbGUAJTNDbXhmaWxlJTIwaG9zdCUzRCUyMmFwcC5kaWFncmFtcy5uZXQlMjIlMjBtb2RpZmllZCUzRCUyMjIwMjEtMDEtMTVUMTElM0E1MyUzQTI0LjcyOFolMjIlMjBhZ2VudCUzRCUyMjUuMCUyMChXaW5kb3dzKSUyMiUyMGV0YWclM0QlMjJsSXVlczh3RDZmYnotN2g4d1dtaSUyMiUyMHZlcnNpb24lM0QlMjIxNC4yLjMlMjIlMjB0eXBlJTNEJTIyZ29vZ2xlJTIyJTNFJTNDZGlhZ3JhbSUyMGlkJTNEJTIyc3NneVJ3ZllPbTJ0U2FBVkZrMkElMjIlMjBuYW1lJTNEJTIyUGFnZS0xJTIyJTNFMVpsdGM2SXdFTWMlMkZEUzg3QXdFUlgxSkVkS3FXT1d4N2J4R2lNSVBHdzNocVAlMkYwRkNUNWtyM085bWF2c3pYU215U2JrNFplJTJGN0c3UVRHOTFDTXA0azAxWVNndU42T2xCTSUyRnNhSVlaRmlGYjk2ZW14dG5SN1JtMVlsbmtxTzEwTVVmNU9wVkdYMWwyZTB1MU5SODVZd2ZQTnJURmg2elZOJTJCSTB0TGt1MnYlMkIyMllNWHRySnQ0U1lFaFN1SUNXdCUyRnlsR2UxMVNIMnhUNmslMkJUSnJaamJzWHQyeWlwdk9jaWZiTEU3WiUyRnNwayUyQnBycGxZenh1clE2ZUxTbzREVmM2dWNHSDdTZUYxYlNOZiUyRk1BMCUyRm14bGdrM250Z2pmemVidGpWbzhSNWtLUDhqSXVkM1BDTDkxMnVseDhiQ0NYYnJWTmFqYU5yNXVNJTJCeXptTk5uRlN0ZTdGc1F0YnhsZUZxQm1pdUdCckxzJTJCUldLSXVaNkFscDRjUGwyNmNnUWdsVWJhaXZEeUtMdklCU3lLVUdySWNXZDlmVHFUYllNNnVUc09VdGxpS1lIa2UlMkJjSkpGQ1NxdjhCR0FMWkpPUEtHMk1HWk5nUm4zQldjQ2NBOWglMkY1VXdFT0hqdWpZMkZsUWRLOXVKVHVDRHQ0WkZocDRIU2k4Z1Z0dmM3NnQlMkZGT1ppeUk2a01vUHVFTWd4M09mdTNDMEFjY2lueSUyRmllWmtu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" style="cursor:pointer;max-width:100%;" onclick="(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('https://viewer.diagrams.net/?client=1&page=0');}})(this);"/>
### Queing system
#### PBS to Slurm Conversion Cheat Sheet
User Commands
| User Commands | PBS | Slurm |
| :--------: | :--------: | :--------: |
|Job submission|qsub [script_file]|sbatch [script_file]|
|Job deletion|qdel [job_id]|scancel [job_id]|
|Job status (by job)|qstat [job_id]|squeue [job_id]|
|Job status (by user)|qstat -u [user_name]|squeue -u [user_name]|
|Job hold|qhold [job_id]|scontrol hold [job_id]|
|Job release|qrls [job_id]|scontrol release [job_id]|
|Queue list|qstat -Q|squeue|
|Node list|pbsnodes -l|sinfo -N OR scontrol show nodes|
|Cluster status|qstat -a|sinfo|
Environment
| Environment | PBS | Slurm |
| :--------: | :--------: | :--------: |
|Job ID|$PBS_JOBID|$SLURM_JOBID|
|Job NAME|$PBS_JOBNAME|$SLURM_JOB_NAME|
|Submit Directory|$PBS_O_WORKDIR|$SLURM_SUBMIT_DIR|
|Submit Host|$PBS_O_HOST|$SLURM_SUBMIT_HOST|
|Node List|$PBS_NODEFILE|$SLURM_JOB_NODELIST|
|Q|$PBS_ARRAYID|$SLURM_ARRAY_TASK_ID|
Job Specifications
| Job Specification | PBS | Slurm |
| :--------: | :--------: | :--------: |
|Script directive|#PBS|#SBATCH|
|Queue/Partition|-q [name]|-p [name] *Best to let Slurm pick the optimal partition|
|Node Count|-l nodes=[count]|-N [min[-max]] *Autocalculates this if just task # is given|
|Total Task Count|-l ppn=[count] OR -l mppwidth=[PE_count]|-n OR --ntasks=ntasks|
|Wall Clock Limit|-l walltime=[hh:mm:ss]|-t [min] OR -t [days-hh:mm:ss]|
|Standard Output File|-o [file_name]|-o [file_name]|
|Standard Error File|-e [file_name]|-e [file_name]|
|Combine stdout/err|-j oe (both to stdout) OR -j eo (both to stderr)|(use -o without -e)|
|Copy Environment|-V|--export=[ALL | NONE | variables]|
|Event Notification|-m abe|--mail-type=[events]|
|Email Address|-M [address]|--mail-user=[address]|
|Job Name|-N [name]|--job-name=[name]|
|Job Restart|-r [y | n]|--requeue OR --no-requeue|
|Resource Sharing|-l naccesspolicy=singlejob|--exclusive OR --shared|
|Memory Size|-l mem=[MB]|--mem=[mem][M / G / T] OR --mem-per-cpu=[mem][M / G / T]|
|Accounts to charge|-A OR -W group_list=[account]|--account=[account] OR -A|
|Tasks Per Node|-l mppnppn [PEs_per_node]|--tasks-per-node=[count]|
|CPUs Per Task| |--cpus-per-task=[count]|
|Job Dependency|-d [job_id]|--depend=[state:job_id]|
|Quality of Service|-l qos=[name]|--qos=[normal | high]|
|Job Arrays|-t [array_spec]|--array=[array_spec]|
|Generic Resources|-l other=[resource_spec]|--gres=[resource_spec]|
|Job Enqueue Time|-a “YYYY-MM-DD HH:MM:SS”|--begin=YYYY-MM-DD[THH:MM[:SS]]|
| Never be requeued| | --no-requeue|
Taiwania1 submission script example
```
###############################################
# Intel MPI job script example #
###############################################
#!/bin/bash
#PBS -l select=2:ncpus=40:mpiprocs=40
#PBS -N mpijob
#PBS -q ctest
#PBS -P TRI654321
#PBS -j oe
cd $PBS_O_WORKDIR
module load intel/2018_u1
export I_MPI_HYDRA_BRANCH_COUNT=-1
mpiexec.hydra -PSM2 ./cpi.exe
```
Taiwania3 submission script example
```
#複雜版
#!/bin/bash
#SBATCH --account=ENT108161 # (-A) Account/project number
#SBATCH --job-name=hello_world # (-J) Job name
#SBATCH --partition=test # (-p) Specific slurm partition
#SBATCH --mail-type=END,FAIL # Mail events (NONE, BEGIN, END, FAIL, ALL)
#SBATCH --mail-user=user@mybox.mail # Where to send mail. Set this to your email address
#SBATCH --ntasks=24 # (-n) Number of MPI tasks (i.e. processes)
#SBATCH --cpus-per-task=1 # (-c) Number of cores per MPI task
#SBATCH --nodes=2 # (-N) Maximum number of nodes to be allocated
#SBATCH --ntasks-per-node=12 # Maximum number of tasks on each node
#SBATCH --ntasks-per-socket=6 # Maximum number of tasks on each socket
#SBATCH --distribution=cyclic:cyclic # (-m) Distribute tasks cyclically first among nodes and then among sockets within a node
#SBATCH --mem-per-cpu=600mb # Memory (i.e. RAM) per processor
#SBATCH --time=00:05:00 # (-t) Wall time limit (days-hrs:min:sec)
#SBATCH --output=%j.log # (-o) Path to the standard output and error files relative to the working directory
#SBATCH --error=%j.err # (-e) Path to the standard error ouput
#SBATCH --nodelist=cpn[3001-3002] # (-w) specific list of nodes
module load compiler/intel/2020u4 IntelMPI/2020
mpiexec.hydra -bootstrap slurm -n 24 /home/user/bin/intel-hello
```
| PARTITION | NODES | NODELIST |
| :--------: | :--------: | :--------: |
| cpu | 900 | cpn[3001-3900] |
| test | 64 | cpn[3001-3064] |
| bgm | 4 | bgm[3001-3004] |
| gpu | 12 | gpn[3001-3012] |
## Reference
### lstopo
Taiwania1
Taiwania2(Login node)
![Login node](https://cos.twcc.ai/SYS-MANUAL/uploads/upload_8a07674d89dea76a7f1ad6190e48d14f.png)
Taiwania2(Computing node)
![Computing node](https://cos.twcc.ai/SYS-MANUAL/uploads/upload_8d2c08eed741406a23a16244921928dc.png)
### lscpu
Taiwania1(Login/Computing node)
```
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 40
On-line CPU(s) list: 0-39
Thread(s) per core: 1
Core(s) per socket: 20
Socket(s): 2
NUMA node(s): 2
Vendor ID: GenuineIntel
CPU family: 6
Model: 85
Model name: Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz
Stepping: 4
CPU MHz: 2400.000
BogoMIPS: 4800.00
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 1024K
L3 cache: 28160K
NUMA node0 CPU(s): 0-19
NUMA node1 CPU(s): 20-39
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch arat epb pln pts dtherm intel_pt tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm cqm mpx avx512f avx512dq rdseed adx smap clflushopt clwb avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local
```
Taiwania2(Login/Computing node)
```
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 72
On-line CPU(s) list: 0-71
Thread(s) per core: 2
Core(s) per socket: 18
Socket(s): 2
NUMA node(s): 2
Vendor ID: GenuineIntel
CPU family: 6
Model: 85
Model name: Intel(R) Xeon(R) Gold 6154 CPU @ 3.00GHz
Stepping: 4
CPU MHz: 3000.000
BogoMIPS: 6000.00
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 1024K
L3 cache: 25344K
NUMA node0 CPU(s): 0-17,36-53
NUMA node1 CPU(s): 18-35,54-71
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch epb cat_l3 cdp_l3 intel_ppin intel_pt mba tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm cqm mpx rdt_a avx512f avx512dq rdseed adx smap clflushopt clwb avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local ibpb ibrs stibp dtherm ida arat pln pts hwp_epp pku ospke spec_ctrl intel_stibp
```
### numactl
Taiwania2(Login/Computing node)
```
available: 2 nodes (0-1)
node 0 cpus: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
node 0 size: 391828 MB
node 0 free: 333111 MB
node 1 cpus: 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
node 1 size: 393216 MB
node 1 free: 318520 MB
node distances:
node 0 1
0: 10 21
1: 21 10
```
### nvidia-smi
Taiwania2(Login/Computing node)
```
Tue Jan 12 17:34:37 2021
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 450.80.02 Driver Version: 450.80.02 CUDA Version: 11.1 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 Tesla V100-SXM2... On | 00000000:1B:00.0 Off | 0 |
| N/A 27C P0 42W / 300W | 0MiB / 32510MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
| 1 Tesla V100-SXM2... On | 00000000:1C:00.0 Off | 0 |
| N/A 24C P0 42W / 300W | 0MiB / 32510MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
| 2 Tesla V100-SXM2... On | 00000000:3D:00.0 Off | 0 |
| N/A 26C P0 42W / 300W | 0MiB / 32510MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
| 3 Tesla V100-SXM2... On | 00000000:3E:00.0 Off | 0 |
| N/A 28C P0 40W / 300W | 0MiB / 32510MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
| 4 Tesla V100-SXM2... On | 00000000:B1:00.0 Off | 0 |
| N/A 27C P0 41W / 300W | 0MiB / 32510MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
| 5 Tesla V100-SXM2... On | 00000000:B2:00.0 Off | 0 |
| N/A 29C P0 42W / 300W | 0MiB / 32510MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
| 6 Tesla V100-SXM2... On | 00000000:DB:00.0 Off | 0 |
| N/A 28C P0 42W / 300W | 0MiB / 32510MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
| 7 Tesla V100-SXM2... On | 00000000:DC:00.0 Off | 0 |
| N/A 26C P0 41W / 300W | 0MiB / 32510MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
```