自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(767)
  • 收藏
  • 关注

原创 taskset 限制部分程序的 CPU 使用

假如你本来有 20 个 CPU cores,执行 nproc 输出20,执行上述命令时,只会输出4。

2025-04-08 18:18:41 65

原创 最简单的 CUDA 程序,hello world from CUDA

【代码】最简单的 CUDA 程序,hello world from CUDA。

2025-04-08 14:32:37 99

原创 (done) 并行计算 CS149 Lecture4 (并行编程基础) (ISPC性能分析, ISPC常见错误, 并行编程步骤, 问题分解分配协同映射, 求解器例子)

TODO: here。

2025-04-07 17:30:38 330

原创 SIMD和SPMD的区别

单指令多数据和单程序多数据都是可以处理多数据的,不同点是SIMD是从指令级上看的,这意味着SIMD处理的多数据是执行相同的操作,比如都执行加法。而SPMD是从程序级上看的,这意味着处理的多数据不一定是执行相同的操作,因为程序里面可以有分支等,即执行路径可以是多条。一句话,SIMD是多个数据执行相同的操作,SPMD是多个数据可以执行不同的操作也可以执行相同的操作。

2025-04-07 10:04:18 315

原创 ISPC 是什么?ISPC 程序例子,和 SPMD,SIMD 的关系

TODO: here。

2025-04-07 09:47:35 374

原创 (done) 并行计算 CS149 Lecture3 (现代多核处理器2 + ISPC编程抽象) (超线程, 流水线, GPU原理, 内存IO瓶颈, 计算访存指令比例, ISPC)

TODO: here。

2025-04-06 20:44:19 138

原创 (done) 并行计算 CS149 Lecture2 (现代多核处理器) (SIMD, 多核, 超标量, 数据预取, 超线程)

视频 url: https://www.bilibili.com/video/BV1du17YfE5G?大佬笔记 url: https://zhuanlan.zhihu.com/p/8129089606。

2025-04-06 15:17:20 85

原创 (done) 并行计算 CS149 Lecture1 (Why parallelism? Why efficiency?) (并行基本概念、硬件基础)

TODO: here。

2025-04-06 12:25:09 87

原创 ulimit 可限制用户资源上限,比如限制用户可打开的最多文件描述符、可使用的最大内存等

可以查看当前所有选项的设置、以及解释。可查看当前设置的最大内存。

2025-04-01 09:56:46 92

原创 内存泄漏定位工具之 mtrace(一)

【代码】内存泄漏定位工具之 mtrace(一)

2025-04-01 09:29:26 165

原创 strings: 一个命令行工具,主要用于从二进制文件中提取可打印的字符串。

strings 是一个命令行工具,主要用于从二进制文件中提取可打印的字符串。它在逆向工程、调试和分析文件时非常有用。

2025-03-31 16:02:47 138

原创 计算机中的 Stub 代表什么?

在计算机科学中,Stub(存根)是一种临时或简化的代码/组件,用于模拟或替代更复杂的功能,通常用于开发、测试或系统集成。

2025-03-31 11:25:24 132

原创 (done) MIT6.824 Lecture 02 - RPC and Threads

TODO: here。

2025-03-30 16:31:25 515

原创 C 语言中的隐性共享内存:全局未初始化匿名结构体变量 C语言允许存在多个未初始化的同名全局变量

url: https://stackoverflow.com/questions/7189982/two-variables-with-same-name-and-type-in-two-different-c-files-compile-with-g

2025-03-27 16:01:34 331

原创 (undone) MIT6.824 Lecture 03 - GFS (没看完,先做实验)

TODO: here。

2025-03-27 10:02:55 299

原创 (undone) 阅读 Google File System 论文笔记

TODO: here。

2025-03-25 22:36:12 145

原创 (done) MIT6.824 Lecture 01 - Introduction

TODO: here。

2025-03-23 19:57:31 162

原创 xv6 文件系统理论部分,包括 inode 是啥,每个文件如何通过 inode 索引到数据块等等

视频博主讲得非常好了。

2025-03-16 13:37:16 116

原创 (done) 梳理 xv6-lab-2023 fs.img 生成过程,以及 xv6 磁盘结构

由于写 LAB8 时调试文件系统并发 bug 遇到了很大困难,这里决定读读 xv6 文件系统源码,来帮助调试。

2025-03-15 19:37:04 118

原创 一个简易的内核 race detector 原理 (灵感源于 xv6 KCSAN)

操作系统内核中的代码,每次发生写内存操作时,记录这个写的地址在一个 watchpoints 列表里,随后延迟这个写操作 (约 200000 cycles)。接着,在每次读写内存操作时,检查 watchpoints 列表,看 watchpoints 列表中是否有地址与当前的读写地址相同,若有,说明发生了数据竞争。当我们对操作系统内核进行 race detector 时,由于操作系统内核并不能提供完善的运行时环境,我们只能自己去实现。

2025-03-11 14:38:30 235

原创 (done) 梳理 xv6-lab-2023 LAB8 实验代码(kalloctest,理清 test1)

可以看到只有 test1 失败了,因此只需要关注 test1。此外,还需关注红圈圈起来的数字代表什么。

2025-03-11 10:12:20 203

原创 (done) MIT6.S081 Lec15 Crash recovery 学习笔记

TODO: here。

2025-03-10 14:52:22 153

原创 C 语言宏定义替换 #pragma

