V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  albin504  ›  全部回复第 2 页 / 共 12 页
回复总数  222
1  2  3  4  5  6  7  8  9  10 ... 12  
2025 年 11 月 26 日
回复了 albin504 创建的主题 程序员 有了 AI 加持,学习新技术效率提升很明显
@qieqie 遇到行家了。我贴一下代码:

```
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <cuda_runtime.h>
#include "common/book.h"

#define N (32 * 1024 * 1024) // 32M elements
#define THREADS_PER_BLOCK 256

// Kernel to initialize data directly on GPU
__global__ void init_data_kernel(float *a, float *b, int n) {
int tid = threadIdx.x + blockIdx.x * blockDim.x;
int stride = blockDim.x * gridDim.x;

for (int i = tid; i < n; i += stride) {
a[i] = 1.0f;
b[i] = 2.0f;
}
}

// Dot product computation kernel (Same as before)
__global__ void dot_product_kernel(float *a, float *b, float *c, int n) {
int tid = threadIdx.x + blockIdx.x * blockDim.x;
int stride = blockDim.x * gridDim.x;

float sum = 0;
for (int i = tid; i < n; i += stride) {
sum += a[i] * b[i];
}

// Shared memory reduction per block
__shared__ float cache[THREADS_PER_BLOCK];
int cacheIndex = threadIdx.x;
cache[cacheIndex] = sum;
__syncthreads();

int i = blockDim.x / 2;
while (i != 0) {
if (cacheIndex < i)
cache[cacheIndex] += cache[cacheIndex + i];
__syncthreads();
i /= 2;
}

if (cacheIndex == 0)
atomicAdd(c, cache[0]);
}

void dot_product_cpu(float *a, float *b, float *c, int n) {
double sum = 0;
for (int i = 0; i < n; i++) {
sum += a[i] * b[i];
}
*c = (float)sum;
}

int main() {
// Host pointers (only for verification)
float *a_host, *b_host, *c_cpu, *c_gpu;
// Device pointers
float *dev_a, *dev_b, *dev_c;

// Allocate host memory (just for CPU verification)
a_host = (float*)malloc(N * sizeof(float));
b_host = (float*)malloc(N * sizeof(float));
c_cpu = (float*)malloc(sizeof(float));
c_gpu = (float*)malloc(sizeof(float));

// Initialize host arrays for CPU calculation
for(int i=0; i<N; i++) {
a_host[i] = 1.0f;
b_host[i] = 2.0f;
}

printf("Vector size: %d elements (%.2f MB per vector)\n", N, (float)N * sizeof(float) / 1024 / 1024);

// --- CPU Computation ---
clock_t start = clock();
dot_product_cpu(a_host, b_host, c_cpu, N);
clock_t end = clock();
double cpu_time = ((double)(end - start)) / CLOCKS_PER_SEC * 1000.0;
printf("CPU Result: %.2f\n", *c_cpu);
printf("CPU Time: %.2f ms\n", cpu_time);

// --- GPU Computation (Zero-Copy Init) ---

// 1. Allocate Device Memory
HANDLE_ERROR(cudaMalloc((void**)&dev_a, N * sizeof(float)));
HANDLE_ERROR(cudaMalloc((void**)&dev_b, N * sizeof(float)));
HANDLE_ERROR(cudaMalloc((void**)&dev_c, sizeof(float)));

start = clock();

// 2. Initialize Data on GPU (No Memcpy from Host!)
int blocksPerGrid = (N + THREADS_PER_BLOCK - 1) / THREADS_PER_BLOCK;
if (blocksPerGrid > 65535) blocksPerGrid = 65535;

init_data_kernel<<<blocksPerGrid, THREADS_PER_BLOCK>>>(dev_a, dev_b, N);
HANDLE_ERROR(cudaGetLastError());

// Reset result
float zero = 0.0f;
HANDLE_ERROR(cudaMemcpy(dev_c, &zero, sizeof(float), cudaMemcpyHostToDevice)); // Tiny copy (4 bytes)

// 3. Compute
dot_product_kernel<<<blocksPerGrid, THREADS_PER_BLOCK>>>(dev_a, dev_b, dev_c, N);
HANDLE_ERROR(cudaGetLastError());
cudaDeviceSynchronize();

// 4. Copy Result Back
HANDLE_ERROR(cudaMemcpy(c_gpu, dev_c, sizeof(float), cudaMemcpyDeviceToHost)); // Tiny copy (4 bytes)

end = clock();
double gpu_time = ((double)(end - start)) / CLOCKS_PER_SEC * 1000.0;

printf("GPU Result: %.2f\n", *c_gpu);
printf("GPU Time (Total including Init on GPU): %.2f ms\n", gpu_time);

// Compare
printf("Speedup (GPU vs CPU): %.2fx\n", cpu_time / gpu_time);

// Cleanup
free(a_host); free(b_host); free(c_cpu); free(c_gpu);
cudaFree(dev_a); cudaFree(dev_b); cudaFree(dev_c);

return 0;
}


```

这个版本是在 GPU 上初始化向量。



