- 博客(876)
- 收藏
- 关注
原创 尝试本地部署 Stable Diffusion
设置一下 .bashrc 把conda 的安装路径放到环境变量 PATH 里。环境:WSL2-Ubuntu22.04。conda 开始下载依赖。
2025-11-14 22:48:47
235
原创 git rebase 合并分支,保持 git history 记录线性、干净、清晰
git merge 确实可能导致 Git 历史变得复杂。需要解决冲突多次(如果冲突较多)重写历史,不适合已推送的分支。
2025-11-11 17:20:12
196
原创 Eigen/Dense: No such file or directory 处理方法
安装后,会在你的系统目录创建一个名为 eigen3 的文件夹。使用 locate 找到它,然后创建软链接。
2025-11-03 12:10:18
117
原创 (done) CFD 学习 (4) 阅读简单代码库理解有限体积法
总结一下,该程序的目的是计算二维平面上的激波管问题。程序输入是 2-D结构化网格上每个点的 “速度、压力、密度”,程序输出是经过一定时间后每个点的 “压力、密度”。程序核心求解函数是 FLUXSOLVER 函数,该函数被循环调用: while(cur_time < end_time) { FLUXSOLVER(…2.计算网格这一个时间步在 x 方向的通量和在 y 方向的通量。并对网格的边界做特殊处理。1.计算网格每个点,在 x 方向上通量上的梯度和 y 方向上通量上的梯度。
2025-11-03 10:34:39
233
原创 (done) CFD 学习 (3) CGNS文件格式
CGNS代表CFD通用符号系统。该标准由美国国家航空航天局(NASA)与波音公司于1994年共同创立,旨在规范CFD数据(尤其是计算网格/网架)的交换格式。如今,该格式的功能已不仅限于网格交换——用户还能通过CGNS文件读取和写入求解结果、边界条件、网格连接信息等多项内容。1999年,由政府部门、工业界及学术界代表共同组成的CGNS指导委员会正式成立,致力于维护、改进和推广CGNS标准。
2025-10-30 17:04:01
212
原创 (done) CFD 学习 (2) 什么是网格?结构网格和非结构网格的差别?
在计算流体力学中,网格 是将一个连续的流体计算区域(例如,管道内部、飞机机翼周围的空间)离散化成大量微小、简单的子区域(如四边形、六面体、三角形、四面体)的过程后,所形成的这些子区域的集合。一个三维的“渔网”:您用这张网罩住您要研究的物体(如飞机),网的节点就是您用来进行计算和数据存储的点。相机像素:一个高分辨率的图像由数百万个像素组成。同样,一个精细的网格由数百万个网格单元组成,它们共同“描绘”出流场的细节(速度、压力、温度等)。在实际工程中,为了平衡效率和适应性,常常使用混合网格。
2025-10-30 15:33:33
819
原创 对比并行 memset/memcpy 和手动并行设置0/拷贝的速度
3.多线程有很多风险。比如如果fork一个程序,但是这个程序在用户不知道的情况下在标准库里其实有多个线程,那这个时候只有调用线程会被 fork,这个时候两个进程可观测行为就不一样了。之前测过 memset/memcpy 和手动并行设置0/拷贝的速度,结果发现 memset/memcpy 速度更慢。根据结果可见,多数情况下,memset/memcpy 比 openMP 手动设置0/拷贝更慢。由此可见,多线程memset/memcpy 通常比 多线程朴素设置0/拷贝 速度更快。1.因为memset是单线程。
2025-10-28 14:05:23
300
原创 (undone) 尝试用 mingw 在 Linux 电脑上编译 windows 平台上的软件
参考 url: https://blog.youkuaiyun.com/PHILICS7/article/details/135509851。
2025-10-28 10:48:09
94
原创 特别注意:#pragma omp parallel 和 #pragma omp for 和 #pragma omp parallel for
特别注意:使用 #pragma omp parallel 后,内部只能使用 #pragma omp for,不要使用 #pragma omp parallel for,否则会在内部再次创建新线程,拖慢速度。
2025-10-26 17:50:45
96
原创 (done) 自学 MPI (14) Exercise 3
url: https://hpc-tutorials.llnl.gov/mpi/exercise_3/TODO: here
2025-10-24 11:30:13
195
原创 (done) 自学 MPI (13) 简单介绍 MPI-2 和 MPI-3
MPI-1规范有意回避了若干“棘手”问题。出于权宜之计,这些议题被延后至1998年发布的MPI-2规范中解决。MPI-2作为对MPI-1的重大修订,新增了多项功能并进行了修正完善。
2025-10-24 11:28:38
257
原创 (done) 自学 MPI (12) Virtual Topologies 虚拟拓扑
url: https://hpc-tutorials.llnl.gov/mpi/virtual_topologies/TODO: here
2025-10-23 16:30:05
343
原创 (done) 自学 MPI (11) 群组与通信器管理例程
与群组类似,通信器在系统内存中也表示为一个对象,并且程序员只能通过"句柄"来访问。例如,包含所有任务的通信器的句柄是 MPI_COMM_WORLD。在 MPI 中,群组在系统内存中表示为一个对象,程序员只能通过一个"句柄"来访问它。6.通信完成后,使用 MPI_Comm_free 和 MPI_Group_free 释放新通信器及群组资源(此步骤为可选操作)同一进程可以隶属于多个群组/通信器,且在每个群组/通信器中都拥有独立的唯一排名。3.使用 MPI_Comm_create 为新群组创建对应的新通信器。
2025-10-23 16:11:23
831
原创 (done) 自学 MPI (10) Derived Data Types 派生数据类型
MPI还提供相关功能,允许用户基于MPI基本数据类型的序列来定义自己的数据结构。这类用户自定义结构被称为派生数据类型。基本数据类型在内存中是连续存储的。派生数据类型则能让您以便捷的方式指定非连续数据,并使其能够像连续数据一样进行处理。创建一个表示数组某一行的数据类型,并将不同的行分发给所有进程。MPI 定义了如下 原始数据类型。
2025-10-23 15:34:24
373
原创 (done) 自学 MPI (7) MPI 消息传递例程 (阻塞 和 非阻塞)
对于各个库函数/例程的介绍这里就不赘述,建议看三个参考 url 自行理解。这里只研究样例代码。
2025-10-23 10:33:21
106
原创 (done) 自学 MPI (6) 点对点通信例程 - 基本概念
MPI点对点操作通常涉及两个(且仅有两个)不同MPI任务之间的消息传递。一个任务执行发送操作,另一个任务则执行匹配的接收操作。MPI还提供了若干与收发操作相关的辅助例程,例如用于等待消息抵达的等待例程,或用于探查消息是否已到达的探测例程。注:这个把 circle_count 发送给主进程的过程需要 “点对点消息传递调用”。2.随机生成大量点,理论上,圆内点数量 / 方形内点数量 = PI / 4。任何类型的发送例程都可以与任何类型的接收例程配对使用。1.圆的面积 / 方形面积 = PI / 4。
2025-10-23 10:19:18
154
原创 (done) 自学 MPI (3) Getting Started
url: https://hpc-tutorials.llnl.gov/mpi/getting_started/TODO: here
2025-10-22 17:11:57
130
原创 CUDA 中把关键变量放入寄存器的方式
float4 * 是一个指针,指向一块内存,GPU 更倾向于把它放在 L1/2 cache里。而 float4 是一个变量,GPU 更有可能把它放入寄存器。把关键变量放进寄存器有时能提高性能。
2025-10-16 11:12:50
134
原创 CUDA API 获取显卡/GPU 参数,如线程块,WARP 大小,线程块支持数量,SM 数量等
【代码】CUDA API 获取显卡/GPU 参数,如线程块,WARP 大小,线程块支持数量,SM 数量等。
2025-10-13 19:06:12
105
原创 CUDA 中的 float3 数据类型
在CUDA编程中,float3 是一个内置的三维向量数据类型,主要用于表示和处理三维空间中的坐标、向量、颜色等需要三个浮点数分量的数据。
2025-10-13 14:32:08
199
原创 (done) 矩阵分块计算和分块转置
1.分块后要保证整体可乘(分后的小矩阵看作单个元素,包含这些小矩阵的大矩阵得是课程的,即 A x B,A 的列数要等于 B 的行数)2.分块后,每个小矩阵之间都得是可乘的。满足这两者,基本就能做计算。
2025-10-12 14:52:42
181
原创 (skip) 并行计算 CS149 Lecture9 (使用 Spark 进行分布式并行计算)
这堂课的核心是 GPU 计算。分布式我们可以在 MIT6.824 学。CS149 没有分布式相关实验练习,学了也白学。
2025-10-11 20:44:27
131
原创 调试 CUDA 代码
CUDA 代码分为 host 代码和 device 代码。nvcc 为 device 代码生成调试信息的选项:-G。nvcc 为 host 代码生成调试信息的选项:-g。device 代码在 GPU 上运行。host 代码在 CPU 上运行。调试器:cuda-gdb。
2025-10-10 19:12:00
326
原创 ubuntu22.04 安装 nvcc12.2
ubuntu22.04 默认的 nvcc 版本是11,gcc/g++ 默认版本也是 11。需要设置一下才能安装 12 版本。
2025-10-09 11:38:23
421
原创 vscode 很烦人的终端小分屏,显示历史记录,怎么关闭?
使用 ctrl + P,找到 settings(UI),disable 跟 sticky scroll 相关的选项即可。这个终端总是在最上端分出一个 “小屏”,用一根黑线隔开,显示以前的命令。这玩意儿名字叫 “sticky scroll”。
2025-10-09 10:48:22
227
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