跳转至

C++

从Deepseek开源库3FS中学习fuse的使用-如何开发一个文件系统(一)

背景介绍

Deepseek开源了一系列AI infra的相关的项目,其中包括了deepseek-ai/3FS

A high-performance distributed file system designed to address the challenges of AI training and inference workloads.

文件系统是任何操作系统的支柱,负责管理数据的存储和检索方式。传统上,开发文件系统是一项复杂而艰巨的任务,需要对内核编程有深入的了解。然而,有了 FUSE(用户空间文件系统),这项任务变得更加容易和通用。

zip压缩格式为什么是从后往前开始解析的?

通过对ZIP 文件格式的学习,就有了足够的信息能够逐字节手动读取和写入 ZIP 文件,知道为什么zip压缩格式为什么是从后往前开始解析的。

ZIP 文件结构概述

ZIP 文件由多个头部组成,包括本地文件头、中央目录文件头和中央目录结束记录。每个头部由签名和头部数据组成。

C++如何实现FP16(IEEE754-2008)类型?

计算机在进行数值计算时,首先需要对数据进行表示,比如F32、F16、F64、int32、int16、int8等等。特别在深度学习中,如果模型的参数是F32类型,那么计算耗时且保存的参数占用内存大。

为了准确率同时保证计算的速度,一般需要把模型转换成F16类型。F16即是通过16个bit(位)表示浮点数类型。

我们一起看一下:

  • IEEE754-2008如何定义Float32和Float16的?
  • float32和float16如何转换?在C++23版本以下标准库是没有f16类型的。
  • Float16不用转换成float32比较,如何直接比较大小?

c++静态库和动态库全局变量初始化有何不同?

采用动态链接库的问题:版本升级,调用动态库的程序需不需要重新编译,需要考虑动态链接库二进制ABI兼容性问题,比如是否更改了头文件中的结构体,更改了接口函数,添加了虚函数。动态链接库变更以后,如果没有热更新so,需要替换so,重启可执行程序。

静态库的问题,考虑是否存在资源加载多次的问题。