Analysis Software
tools
- intel vtune
- GNU gprof
- linux perf
- valgrind
- memcheck
- callgrind
- cachegrind
- Helgrind
- ITAC (for MPI)
- IPM (for MPI)
- Charging software
- paramon
- paratunes
需要进一步的研究学习
暂无
遇到的问题
暂无
开题缘由、总结、反思、吐槽~~
2021 IPCC
参考文献
无
暂无
暂无
2021 IPCC
无
# 华为ARM
MPIOPT="-mca pml ucx --mca btl ^vader,tcp,openib,uct -x UCX_NET_DEVICES=mlx5_0:1"
mpirun -np 4 $MPIOPT ./prob1
root用户需要加–allow-run-as-root
设置 MCA(Modular Component Architecture ) 参数
-mca 开关允许将参数传递给各种 MCA(模块化组件架构)模块。 MCA 模块对 MPI 程序有直接影响,因为它们允许在运行时设置可调参数(例如使用哪个 BTL 通信设备驱动程序,向该 BTL 传递什么参数等)。
-mca 开关接受两个参数:\
可以多次使用以指定不同的 \
未知的\
OMPI_MCA_\
-tune, --tune \
-mca选项会覆盖环境变量,也会覆盖默认文件
$OPAL_PREFIX/etc/openmpi/openmpi-mca-params.conf
或者$OPAL_PREFIX/etc/openmpi-mca-params.conf
或者$HOME/.openmpi/mca-params.conf
https://stackoverflow.com/questions/36635061/how-to-check-which-mca-parameters-are-used-in-openmpi
set mpi_show_mca_params to all
ompi_info - 显示有关 Open MPI 安装的信息 三种常见场景: 1. 检查本地配置并查看 Open MPI 是如何安装的。 2. 向 Open MPI 社区提交错误报告/帮助请求 3. 查看已安装的 Open MPI 插件列表并查询它们支持哪些 MCA 参数。 4. ompi_info --all 显示所有MCA选项,包括在某些环境变量值下才可用的隐藏选项
比如不清楚 --mca btl vader,可以运行 ompi_info --param btl vader --level 9
MPI point-to-point byte transfer layer, used for MPI
BTL 组件框架负责处理所有点对点消息传送,该层只是简单地移动字节序列,不考虑上层点对点通信协议,包含了一组用于发送/接收或RDMA 的通信组件单元。BTL 不受 MPI 语义的影响,它仅仅是通过最基本的传递功能来在进程间进行数据交换(包括连续的和非连续的数据)。这样的组件框架为网络设备的开发商提供了便利,同时也可以支持更广泛的结点间通信设备。
btl 参数的值是一个由逗号分隔的组件列表,带有可选的前缀 ^(插入符号)来表示排除之后的组件。
在此示例中,组件 comp1 和 comp2 包含在 --mca 框架指定的框架中。组件 comp3 被排除在外,因为它前面有 ^(插入符号)符号。 因为,号的原因是一个整体,所以是排除comp3,comp1两项例如,以下命令从 BTL 框架中排除 tcp 和 openib 组件,并隐式包含所有其他组件
在命令中使用插入符号后跟省略号表示“对其余组件执行相反的操作”。 当 mpirun --mca 命令指定要排除的组件时,省略号后面的插入符号隐式包含该框架中的其余组件。 当 mpirun --mca 命令专门包含组件时,后面跟有省略号的表示“并排除未指定的组件”。例如,以下命令仅包含 btl 的 self、sm 和 gm 组件,并隐式排除其余部分:
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
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
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
> 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啊,什么情况。
g++ -pg -g -std=c++11 SLIC.cpp -o SLIC
./SLIC # generate gmon.out
less gmon.out
"gmon.out" may be a binary file. See it anyway?
gprof ./SLIC
gprof ./SLIC| /home/shaojiemike/github/isc21-gpaw/LogOrResult/profile/gprof2dot.py -n0 -e0 | dot -Tpng -o output.png
根据具体资源情况来,貌似是一个节点,那可以从OpenMP入手
Intel编译器的自动并行化功能可以自动的将串行程序的一部分转换为线程化代码。进行自动向量化主要包括的步骤有,找到有良好的工作共享(worksharing)的候选循环;对循环进行数据流(dataflow)分析,确认并行执行可以得到正确结果;使用OpenMP指令生成线程化代码。
/Qparallel:允许编译器进行自动并行化
/Qpar-reportn:n为0、1、2、3,输出自动并行化的报告
说明:/Qparallel必须在使用O2/3选项下有效
所谓的向量化,简单理解,就是使用高级的向量化SIMD指令(如SSE、SSE2等)优化程序,属于数据并行的范畴。
向量化的目标是生成SIMD指令,那么很显然,要对代码进行向量化,
第一是依靠编译器来生成这些指令;
第二是使用汇编或Intrinsics函数。
Intel编译器中,利用其自动向量分析器(auto-vectorizer)对代码进行分析并生成SIMD指令。另外,也会提供一些pragmas等方式使得用户能更好的处理代码来帮助编译器进行向量化。
基本向量化 /Qvec:开启自动向量化功能,需要在O2以上使用。在O2以上,这是默认的向量化选项,默认开启的。此选项生成的代码能用于Intel处理器和非Intel处理器。向量化还可能受其他选项影响。由于此选项是默认开启的,所以不需要在命令行增加此选项。
针对指令集(处理器)的向量化 /QxHost:针对当前使用的主机处理器选择最优的指令集优化。
对于双重循环,外层循环被自动并行化了,而内层循环并没有被自动并行化,内层循环被会自动向量化。
看汇编代码 没成功需要手动内联向量化汇编代码???
暂无
暂无
https://blog.csdn.net/gengshenghong/article/details/7027186
https://blog.csdn.net/gengshenghong/article/details/7034748
https://blog.csdn.net/gengshenghong/article/details/7022459
同RGB颜色空间相比,Lab是一种不常用的色彩空间。1976年,经修改后被正式命名为CIELab。Lab颜色空间中的L分量用于表示像素的亮度,取值范围是[0,100],表示从纯黑到纯白;a表示从红色到绿色的范围,取值范围是[127,-128];b表示从黄色到蓝色的范围,取值范围是[127,-128]。
RGB颜色空间不能直接转换为Lab颜色空间,需要借助XYZ颜色空间,把RGB颜色空间转换到XYZ颜色空间,之后再把XYZ颜色空间转换到Lab颜色空间。
RGB与XYZ颜色空间有如下关系:
LAB与XYZ颜色空间有如下关系: X,Y,Z会分别除以0.950456、1.0、1.088754。
暂无
暂无
无
https://www.youtube.com/watch?v=_laN9jJO63Q
https://www.youtube.com/watch?v=MXNBtws35WE
https://colab.research.google.com/github/AliaksandrSiarohin/first-order-model/blob/master/demo.ipynb#scrollTo=Oxi6-riLOgnm
但是由于上传的文件不能太大,对于unravel可以按照youtube视频的传无声音版本,然后用kapwing在线合成导出。
效果展示1替换
效果展示2替换
效果文件链接
https://raw.githubusercontent.com/Kirrito-k423/Picbed/main/img/final_60eaff63b13be700ab0582c8_20002.mp4
和
http://pic.shaojiemike.top/PicGo%E4%B8%8B%E8%BD%BD.mp4
这是一款图片上传的工具,目前支持微博图床,七牛图床,腾讯云,又拍云,GitHub等图床,未来将支持更多图床。
所以解决问题的思路就是,将本地的文件,或者剪切板上面的截图发送图床,然后生成在线图片的链接,走到哪就可以用到哪。
对象存储有时也称为 Blob 存储,可以存储任意的大型非结构化文件。我们常用的有 AWS 的 S3、阿里云的 OSS、腾讯云的 COS、华为云的 OBS,都是对象存储,他们都可以为我们提供延迟一致、持久性高和容量无限的服务,免去了我们本地文件系统的共享、备份等痛点。
最为经典的是 AWS 的 S3(Simple Storage Service),刚刚推出的时候是革命性的服务,但也带来了新的痛点,上传、存储的费用还可以,但下载也就是取回的时候会被收取流量费,这个费用随着时间的推移,存储的文件越来越多,流量费也变得越来越高。
2022年 5月 Cloudflare 就为我们带来了 R2 Storage,基于带宽联盟,为存储对象提供更低成本的存储服务。在后台,R2 自动智能管理数据分层,以在峰值负载时提高性能,并为不经常请求的对象降低成本。
R2 的革命性
在上面我们了解了 Cloudflare R2 Storage 收费项目,发现了什么?只收取存储费用、操作费用,没有流量费用!是的没有流量费用,这就是 Cloudflare R2 Storage 的革命性,依托带宽联盟,做到了零出口费用!5
(推荐)七牛申请了免费的证书证书,由于是海外访问还是慢。
one drive虽然能用也能访问,但是速度慢而且操作麻烦,只能一个个传。而且会失效
Name | Storage | request operations | newwork flow |
---|---|---|---|
Cloudflare R2 | 10GB/monthfree+$0.015/add-GB/month | 1Moperations/monthfree+ $4.50 per additional million operations(2) | not charge5 |
Aliyun OSS 4 | 0.12元/GB/月(1) | 0.01元/万次 | 0.50元/GB |
timestamp | storgy | Network flow(per month) | request operations |
---|---|---|---|
Aliyun 231031 | 395.13MB | 21.41GB | 61,490 |
Cloudflare 231124 | 490MB | xxx | 9.11k |
I need to pay 10RMB each month and the fee grows fast
So I still recommand to use OSS rather than other tricks like using github.
I use blog as my brain cache
Please read 1
{
"name": "(gdb) 启动",
"type": "cppdbg",
"request": "launch",
"program": "/home/shaojiemike/github/IPCC/SLIC/SLIC",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
cat ./log/job_436960_rank0_fb0707_0.out
Computing time=21872 ms
There are 0 points' labels are different from original file.
北京超算的机器传文件只能用wincp,而且有时候不行,需要刷新缓存