On Tue, Aug 30, 2016 at 10:39 AM, Eric A. Borisch <eborisch at gmail.com>
wrote:> FWIW, in MacPorts, we patch clang such that it can find the (MacPorts
> provided) libomp headers and library. This lets -fopenmp "just
work,"
> and configure scripts can do their job. The libomp headers and lib in
> dedicated sub-directories to minimize the impact of -fopenmp adding
> them to the include and link paths.
>
> It is a fairly minor patch, and shouldn't (tm) have any impact on
> clang executions without an openmp flag:
>
https://trac.macports.org/browser/trunk/dports/lang/llvm-3.8/files/openmp-locations.patch
>
> To get a simple OpenMP test script to compile on FreeBSD, I currently
> need to pass (note I'm not the one using -lm):
>
> clang38 -fopenmp -o test test.c -L /usr/local/llvm38/lib -lm
>
> instead of (~ what configure will try)
>
> clang38 -fopenmp -o test test.c
>
> (11.0RC2 w/ llvm38 installed via pkg)
>
> I'd love to see base include llvm's OpenMP support, but failing
that,
> the one from ports should be made to work as configure scripts expect.
>
> And who knows, if it is there, maybe some items in base will start to
> use it. We've got a chicken-and-egg problem right now.
Thanks for the patch. Johannes Dieterich hacked the llvm38 port in my
graphics branch and:
mmacy at armageddon [~|18:13|81] clang++ omp.cpp -fopenmp
mmacy at armageddon [~|18:13|81] cat omp.cpp
#include <string>
#include <iostream>
using namespace std;
int main(int argc, char** argv) {
#pragma omp parallel for default(shared)
for(int i = 0; i < 100; ++i){
#ifdef _OPENMP
cout << "WITH OPENMP " << i << endl;
#else
cout << "WITHOUT OPENMP " << i << endl;
#endif
}
return 0;
}
mmacy at armageddon [~|18:13|82] clang++38 omp.cpp -fopenmp
mmacy at armageddon [~|18:13|83] ./a.out| head -5
WITH OPENMP WITH OPENMP 84WITH OPENMP 92WITH OPENMP
44
WITH OPENMP WITH OPENMP 9352WITH OPENMP
76WITH OPENMP WITH OPENMP 0
WITH OPENMP
Fingers crossed that this can get propagated to master and the
defaults for openblas, FFTW, and others can be made more sensible.
-M