OpenMP 无法使用多线程,没有与编译相关的错误

Ank*_*iya 5 compiling gcc parallels

我正在使用 openMP 来完成我的实验室作业,几周前一切都运行良好,但现在它只在一个线程上运行,我已经阅读过,我猜这是由于包之间的冲突造成的。这是下面的代码:

#include "omp.h"
#include <stdio.h>
int main()
{
    omp_set_num_threads(4);
    #pragma omp parallal
    {
        int id = omp_get_thread_num();
        printf("Hello (%d)", id );
        printf("World (%d)\n", id);
        return 0;
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到输出:

$ gcc -fopenmp hello.c
$ ./a.out
Hello (0)World (0)
Run Code Online (Sandbox Code Playgroud)

我已尝试重新安装gcc,但没有帮助。

sou*_* c. 4

您的代码中有两个错误,这就是您无法使用多线程的原因。

第一个错误是 中的拼写错误OMP Compiler Directives。你写

#pragma omp parallal
Run Code Online (Sandbox Code Playgroud)

正确的应该是,(这个词是平行不是平行)

#pragma omp parallel
Run Code Online (Sandbox Code Playgroud)

第二个错误return 0是OpenMP 结构块内部无效。正确的代码应该是这样的,

#pragma omp parallal
Run Code Online (Sandbox Code Playgroud)

汇编:

$ gcc prog.c -fopenmp
$ ./a.out
Hello (0)World (0)
Hello (2)World (2)
Hello (1)World (1)
Hello (3)World (3)
Run Code Online (Sandbox Code Playgroud)