所讨论的程序对单个输入数据文件和单个输出数据文件进行操作:它从输入中获取一个数据单元,计算数据的几个统计特征,然后将这些特征放入输出中。
发现该程序受 CPU 限制:CPU 使用率一直为 99%,计算比读取和写入花费更多时间。由于硬件有 32 个 CPU 可用,因此决定使用 OpenMP 将程序转换为并行处理版本。然而,很明显它可能导致写入竞争条件,因为多个并行线程可能希望写入单个输出。
准备此类程序以支持 OpenMP 和 OpenMp 安全的必要步骤是什么?是否可以仅通过 OpenMP 编译指示轻松实现,而无需更改代码,或者之前必须实现一些锁定机制?