我相信有些人和我有同样的经历,他/她必须给出一个(估计的)性能报告,将一个程序从顺序移植到并行与一些指定的多核硬件,只给出很少的时间。
例如,如果给出一个 10K LoC 顺序程序并在 100 毫秒内在 Intel i7-3770k(未矢量化)上执行,如果将代码并行化到具有 NVIDIA CUDA 的 Tesla C2075 需要多长时间,假设所有类型并行化优化技术完成了吗?(但你只有 2-4 天的时间来报告性能?假设你根本不知道算法。或者如果我们只是假设完成这项工作是不可能的情况可能会更安全)
因此,我想知道,最有可能提供此类绩效报告的最快方式是什么?仅通过硬件能力(例如 GFLOP 峰值和内存带宽速率)来计算是否安全?有数学方法来计算吗?如果有,请用相应的问题描述和算法,以及目标硬件的规格证明你的方法。
或者也许已经存在这样的工具来(大致)估计代码移植?
(请不要回答:'自杀是最快的方法。')