MPI:广播 long long int

2024-03-14

这个程序估计Pi通过将随机“飞镖”(采样点)扔到一个圆或半径=1内切于长度=2的方板内的圆上。利用关系

Area of circle / Area of Square = Pi/4

我们可以使用表示为的相同关系来估计 Pi

Darts Inside Circle / Darts Outside Circle = Pi/4

当我指定时程序运行良好NDARTS in a #define,但是当尝试将其广播为long long int, 读取自scanf,我收到以下执行错误:

mpirun -np 4 ./pi_montecarlo.x
-----------------------------------------------------------------------------
One of the processes started by mpirun has exited with a nonzero exit
code.  This typically indicates that the process finished in error.
If your process did not finish in error, be sure to include a "return
0" or "exit(0)" in your C code before exiting the application.

PID 10591 failed on node n0 (127.0.0.1) due to signal 11.

Why?

我的 MPI_Bcast 声明有什么问题吗?

long long int *NDARTS=0;
scanf("%Ld",NDARTS); 
MPI_Bcast(NDARTS, 1, MPI_LONG_LONG_INT, 0, MPI_COMM_WORLD);

完整代码:

/*


    mpicc -g -Wall -lm pi_montecarlo3.c -o pi_montecarlo.x 



    mpirun -np 4 ./pi_montecarlo.x





*/





#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include <mpi.h>


#define MASTER 0
#define PI 3.1415926535




d    ouble pseudo_random (double a, double b) {



    double r; 


    r = ((b-a) * ((double) rand() / (double) RAND_MAX)) +a;


    return r; 
}

int main(int argc, char*argv[]){

    long long int *NDARTS=0; 

    int proc_id, 
        n_procs, 
        llimit,  
        ulimit,  
        n_circle, 
        i;      


    double pi_current, 
           pi_sum,     
           x,         
           y,         
           z,          
           error,      
           start_time, 
           end_time;   

    struct timeval stime;

    llimit = -1;
    ulimit = 1;
    n_circle =0; 

    MPI_Init(&argc, &argv); 


    MPI_Comm_rank (MPI_COMM_WORLD, &proc_id);
    MPI_Comm_size (MPI_COMM_WORLD, &n_procs);

    if (proc_id == MASTER){
        printf("\nMonte Carlo Method to estimate Pi \n\n");

                printf("Introduce Number of Darts \n");

            scanf("%Ld",NDARTS); 


        printf("  Number of processes: %d \n", n_procs);
        printf("  Number of darts: %Ld \n", *NDARTS);



                MPI_Bcast(NDARTS, 1, MPI_LONG_LONG_INT, 0, MPI_COMM_WORLD);



        start_time = MPI_Wtime();

    }


    gettimeofday(&stime, NULL); 
    srand(stime.tv_usec * stime.tv_usec * stime.tv_usec * stime.tv_usec);


    for (i=1; i<=*NDARTS;i++){



        x = pseudo_random(llimit, ulimit);
        y = pseudo_random(llimit, ulimit);


        z = pow(x,2) + pow(y,2);



        if (z<=1.0){
            n_circle++;
        }
    }


    pi_current = 4.0 * (double)n_circle / (double) *NDARTS; 



    MPI_Reduce (&pi_current, &pi_sum, 1, MPI_DOUBLE, MPI_SUM, MASTER, MPI_COMM_WORLD);



       if (proc_id == MASTER) {



        pi_sum = pi_sum / n_procs;


        error = fabs ((pi_sum -PI) / PI) *100;


        end_time = MPI_Wtime();


        printf("Known value of PI  : %11.10f \n", PI);
        printf("Estimated Value of PI  : %11.10f\n", pi_sum);
        printf("Error Percentage   : %10.8f\n", error);
        printf("Time    : %10.8f\n\n", end_time - start_time);

    }


    MPI_Finalize();

    return 0;
}

你没有使用scanf()正确。它应该是这样的:

long long int NDARTS;
scanf("%lld",&NDARTS); 
MPI_Bcast(&NDARTS, 1, MPI_LONG_LONG_INT, 0, MPI_COMM_WORLD);

在您当前的代码中,long long int *NDARTS=0;有效地初始化NDARTS作为 NULL 指针。所以scanf()当它尝试写入时显然会出现段错误。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MPI:广播 long long int 的相关文章