你可以直接在 C 源文件中使用 #define 来定义宏,从而将 MY_OMP_FOR 替换为 #pragma omp parallel for default(none) shared(aj, detj)。这种方法更加直观,且不需要在编译命令中额外指定 -D 选项。来源:deepseek(已验证)

2025-03-10 14:50:12 326

原创 openMP 中容易出错的一些知识 (静态变量私有化)

openMP

2025-03-07 14:41:07 196

原创 (done) MIT6.S081 Lec14 File systems 学习笔记

TODO: here。

2025-03-06 13:07:06 325

原创 valgrind 检测多线程 bug,检测 并发 bug concurrent bug parallel bug

【代码】valgrind 检测多线程 bug,检测 并发 bug concurrent bug parallel bug。

2025-03-05 13:53:40 224

原创 (done) MIT6.S081 Interrupts Lecture 学习笔记

TODO: here。

2025-03-02 07:53:10 150

原创 (undone) SeTAR: Out-of-Distribution Detection with Selective Low-Rank Approximation

分布外(OOD)检测对于神经网络的安全部署至关重要。现有的基于CLIP的方法通过设计新颖的评分函数或复杂的微调方法来进行OOD检测。在本研究中,我们提出了SeTAR,一种新颖的、无需训练的OOD检测方法,该方法利用视觉-语言和纯视觉模型中权重矩阵的选择性低秩近似。SeTAR通过使用简单的贪心搜索算法对模型的权重矩阵进行事后修改,从而增强了OOD检测。基于SeTAR,我们进一步提出了SeTAR+FT,这是一种微调扩展,旨在优化模型在OOD检测任务中的性能。

2025-02-26 18:51:09 710

原创 (undone) Long Term Memory : The Foundation of AI Self-Evolution

url: https://arxiv.org/html/2410.15665v1

2025-02-26 09:57:28 122

原创 (done) 什么是 PCI? Peripheral Component Interconnect

x86 架构 MMIO 的方式:先对 PCI_CONFIG_ADDR 写入数据,告诉总线内核要读写哪块寄存器,再通过 PCI_CONFIG_DATA 进行真正的读写。如下是计算设备配置空间地址的方式,访问起来其实有点类似于 page table 对于 va —> pa 映射的计算。PCI标准手册 url1: https://ics.uci.edu/~iharris/ics216/pci/PCI_22.pdf。在 PCI 标准中,要求每个设备都一个块空间作为配置空间。也可以通过 class ID 查到设备。

2025-02-23 16:02:21 210

原创 (done) 研究 xv6-lab-2023 网络这一节的实验代码(e1000初始化过程)

网页:https://pdos.csail.mit.edu/6.S081/2023/labs/net.html。任务:分析清楚 e1000 网卡的初始化过程 (doing)

2025-02-23 10:54:32 121

原创 什么是 ring buffer?环形缓冲区

url: https://www.youtube.com/watch?v=uqSeuGQhnf0

2025-02-23 06:10:56 110

原创 tcpdump 用法示例

使用 tcpdump 监听 26099 端口。tcpdump 捕捉到了来往的 UDP 包。

2025-02-22 17:20:13 303

原创 valgrind gdb 检测内存访问越界 段错误 Segmentation fault signal 11

更合适的是使用 valgrind。使用 gdb 是通常的做法。

2025-02-14 14:11:57 98

原创 如何使用 gprof? 如何阅读 gprof 报告?

【代码】如何使用 gprof?

2025-02-10 15:59:50 125

原创 (done) openMP学习 (Day14: 总结)

新手并行程序员与专家并行程序员之间的区别是专家have a collection of these fundamental design patterns in their minds.

2025-02-09 23:33:27 319

原创 (done) openMP学习 (Day13: 线程私有数据和如何支持库(Pi again),蒙特卡洛计算 Pi,线性同余法)

视频:https://www.bilibili.com/video/BV1SW411s7ST?会产生更高的 error 的原因是:想象我们是在一串伪随机数上随机选一段连续的数字作为随机数。那么在并行条件下,我们选取多段连续数字,这些多段连续数字可能会 overlap。这里出现了一个问题:随机数生成器也许不支持并行,从而导致上述代码无法并行。现在 LCG方法 已经实现线程安全了,但是可以看到它的分布和单线程有差别。经过测试:并行时,同样参数生成的伪随机数并不同。使用上述方法,多线程的随机数和单线程一摸一样。

2025-02-09 23:29:36 431

原创 (done) openMP学习 (Day12: Pairwise同步的陷阱)

视频:https://www.bilibili.com/video/BV1SW411s7ST/?将上述例子用OpenMP并行化,如下所示,这个改法有个极低概率的bug,就是flag = 1;关于 pairwise synchronization 的定义如下。一个例子,生产者-消费者模型的例子。

2025-02-09 22:53:00 275

原创 (done) openMP学习 (Day11: 可怕的东西:内存模型,Atomics,Flush(Pairwise同步))

TODO: here。

2025-02-09 20:27:01 168

原创 (done) openMP学习 (Day10: Tasks 原语)

总的来说,首先使用 #pragma omp single 只让一个线程运行,这个线程会循环更新 p 值,随后每次使用新的 p 值创建一个新的线程来运行 process§ 函数。本章节内容仅提供引入,关于 task 更详细的细节请看 openMP 手册或者源材料。总的来说,task 创建一个并行任务,可以并行运行。下面这张图能很好的辅助解释。

2025-02-09 20:14:21 353

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除