伙计们。我正在尝试使用 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 一起正常工作,并且我可以通过并行运行它来加速我的程序?