OpenMP在os x上的汇编错误

OpenMP on os x assembler errors

本文关键字:汇编 错误 os OpenMP      更新时间:2023-10-16

我一直在尝试让openMp在我的mac上工作。最后,我终于成功了。

这个程序运行得很好

https://computing.llnl.gov/tutorials/openMP/samples/C/omp_hello.c

但是这个

#include <omp.h>
#include <stdio.h>
#include <stdlib.h>
static long num_steps = 100000;
double step;
int main(){
int i, nthreads;
double x,pi,sum[2] ;
double start = omp_get_wtime();
double end;
step = 1.0/(double)num_steps;
omp_set_num_threads(2);
#pragma omp parallel
{
    int i, id,nthrds;
    double x;
    id = omp_get_thread_num();
    nthreads = omp_get_num_threads();
    if(id == 0) nthreads = nthrds;
    for(i = 0 ; i < num_steps ; i = i+nthrds){
        x = (i+0.5)*step;
        sum[id] += 4.0/(1.0+x*x);
        //printf("Thread_num : %d ,%fn", omp_get_thread_num(),sum);
    }
}
//pi = step*sum;
for (int i = 0, pi =0.0; i < nthreads; ++i)
{
    /* code */
    pi += sum[i] * step;
}
end = omp_get_wtime();
printf("%fn", end-start);
return 0;
}

. .给我这些错误

gcc -fopenmp helloWorld.c -o helloWorld
/var/folders/d7/2jjg9ygj7zscb67wnskcxsk40000gp/T//cc4hIbK6.s:19:suffix         or operands invalid for `movq'
/var/folders/d7/2jjg9ygj7zscb67wnskcxsk40000gp/T//cc4hIbK6.s:64:suffix or operands invalid for `movq'
/var/folders/d7/2jjg9ygj7zscb67wnskcxsk40000gp/T//cc4hIbK6.s:68:suffix or operands invalid for `movq'
/var/folders/d7/2jjg9ygj7zscb67wnskcxsk40000gp/T//cc4hIbK6.s:69:suffix or operands invalid for `movq'

我不知道它为什么会这样。在我问这个问题之前,我在网上搜索了一下,但是我找不到使用openMP有这个问题的人。

(我也不完全确定编译器是否安装好了。我安装了一堆东西,有些可以用,有些不行)

希望看到这篇文章的人:我更新了gcc(使用brew),然后用gcc-5运行程序…希望你们也能成功。祝你好运。