跳转至

笔记

AMD Epyc Compiler Options

AMD EPYC™ 7xx2-series Processors Compiler Options Quick Reference Guide

AOCC compiler (with Flang -Fortran Front-End)

Latest release: 2.1, Nov 2019

https://developer.amd.com/amd-aocc/Advanced

GNU compiler collection (gcc, g++, gfortran)

Intel compilers (icc, icpc, ifort)

amd prace guide

需要进一步的研究学习

  1. Amd uprof
  2. PGI compiler
  3. Numactl
  4. OMP_PROC_BIND=TRUE; OMP_PLACES=sockets

遇到的问题

暂无

开题缘由、总结、反思、吐槽~~

参考文献

https://developer.amd.com/wordpress/media/2020/04/Compiler%20Options%20Quick%20Ref%20Guide%20for%20AMD%20EPYC%207xx2%20Series%20Processors.pdf

https://prace-ri.eu/wp-content/uploads/Best-Practice-Guide_AMD.pdf#page35

Prace guide

Intel Compile Options

Win与Linux的区别

选项区别

对于大部分选项,Intel编译器在Win上的格式为:/Qopt,那么对应于Lin上的选项是:-opt。禁用某一个选项的方式是/Qopt-和-opt-。

Intel的编译器、链接器等

在Win上,编译器为icl.exe,链接器为xilink.exe,VS的编译器为cl.exe,链接器为link.exe。

在Linux下,C编译器为icc,C++编译器为icpc(但是也可以使用icc编译C++文件),链接器为xild,打包为xiar,其余工具类似命名。

GNU的C编译器为gcc,C++编译器为g++,链接器为ld,打包为ar

并行化

-qopenmp

-qopenmp-simd

如果选项 O2 或更高版本有效,则启用 OpenMP* SIMD 编译。

-parallel

告诉自动并行程序为可以安全地并行执行的循环生成多线程代码。

要使用此选项,您还必须指定选项 O2 或 O3。 如果还指定了选项 O3,则此选项设置选项 [q 或 Q]opt-matmul。

-qopt-matmul

启用或禁用编译器生成的矩阵乘法(matmul)库调用。

向量化(SIMD指令集)

-xHost

必须至少与-O2一起使用,在Linux系统上,如果既不指定-x也不指定-m,则默认值为-msse2。

-fast

On macOS* systems: -ipo, -mdynamic-no-pic,-O3, -no-prec-div,-fp-model fast=2, and -xHost

On Windows* systems: /O3, /Qipo, /Qprec-div-, /fp:fast=2, and /QxHost

On Linux* systems: -ipo, -O3, -no-prec-div,-static, -fp-model fast=2, and -xHost

指定选项 fast 后,您可以通过在命令行上指定不同的特定于处理器的 [Q]x 选项来覆盖 [Q]xHost 选项设置。但是,命令行上指定的最后一个选项优先。

-march

必须至少与-O2一起使用,如果同时指定 -ax 和 -march 选项,编译器将不会生成特定于 Intel 的指令。

指定 -march=pentium4 设置 -mtune=pentium4。

-x

告诉编译器它可以针对哪些处理器功能,包括它可以生成哪些指令集和优化。

AMBERLAKE
BROADWELL
CANNONLAKE
CASCADELAKE
COFFEELAKE
GOLDMONT
GOLDMONT-PLUS
HASWELL
ICELAKE-CLIENT (or ICELAKE)
ICELAKE-SERVER
IVYBRIDGE
KABYLAKE
KNL
KNM
SANDYBRIDGE
SILVERMONT
SKYLAKE
SKYLAKE-AVX512
TREMONT
WHISKEYLAKE

-m

告诉编译器它可能针对哪些功能,包括它可能生成的指令集。

-ax

生成基于多个指令集的代码。

HLO

High-level Optimizations,高级(别)优化。O1不属于

-O2

更广泛的优化。英特尔推荐通用。

在O2和更高级别启用矢量化。

在使用IA-32体系结构的系统上:执行一些基本的循环优化,例如分发、谓词Opt、交换、多版本控制和标量替换。

此选项还支持:

