在python.ipynb中的第一段代码块是生成合成数据集的代码。数据集要求每个样本1行,前 n - 1 列元素为维度特征,第n列元素为类别标签,类之间的分隔符为,。使用其他数据集需要在外部指定参数
推荐使用make语句对C++代码进行编译,可能需要在makefile中:
- 根据显卡指定nvcc编译计算能力选项。
- 保证可以链接cuda库和cuda sample
make- 数据合成代码
- kmeans实现代码
- 无并行的C++代码
- 使用sklearn第三方库的python代码
- 并行的C++代码
- 结果可视化代码
| 阶段 | 并行维度 |
|---|---|
| 距离计算 | 聚类(stream)x样本×特征 |
| 样本分类 + 类别统计 | 样本 |
| 损失计算 | 层次规约 |
| 特征累加 | 样本x维度 |
| 聚类中心更新 | 聚类x维度 |
./main.out --filename ./synthetic_datast.csv --numClusters 4 --maxIters 50 --epsilon 0.01 nvprof ./main.out参考的版本是cuda 12.6,需要在makefile中需要为nvcc编译器引入cuda和cuda sample的地址(helper_cuda.h)。 路径如下,仅供参考
NVCCFLAGS = -arch=sm_75 -std=c++17 -I/home/funmelon/cuda-samples/Common -I/usr/local/cuda/include需要在c_cpp_properities.json中需要增加对cuda和cuda sample(helper_cuda.h)的include。 路径如下,仅供参考。之后vscode的C++的代码检查就不会报错。
"/usr/local/cuda/include",
"/home/funmelon/cuda-samples/Common"