Error building openmp 3.1 on clang 3.7

Hi all,

Should I be able to use OpenMP 3.1 using Clang 3.7 on LLVM 3.7 on an ARM board with a Linux 3.10.63+?

I’ve built the llvm 3.7 with clang 3.7 successfully, but it didn’t generate omp dynamic lib. I’m getting an error when I try to do a “make” inside of my build/projects/openmp.

Linking C shared library …/…/…/…/lib/libomp.so
CMakeFiles/omp.dir/z_Linux_util.c.o: In function __kmp_invoke_microtask': z_Linux_util.c:(.text.__kmp_invoke_microtask+0x9e): undefined reference to ffi_prep_cif’
z_Linux_util.c:(.text.__kmp_invoke_microtask+0xac): undefined reference to ffi_call' z_Linux_util.c:(.text.__kmp_invoke_microtask+0xd4): undefined reference to ffi_type_pointer’
z_Linux_util.c:(.text.__kmp_invoke_microtask+0xd8): undefined reference to `ffi_type_void’
collect2: error: ld returned 1 exit status
make[2]: *** [lib/libomp.so] Error 1

However, I have libffi linked, it didn’t help.

I want to generate a dyn lib I can call, I was calling a dyn from my gcc, but clang was not able to execute multi thread code compiled with the gcc’s dynamic lib (it basically ignored the pragmas).

Hi,

+openmp-dev for discussion about the runtime.

3.7 is quite old, do you see the same problem with 4.0.1? There might be some patches in that fixed the build for ARM.

Regards,
Jonas

Hi Jonas,

I’ve figured it out and forgot to reply here.

Anyways, thank you for the reply!

best

Hi Marcelo,

so does this need to be fixed in the source or has that already happened for newer versions?

Thanks,
Jonas

Hello Jonas,

I am not able to answer that at least until this weekend, sorry (I am in a rush with a strict deadline).

But I can get back to you with the answer soon. If you need it really soon, let me know.

best regards,
Marcelo

Hmm, that's bad: 3.7 has been released almost 2 years ago, so whatever results you measure with this pretty much won't reflect the current implementation.

Jonas

That’s fine, for my purpose, it would be good, but I don’t need to reflect the current implementation.

I’ll try to update it asap :slight_smile: thank you!

best,
Marcelo

Hi all,

I was wondering if from OpenMP 4.0 to OpenMP 4.5, does the way it chooses the number of thread-blocks and the number of threads per block was changed?

Thank you very much in advance.

best,
Marcelo

Hi,

I don't see a connection to the topic that was originally discussed in the thread?
In general I'm not sure if I correctly understand your question: If you use parallel regions on the host there is only one team of threads and its size is influenced in the usual ways (num_threads() clause, omp_set_num_threads() API call, OMP_NUM_THREADS environment variable). As you talk about "thread-blocks" and explicitly mention OpenMP 4.x do you mean execution on the host or are you using the teams construct inside a target region?

Jonas

Hi Jonas,

Thank you for replying :slight_smile:

I apologize for posting this question.

  1. They are actually not related.
  2. I meant #pragma omp teams and distribute parallel for. I have found it.

thank you!
Marcelo