Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 30 Aug 2016 18:17:49 -0700
From:      "K. Macy" <kmacy@freebsd.org>
To:        "Eric A. Borisch" <eborisch@gmail.com>
Cc:        FreeBSD Stable <freebsd-stable@freebsd.org>
Subject:   Re: Benchmarks results for FreeBSD 11
Message-ID:  <CAHM0Q_MsPwVMaxgXryO4m_c2-tXAVHbqqi7%2BsCNq5LHVrY30Ow@mail.gmail.com>
In-Reply-To: <CAASnNnqGFJ9bwZ-k3CrobRaPWcOFnxEQJ=crnV-BGAQ_REtZUA@mail.gmail.com>
References:  <CAASnNnqGFJ9bwZ-k3CrobRaPWcOFnxEQJ=crnV-BGAQ_REtZUA@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, Aug 30, 2016 at 10:39 AM, Eric A. Borisch <eborisch@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@armageddon [~|18:13|81] clang++ omp.cpp -fopenmp
mmacy@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@armageddon [~|18:13|82] clang++38 omp.cpp -fopenmp
mmacy@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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAHM0Q_MsPwVMaxgXryO4m_c2-tXAVHbqqi7%2BsCNq5LHVrY30Ow>