// 朴素矩阵乘法:纯串行,CPU挨个算,主打一个慢
std::vector<std::vector<float>> naive_matmul(
const std::vector<std::vector<float>>& A,
const std::vector<std::vector<float>>& B) {
int m = A.size();
int n = B.size();
int p = B[0].size();
std::vector<std::vector<float>> C(m, std::vector<float>(p, 0.0f));
for (int i = 0; i < m; ++i) {
for (int j = 0; j < p; ++j) {
for (int k = 0; k < n; ++k) {
C[j] += A[k] * B[k][j];
}
}
}
return C;
}
int main() {
// 初始化512x512矩阵(大模型里算小尺寸了)
int size = 512;
std::vector<std::vector<float>> A(size, std::vector<float>(size, 1.0f));
std::vector<std::vector<float>> B(size, std::vector<float>(size, 2.0f));
// 计时:看看CPU摸鱼多久
auto start = std::chrono::high_resolution_clock::now();
auto C = naive_matmul(A, B);
auto end = std::chrono::high_resolution_clock::now();
std::chrono::duration<double> diff = end - start;
// SIMD优化矩阵乘法:批量计算,把O(n³)逼近O(n²)
void simd_matmul(const float* A, const float* B, float* C, int m, int n, int p) {
constint simd_width = 8; // AVX2一次干8个活,打工人看了都直呼卷
for (int i = 0; i < m; ++i) {
for (int j = 0; j < p; j += simd_width) {
__m256 sum = _mm256_setzero_ps(); // 初始化寄存器(相当于预备8个空工位)
for (int k = 0; k < n; ++k) {
__m256 a = _mm256_set1_ps(A[i * n + k]); // 把一个数复制到8个工位
__m256 b = _mm256_loadu_ps(&B[k * p + j]); // 加载8个数到工位
sum = _mm256_add_ps(sum, _mm256_mul_ps(a, b)); // 8个数同时乘加,主打一个高效
}
_mm256_storeu_ps(&C[i * p + j], sum); // 把8个结果打包下班
}
}
}
int main() {
int size = 512;
// 延续内存分配(避免碎片化,CPU找数据不迷路)
float* A = (float*)_mm_malloc(size * size * sizeof(float), 32);
float* B = (float*)_mm_malloc(size * size * sizeof(float), 32);
float* C = (float*)_mm_malloc(size * size * sizeof(float), 32);
// 初始化矩阵:全填1和2,方便验证结果
for (int i = 0; i < size * size; ++i) {
A = 1.0f;
B = 2.0f;
}
// 计时:看看开挂后的CPU多快
auto start = std::chrono::high_resolution_clock::now();
simd_matmul(A, B, C, size, size, size);
auto end = std::chrono::high_resolution_clock::now();
std::chrono::duration<double> diff = end - start;
DeepSeek 的爆火不只是算法的成功,更是 C++ 底层算力(SIMD、内存管理)的降维打击。正是依托 llama.cpp 等 C++ 硬核项目,大模型才得以摆脱昂贵的 GPU 依赖,在普通电脑上完成“技术普惠”。随着行业风向从“拼参数”转向“拼落地”,C++ 岗位薪资逆势下跌,掌握“Python 定义逻辑 + C++ 极致加速”的组合拳,将是你将来十年最波动的职业护城河。