我遇到了GCC的问题.我想将它更新到一个新版本,从4.2.1到用并行编程编程.但是,在这个版本中没有库.我该如何下载更新版本?
终端给我的错误是:
omp_hello.c:11:10: fatal error: 'omp.h' file not found
#include <omp.h>
^
1 error generated.
Run Code Online (Sandbox Code Playgroud) 我试图在我的C++ 11代码中使用一些OpenMP多线程功能,如:
#pragma omp parallel for
Run Code Online (Sandbox Code Playgroud)
当我尝试编译时使用:
clang++ -std=c++11 -stdlib=libc++ -fopenmp main.cpp -o main.o
Run Code Online (Sandbox Code Playgroud)
我得到以下错误:
clang: error: unsupported option '-fopenmp'
Run Code Online (Sandbox Code Playgroud)
我或者尝试使用以下编译:
g++ -fopenmp main.cpp -o main.o
Run Code Online (Sandbox Code Playgroud)
但这给出了完全相同的错误.
非常感谢,如果您可以建议如何在Mac OS 10.12上编译具有OpenMP功能的C++ 11代码.关于这里和其他地方的帖子的其他问题解释了为OpenMP编译C代码,但是,我找不到C++ 11的任何内容.
我尝试安装libiomp时遇到错误,我收到错误:
$ brew install libiomp
==> Auto-updated Homebrew!
Updated 1 tap (homebrew/core).
==> Updated Formulae
ansible-cmdb djview4 khard oysttyer shyaml yazpp
asciinema2gif doctl macvim pazpar2 vala you-get
avro-c elixir mailhog python vdirsyncer youtube-dl
bash-git-prompt file-roller meson python3 vim
commandbox glib metaproxy rtv x265
consul-backinator gtkextra offlineimap s-search xonsh …Run Code Online (Sandbox Code Playgroud) 我已经拥有gcc并g++安装:
$ which gcc
/usr/bin/gcc
$ which g++
/usr/bin/g++
$ brew install gcc
Warning: gcc-6.2.0 already installed
Run Code Online (Sandbox Code Playgroud)
我按照在 OS X Yosemite 上使用 gcc 编译器编译 OpenMP 程序来gcc通过 HomeBrew 重新安装:
$ brew reinstall gcc --without-multilib
Run Code Online (Sandbox Code Playgroud)
然后
$ /usr/bin/g++ openmp.cpp
openmp.cpp:12:10: fatal error: 'omp.h' file not found
#include <omp.h>
^
1 error generated.
Run Code Online (Sandbox Code Playgroud)
和-fopenmp
$ /usr/bin/g++ openmp.cpp -fopenmp
clang: error: unsupported option '-fopenmp'
clang: error: unsupported option '-fopenmp'
Run Code Online (Sandbox Code Playgroud)
这个重定向发生了什么?我该如何使用gcc/ g++?
虽然涉及,但并不是关于 …
我正在尝试一个简单的 Open MP 示例来并行化 for 循环,但我看不到 for 循环正在多个内核上执行。
这是C程序:
#include </usr/local/Cellar/gcc/5.1.0/lib/gcc/5/gcc/x86_64-apple-darwin14.5.0/5.1.0/include/omp.h>
#include <stdio.h>
#include <unistd.h>
int main() {
int n;
#pragma omp parallel
{
#pragma omp for
for(n = 0; n < 10; n++)
printf(" Thread %d: %d\n", omp_get_thread_num(), n);
printf("Number of threads: %d\n", omp_get_num_threads());
}
printf("Total number of cores in the CPU: %ld\n", sysconf(_SC_NPROCESSORS_ONLN));
}
Run Code Online (Sandbox Code Playgroud)
上面的代码与这个例子非常相似。
当我执行这个程序并打印出它正在使用的线程总数(默认情况下它应该是 CPU 内核总数)时,我找到了结果1。这是输出:
10:pavithran$ gcc -fopenmp openMPExample.c -o openMPExample.o
10:pavithran$ ./openMPExample.o
Thread 0: 0
Thread 0: 1
Thread 0: …Run Code Online (Sandbox Code Playgroud)