wordcount openmp并行 C/C++代码
时间: 2023-07-30 18:10:12 浏览: 168
以下是使用 OpenMP 并行化的 C++ 代码,用于计算文件中的单词数。
```cpp
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>
#include <omp.h>
int main(int argc, char** argv) {
if (argc < 2) {
std::cerr << "Usage: " << argv[0] << " <file>\n";
return 1;
}
std::string filename(argv[1]);
std::ifstream file(filename);
if (!file.is_open()) {
std::cerr << "Error opening file: " << filename << "\n";
return 1;
}
std::vector<std::string> words;
std::string word;
#pragma omp parallel shared(words) private(word)
{
#pragma omp for
for (int i = 0; i < omp_get_num_threads(); i++) {
while (file >> word) {
#pragma omp critical
{
words.push_back(word);
}
}
file.clear();
file.seekg(0, std::ios::beg);
}
}
std::cout << "Word count: " << words.size() << "\n";
return 0;
}
```
这个程序使用 OpenMP 的并行 for 指令来分配文件的读取任务给多个线程。每个线程都会读取整个文件,并将它们的结果合并到共享的 `words` 向量中,使用 OpenMP 的 critical 指令来保证线程安全。最终程序输出单词数。
阅读全文