>

HPC 矩阵乘法性能基准测试分析

本文分析了英特尔至强CPU和NVIDIA V100 GPU上的矩阵乘法基准测试结果,对比了C++、OpenMP、CUDA、MPI、NVSHMEM及Python框架的计算性能。

一月 11, 2026 · 4 分钟 · 803 字 · Tategoto Azarasi

Uol 2025 Wk3 && LeetCode Biweekly Contest 168 题解

Weak Vertices (弱顶点) 问题描述 在图论中,一个网络的结构强度通常可以通过识别其中的基本形状(如三角形)来分析。三角形能提供结构刚性,是许多应用中常见的母题。这个问题要求我们识别那些不属于任何三角形的顶点。一个顶点 i 被定义为属于一个三角形,如果它有两个不同的邻居 j 和 k,并且 j 和 k 彼此之间也是邻居。我们的任务是找出所有不满足此条件的顶点,问题将其称为“弱顶点”。图以邻接矩阵的形式给出。 我的代码 我的方法是对定义进行直接模拟。对每个顶点,我遍历其所有邻居对,并检查它们之间是否相连。 // 遍历从 0 到 n-1 的每个顶点 `i`,检查它是否是弱顶点。 for(int i=0; i<n; i++) { // 一个标志位,用于追踪顶点 `i` 是否属于任何三角形。 // 我们将其初始化为 true,假设 `i` 是弱顶点,直到找到反证。 bool flag = true; // 遍历 `i` 的所有邻居。 // 外层循环选择第一个邻居 `j`。 for(int j=0; j<siblings[i].size(); j++) { // 内层循环选择第二个邻居 `k`。 // 我们从 j+1 开始,以确保每对邻居只被考虑一次。 for(int k=j+1; k<siblings[i].size(); k++) { // 检查 `i` 的两个邻居,即 `siblings[i][j]` 和 `siblings[i][k]`, // 是否相互连接。 if(graph[siblings[i][j]][siblings[i][k]]) { // 如果它们相连,那么顶点 `i`、`j` 和 `k` 构成一个三角形。 // 因此,顶点 `i` 不是弱顶点。我们将标志位设为 false。 flag = false; // 既然已经找到了一个涉及 `i` 的三角形,我们可以停止对该顶点的检查。 break; } } // 如果标志位已被设为 false,我们也可以跳出外层的邻居循环。 if(!flag) { break; } } // 如果在检查完所有邻居对后,标志位仍然为 true, // 这意味着没有找到涉及 `i` 的三角形。因此,`i` 是一个弱顶点。 if(flag) { cout<<i<<' '; } } 我的解法及其正确性 这个问题要求我们识别给定无向图中所有不属于任何三角形的顶点。如果一个顶点满足这个条件,它就被认为是“弱”的。图的结构通过一个 $n \times n$ 的邻接矩阵给出,其中 $n$ 是顶点的数量。 ...

十月 25, 2025 · 16 分钟 · 3225 字 · Tategoto Azarasi

信号驱动的桥接演进:使用 Boost.Signals2 优化 C++ EnTT 与 Rust WASM 交互

重构 C++ EnTT 宿主与 Rust WASM 插件架构,将自定义事件替换为 Boost.Signals2,通过 Wasmtime 实现健壮、解耦的 FFI 通信与高级宿主-插件交互。

四月 7, 2025 · 13 分钟 · 2644 字 · Tategoto Azarasi

使用 EnTT 在 C++ Host 与 Rust WASM 插件间实现灵活的关系管理

使用 Wasmtime 和稳定 C FFI,在 C++ Host 中通过 EnTT 管理实体关系,并允许 Rust WebAssembly (WASM) 插件安全交互,利用数据驱动设计克服 WASM 边界限制。

四月 6, 2025 · 10 分钟 · 2027 字 · Tategoto Azarasi

深入探索 Wasmtime:C++ 与 Rust Wasm 模块的双向通信与内存共享

一篇详细的技术指南,介绍如何使用 Wasmtime 运行时在 C++ 宿主应用程序与 Rust WebAssembly 模块之间实现复杂的双向通信、共享内存访问和结构体传递。

四月 6, 2025 · 15 分钟 · 3053 字 · Tategoto Azarasi