内部函数的内联
文件内过程间优化,包括:
   内联
   恒定传播
   正向替代
   常规属性传播
   可变地址分析
   死静态函数消除
   删除未引用变量
以下性能增益功能:
   恒定传播
   复制传播
   死码消除
   全局寄存器分配
   全局指令调度与控制推测
   循环展开
   优化代码选择
   部分冗余消除
   强度折减/诱导变量简化
   变量重命名
   异常处理优化
   尾部递归
   窥视孔优化
   结构分配降低与优化
   死区消除

-O3

O3选项对循环转换(loop transformations)进行更好的处理来优化内存访问。

比-O2更激进,编译时间更长。建议用于涉及密集浮点计算的循环代码。

既执行O2优化,并支持更积极的循环转换,如Fusion、Block Unroll和Jam以及Collasing IF语句。

此选项可以设置其他选项。这由编译器决定,具体取决于您使用的操作系统和体系结构。设置的选项可能会因版本而异。

当O3与options-ax或-x(Linux)或options/Qax或/Qx(Windows)一起使用时,编译器执行的数据依赖性分析比O2更严格,这可能会导致更长的编译时间。

O3优化可能不会导致更高的性能,除非发生循环和内存访问转换。在某些情况下,与O2优化相比,优化可能会减慢代码的速度。

O3选项建议用于循环大量使用浮点计算和处理大型数据集的应用程序。

与非英特尔微处理器相比,共享库中的许多例程针对英特尔微处理器进行了高度优化。

-Ofast

-O3 plus some extras.

IPO

Interprocedural Optimizations,过程间优化。

典型优化措施包括:过程内嵌与重新排序、消除死(执行不到的)代码以及常数传播和内联等基本优化。

过程间优化,当程序链接时检查文件间函数调用的一个步骤。在编译和链接时必须使用此标志。使用这个标志的编译时间非常长,但是根据应用程序的不同,如果与-O*标志结合使用,可能会有明显的性能改进。

内联

内联或内联展开,简单理解,就是将函数调用用函数体代替,主要优点是省去了函数调用开销和返回指令的开销,主要缺点是可能增大代码大小。

PGO

PGO优化是分三步完成的,是一个动态的优化过程。

PGO,即Profile-Guided Optimizations,档案导引优化。

具体选项详解

-mtune=processor

此标志对特定的处理器类型进行额外的调整,但是它不会生成额外的SIMD指令,因此不存在体系结构兼容性问题。调优将涉及对处理器缓存大小、指令优先顺序等的优化。

为支持指定英特尔处理器或微体系结构代码名的处理器优化代码。

-no-prec-div

不启用 提高浮点除法的精度。

-static

不用动态库

-fp-model fast=2

自动向量化时按照固定精度,与OpenMP的选项好像有兼容性的问题

-funroll-all-loops

展开所有循环,即使进入循环时迭代次数不确定。此选项可能会影响性能。

-unroll-aggressive / -no-unroll-aggressive

此选项决定编译器是否对某些循环使用更激进的展开。期权的积极形式可以提高绩效。

此选项可对具有较小恒定递增计数的回路进行积极的完全展开。

falign-loops

将循环对齐到 2 的幂次字节边界。

-falign-loops[=n]是最小对齐边界的可选字节数。它必须是 1 到 4096 之间的 2 的幂,例如 1、2、4、8、16、32、64、128 等。如果为 n 指定 1,则不执行对齐;这与指定选项的否定形式相同。如果不指定 n,则默认对齐为 16 字节。

-O0 / -Od

关闭所有优化选项,-O等于-O2 (Linux and macOS)

-O1

在保证代码量不增加的情况下编译,

  1. 实现全局优化;这包括数据流分析、代码运动、强度降低和测试替换、分割生存期分析和指令调度。
  2. 禁用某些内部函数的内联。

遇到的问题

 icpc -dM -E -x c++ SLIC.cpp

https://stackoverflow.com/questions/34310546/how-can-i-see-which-compilation-options-are-enabled-on-intel-icc-compiler

parallel 与mpicc 或者mpiicc有什么区别呢

开题缘由、总结、反思、吐槽~~

讲实话,IPO PGO我已经晕了,我先列个list,之后再研究