随机推荐

  • 如果出现错误,请停止在 jquery 中提交表单

    这是我的代码 http jsfiddle net Xk38X 6 http jsfiddle net Xk38X 6 register click function if company f val length 0 company f c
  • 如何检测任何类型的用户交互?

    安全问题 我现在不知道这是如何发生的 但这个问题的读者会想到这个问题的解决方案是一种安全威胁 所以请记住 我感兴趣的所有数据都是测量用户进入 活动的时间 就这样 用户做了什么 我是NOT有兴趣 我需要的是非常简单的概念 但我找不到解决方案
  • 发送文件到 Mule 入站端点

    我正在尝试将包含文件和两个输入的表单发送到 Mule 入站端点 我有一个自定义处理器和一个定义如下的流程
  • 如何在ggplot中缩放独立层的颜色?

    我有一个数据集 记录了三座建筑物的能源使用情况 我有一个融化的数据框 可以从钻石组中模仿 data lt melt diamonds c depth table cut color id c cut color 本质上 我有来自三个不同建筑
  • Stripe 订阅取消和重新激活模型的最佳实践

    我正在开发一个应用程序 该应用程序有 Stripe 的每月订阅计划 我正在创建一个客户然后订阅供用户订阅 这对我来说效果很好 但我还没有弄清楚如何使用 Stripe 订阅创建取消流程 我使用了取消订阅按钮stripe subscriptio
  • 目标元素位于其他元素之前

    在我对此进行研究的过程中 我偶然发现这个线程 https stackoverflow com questions 10225364 select specific element before other element 但由于它已有 2
  • 用户完成编辑后如何从 EditText 上移除焦点?

    我的布局上有一个 EditText 用户输入一些文本并点击 完成 键后 我想从中删除闪烁的光标 我搜索了 StackOverflow 并找到了 3 个对我不起作用的答案 闪烁的光标仍然存在 private class MyOnKeyList
  • 虚拟环境下降级Python版本

    关于 TensorFlow 我总是遇到同样的错误 ModuleNotFoundError No module named tensorflow contrib 我实际上使用的是Python版本3 9不过网上看的好像是这个版本3 7是最后一个
  • 从 WHERE 子句中包含 Varying IN 列表的表中进行 SELECT

    我在正在处理的项目中遇到一个问题 我无法给您实际的代码 但我创建了一个可执行的示例代码 如下所示 Here temp and temp id有两张桌子 temp表包含逗号分隔的 id 列表 即VARCHAR2 temp id表包含实际的 i
  • 如何从散列的散列中提取键名?

    我有以下哈希值 HoH flintstones gt husband gt fred pal gt barney jetsons gt husband gt george wife gt jane his boy gt elroy simp
  • phpseclib 给了我一个奇怪的错误

    我试图使用这个 但它只是给了我这个错误 我不知道如何解决这个问题 警告 include once Math BigInteger php 无法打开流 否 这样的文件或目录 home www sfs web statistics public
  • linq .Value 可空对象必须有一个值。如何跳过?

    我有一些 linq 代码 有时null cbo3 ItemsSource empty Union from a in from b in CompleteData select b TourOpID Distinct select new
  • 在Swift中实现UILabel动画效果的最佳方法?

    我对 Swift 动画还很陌生 并且知道如何去做 但想看看其他人会如何做 我正在尝试创建这样的效果 当用户进入搜索栏时 搜索栏的占位符文本会缩小并向上移动到搜索字段上方 并更改为不同的颜色 像这样 http magicus xyz http
  • [String] 的 Swift 扩展?

    我正在尝试编写一个扩展方法 String 看来你不能延长 String 直接 类型 元素 限制为非协议类型 字符串 尽管我遇到了这个技巧 protocol StringType extension String StringType 但我仍
  • 在世界地图上方可视化网络[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我在 NodeXL 中有一个网络数据集 我试图在世界地图上可视化它 我的数据集有 具有国家属性的节点 链接 节点之间的未加权连接 我尝
  • 如何在 MATLAB 中迭代 n 维矩阵中的每个元素?

    我有个问题 我需要在 MATLAB 中迭代 n 维矩阵中的每个元素 问题是 我不知道如何对任意数量的维度执行此操作 我知道我可以说 for i 1 size m 1 for j 1 size m 2 for k 1 size m 3 等等
  • 使用 Angular 4.4.6 的开发模式下没有 NgForm 错误提供程序

    EDIT 我已经发现是什么导致了这个问题 我现在正在寻找一个解决方案来满足它 NOTE 此问题发生在开发模式下 即不是生产模式 并且不使用 aot 我正在使用这里的 更新 解决方案 https stackoverflow com a 463
  • 带css的透明滚动条

    现在使用此代码 以及此代码的许多变体 但滚动轨道变为深灰色 例如 222222 或接近此颜色 找到很多例子 但它们都给出相同的结果 Opera Chrome 和 Firefox 均显示此错误 怎么修 style 3 webkit scrol
  • HSTS 安全标头中的 max-age 属性是什么?

    HSTS 中 max age 的目的是什么 例如 Strict Transport Security max age 100 如果该值超过 100 会发生什么 有没有设置 max age 的最佳实践 thanks 有语义上不同的方式来发送
  • MPI:广播 long long int

    这个程序估计Pi通过将随机 飞镖 采样点 扔到一个圆或半径 1内切于长度 2的方板内的圆上 利用关系 Area of circle Area of Square Pi 4 我们可以使用表示为的相同关系来估计 Pi Darts Inside