希望为串行并行代码示例构建、编译和/或查找数据集

人工智能 分类 数据集 生成模型
2021-10-23 14:01:53

我正在寻找执行两项任务:

  • 训练分类器将代码分类为串行或并行

  • 训练生成算法以从串行生成并行代码

对于第一个任务,一个简单的爬虫可以从 git 中抓取随机的 C 和 C++ 代码,但是对于第二步,我需要一个相当大的串行到并行代码示例源。对于现有或创建此类数据集的任何想法或指针将不胜感激。

1个回答

在这种情况下开始的一种通用方法是尝试找到“神谕”。

串行到并行转换器存在相当长的一段时间,有些是开源的(例如PIPS)。这个想法是从步骤(1)中获取串行代码,使用“oracle”生成并行代码,就是这样:每次转换都会在数据集中输入。

确保数据集的质量在这里至关重要。生成数据集的脚本应确保 (1) 串行代码正确编译和运行,(2) 并行化代码也正确编译和运行,(3) 串行和并行程序产生相同的结果,(4) 一些指标客观地说明如何并行版本与串行版本相反,并且 (5) 跟踪实际的硬件配置。

第 (4) 点对于此类数据集的质量至关重要。并行程序并不总是比串行版本快:一个 1000 次迭代循环在 8 核 CPU 上转储超过 1000 个工作程序可能不如 8 个工作程序好——我们需要检查转换器在做什么。第 (5) 点确保我们知道数据在哪些条件下有效。

使用几个“预言机”会更好,带来多样性,并希望让学习算法发现最佳的转换权衡——也许比精心制作的转换器自己能够做的更好。