跳转至

Tutorials

Keepass

简介

KeePass是一个轻量级、易用且安全性极高的密码管理器,其源码完全开源(OSI certified),获得了世界多国的安全认证和评级。

只需要一个主密码+一个数据库文件即可安全的保存所有的密码。

特点

  1. 密码数据库自己掌握,与1Password和LastPass相比不存在平台泄露的可能。
  2. 所以在云存储、多终端同步上不如商业产品1Password和LastPass便捷,需要自己配置。
  3. 跨平台(有大量开源的第三方的客户端)。
  4. 支持WebDAV,配合网盘可实现跨平台、多终端同步。
  5. Windows下可配置浏览器自动输入(Mac据说也可以)。

密码安全

普通用户面临的问题: * 重要的密码会泄露在非重要的地方:每个人心中都有一个常用的密码,这个密码在注册各类账户时都会拿出来用,甚至银行卡的6位数密码也包含其中 * 小网站的“脱裤”会导致你的常用密码被泄露 * 不同的网站对密码的复杂度要求不同,我们也会临时“演变”导致“找回密码”成了登录前的基本操作

美观兼容版

  • KeePassXC:KeePassX的分支,功能齐全,
  • 跨平台(Windows、macOS和Linux),
  • 界面更加美观、扁平化,
  • 但不支持WebDAV。
  • 支持KDBX 3.1和4.0。
  • KeeWeb:后起之秀,与KeePass兼容,功能齐全,
  • 跨平台(Windows、macOS和Linux),
  • 另有自动备份等功能,
  • 界面美观;
  • 支持在线安装插件;支持离线Web应用;
  • 笔者认为是Mac OS的首选;使用坚果云webdav时报错:“No Last-Modified header”。

Windows KeeWeb使用

  1. 中文插件 https://plugins.keeweb.info/translations/zh-CN
  2. 设置里方便激活浏览器拓展

多平台

  • Windows:KeePass、KeeWeb
  • Android:KeePass2Android
  • 读取群晖Drive下的文件即可
  • 支持自动填充功能,和生物识别
  • Mac OS:KeeWeb
  • IOS、 ipad OS:
  • https://github.com/keeweb/keeweb/wiki/iOS
  • Strongbox 就还行
  • iPhone:keepass touch

同步实现

坚果云

坚果云更像Dropbox, * 支持WebDAV、 * 增量同步和历史版本等功能。

坚果云免费版虽不如Dropbox,但也还算厚道: * 上传流量1G/月,下载流量3G/月, * 支持1个月的历史版本,用来使用KeePass、云笔记等足矣。

操作

  1. 添加“应用密钥”
  2. 在《账户信息》-《安全选项》
  3. keeweb 添加 即可
  4. 注意坚果云用户是 邮箱, 不是昵称

参考教程

但是keeweb无法同步,会报错

其他第三方密码管理器

LastPass、1Password、 秘迹 app

需要进一步的研究学习

暂无

遇到的问题

暂无

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

