0

伙计们。我正在尝试使用 OpenMP 加速循环。

如果我加快使用整数变量的循环,那么一切正常:

  void main()
{
    //mpz_class i("0");
    //mpz_class k("1");
    //mpz_class l("1211728594799");
    int k = 9;
    int i = 0;
    int l = 1998899087;

#pragma omp parallel for
    for (i=k; i <= l; i++) {
        if (i == 1998899085)
            printf("kkk");
    }


    system("pause");


}

如果我开始在循环中使用 MPIR 变量,那么在 Visual Studio 2015 中构建程序时会出现错误。以下是这些错误的编号:C3015、C3017、C3019。以下是导致这些错误的代码:

    void main()
{
    mpz_class i("0");
    mpz_class k("1");
    mpz_class l("1211728594799");
    //int k = 9;
    //int i = 0;
    //int l = 1998899087;

#pragma omp parallel for
    for (i=k; i <= l; i++) {
        if (i == 1998899085)
            printf("kkk");
    }


    system("pause");


}

如果我禁用 pragma omp parallel for 那么 MPIR 本身可以正常工作,那么代码会很好,但它比使用相同数字范围的 int 变量慢得多。

我应该怎么做才能使 Open MP 与 MPIR 一起正常工作,并且我可以通过并行运行它来加速我的程序?

4

0 回答 0