c++ - 埃拉托色尼筛的 MPI 并行编程。仅内部循环
问题描述
我正在尝试与 mpi 库和 c++ 并行化以下顺序代码的内部循环(eratosthenes 筛):
#include <stdio.h>
#include <cstdlib>
#include <vector>
#include <stdlib.h>
#include <iostream>
#include <math.h>
#include <iostream>
int main()
{
int64_t n = 40;
int64_t root = std::sqrt(n);
int count = 0;
bool* range = new bool[n];
for (int64_t i = 0; i < n; i++)
{
range[i] = true;
}
for (int64_t i = 2; i <= root; i++)
{
if (range[i])
{
//Loop to be parallelized
for (int64_t j = i * i; j < n; j += i)
{
range[j] = false;
}
}
}
for (int64_t k = 2; k < n; k++)
{
if (range[k])
{
count++;
}
}
printf("Primes: %d", count);
}
我不想并行化外部循环,虽然这会是一个更好的解决方案,但我必须比较两种性能。
换句话说,我想并行消除倍数的分布,这发生在 range[j] 取值为 false 时
先感谢您。
解决方案
推荐阅读
- jmeter - 如何使用 jmeter 为 SSE 创建负载测试?
- oracle - 命令行错误:5 列:84 错误报告 - SQL 错误:ORA-00917:缺少逗号 00917.00000 -“缺少
- python - 如何处理 Django Admin 的大量删除?
- c# - Azure 搜索:索引文档计数与上传记录的总数不匹配
- javafx - JavaFX 应用程序 java.lang.RuntimeException:未找到工具包(涉及 UNC 路径)
- python - 在多个列表中
- excel - 使用 for each 比较每个工作簿中的多个列并将第三列复制到其中一个工作簿
- jquery-select2 - 已解决 - Select2 attr "selected" 在设置为 false 时停止工作
- c# - 根据值更改 WPF DataGrid 列单元格背景颜色
- azure-data-explorer - Azure Kusto 数据资源管理器:按列组合行