参考文献

https://blog.csdn.net/gengshenghong/article/details/7034748

按字母顺序排列的intel c++编译器选项列表

IPCC Preliminary SLIC Optimization 2

chivier advise on IPCC amd_256

技术路线 描述 时间 加速比 备注
Baseline 串行程序 21872 ms 1
核心循环openmp 未指定 8079ms
核心循环openmp 单节点64核 7690ms 2.84
换intel的ipcp 基于上一步 3071 ms 7.12
-xHOST 其余不行,基于上一步 4012ms
-O3 基于上一步 3593ms

node5

Intel(R) Xeon(R) Platinum 8153 CPU @ 2.00GHz

技术路线 描述 时间 加速比 备注
Baseline 串行程序 29240 ms 1
核心循环openmp 未指定(htop看出64核) 12244 ms
去除无用计算+两个numk的for循环 080501 11953 ms 10054 ms
计算融合(去除inv) 080502 15702 ms 14923 ms 15438 ms 11987 ms
maxlab openmp 基于第三行080503 13872 ms 11716 ms
循环展开?? 14436 ms 14232 ms 15680 ms

-xCOMMON-AVX512 not supports

Please verify that both the operating system and the processor support Intel(R) X87, CMOV, MMX, FXSAVE, SSE, SSE2, SSE3, SSSE3, SSE4_1, SSE4_2, MOVBE, POPCNT, AVX, F16C, FMA, BMI, LZCNT, AVX2, AVX512F, ADX and AVX512CD instructions.
-xCORE-AVX2
Please verify that both the operating system and the processor support Intel(R) X87, CMOV, MMX, FXSAVE, SSE, SSE2, SSE3, SSSE3, SSE4_1, SSE4_2, MOVBE, POPCNT, AVX, F16C, FMA, BMI, LZCNT and AVX2 instructions
没有 FXSAVE,BMI,LZCNT 有BMI1,BMI2

使用-xAVX,或者-xHOST 来选择可用的最先进指令集

Please verify that both the operating system and the processor support Intel(R) X87, CMOV, MMX, FXSAVE, SSE, SSE2, SSE3, SSSE3, SSE4_1, SSE4_2, POPCNT and AVX instructions.

-fast bugs