AI 给出的第一版是在 CPU 上初始化向量然后 copy 到 GPU ,这个 copy 过程成为了瓶颈( 200 多 M 数据 copy 花费 64ms )
2025 年 11 月 26 日
回复了 albin504 创建的主题 程序员 有了 AI 加持,学习新技术效率提升很明显
@crocoBaby 嗯嗯,谢谢,抽空我也看看。这方面我是门外汉,我只是拼感觉提的几个问题。
2025 年 11 月 26 日
回复了 albin504 创建的主题 程序员 有了 AI 加持,学习新技术效率提升很明显
@crocoBaby 给 AI 喂权威资料,现在已经成为 AI 训练的一个难题了。 以公司内部的知识库资料训练为例,假如我们要高很多一个公司内部的行政小助理,训练会遇到以下问题:
( 1 )公司内部的知识库上有多篇文章提到公司的考勤制度,其中一些文章写的制度已经过时了,这时候 AI 就需要去判断该采信哪个信息源。
( 2 )有些政策和特定的毕竟信息强相关(类似于不同的软件版本不同的参数),在提问时如果没给出很具体的背景信息,AI 只是根据概率给出了概率较大的答案,这时候很可能是错误的答案
( 3 )有些知识库的内容本身就是错误的(就是你提到的不权威)
2025 年 11 月 26 日
回复了 albin504 创建的主题 程序员 有了 AI 加持,学习新技术效率提升很明显
@YanSeven Coding 是很牛。 这里有个前提,方案还是得靠程序员设计。设计好了合适的方案,AI 来执行实施( coding )。
2025 年 11 月 26 日
回复了 albin504 创建的主题 程序员 有了 AI 加持,学习新技术效率提升很明显
@YanSeven 我理解,至少现在来看,即使有了大模型,程序员也得学习新技术,只是侧重点不同。现在需要学的是原理性的、框架性的、需要具备技术选型、优劣判断的能力。

举例,我最近在学习 nvidia GPU 编程的技术。 我如果不系统学习的话,遇到一个特定的问题,AI 是不会提供 GPU 解决思路的,即使提供的,我也可能因为拿捏不准不敢用到生产环境。 我需要具备评判 AI 给出的方案的优劣、是否适配业务的能力。
2025 年 11 月 26 日
回复了 albin504 创建的主题 程序员 有了 AI 加持,学习新技术效率提升很明显
@liuzimin 这其实也给我们程序员提了个醒:在遇到问题的时候,先初步判断下这个问题是否适合用 AI 来找答案。如果一股脑地找 AI ,问题解决不了不说,还会丧失咱们本有的技能
2025 年 11 月 26 日
回复了 albin504 创建的主题 程序员 有了 AI 加持,学习新技术效率提升很明显
@liuzimin 是的。举例,前几天我在手动编译 ffmpeg ,打 dockfile 。
中间遇到问题问 AI ,折腾了一天还没搞好。

后来发现 github 上有现成的 dockerfile ,拿来直接用了。

还有一次,利用 Mongodb_restore 命令在不同库之间导数据,遇到报错问 AI ,尝试各种参数都不解决。后来执行 Mongodb_restore --help , 一看就知道该用哪个参数了。

我想根因在于,大模型核心里面还是概率预测 token ,那么它预测出来的答案,和我遇到的问题的背景信息很难匹配(比如我的 Mongodb_restore 是特定的版本,有特定的参数)。

AI 很容易张冠李戴
@albin504 音质、降噪确实还不错
@Jerry02 对。槽点主要在语音播报,纯粹制造噪音。还有耳机侧面的按键交互太扯淡了,容易误操作,而且还记不住
2025 年 11 月 11 日
回复了 darkway 创建的主题 问与答 你们的眼镜是在哪里配的,镜片花了多少钱?
宝岛不错,很专业。但是大部分宝岛店都是冒牌的。五六百
@Jerry02 我戴的这个。bose qc ultra 。 还可以,夹头是真的会不太舒服。 另外,交互有些不太好(产品经理有点弱智)
2025 年 10 月 24 日
回复了 Marsgo 创建的主题 生活 各位,这个是我儿子!
@albin504 我儿子大班
2025 年 10 月 24 日
回复了 Marsgo 创建的主题 生活 各位,这个是我儿子!
@Marsgo 翻墙,现在能看到了。

我周末在家儿子看电视的时候,我就在他脸上、胳膊上摸摸、盯着他看。挺好玩的
2025 年 10 月 24 日
回复了 Marsgo 创建的主题 生活 各位,这个是我儿子!
图片呢
2025 年 10 月 23 日
回复了 BeijingBaby 创建的主题 程序员 除了编程外,你还有什么取悦自己的爱好?
@cBlank 我也是啊。我也觉得带小孩可开心了
2025 年 10 月 23 日
回复了 BeijingBaby 创建的主题 程序员 除了编程外,你还有什么取悦自己的爱好?
@idragonet CJ 是啥?洗脚吗
2025 年 10 月 23 日
回复了 BeijingBaby 创建的主题 程序员 除了编程外,你还有什么取悦自己的爱好?
@MAVETRICK 咋联系的?担心 jc 抓不
2025 年 10 月 17 日
回复了 muluc 创建的主题 问与答 大师们,有没有什么过来人的建议?
学习价值投资。段永平的雪球帖子反复看。这是会改变人生的理念。
一方面学习投资、另外一方面学习思维方式
夸克和阿里云盘背后的技术很多是复用的。
2025 年 10 月 9 日
回复了 albin504 创建的主题 生活 女人为了一口气能闹的天翻地覆
@iyaozhen 认同你的逻辑。我也觉得职业改造是我老婆缺失的。

我刚毕业那会儿,很自我、脾气差和同事冲突过几次。 现在乖乖儿的
1  2  3  4  5  6  7  8  9  10 ... 12  
关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   2128 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 37ms · UTC 15:12 · PVG 23:12 · LAX 07:12 · JFK 10:12
♥ Do have faith in what you're doing.