openmpi[3] btl框架的self组件分析
openmpi[1] 什么是openmpiopenmpi[2] 模块化组件架构openmpi[3] btl框架的self组件分析 在openmpi[2]中,已经分析了openmpi的模块化架构。对于本章节来说,上一章提到的framework对应的是btl;component对应的就是self; mca的意思就是mca模块🤣 self组件的分层在opal/mca/btl/self目录中,可以看到如下文件: ❯ tree.├── btl_self.c├── btl_self_component.c├── btl_self_component.lo├── btl_self_frag.c├── btl_self_frag.h├── btl_self_frag.lo├── btl_self.h├── btl_self.lo├── libmca_btl_self.la├── Makefile├── Makefile.am├── Makefile.in└── owner.txt 除去不需要关心的编译相关和注释相关,我们剩下了这三个内容: ❯ tree.├──...
openmpi[2] 模块化组件架构
openmpi[1] 什么是openmpiopenmpi[2] 模块化组件架构openmpi[3] btl框架的self组件分析 Open MPI 是一个高度可定制的系统;它可以通过配置文件、命令行参数和环境变量进行配置。Open MPI 配置系统的主要功能是通过模块化组件架构 (MCA) 实现的。 一些术语模块化组件架构 (MCA) 是 Open MPI 大部分功能的支柱。它由一系列项目 、 框架 、 组件和模块在运行时组装以创建 MPI 实现。 MCA 参数 (也称为 MCA 变量 )用于定制 Open MPI 在运行时的行为。 ProjectProject本质上是 Open MPI 代码库中最高抽象层的划分。 但这里的Project可不是说的项目,而是指的Open MPI 代码库中主要的、顶层的代码部分 FrameworkMCA 框架在运行时管理零个或多个组件,并针对特定任务(例如,提供 MPI 集合操作功能)。虽然每个 MCA 框架仅支持一种类型的组件,但它可以支持多个该类型的组件。 比如btl framework仅支持btl类型的组件,但是它可以支持多个btl组件,比...
openmpi[1] 什么是openmpi
openmpi[1] 什么是openmpiopenmpi[2] 模块化组件架构openmpi[3] btl框架的self组件分析 什么是openmpi?MPI是一套通信标准,由MPI Forum创建并维护(MPI Forum是一个开放组织,由工业、学术界的高性能计算领域的专家组成).MPI是这样一种API: 可移植 高性能的IPC通信 MPI一般作为一个消息传递的中间件,上层应用程序可以通过调用MPI接口来执行消息传递。MPI定义了一系列与平台无关的、高度抽象的API接口,用于进程之间的消息传递(这两个进程之间可以在不同主机,但主机之间需要有一个通信的通道, 比如eth)举一个最简单的例子,进程X是发送进程,只需提供消息内容(例如一个双精度数组)以及另一个接收进程的标识(例如进程Y),同时接收进程Y只需提供发送进程的标识(例如进程X),消息就可以从X传递给Y。注意这个例子中,没有建立连接、没有字节流的转换、没有网络地址的交换,MPI将这些细节都抽象封装了起来,不仅仅是隐藏了复杂性,而且使应用程序能够兼容不同的平台、硬件以及网络类型。MPI提供的通信模式: point to...
IMPORTANT: lost blog notes
What happened to my blog?Due to unforeseen circumstances, some of the blog posts have been lost. I have only found the web page format, but the index for the homepage has been lost. So there is the list: 2025 yearAprilDay 10 Vercel 部署 Twikoo 后评论收不到通知邮件问题解决方法 Day 12 Linux 的 initcall 机制 Day 13 ELF 文件 -0- section 和 segment 的区别 Linux I2C 驱动框架分析 -0 Linux I2C 驱动框架分析 -1 Day 20 Platform Device Driver -0 Platform Device Driver -1 Day 24 嵌入式 Linux 面经 - 随意随缘不完整版 Day 26 Linux 设备树 -0- 理解 dtb 格式 Linux...
esp32初始化结构体问题
在c++使用espidf进行wifi连接时,发现如下代码可以连接: wifi_config_t wifi_config = { .sta = { .ssid = "HBDT-23F", .password = "hbishbis" }}; 但如下代码不可连接: wifi_config_t wifi_config;strcpy(wifi_config.sta.ssid, "HBDT-23F");strcpy(wifi_config.sta.password, "hbishbis"); 经过排查发现espidf对于连接阶段除了ssid和password还使用到了其他变量,所以应该清零结构体内存: wifi_config_t wifi_config{}; 一个很低级的问题…记录下来时刻警醒。
VirtualBox错误
当我尝试启动虚拟机时遇到了如下错误: Kernel driver not installed (rc=-1908)The VirtualBox Linux kernel driver is either not loaded or not set up correctly. Please try setting it up again by executing'/sbin/vboxconfig'as root.If your system has EFI Secure Boot enabled you may also need to sign the kernel modules (vboxdrv, vboxnetflt, vboxnetadp, vboxpci) before you can load them. Please see your Linux system's documentation for more information.where: suplibOsInit what: 3 VERR_VM_DRIVER_NOT_INSTA...
sd与mmc刷写指南
EnvHost: Ubuntu 22.04 GParted 1.3.1 SD卡首先插入sd卡,打开GParted工具,没有可以下载一个: ❯ sudo apt install gpart 选择sd卡设备,我这里是sdb,因机器而异。 选择菜单栏的设备->创建分区表,选择msdos分区表。 创建完成之后,新建两个分区。 一个fat16的,用于放内核镜像和dtb文件以及uboot保存的env文件。 一个ext4用来存放根文件系统。 完成之后点击绿色小对勾,让更改生效。 之后便可以在/dev下看到对应的分区: ❯ ls /dev/sdb*/dev/sdb /dev/sdb1 /dev/sdb2 下载uboot镜像: ❯ sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/sdb bs=1024 seek=8 存放内核镜像和设备树: ❯ sudo mount /dev/sdb1 /mnt❯ sudo cp arch/arm/boot/zImage /mnt❯ sudo cp arch/arm/boot/dts/allwinne...
hexo: Deploy github and lose CNAME
IssueI deployed my hexo blog to github pages, but I lost the custom domain in github pages. I tried to re-add the custom domain in the repository settings and I found this operation will add CNAME file under the repository root directory. SolutionSo I copy this file(or create a new one and only put custom domain into this file) to the source directory of my hexo blog, and then commit and push it to the repository. Everything works fine!
nvim plugin - MakrdownPreview: can't preview
Env:Nvim: v0.11.2 & Lazyvim Terminal: Kitty OS: Arch Linux How did I doCreate a .lua file in the following directory: ~/.config/nvim/lua/plugins/markdown-preview.lua Then add the following code: return { "iamcco/markdown-preview.nvim", cmd = { "MarkdownPreviewToggle", "MarkdownPreview", "MarkdownPreviewStop" }, ft = { "markdown" }, build = function() vim.fn["mkdp#util#install"]() end,} Reopen nvim ...
linux挂载nfs根文件系统失败
挂在nfs根文件系统时出现如下报错: [ 1.939157] VFS: Cannot open root device "nfs" or unknown-block(0,255): error -6[ 1.946989] Please append a correct "root=" boot option; here are the available partitions:[ 1.955765] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,255)[ 1.964493] ---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,255) ]--- 根据内核日志来看bootargs是设置正确的,经过多方排查是以下配置没开启: CONFIG_ROOT_NFS