原本我是懒得用的,edge自带的密码管理器不好吗?

  1. 一方面,自动填写带来的安全性问题
  2. 目前大多数第三方密码管理器,如LastPass和1Password都不容易受到这种攻击的影响,因为它们避免了自动填入不可见的登录表单,并且需要进行用户交互。
  3. 可以直接导出所有信息的黑客程序HackBrowserdata
  4. 还有windows管理员密码获取程序。(如果要玩,记得先把火绒等杀毒软件关了
  5. 另一方面,假如你电脑被攻击了,浏览器根本无法保护你的密码

目标

  1. 多端同步的(Windows,macbook,ipad,Android)
  2. 浏览器有保存插件的(Safari,edge,chrome)

参考文献

https://www.rmnof.com/article/keepass-password-manager/

uTorrent

缓存设置

tjupt的默认设置就不错。红框是建议勾选的。

错误:内存不足,无法完成请求

This is because the cache size is too big, lower to 512MB or 1GB to fix this.1 But the size bigger the faster, 1.4GB is the biggest available value which ut can support.

突然没速度了,可能是缓存卡住了。一般也没什么解决办法。但是稳定下载的时候会均衡。

下载如何修改文件名和位置

首先不要勾选"立即下载",通过如下更改位置即可再开始下载即可。还可以多选来批量移动文件到文件夹。(对于PT需要下载100%文件才能做种的,但是不需要的文件会影响刮削。可以通过批量移动到其他位置来解决)

北洋园tjupt红种问题

Essential Reason: tjupt.org's network traffic is brokered

configure the router policy to DIRECT to fix this.

其余方法:实际测试重置网络解决
  1. 无法与服务器建立连接. utorrent种子暂停然后开始/更新tracker即可
  2. 键盘按“Win + R”组合快捷键,输入“inetcpl.cpl”,点击“确定”进入“Internet选项”,在“高级”选项卡中选择“重置 IE 设置”

参考文献

http://pgpchs.blogspot.com/2011/03/utorrent-antigfwalloutwallbloggercom.html

https://blog.csdn.net/Gerald_Jones/article/details/78848426


  1. https://www.gebi1.com/thread-102594-1-1.html 

Jellyfin

导言

作为一个影视剧爱好者,通过开源软件jellyfin如何管理BT或者PT下载的视频资料是本文的主要内容。

Clash on LAN/linux/Dockers

导言

在国内的linux服务器上,往往需要clash来代理访问github等外网资源。

有几种解决方案:

  1. 透明代理
  2. ssh 转发实现代理,类似ssh -fNgR 7333:127.0.0.1:7890 [email protected]
  3. Clash 的 Allow LAN功能
  4. Clash in Docker
  5. Clash in Linux

Clash的模式

  • 系统代理模式:只代理127.0.0.1:7890上的数据
  • TUN代理模式:虚拟网卡,并接管所有的网络层的数据
    • 无法封装网络层数据包,无法代理ping, fake-ip还会返回假ip
    • TUN与TAP是操作系统内核中的虚拟网络设备:
      • TAP等同于一个以太网设备,它操作第二层数据包如以太网数据帧。
      • TUN模拟了网络层设备,操作第三层数据包比如IP数据包。
  • 舍弃的redir-host模式由于必须返回一个真实ip,因此必需发起dns请求,存在dns泄露
  • 默认的fake-ip会对域名的DNS请求返回fake-ip,从而避免DNS泄露。然后根据域名分流将信包发送到对应的上游代理机器,把域名DNS解析工作留给上游机器。
    • fake-ip模式,将fake-ip-filter设置为+.*便等价于redir-host模式

Clash的配置文件

# RESTful web API listening address
external-controller: 127.0.0.1:9090


# DNS server settings
# This section is optional. When not present, the DNS server will be disabled.
dns:
  enable: false
  listen: 0.0.0.0:53
  ipv6: false # when the false, response to AAAA questions will be empty

  # These nameservers are used to resolve the DNS nameserver hostnames below.
  # 默认只支持ip
  default-nameserver:
    - 8.8.8.8

  # 对于下面的域名,fake-ip模式会返回真实ip
  fake-ip-filter:
    - '*.lan'
    - localhost.ptlogin2.qq.com

  # 支持 UDP, TCP, DoT, DoH. 和指定端口
  # 所有DNS请求都会不经过代理被转发到这些服务器,Clash会选择一个最快的返回结果
  nameserver:
    - https://223.5.5.5/dns-query # 阿里云
    - https://doh.pub/dns-query #腾讯云
    - tls://dns.rubyfish.cn:853 # DNS over TLS
    - https://1.1.1.1/dns-query # DNS over HTTPS
    - dhcp://en0 # dns from dhcp

  # 对于所有DNS请求,fallback和nameserver内的服务器都会同时查找
  # 如果DNS结果为非国内IP(GEOIP country is not `CN`),会使用fallback内的服务器的结果
  # 因为nameserver内为国内服务器,对国外域名可能有DNS污染。fallback内是国外服务器,能防止国外域名被DNS污染
  fallback:
    - https://162.159.36.1/dns-query 
    - https://dns.google/dns-query
    - tls://8.8.8.8:853

  # DNS污染攻击的对策
  fallback-filter:
    geoip: false # If geoip is true, when geoip matches geoip-code, clash will use nameserver results. Otherwise, Clash will only use fallback results.
    # geoip-code: CN    
    ipcidr: # IPs in these subnets will be considered polluted, when nameserver results match these ip, clash will use fallback results.
      - 0.0.0.0/8
      - 10.0.0.0/8
      - 100.64.0.0/10
      - 127.0.0.0/8
      - 169.254.0.0/16
      - 172.16.0.0/12
      - 192.0.0.0/24
      - 192.0.2.0/24
      - 192.88.99.0/24
      - 192.168.0.0/16
      - 198.18.0.0/15
      - 198.51.100.0/24
      - 203.0.113.0/24
      - 224.0.0.0/4
      - 240.0.0.0/4
      - 255.255.255.255/32
    domain: #Domains in these list will be considered polluted, when lookup these domains, clash will use fallback results.
      - +.google.com
      - +.facebook.com
      - +.youtube.com
      - +.githubusercontent.com

Clash use Allow LAN

假如服务器和笔记本在LAN下,笔记本的clash软件只需要打开LAN就可以给服务器代理了,是最简单方便的方式。

Clash in Docker

由于UGREEN NAS一直开机,作为代理节点很适合。

首先注意修改代理机场的文件config.yaml0.0.0.0:9090,以便haishanh/yacd使用。

mixed-port: 7890
allow-lan: true
bind-address: '*'
mode: rule
log-level: info
external-controller: '0.0.0.0:9090'
  • 使用dreamacro/clash1
  • UI使用haishanh/yacd

Clash in Linux

下载

下载可执行文件

wget https://github.com/Dreamacro/clash/releases/download/v1.11.8/clash-linux-amd64-v1.11.8.gz
scp
gunzip clash-linux-amd64-v1.11.8.gz
chmod u+x clash-linux-amd64-v1.11.8
  • Clash 运行时需要 Country.mmdb 文件,Country.mmdb 文件利用 GeoIP2 服务能识别互联网用户的地点位置,以供规则分流时使用。
  • 当第一次启动 Clash 时(使用 ./clash 命令) 会自动下载(会下载至 /home/XXX/.config/clash 文件夹下)。自动下载可能会因网络原因较慢,可以访问该链接手动下载。

配置

根据订阅链接配置文件

cd ~/.config/clash
curl -o config.yaml 'longURL'

验证

成功结果

# shaojiemike @ node6 in ~/Download [10:22:54] C:130       
$set_proxy                                            

# shaojiemike @ node6 in ~/Download [10:22:57]       
$ curl -v www.google.com 

# shaojiemike @ node6 in ~/Download [10:21:46]
$ ./clash-linux-amd64-v1.11.8
INFO[0000] Start initial compatible provider 🍃 Proxies
INFO[0000] Start initial compatible provider ☁️ Others
INFO[0000] Start initial compatible provider 🍂 Domestic
INFO[0000] Start initial compatible provider ⭐️ Auto
INFO[0000] Mixed(http+socks) proxy listening at: [::]:7890
INFO[0000] RESTful API listening at: [::]:9090
INFO[0000] DNS server listening at: [::]:5323
INFO[0070] [TCP] 127.0.0.1:52664 --> www.google.com:80 match DomainKeyword(google) using 🍃 Proxies[专线 日本 03]

图形化界面管理

http://clash.razord.top/#/proxies

输入

Host: node6.swangeese.fun
Port: 9090
Secret: 配置文件配置的 secret

查看config.yaml,发现是空

mixed-port: 7890                                      
allow-lan: true                                           
mode: rule                                                    
log-level: info                                                     
external-controller: '0.0.0.0:9090'                               
secret: ''

常见问题

address already in use
# shaojiemike @ node6 in ~/Download [10:14:25]
$ ./clash-linux-amd64-v1.11.8
INFO[0000] Start initial compatible provider ⭐️ Auto
INFO[0000] Start initial compatible provider 🍃 Proxies
INFO[0000] Start initial compatible provider ☁️ Others
INFO[0000] Start initial compatible provider 🍂 Domestic
INFO[0000] RESTful API listening at: [::]:9090
INFO[0000] Mixed(http+socks) proxy listening at: [::]:7890
ERRO[0000] Start DNS server error: listen udp 0.0.0.0:5353: bind: address already in use

修改配置文件里的端口即可

参考文献

https://blog.iswiftai.com/posts/clash-linux/

https://einverne.github.io/post/2021/03/linux-use-clash.html

PersonalWebsiteDomain

Ubuntu 下Apache 域名绑定设置

在 HuaWei Cloud 购买域名

  1. 购买 shaojiemike.top
  2. 自动在华为DNS服务器上进行DNS解析(ip与域名对应)
  3. 实名认证
  4. 网站报备
  5. 网站解析 当您想在Internet上通过域名访问您的网站时,可以通过华为云的云解析服务为域名添加解析记录。

    例如,搭建一个网站服务器,采用IPv4格式的弹性IP地址。如果想要实现通过域名“example.com”及其子域名“www.example.com”访问该网站,需要配置如下解析记录:

    A:添加域名“example.com”到弹性IP地址的解析记录。
    A:添加子域名“www.example.com”到弹性IP地址的解析记录。
    
    1. 修改DNS服务器为华为 不要修改成域名解析的

DNS域名解析查看

# shaojiemike @ node6 in ~ [21:24:21]
$ dig +trace shaojiemike.us.to

; <<>> DiG 9.16.1-Ubuntu <<>> +trace shaojiemike.us.to
;; global options: +cmd
.                       184     IN      NS      f.root-servers.net.
.                       184     IN      NS      h.root-servers.net.
.                       184     IN      NS      c.root-servers.net.
.                       184     IN      NS      m.root-servers.net.
.                       184     IN      NS      g.root-servers.net.
.                       184     IN      NS      j.root-servers.net.
.                       184     IN      NS      a.root-servers.net.
.                       184     IN      NS      i.root-servers.net.
.                       184     IN      NS      l.root-servers.net.
.                       184     IN      NS      k.root-servers.net.
.                       184     IN      NS      d.root-servers.net.
.                       184     IN      NS      e.root-servers.net.
.                       184     IN      NS      b.root-servers.net.
;; Received 262 bytes from 127.0.0.53#53(127.0.0.53) in 0 ms

to.                     172800  IN      NS      frankfurt.tonic.to.
to.                     172800  IN      NS      singapore.tonic.to.
to.                     172800  IN      NS      tonic.to.
to.                     172800  IN      NS      newyork.tonic.to.
to.                     172800  IN      NS      colo.tonic.to.
to.                     172800  IN      NS      sydney.tonic.to.
to.                     172800  IN      NS      helsinki.tonic.to.
to.                     86400   IN      NSEC    today. NS RRSIG NSEC
to.                     86400   IN      RRSIG   NSEC 8 1 86400 20221118050000 20221105040000 18733 . zYyPgXiUoIoPzZsXi8WD0aT0Ps7ajmQYA/blzyfNG6Pl1NdONShc/3T1 3p2rAfr2a7NI6SI+yeEyiRYeeI86RuNv1u4aAJD2QXZapKlogP+hveb/ SYztzsr70Ha6/7RQAqQqY+ctHOZXIzUMhpNxFneTXcJ2CVhQmGIYG0sa 0BmaDKH0kxFHtbJZvENMpo4WrE0KTNzFsYlHZQGZV0OQeU/MpcSkPt5I DefxNVBMqMS8lF0Wzg8ESwEDddE7WvMlCNlnBLE7LHk0ZdQGU5Qg/8Ot CpNKEjCoROXA7sA/CkrGEdhW3CZnJYOdQ6UcH2pDwYYVIOsE7L8QJV/r RC9/tA==
;; Received 653 bytes from 199.7.83.42#53(l.root-servers.net) in 60 ms

us.to.                  86400   IN      NS      NS4.AFRAID.ORG.
us.to.                  86400   IN      NS      NS3.AFRAID.ORG.
us.to.                  86400   IN      NS      NS1.AFRAID.ORG.
us.to.                  86400   IN      NS      NS2.AFRAID.ORG.
;; Received 156 bytes from 95.216.159.42#53(helsinki.tonic.to) in 272 ms

us.to.                  3600    IN      SOA     ns1.afraid.org. dnsadmin.afraid.org. 2211050595 86400 7200 2419200 3600
;; Received 133 bytes from 2001:1850:1:5:800::6b#53(NS2.AFRAID.ORG) in 260 ms

可以看到13个根DNS服务器到to子服务器再到us.to的解析过程。

在 HuaWei Cloud 配置域名解析

为域名添加A记录集

在“公网域名”页面的域名列表的“域名”列,单击域名的名称“example.com”。 进入“解析记录”页面。

在页面右上角,单击“添加记录集”。 在“添加记录集”页面,根据界面提示为域名“example.com”设置A记录集参数。

解析

为子域名添加A记录集

主机记录:设置为“www”,表示解析的域名为子域名“www.example.com”。

测试域名解析是否生效

D:\OneDrive - mail.ustc.edu.cn\homepage> nslookup shaojiemike.top ns1.huaweicloud-dns.org
Server:  ecs-159-138-77-159.compute.hwclouds-dns.com
Address:  159.138.77.159

Name:    shaojiemike.top
Address:  202.38.73.26

解析2

ECS

云服务器Elastic Compute Service(ECS)是阿里云提供的一种基础云计算服务。它能帮助您快速的构建更稳定、安全的应用,提高运维效率,降低IT成本

如何判断自己IP是内网IP还是外网IP

局域网,内网IP
  1. tcp/ip协议中,专门保留了三个IP地址区域作为私有地址,其地址范围如下:
    10.0.0.0/8:10.0.0.0~10.255.255.255
    172.16.0.0/12:172.16.0.0~172.31.255.255
    192.168.0.0/16:192.168.0.0~192.168.255.255
    
  2. 一些宽带运营商尽管也使用了非私有地址分配给用户使用,但是由于路由设置的原因,Internet上的其他用户并不能访问到这些ip。

有这么一种情况:拉的联通的带宽,分配的IP只能在联通内部访问,移动网络不能访问。这个IP最多只能算是“联通内的公网IP”,不是真的公网IP。

上面几部分IP都可称为内网IP

动态公网IP

貌似node5 与 node6 挂了网络通,是动态公网IP(chivier说的)

node5 ip: 202.38.73.26

IPv4封了许多端口(至少ssh的22端口是不行的)

IPv6是直接可以ssh访问的

公网IP是IPv4/IPv6

ipv4是32位地址,分成4段,每段之间都有"."分开,而每段之间有8位,从0-255 最普遍看到的就是ipv4

ipv6是128位地址,每个数目等于4位(0-f)16位进制,4个一组,每段之间由“:”隔开,共有8段,其中如果有连续性的"0" 如fe80:0000:0000:0000:0000:0000:0000:de4f

修改机器的DNS服务器

IPv4DNS服务器能根据IP修改,但是我不知道华为DNS服务器的IP。

ns1.huaweicloud-dns.com:中国大陆各区域DNS地址 ns1.huaweicloud-dns.cn:中国大陆各区域DNS地址 ns1.huaweicloud-dns.net:除中国大陆之外国家或地区DNS地址 ns1.huaweicloud-dns.org:除中国大陆之外国家或地区DNS地址

Further Study

动态公网IP,可以使用nat123动态域名解析解决公网IP不固定的问题

node6配置没用80端口,不能直接IP访问

遇到的问题

还是不能直接访问shaojiemike.top(TTL为300,需要时间?) 第二天可以了。

chivier 建议

https://ngx.hk/2019/01/27/%E4%BD%BF%E7%94%A8acme-sh%E4%B8%8E%E9%98%BF%E9%87%8C%E4%BA%91dns%E7%AD%BE%E5%8F%91lets-encrypt%E7%9A%84%E5%85%8D%E8%B4%B9%E6%95%B0%E5%AD%97%E8%AF%81%E4%B9%A6.html

我用阿里的域名,用这个教程,把我的IP挂到阿里DNS上面去了

参考文献

https://support.huaweicloud.com/qs-dns/dns_qs_0002.html

https://blog.csdn.net/meitesiluyuan/article/details/58588216

https://blog.csdn.net/bennny/article/details/86319768?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.baidujs&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.baidujs

https://blog.csdn.net/bennny/article/details/82988260

域名价格对比

Ubuntu server reInstall

思路

  1. 写U盘(见网上教程,注意备份U盘文件)
  2. 插U盘,开机前根据机器型号使用命令(F2,F4, F12或者Del)进入boit manager,选择从U盘boot
  3. 改引导启动顺序,把U盘启动改到最前面
  4. 根据提示安装ubuntu(服务器不用分区,默认就行,如果自己电脑双系统则需要根据内存设置分区)
  5. 设置root密码并进入root sudo passwd root
  6. 配置实验室网络

下载安装包

官网下载

重装系统怎么保留原本的磁盘文件

只要在安装系统时分出一个/home分区。你可以把Ubuntu的“/”分区看为Windows的C盘,重装Ubuntu时只格式化“/”分区,不格式化“/home”,这样就可以保留“/home”中的数据了。使用的时候就挂载就行

但是假如一开始没分区: 1. 可以插块新盘当作系统盘,系统安装好之后,把旧的文件系统挂载到新系统的某个目录下 2. 从旧的文件系统里划出一块区域,安装新系统。 1. 在你要安装的目标磁盘中,通过删除卷和删除分区操作腾出一块未分配的磁盘空间作为安装区

从已有分区中提取空间

xfs类型不可以直接缩减,只扩不减。如果是ext2,ext3,ext4可以在线缩减,如果xfs盘要缩小就要删除后重新添加

https://www.ywbj.cc/?p=712

非系统根分区LVM缩容

  1. 取消挂载 系统根分区无法在线取消挂载,所以这时请勿对系统根分区执行任何缩容操作
    umount /lv/ #取消挂载目录
    
  2. e2fsck检查修复磁盘完整性
    e2fsck -f /dev/vg0/lv0
    
  3. 缩小系统文件空间,即df -h查看的空间 不取消挂载,这步会报错,注:一定先减文件系统,再减逻辑卷
    resize2fs /dev/vg0/lv0 10G
    
  4. 缩小磁盘空间,即lsblk查看的空间 不执行上面的操作,直接执行这步,虽然成功,但是会操作数据丢失,系统无法启动。
    lvreduce -L 10G /dev/vg0/lv0
    
  5. 重新挂载
    mount -a
    
    最后查看lvs空间

系统根分区LVM缩容(救援模式)

正常启动系统进入救援模式 :启动按shift键,出现选择系统界面,按e。找到以单词 linux 开头的行,并在该行的末尾添加以下内容(要到达末尾,只需按下 CTRL+e 或使用 END 键或左右箭头键):

systemd.unit=rescue.target
添加完成后,只需按下 CTRL+xF10 即可继续启动救援模式。几秒钟后,你将以 root 用户身份进入救援模式(单用户模式)

需要进一步的研究学习

遇到的问题

暂无

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

参考文献

https://blog.csdn.net/weixin_40018873/article/details/109537532

https://www.ywbj.cc/?p=712

MPI Compilers

mpicc vs gcc

OpenMPI

# shaojiemike @ node5 in ~ [7:20:31]
$ mpicc -showme
gcc -I/usr/lib/x86_64-linux-gnu/openmpi/include/openmpi -I/usr/lib/x86_64-linux-gnu/openmpi/include -pthread -L/usr/lib/x86_64-linux-gnu/openmpi/lib -lmpi

IntelMPI

source /opt/intel/oneapi/setvars.sh

# shaojiemike @ node5 in ~/github/IPCC/SLIC on git:main x [15:45:06] C:1
$ mpicc -compile_info
gcc -I'/opt/intel/oneapi/mpi/2021.1.1/include' -L'/opt/intel/oneapi/mpi/2021.1.1/lib/release' -L'/opt/intel/oneapi/mpi/2021.1.1/lib' -Xlinker --enable-new-dtags -Xlinker -rpath -Xlinker '/opt/intel/oneapi/mpi/2021.1.1/lib/release' -Xlinker -rpath -Xlinker '/opt/intel/oneapi/mpi/2021.1.1/lib' -lmpifort -lmpi -lrt -lpthread -Wl,-z,now -Wl,-z,relro -Wl,-z,noexecstack -Xlinker --enable-new-dtags -ldl

> mpicc -v                  
mpigcc for the Intel(R) MPI Library 2021.5 for Linux*                                                                      
Copyright Intel Corporation.
Using built-in specs.       
COLLECT_GCC=gcc             
COLLECT_LTO_WRAPPER=/public1/soft/gcc/8.1.0/libexec/gcc/x86_64-pc-linux-gnu/8.1.0/lto-wrapper                              
Target: x86_64-pc-linux-gnu 
Configured with: ./configure --prefix=/public1/soft/gcc/8.1.0 --enable-languages=c,c++,fortran --disable-multilib          
Thread model: posix         
gcc version 8.1.0 (GCC) 

# shaojiemike @ node5 in ~/github/IPCC/SLIC on git:main x [15:45:16]
$ mpiicc -compile_info
icc -I'/opt/intel/oneapi/mpi/2021.1.1/include' -L'/opt/intel/oneapi/mpi/2021.1.1/lib/release' -L'/opt/intel/oneapi/mpi/2021.1.1/lib' -Xlinker --enable-new-dtags -Xlinker -rpath -Xlinker '/opt/intel/oneapi/mpi/2021.1.1/lib/release' -Xlinker -rpath -Xlinker '/opt/intel/oneapi/mpi/2021.1.1/lib' -lmpifort -lmpi -ldl -lrt -lpthread

# shaojiemike @ node5 in ~/github/IPCC/SLIC on git:main x [15:50:09] C:255
$ mpiicc -show
icc -I'/opt/intel/oneapi/mpi/2021.1.1/include' -L'/opt/intel/oneapi/mpi/2021.1.1/lib/release' -L'/opt/intel/oneapi/mpi/2021.1.1/lib' -Xlinker --enable-new-dtags -Xlinker -rpath -Xlinker '/opt/intel/oneapi/mpi/2021.1.1/lib/release' -Xlinker -rpath -Xlinker '/opt/intel/oneapi/mpi/2021.1.1/lib' -lmpifort -lmpi -ldl -lrt -lpthread

MPICH

ipcc22_0029@ln121 ~/github/IPCC2022-preliminary/run (float_trick*) [10:49:48]
> mpicc -show         
gcc -I/public1/soft/mpich/3.1.4-gcc8.1.0/include -L/public1/soft/mpich/3.1.4-gcc8.1.0/lib -Wl,-rpath -Wl,/public1/soft/mpich/3.1.4-gcc8.1.0/lib -Wl,--enable-new-dtags -lmpi
For MPICH, according to the mpicc man pages, mpicc -compile_info shows the flags for compiling a program, and mpicc -link_info shows the flags for linking a program.

-showme (Open MPI) or -show (Open MPI, MPICH and derivates) use -showme:compile and -showme:link to obtain the options automatically

安装选项查看

intelmpi

> mpirun -info
HYDRA build details:
    Version:                                 2021.5
    Release Date:                            20211102 (id: 9279b7d62)
    Process Manager:                         pmi
    Bootstrap servers available:             ssh slurm rsh ll sge pbs pbsdsh pdsh srun lsf blaunch qrsh fork
    Resource management kernels available:   slurm ll lsf sge pbs cobalt

MPICH

ipcc22_0029@ln121 ~  [11:55:08]
> mpiexec --version               
HYDRA build details:
    Version:                                 3.1.4
    Release Date:                            Fri Feb 20 15:02:56 CST 2015
    CC:                              gcc    
    CXX:                             g++    
    F77:                             gfortran   
    F90:                             gfortran   
    Configure options:                       '--disable-option-checking' '--prefix=/public1/soft/mpich/3.1.4-gcc8.1.0' 'CC=gcc' 'CXX=g++' 'FC=gfortran' '--cache-file=/dev/null' '--srcdir=.' 'CFLAGS= -O2' 'LDFLAGS= ' 'LIBS=-lpthread ' 'CPPFLAGS= -I/public1/home/deploy/amd-mpich/mpich-3.1.4/src/mpl/include -I/public1/home/deploy/amd-mpich/mpich-3.1.4/src/mpl/include -I/public1/home/deploy/amd-mpich/mpich-3.1.4/src/openpa/src -I/public1/home/deploy/amd-mpich/mpich-3.1.4/src/openpa/src -D_REENTRANT -I/public1/home/deploy/amd-mpich/mpich-3.1.4/src/mpi/romio/include'
    Process Manager:                         pmi
    Launchers available:                     ssh rsh fork slurm ll lsf sge manual persist
    Topology libraries available:            hwloc
    Resource management kernels available:   user slurm ll lsf sge pbs cobalt
    Checkpointing libraries available:       
    Demux engines available:                 poll select

ipcc22_0029@ln121 ~  [11:55:31]
> mpichversion
MPICH Version:          3.1.4
MPICH Release date:     Fri Feb 20 15:02:56 CST 2015
MPICH Device:           ch3:nemesis
MPICH configure:        --prefix=/public1/soft/mpich/3.1.4-gcc8.1.0/ CC=gcc CXX=g++ FC=gfortran
MPICH CC:       gcc    -O2
MPICH CXX:      g++   -O2
MPICH F77:      gfortran   -O2
MPICH FC:       gfortran   -O2

OpenMPI

## 安装了IB支持
> ompi_info | grep openib
                 MCA btl: openib (MCA v2.1.0, API v3.0.0, Component v3.1.6)

> mpiexec --version      
mpiexec (OpenRTE) 4.1.1

Report bugs to http://www.open-mpi.org/community/help/

ipcc22_0029@ln121 ~/slurm/MPIInit  [12:24:19]
> module load mpi/openmpi/4.1.1-gcc7.3.0 
ipcc22_0029@ln121 ~/slurm/MPIInit  [12:24:51]
> mpicc -v                              
Using built-in specs.
COLLECT_GCC=/public1/soft/gcc/7.3.0/bin/gcc
COLLECT_LTO_WRAPPER=/public1/soft/gcc/7.3.0/libexec/gcc/x86_64-pc-linux-gnu/7.3.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ./configure --prefix=/public1/soft/gcc/7.3.0 --disable-multilib
Thread model: posix
gcc version 7.3.0 (GCC) 

需要进一步的研究学习

暂无

遇到的问题

暂无

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

参考文献

https://stackoverflow.com/questions/11312719/how-to-compile-mpi-with-gcc

Why MPI_Init is slow

MPI_Init的作用

MPI_Init(&argc, &argv);

StackOverflow的回答是,Init在调用过程中初始化MPI库,并且在进程间建立通讯和编号。

知乎的回答: OpenMPI会在调用MPI_Init时按照你传递给mpirun的指令新建进程,而你传递给MPI_Init的参数,会被传递给新建的进程。

这似乎在暗示,两个进程不是同时产生和运行的。

猜想1

有顺序的观点是不成立的

即使有顺序 malloc的时间也没这么长。

猜想2

难道是malloc的数据需要MPI_Init复制一遍?

简单将MPI_Init提前到最开始,时间也基本没变,也不对。

如果单独写一个只有MPI_Init的程序,IntelMPI还是要耗时800ms

ipcc22_0029@ln121 ~/slurm/MPIInit  [11:42:32]
> srun -p IPCC -N 2 -n 2 -c 64 -t 1  MPI
MPIInit          took 882.110047 ms
MPIInit          took 892.112269 ms

测试比较超算上MPI_Init的时间

以IPCC2022初赛的北京超算云 AMD机器举例

mpirun的选择 mpi版本 GCC或者ICC的选择版本 超算运行 MPI_Init时间(ms)
IntelMPI mpi/intel/2022.1 gcc/10.2.0 只能sbatch,不能srun 1282.24 ~ 1678.59
OpenMPI mpi/openmpi/4.1.1-gcc7.3.0 2706ms~3235ms
MPICH mpich/3.1.4-gcc8.1.0 17ms
mpich/3.4.2 gcc/10.2.0 107ms

不能srun IntelMPI的问题

缺少一个环境变量

需要export I_MPI_PMI_LIBRARY=libpmi2.so

VTune 分析MPI的程序

https://www.intel.com/content/www/us/en/develop/documentation/vtune-help/top/analyze-performance/code-profiling-scenarios/mpi-code-analysis.html

https://www.intel.com/content/www/us/en/develop/documentation/vtune-cookbook/top/configuration-recipes/profiling-mpi-applications.html

环境变量

设置这个Intel mpi 1200 -> 1100

export PMI_TIME=1
export SLURM_PMI_KVS_NO_DUP_KEYS=yes

需要进一步的研究学习

实在是弄不懂,为什么不同的实现,时间差别这么大。可能慢是因为额外的通路设置,是为了之后的快速传输??

3.1.4的安装选项也看不到

> mpiexec --version     
mpiexec: error while loading shared libraries: libslurm.so.35: cannot open shared object file: No such file or directory

遇到的问题

暂无

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

参考文献

oneApi

安装

命令行安装

Intel OneAPI base toolkit

必须先安装base,可以看到默认安装的内容

这个GDB好像可以分析多进程

Intel OneAPI HPC toolkit

Intel OneAPI HPC toolkit包括了icc,icpc,ifort和OpenMP,IntelMPI还有MKL(Intel® oneAPI Math Kernel Library (oneMKL))

Download界面选择版本, 选择online或者offline会有推荐指令,如下

wget https://registrationcenter-download.intel.com/akdlm/irc_nas/18679/l_HPCKit_p_2022.2.0.191.sh

sudo sh ./l_HPCKit_p_2022.2.0.191.sh

icx icpx

> icx -v
Intel(R) oneAPI DPC++/C++ Compiler 2022.0.0 (2022.0.0.20211123)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /opt/intel/oneapi/compiler/2022.0.2/linux/bin-llvm
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/8
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/9
Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/9
Candidate multilib: .;@m64
Selected multilib: .;@m64
Found CUDA installation: /usr/local/cuda-11.5, version

> icpx --help
OVERVIEW: Intel(R) oneAPI DPC++/C++ Compiler

USAGE: clang++ [options] file...

需要进一步的研究学习

暂无

遇到的问题

暂无

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

参考文献

https://www.intel.com/content/www/us/en/develop/documentation/installation-guide-for-intel-oneapi-toolkits-linux/top/prerequisites/install-intel-gpu-drivers.html