ld: cannot find -lstdc++
ld: cannot find -lstdc++
/public1/soft/intel/2020u4/compilers_and_libraries_2020.4.304/linux/compiler/lib/intel64_lin/libiomp5.a(ompt-general.o): In function `ompt_pre_init':
(.text+0x2281): warning: Using 'dlopen' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/var/spool/slurm/d/job437118/slurm_script: line 23: ./SLIC_slurm_intel_o3: No such file or directory

AMD EPYC 7~~2

icpc -Ofast -march=core-avx2 -ipo -mdynamic-no-pic -unroll-aggressive -no-prec-div -fp-mode fast=2 -funroll-all-loops -falign-loops -fma -ftz -fomit-frame-pointer -std=c++11 -qopenmp SLIC_openmp.cpp -o SLIC_slurm_intel_o3

后续优化

基于核心的openmp并行

去除无用计算

delete all maxxy
if(maxxy[klabels[i]] < distxy[i]) maxxy[klabels[i]] = distxy[i];

计算融合(减少访存次数)

  1. 将inv去除(效果存疑)
  2. maxlab openmp并行(由于不是计算密集的,是不是要循环展开)

需要进一步的研究学习

暂无

遇到的问题

暂无

开题缘由、总结、反思、吐槽~~

参考文献

WebCrawler first try

常见的仿站软件尝试

  1. wget -c -r -np -k -L -p 递归下载
  2. webCopy
  3. WinHTTrack
  4. Octoparse
  5. Teleport pro

遇到的问题

尝试后下载了一些html\css\js文件。但是没有达到我的要求。

我猜测的爬取原理,根据网站返回的index.html以及文件里指向的新文件路径进行递归下载。

这样的问题有:

  1. 无法对json文件里指向的材质包路径进行递归下载
  2. 无法读取指定网站文件夹的目录,导致不知道文件夹里有什么文件
  3. 假如有ftp://可能可以

需要进一步的研究学习

  1. 通过python实现对json文件里指向的材质包路径进行递归下载(感觉只能半自动)
  2. 读取指定网站文件夹的目录

开题缘由、总结、反思、吐槽~~

在找live2d模型的时候找到了 https://github.com/Eikanya/Live2d-model ,然后其中有个HSO的demo网站https://l2d.alg-wiki.com/。

然后一开始我想在自己页面做一个仿站,后来了解后只想把他里面的live2d的材质数据、贴图等爬下来。但是遇到了几个问题。

参考文献

https://www.shuzhiduo.com/A/E35pV9EAzv/

python crawler

IPCC Preliminary SLIC Optimization 1

第一部分优化

从数据重用(不重复计算,降低计算量)、计算融合(减少访存次数)、循环重组、改变数据结构入手

数据重用

主体变量数据依赖梳理

一开始所有的RGB颜色在ubuff里,klabel存分类结果

首先经过转换,将ubuff的RGB转换为lvec avec bvec三个double[sz]数组 存在私有变量m_lvec m_avec m_bvec,供class内访问

优化建议:lab三种颜色存在一起,访问缓存连续

DoRGBtoLABConversion(ubuff, m_lvec, m_avec, m_bvec);

计算冗余一:

计算出的全体edges,只有一部分在后面一个地方用了196个中心以及周围8个节点。

优化建议:要用edges时再计算(保证了去除不必要计算和计算融合)

优化建议:kseedsl/a/b/x/y 分别用5个vector存是不好的,每个中心的5元组要存在一起,因为访问和修改都是一起的。

优化建议: 1. 核心计算,是不是要拆开? 2. 除以maxlab[n],改成乘1/maxlab[n] 3. maxxy没有用,可以除去定义与数组维护(line 429) 4. disxy[i]也就可以不用数组

优化建议: 1. if判断用掩码 2. 想将与每个像素i有关的属性放在一起,但是distvec要全部初始化。那我维护char*的passcheck数组判断是否已经遍历?未遍历直接赋值,已经遍历,比较后判断是否赋值。 3. 对于2和并行化这个部分的问题:1.按照中心划分,存储每个点的距不同中心的距离,最后归约取最小。2. 并行还是按照坐标划分,判断在哪几个区域内,然后计算距离最小的)

优化建议: 1. 对于求和部分labxy与1/clustersize??存在一起 2. 这部分按坐标并行时,归约的是196个元素的最小值或者求和

vector 连续性

vector中的元素在内存中是连续存储的.

vector的实现是由一个动态数组构成. 当空间不够的时候, 采用类似于C语言的realloc函数重新分配空间. 正是因为vector中的元素是连续存储的, 所以vector支持常数时间内完成元素的随机访问. vector中的iterator属于Random Access Iterator.

cache缓存原理疑问

每级cache难道只存读取数据周围的所有地址数据吗?还是一块一块读的。

假如调度是一块一块读取的而且cache足够大存下时,对于m_lvec m_avec m_bvec,假如各读取同一块,会导致和将其存储在一起是一样的效果。对于m_lvec[i]的下一个元素m_lvec[i+1],m_avec[i+1],m_bvec[i+1]也在cache中。

chivier 建议

#pragma omp parallel for collapse(2)
icpc -xCOMMON-AVX512 -O3 -std=c++11 -qopenmp SLIC.cpp -o SLIC
g++ -fopenmp
先openMP优化,然后MPI一分为二
数据结构没有必要改,不会访存连续
minicoda for tmux zsh htop gcc9

pip install gdbgui to localhost

gdb tui enable

需要进一步的研究学习

暂无

遇到的问题

暂无

参考文献

ZEN2

Zen 2 使用所谓的 TAGE 分支预测器,它比其前身具有更深的分支历史。这通过比 Zen (+) 更大的分支目标缓冲区 (BTB) 得到增强,L1 BTB(512 个条目)增加了一倍,L2 BTB 几乎增加了一倍(现在为 7K)。随着 MOP 缓存增长到 4K,更大更好的主题仍在继续。这特别方便,因为没有处理器想要多次解码微操作。将它们解码一次并将它们放入大(r)缓存中可以加快速度并使处理器更高效。

有趣的是,在分析了大量应用程序及其数据集大小后,指令缓存实际上从 64KB 下降到 32KB,但关联性从 4 路增加到 8 路。原因是,根据 Mike Clark 的说法,这种减少几乎不会降低性能:无论如何,大多数数据集都需要超过 64KB。新的缓存还具有改进的预取和更好的利用率。

这一切意味着 Zen 2 的前端更高效——有助于 IPC——但确实以占用更多空间为代价。

Zen 2 微架构的简化图

单个核心

参考文献

https://hexus.net/tech/news/cpu/131549-the-architecture-behind-amds-zen-2-ryzen-3000-cpus/

https://en.wikichip.org/wiki/amd/microarchitectures/zen_2

Openmpi MPIOPT

# 华为ARM
MPIOPT="-mca pml ucx --mca btl ^vader,tcp,openib,uct -x UCX_NET_DEVICES=mlx5_0:1"
mpirun -np 4 $MPIOPT ./prob1

mpirun参数

root用户需要加–allow-run-as-root 参数1 参数2

-x \

  1. 在执行程序之前将指定的环境变量导出到远程节点。
  2. 每个 -x 选项只能指定一个环境变量。 可以指定现有环境变量或使用相应值指定新变量名称。 例如:
    % mpirun -x DISPLAY -x OFILE=/tmp/out ...
    
  3. 建议用户在环境中设置变量,然后使用 -x 导出(非定义)它们。

MCA 组件

设置 MCA(Modular Component Architecture ) 参数

-mca 开关允许将参数传递给各种 MCA(模块化组件架构)模块。 MCA 模块对 MPI 程序有直接影响,因为它们允许在运行时设置可调参数(例如使用哪个 BTL 通信设备驱动程序,向该 BTL 传递什么参数等)。

-mca 开关接受两个参数:\ 和 \。 \ 参数通常指定哪个 MCA 模块将接收该值。例如,\ "btl" 用于选择用于传输 MPI 消息的 BTL。 \ 参数是传递的值。

mpirun -mca btl tcp,self -np 1 foo
告诉 Open MPI 使用“tcp”和“self”BTL,并运行一个已分配的“foo”节点。

可以多次使用以指定不同的 \ 和/或 \ 参数。如果多次指定相同的 \,则 \ 将用逗号 (",") 连接起来,将它们分隔开。

未知的\值不会报warning

MCA通过环境变量实现

OMPI_MCA_\=\

MCA通过指定包含相关选项的文件实现

-tune, --tune \

MCA设置的优先级

-mca选项会覆盖环境变量,也会覆盖默认文件

$OPAL_PREFIX/etc/openmpi/openmpi-mca-params.conf

或者$OPAL_PREFIX/etc/openmpi-mca-params.conf

或者$HOME/.openmpi/mca-params.conf

MCA 默认default值

https://stackoverflow.com/questions/36635061/how-to-check-which-mca-parameters-are-used-in-openmpi

set mpi_show_mca_params to all

MCA可用的组件-通过ompi_info

ompi_info指令

ompi_info - 显示有关 Open MPI 安装的信息 三种常见场景: 1. 检查本地配置并查看 Open MPI 是如何安装的。 2. 向 Open MPI 社区提交错误报告/帮助请求 3. 查看已安装的 Open MPI 插件列表并查询它们支持哪些 MCA 参数。 4. ompi_info --all 显示所有MCA选项,包括在某些环境变量值下才可用的隐藏选项

ompi_info查看使用情况

比如不清楚 --mca btl vader,可以运行 ompi_info --param btl vader --level 9

BTL

MPI point-to-point byte transfer layer, used for MPI

BTL 组件框架负责处理所有点对点消息传送,该层只是简单地移动字节序列,不考虑上层点对点通信协议,包含了一组用于发送/接收或RDMA 的通信组件单元。BTL 不受 MPI 语义的影响,它仅仅是通过最基本的传递功能来在进程间进行数据交换(包括连续的和非连续的数据)。这样的组件框架为网络设备的开发商提供了便利,同时也可以支持更广泛的结点间通信设备。

^号与...符号

btl 参数的值是一个由逗号分隔的组件列表,带有可选的前缀 ^(插入符号)来表示排除之后的组件。

% mpirun --mca framework comp1, comp2 ^comp3 # ^comp3前注意没有,号
在此示例中,组件 comp1 和 comp2 包含在 --mca 框架指定的框架中。组件 comp3 被排除在外,因为它前面有 ^(插入符号)符号。
% mpirun --mca framework ^comp3,comp1
因为,号的原因是一个整体,所以是排除comp3,comp1两项

例如,以下命令从 BTL 框架中排除 tcp 和 openib 组件,并隐式包含所有其他组件

% mpirun --mca btl ^tcp,openib ... # ...是rest的意思
在命令中使用插入符号后跟省略号表示“对其余组件执行相反的操作”。 当 mpirun --mca 命令指定要排除的组件时,省略号后面的插入符号隐式包含该框架中的其余组件。 当 mpirun --mca 命令专门包含组件时,后面跟有省略号的表示“并排除未指定的组件”。

例如,以下命令仅包含 btl 的 self、sm 和 gm 组件,并隐式排除其余部分:

% mpirun --mca btl self,sm,gm ...

PML

MPI point-to-point management layer

PML 组件框架负责管理所有消息的传递,实现了 MPI 点点通信原语,包括标准、缓冲、准备和同步四种通信模式。PML 根据具体的调度策略对 MPI 消息进行调度,该策略是根据 BTL 的具体属性决定的。短消息传递协议和长消息传递协议也是在 PML 中实现的。所有控制信息(ACK/NACK/MATCH)也都由 PML 进行管理。这种结构的优点是将传输协议从底层互连中分离出来,显著的降低了代码的复杂度和冗余度,增强了可维护性。

需要进一步的研究学习

不使用btl??

遇到的问题

暂无

参考文献

https://docs.oracle.com/cd/E19923-01/820-6793-10/mca-params.html

https://www.open-mpi.org/faq/?category=openfabrics

http://blog.sysu.tech/MPI/OpenMPI/OpenMPI%E5%B8%B8%E7%94%A8%E6%8A%80%E5%B7%A7/

http://blog.sysu.tech/MPI/OpenMPI/OpenMPI%E5%B8%B8%E7%94%A8%E6%8A%80%E5%B7%A7/

https://blog.csdn.net/qq_15457239/article/details/49152209

IPCC Preliminary SLIC Analysis part4 : cluster environment

login node

id

[sca3173@ln121%bscc-a5 ~]$ id sca3173
do_ypcall: clnt_call: RPC: Remote system error
do_ypcall: clnt_call: RPC: Remote system error
uid=5804(sca3173) gid=5804(sca3173) groups=5804(sca3173),1518

cpu

Intel(R) Xeon(R) Silver 4208 CPU @ 2.10GHz

slurm

ON AVAIL  TIMELIMIT  NODES  STATE NODELIST 
amd_256      up   infinite      3 drain* fa[0512,0911],fb1111 
amd_256      up   infinite      1  down* fa0714 
amd_256      up   infinite      1   comp fb1106 
amd_256      up   infinite     16  drain fa[0109,0411,0414,0601,0608-0609,0810,1203],fb[0104,0110,0513,0908,1007,1208,1212,1216] 
amd_256      up   infinite    377  alloc fa[0101-0108,0110-0116,0201-0202,0204-0216,0301-0316,0401-0410,0412-0413,0415-0416,0501-0511,0513-0516,0602-0607,0610-0616,0701-0713,0715-0716,0801-0809,0811,0813-0816,0901-0910,0912-0916,1001-1016,1101-1116,1201-1202,1204-1216,1301-1316],fb[0101-0103,0105-0109,0111-0116,0201-0204,0207-0216,0301-0316,0401-0416,0501-0512,0514-0516,0601-0616,0702-0716,0803-0815,0901-0904,0906-0907,0909-0911,0913-0916,1001-1003,1010,1012-1014,1016,1101,1103-1105,1107-1110,1113-1115,1201-1207,1211,1213-1214,1302-1304,1309-1315],fc[0101-0105,0115,0205-0207,0209,0215] 

memery

[sca3173@ln121%bscc-a5 ~]$ cat /proc/meminfo
MemTotal:       196339948 kB = 187gB
MemFree:        89580888 kB = 85 gB
MemAvailable:   163166580 kB = 102 gB

architecture

[sca3173@ln121%bscc-a5 public1]$ lsb_release -d | awk -F"\t" '{print $2}'
CentOS Linux release 7.9.2009 (Core)

[sca3173@ln121%bscc-a5 public1]$ cat /proc/version
Linux version 3.10.0-1160.el7.x86_64 ([email protected]) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) ) #1 SMP Mon Oct 19 16:18:59 UTC 2020

GPU 集显

[sca3173@ln121%bscc-a5 public1]$  lshw -numeric -C display
WARNING: you should run this program as super-user.
  *-display                 
       description: VGA compatible controller
       product: Integrated Matrox G200eW3 Graphics Controller [102B:536]
       vendor: Matrox Electronics Systems Ltd. [102B]

disk

[sca3173@ln121%bscc-a5 public1]$ df -h /public1
Filesystem                                Size  Used Avail Use% Mounted on
10.10.58.1@o2ib:10.10.58.2@o2ib:/public1  2.7P  240T  2.3P  10% /public1

IP 内网IP

[sca3173@ln121%bscc-a5 public1]$ hostname -I | awk '{print $1}'
172.16.58.14

compute node

> cat lscpu.txt                
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                64
On-line CPU(s) list:   0-63
Thread(s) per core:    1
Core(s) per socket:    32
Socket(s):             2
NUMA node(s):          2
Vendor ID:             AuthenticAMD
CPU family:            23
Model:                 49
Model name:            AMD EPYC 7452 32-Core Processor
Stepping:              0
CPU MHz:               2345.724
BogoMIPS:              4691.44
Virtualization:        AMD-V
L1d cache:             32K
L1i cache:             32K
L2 cache:              512K
L3 cache:              16384K
NUMA node0 CPU(s):     0-31
NUMA node1 CPU(s):     32-63
Flags:                 fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc art rep_good nopl nonstop_tsc extd_apicid aperfmperf eagerfpu pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_l2 cpb cat_l3 cdp_l3 hw_pstate sme retpoline_amd ssbd ibrs ibpb stibp vmmcall fsgsbase bmi1 avx2 smep bmi2 cqm rdt_a rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local clzero irperf xsaveerptr arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic v_vmsave_vmload vgif umip overflow_recov succor smca

没有gcc/7.3.0

比赛是2节点128核的环境

计算节点网络拓扑图

我们是A5 分区。

没有找到手册,只有一个官网图。但是虽然频率是2.35GHz,但是内存只有251GB啊,什么情况。

FTP 2 : debug

选项含义

  1. 只能下载。不能上传、删除、重命名。write_enable=NO
  2. 只能上传、删除、重命名。不能下载。download_enable=NO
    STOR - store a file on the remote host 上传文件
    RETR - retrieve a remote file 下载文件
    

遇到的问题

  1. 修改好后,上传文件mkdir都会报错
    550 Permission denied.
    
    write_enable=YES 也不对,user_config_dir的注释忘改了
  2. 用虚拟用户配置
    响应:  500 OOPS: vsftpd: refusing to run with writable root inside chroot()
    
    解决办法
     write_enable=YES
     allow_writeable_chroot=YES
     chmod 755 upload
    
  3. 无法下载,是符合实际应用情况。但是如何改变 我以为只要 cmds_allowed=RETR 报错
    550 Failed to open file.
    
    sudo chmod 644 index3.html
    
  4. 可以删除文件。可以通过创建多个虚拟账号弥补。 禁止删除(去除DELE)
    cmds_allowed=FEAT,REST,CWD,LIST,MDTM,MKD,NLST,PASS,PASV,PORT,PWD,QUIT,RMD,SIZE,STOR,TYPE,USER,ACCT,APPE,CDUP,HELP,MODE,NOOP,REIN,STAT,STOU,STRU,SYST
    
    或者
    cmds_denied=DELE
    

参考文献

VSFTPD实现用户权限不能删除 只能上传、下载