Jack Howarth
2015-Apr-30 15:41 UTC
[LLVMdev] libiomp, not libgomp as default library linked with -fopenmp
On Thu, Apr 30, 2015 at 10:23 AM, Jack Howarth < howarth.mailing.lists at gmail.com> wrote:> The current test suite status on x86_64-apple-darwin14, with the > proposed patch from > http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20150427/128219.html > applied to current cfe trunk, is quite respectable.... > > Summary: > S Number of tested Open MP constructs: 62 > S Number of used tests: 123 > S Number of failed tests: 16 > S Number of successful tests: 107 > S + from this were verified: 106 > > Normal tests: > N Number of failed tests: 8 > N + from this fail compilation: 1 > N + from this timed out 0 > N Number of successful tests: 54 > N + from this were verified: 54 > > Orphaned tests: > O Number of failed tests: 8 > O + from this fail compilation: 0 > O + from this timed out 0 > O Number of successful tests: 53 > O + from this were verified: 52 > > for 'make ctest' using "-fopenmp=libiomp5 -Xclang -fopenmp=libiomp5 > -L/sw/opt/llvm-3.7.0/lib -lm -O3". Whereas for libgomp, the results are > pitiful.... > > Summary: > S Number of tested Open MP constructs: 62 > S Number of used tests: 123 > S Number of failed tests: 30 > S Number of successful tests: 93 > S + from this were verified: 12 > > Normal tests: > N Number of failed tests: 15 > N + from this fail compilation: 0 > N + from this timed out 0 > N Number of successful tests: 47 > N + from this were verified: 6 > > Orphaned tests: > O Number of failed tests: 15 > O + from this fail compilation: 0 > O + from this timed out 0 > O Number of successful tests: 46 > O + from this were verified: 6 > >For additional context, the OpenMP3.1_Validation results for libgomp using the FSF gcc 5.1.0 compiler on x86_64-apple-darwin14 are... Summary: S Number of tested Open MP constructs: 62 S Number of used tests: 123 S Number of failed tests: 7 S Number of successful tests: 116 S + from this were verified: 95 Normal tests: N Number of failed tests: 3 N + from this fail compilation: 0 N + from this timed out 0 N Number of successful tests: 59 N + from this were verified: 48 Orphaned tests: O Number of failed tests: 4 O + from this fail compilation: 0 O + from this timed out 0 O Number of successful tests: 57 O + from this were verified: 47 So the current results for libiomp5 are very close to matching those for the FSF gcc compiler with libgomp in terms of the number of passed tests while libiomp5 already exceeds libgomp for the number of verified tests. when using "-fopenmp=libgomp -Xclang -fopenmp=libgomp -L/sw/lib/gcc5/lib> -lm -O3 -Wl,-no_compact_unwind". So we can't get much more broken that the > current behavior with libgomp. > Jack > > On Thu, Apr 30, 2015 at 9:49 AM, Andrey Bokhanko <andreybokhanko at gmail.com > > wrote: > >> All, >> >> I'd like to resurrect the discussion on replacing libgomp with libiomp as >> the default OpenMP runtime library linked with -fopenmp. >> >> For reference, the previous discussion is accessible there: >> http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20140217/thread.html#99461 >> >> We are very close to getting *full* OpenMP 3.1 specification supported in >> clang (only one (!) clause is not implemented yet, and the patch is already >> sent for review today: http://reviews.llvm.org/D9370). This >> implementation generates Intel API library calls; thus, it can't be used >> with libgomp and it is simply logical to link a compatible runtime >> (libiomp) instead. >> >> Last time Chandler objected against doing this, and gave a good (and >> proper!) scolding. Let me quote his objections along with updates on >> current state of things: >> >> - This library is not being developed as an active part of the LLVM >> community, even if it is checked into SVN as part of the LLVM project and >> under its license. See r197914 where there is a code drop of many months >> worth of development with *no* change log, attribution, information, or >> other participation in any part of the community. >> >> >> Now it is actively developed by several members of the community. Changes >> are committed in small patches. See "openmp-commits" mailing list ( >> http://lists.cs.uiuc.edu/pipermail/openmp-commits/) for details. >> >> >> - There has been essentially *zero* discussion with the rest of the clang >> or llvm community about this library. There are separate mailing lists >> which have nearly no traffic since the code drop. >> >> >> Nowadays the traffic, while less than on llvm-dev mailing list >> (understandably so :-)) is far from being "zero". Discussions happen all >> the time. See the list archives for details ( >> http://lists.cs.uiuc.edu/pipermail/openmp-dev/). >> >> >> - There has been no effort to make this library even work properly with >> Clang as a host compiler. See the copious notes that only Clang 3.3 is >> supported, and that not full featured. >> >> >> This is fixed. >> >> >> - The build system is totally disjoint from LLVM's, in fact it is an >> entirely custom Perl build system that is unlike anything in use by the >> LLVM project. >> >> >> The build system is full re-written and now cmake-based. The last >> remaining step (integration into overall llvm build system) is about to be >> done by any day now ( >> http://lists.cs.uiuc.edu/pipermail/openmp-dev/2015-April/thread.html#500 >> ). >> >> >> - There are *zero tests* in the open source repository!!!! This is even >> called out in the original submission and on the primary website. We simply >> *cannot* ship and link against a runtime library which has no tests! >> >> >> UofHouston contributed a comprehensive test suite: >> http://llvm.org/viewvc/llvm-project/openmp/trunk/testsuite/. >> >> >> - No part of this library has gone through an LLVM release process >> either, not even as a "new" or "beta" project. >> >> >> The whole library is a part of two last llvm releases: 3.5 and 3.6. >> >> >> Thus, I believe all of Chandler's concerns are resolved, and it is >> finally a good time time to switch to libiomp as default OpenMP library. >> >> >> Anyone who supports this? >> >> >> Anyone who disagrees? >> >> >> Chandler? >> >> Yours, >> Andrey Bokhanko >> =============>> Software Engineer >> Intel Compiler Team >> Intel >> >> >> _______________________________________________ >> LLVM Developers mailing list >> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >> >> >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150430/6043d4ff/attachment.html>
Jack Howarth
2015-Apr-30 19:10 UTC
[LLVMdev] libiomp, not libgomp as default library linked with -fopenmp
For comparison, the OpenMP3.1_Validation results on x86_64-apple-darwin14 for original clang-omp 3.5.2 are... #Tested Directive t ct ot oct has_openmp 100 100 100 100 omp_atomic 100 100 100 100 omp_barrier 100 100 100 100 omp_critical 100 100 100 100 omp_flush 100 100 100 100 omp_for_firstprivate 100 100 100 100 omp_for_lastprivate 100 100 100 80 omp_for_ordered 100 100 100 100 omp_for_private 100 100 100 100 omp_for_reduction 100 100 100 100 omp_for_schedule_dynamic 100 100 100 100 omp_for_schedule_guided 35 - 10 - omp_for_schedule_static 100 100 100 100 omp_for_nowait 100 100 100 100 omp_get_num_threads 100 100 100 100 omp_get_wtick 100 100 100 100 omp_get_wtime 100 100 100 100 omp_in_parallel 100 100 100 100 omp_lock 100 100 100 100 omp_master 100 100 100 100 omp_nest_lock 100 100 100 100 omp_parallel_copyin 100 100 100 100 omp_parallel_for_firstprivate 100 100 100 100 omp_parallel_for_lastprivate 100 100 100 100 omp_parallel_for_ordered 100 100 100 100 omp_parallel_for_private 100 100 100 100 omp_parallel_for_reduction 100 100 100 100 omp_parallel_num_threads 100 100 100 100 omp_parallel_sections_firstprivate 100 100 100 100 omp_parallel_sections_lastprivate 100 100 100 100 omp_parallel_sections_private 100 100 100 100 omp_parallel_sections_reduction 100 95 100 90 omp_section_firstprivate 100 100 100 100 omp_section_lastprivate 100 100 100 100 omp_section_private 100 100 100 100 omp_sections_reduction 100 100 100 100 omp_sections_nowait 100 100 100 100 omp_parallel_for_if 100 100 100 100 omp_single_copyprivate 100 100 100 100 omp_single_nowait 100 100 100 100 omp_single_private 100 100 100 100 omp_single 100 100 100 100 omp_test_lock 100 100 100 100 omp_test_nest_lock 100 100 100 100 omp_threadprivate 100 100 - - omp_parallel_default 100 100 100 100 omp_parallel_shared 100 100 100 100 omp_parallel_private 100 100 100 100 omp_parallel_firstprivate 100 100 100 100 omp_parallel_if 100 100 100 100 omp_parallel_reduction 100 100 100 100 omp_for_collapse 100 100 100 100 omp_master_3 100 100 100 100 omp_task 100 100 100 100 omp_task_if 100 100 100 100 omp_task_untied 0 - 0 - omp_task_shared 100 100 100 100 omp_task_private 100 100 100 100 omp_task_firstprivate 100 100 100 100 omp_taskwait 100 100 100 100 omp_taskyield 100 100 10 - omp_task_final 0 - 0 - Summary: S Number of tested Open MP constructs: 62 S Number of used tests: 123 S Number of failed tests: 7 S Number of successful tests: 116 S + from this were verified: 113 Normal tests: N Number of failed tests: 3 N + from this fail compilation: 0 N + from this timed out 0 N Number of successful tests: 59 N + from this were verified: 58 Orphaned tests: O Number of failed tests: 4 O + from this fail compilation: 0 O + from this timed out 0 O Number of successful tests: 57 O + from this were verified: 55 and for current llvm/cfe trunk with the two outstanding OPENMP patches applied are... #Tested Directive t ct ot oct has_openmp 100 100 100 100 omp_atomic 100 100 100 100 omp_barrier 100 100 100 100 omp_critical 100 100 100 95 omp_flush 100 100 100 95 omp_for_firstprivate 100 100 100 100 omp_for_lastprivate 100 100 100 95 omp_for_ordered 100 100 100 100 omp_for_private 100 100 100 100 omp_for_reduction 0 - 0 - omp_for_schedule_dynamic 100 100 100 100 omp_for_schedule_guided 100 100 100 100 omp_for_schedule_static 100 100 100 100 omp_for_nowait 100 100 100 100 omp_get_num_threads 100 100 100 100 omp_get_wtick 100 100 100 100 omp_get_wtime 100 100 100 100 omp_in_parallel 100 100 100 100 omp_lock 100 100 100 100 omp_master 100 100 100 100 omp_nest_lock 100 100 100 100 omp_parallel_copyin 100 100 100 100 omp_parallel_for_firstprivate 100 100 100 100 omp_parallel_for_lastprivate 100 100 100 100 omp_parallel_for_ordered 100 100 100 100 omp_parallel_for_private 100 100 100 100 omp_parallel_for_reduction 0 - 0 - omp_parallel_num_threads 100 100 100 100 omp_parallel_sections_firstprivate 100 100 100 100 omp_parallel_sections_lastprivate 100 100 100 100 omp_parallel_sections_private 100 100 100 100 omp_parallel_sections_reduction 0 - 0 - omp_section_firstprivate 100 100 100 100 omp_section_lastprivate 100 100 100 100 omp_section_private 100 100 100 100 omp_sections_reduction 0 - 0 - omp_sections_nowait 100 100 100 100 omp_parallel_for_if 100 100 100 100 omp_single_copyprivate 100 100 100 100 omp_single_nowait 100 100 100 100 omp_single_private 100 100 100 100 omp_single 100 100 100 100 omp_test_lock 100 100 100 100 omp_test_nest_lock 100 100 100 100 omp_threadprivate 100 100 - - omp_parallel_default 100 100 100 100 omp_parallel_shared 100 100 100 100 omp_parallel_private 100 100 100 100 omp_parallel_firstprivate 100 100 100 100 omp_parallel_if 100 100 100 100 omp_parallel_reduction 0 - 0 - omp_for_collapse 100 100 100 100 omp_master_3 100 100 100 100 omp_task 100 100 100 100 omp_task_if 100 100 100 100 omp_task_untied 0 - 0 - omp_task_shared 100 100 100 100 omp_task_private 100 100 100 100 omp_task_firstprivate 100 100 100 100 omp_taskwait 100 100 100 100 omp_taskyield 100 100 10 - omp_task_final 0 - 0 - Summary: S Number of tested Open MP constructs: 62 S Number of used tests: 123 S Number of failed tests: 15 S Number of successful tests: 108 S + from this were verified: 105 Normal tests: N Number of failed tests: 7 N + from this fail compilation: 0 N + from this timed out 0 N Number of successful tests: 55 N + from this were verified: 55 Orphaned tests: O Number of failed tests: 8 O + from this fail compilation: 0 O + from this timed out 0 O Number of successful tests: 53 O + from this were verified: 50 -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150430/bd3c4ea2/attachment.html>
Jack Howarth
2015-May-07 03:12 UTC
[LLVMdev] libiomp, not libgomp as default library linked with -fopenmp
FYI, at r236592 with... http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20150504/128555.html http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20150504/128561.html http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20150504/128567.html llvm 3.7svn now exceeds clang-omp 3.5 in the results of the OpenMP3.1_Validation test suite. #Tested Directive t ct ot oct has_openmp 100 100 100 100 omp_atomic 100 100 100 100 omp_barrier 100 100 100 100 omp_critical 100 100 100 100 omp_flush 100 100 100 100 omp_for_firstprivate 100 100 100 100 omp_for_lastprivate 100 100 100 70 omp_for_ordered 100 100 100 100 omp_for_private 100 100 100 100 omp_for_reduction 100 100 100 100 omp_for_schedule_dynamic 100 100 100 100 omp_for_schedule_guided 100 100 100 100 omp_for_schedule_static 100 100 100 100 omp_for_nowait 100 100 100 100 omp_get_num_threads 100 100 100 100 omp_get_wtick 100 100 100 100 omp_get_wtime 100 100 100 100 omp_in_parallel 100 100 100 100 omp_lock 100 100 100 100 omp_master 100 100 100 100 omp_nest_lock 100 100 100 100 omp_parallel_copyin 100 100 100 100 omp_parallel_for_firstprivate 100 100 100 100 omp_parallel_for_lastprivate 100 100 100 100 omp_parallel_for_ordered 100 100 100 100 omp_parallel_for_private 100 100 100 100 omp_parallel_for_reduction 100 100 100 100 omp_parallel_num_threads 100 100 100 100 omp_parallel_sections_firstprivate 100 100 100 100 omp_parallel_sections_lastprivate 100 100 100 100 omp_parallel_sections_private 100 100 100 100 omp_parallel_sections_reduction 100 100 100 90 omp_section_firstprivate 100 100 100 100 omp_section_lastprivate 100 100 100 100 omp_section_private 100 100 100 100 omp_sections_reduction 100 100 100 100 omp_sections_nowait 100 100 100 100 omp_parallel_for_if 100 100 100 100 omp_single_copyprivate 100 100 100 100 omp_single_nowait 100 100 100 100 omp_single_private 100 100 100 100 omp_single 100 100 100 100 omp_test_lock 100 100 100 100 omp_test_nest_lock 100 100 100 100 omp_threadprivate 100 100 - - omp_parallel_default 100 100 100 100 omp_parallel_shared 100 100 100 100 omp_parallel_private 100 100 100 100 omp_parallel_firstprivate 100 100 100 100 omp_parallel_if 100 100 100 100 omp_parallel_reduction 100 100 100 100 omp_for_collapse 100 100 100 100 omp_master_3 100 100 100 100 omp_task 100 100 100 100 omp_task_if 100 100 100 100 omp_task_untied 0 - 0 - omp_task_shared 100 100 100 100 omp_task_private 100 100 100 100 omp_task_firstprivate 100 100 100 100 omp_taskwait 100 100 100 100 omp_taskyield 100 95 10 - omp_task_final 0 - 0 - Summary: S Number of tested Open MP constructs: 62 S Number of used tests: 123 S Number of failed tests: 5 S Number of successful tests: 118 S + from this were verified: 115 Normal tests: N Number of failed tests: 2 N + from this fail compilation: 0 N + from this timed out 0 N Number of successful tests: 60 N + from this were verified: 59 Orphaned tests: O Number of failed tests: 3 O + from this fail compilation: 0 O + from this timed out 0 O Number of successful tests: 58 O + from this were verified: 56 On Thu, Apr 30, 2015 at 3:10 PM, Jack Howarth < howarth.mailing.lists at gmail.com> wrote:> For comparison, the OpenMP3.1_Validation results on x86_64-apple-darwin14 > for original clang-omp 3.5.2 are... > > #Tested Directive t ct ot oct > has_openmp 100 100 100 100 > omp_atomic 100 100 100 100 > omp_barrier 100 100 100 100 > omp_critical 100 100 100 100 > omp_flush 100 100 100 100 > omp_for_firstprivate 100 100 100 100 > omp_for_lastprivate 100 100 100 80 > omp_for_ordered 100 100 100 100 > omp_for_private 100 100 100 100 > omp_for_reduction 100 100 100 100 > omp_for_schedule_dynamic 100 100 100 100 > omp_for_schedule_guided 35 - 10 - > omp_for_schedule_static 100 100 100 100 > omp_for_nowait 100 100 100 100 > omp_get_num_threads 100 100 100 100 > omp_get_wtick 100 100 100 100 > omp_get_wtime 100 100 100 100 > omp_in_parallel 100 100 100 100 > omp_lock 100 100 100 100 > omp_master 100 100 100 100 > omp_nest_lock 100 100 100 100 > omp_parallel_copyin 100 100 100 100 > omp_parallel_for_firstprivate 100 100 100 100 > omp_parallel_for_lastprivate 100 100 100 100 > omp_parallel_for_ordered 100 100 100 100 > omp_parallel_for_private 100 100 100 100 > omp_parallel_for_reduction 100 100 100 100 > omp_parallel_num_threads 100 100 100 100 > omp_parallel_sections_firstprivate 100 100 100 100 > omp_parallel_sections_lastprivate 100 100 100 100 > omp_parallel_sections_private 100 100 100 100 > omp_parallel_sections_reduction 100 95 100 90 > omp_section_firstprivate 100 100 100 100 > omp_section_lastprivate 100 100 100 100 > omp_section_private 100 100 100 100 > omp_sections_reduction 100 100 100 100 > omp_sections_nowait 100 100 100 100 > omp_parallel_for_if 100 100 100 100 > omp_single_copyprivate 100 100 100 100 > omp_single_nowait 100 100 100 100 > omp_single_private 100 100 100 100 > omp_single 100 100 100 100 > omp_test_lock 100 100 100 100 > omp_test_nest_lock 100 100 100 100 > omp_threadprivate 100 100 - - > omp_parallel_default 100 100 100 100 > omp_parallel_shared 100 100 100 100 > omp_parallel_private 100 100 100 100 > omp_parallel_firstprivate 100 100 100 100 > omp_parallel_if 100 100 100 100 > omp_parallel_reduction 100 100 100 100 > omp_for_collapse 100 100 100 100 > omp_master_3 100 100 100 100 > omp_task 100 100 100 100 > omp_task_if 100 100 100 100 > omp_task_untied 0 - 0 - > omp_task_shared 100 100 100 100 > omp_task_private 100 100 100 100 > omp_task_firstprivate 100 100 100 100 > omp_taskwait 100 100 100 100 > omp_taskyield 100 100 10 - > omp_task_final 0 - 0 - > > > Summary: > S Number of tested Open MP constructs: 62 > S Number of used tests: 123 > S Number of failed tests: 7 > S Number of successful tests: 116 > S + from this were verified: 113 > > Normal tests: > N Number of failed tests: 3 > N + from this fail compilation: 0 > N + from this timed out 0 > N Number of successful tests: 59 > N + from this were verified: 58 > > Orphaned tests: > O Number of failed tests: 4 > O + from this fail compilation: 0 > O + from this timed out 0 > O Number of successful tests: 57 > O + from this were verified: 55 > > and for current llvm/cfe trunk with the two outstanding OPENMP patches > applied are... > > #Tested Directive t ct ot oct > has_openmp 100 100 100 100 > omp_atomic 100 100 100 100 > omp_barrier 100 100 100 100 > omp_critical 100 100 100 95 > omp_flush 100 100 100 95 > omp_for_firstprivate 100 100 100 100 > omp_for_lastprivate 100 100 100 95 > omp_for_ordered 100 100 100 100 > omp_for_private 100 100 100 100 > omp_for_reduction 0 - 0 - > omp_for_schedule_dynamic 100 100 100 100 > omp_for_schedule_guided 100 100 100 100 > omp_for_schedule_static 100 100 100 100 > omp_for_nowait 100 100 100 100 > omp_get_num_threads 100 100 100 100 > omp_get_wtick 100 100 100 100 > omp_get_wtime 100 100 100 100 > omp_in_parallel 100 100 100 100 > omp_lock 100 100 100 100 > omp_master 100 100 100 100 > omp_nest_lock 100 100 100 100 > omp_parallel_copyin 100 100 100 100 > omp_parallel_for_firstprivate 100 100 100 100 > omp_parallel_for_lastprivate 100 100 100 100 > omp_parallel_for_ordered 100 100 100 100 > omp_parallel_for_private 100 100 100 100 > omp_parallel_for_reduction 0 - 0 - > omp_parallel_num_threads 100 100 100 100 > omp_parallel_sections_firstprivate 100 100 100 100 > omp_parallel_sections_lastprivate 100 100 100 100 > omp_parallel_sections_private 100 100 100 100 > omp_parallel_sections_reduction 0 - 0 - > omp_section_firstprivate 100 100 100 100 > omp_section_lastprivate 100 100 100 100 > omp_section_private 100 100 100 100 > omp_sections_reduction 0 - 0 - > omp_sections_nowait 100 100 100 100 > omp_parallel_for_if 100 100 100 100 > omp_single_copyprivate 100 100 100 100 > omp_single_nowait 100 100 100 100 > omp_single_private 100 100 100 100 > omp_single 100 100 100 100 > omp_test_lock 100 100 100 100 > omp_test_nest_lock 100 100 100 100 > omp_threadprivate 100 100 - - > omp_parallel_default 100 100 100 100 > omp_parallel_shared 100 100 100 100 > omp_parallel_private 100 100 100 100 > omp_parallel_firstprivate 100 100 100 100 > omp_parallel_if 100 100 100 100 > omp_parallel_reduction 0 - 0 - > omp_for_collapse 100 100 100 100 > omp_master_3 100 100 100 100 > omp_task 100 100 100 100 > omp_task_if 100 100 100 100 > omp_task_untied 0 - 0 - > omp_task_shared 100 100 100 100 > omp_task_private 100 100 100 100 > omp_task_firstprivate 100 100 100 100 > omp_taskwait 100 100 100 100 > omp_taskyield 100 100 10 - > omp_task_final 0 - 0 - > > > Summary: > S Number of tested Open MP constructs: 62 > S Number of used tests: 123 > S Number of failed tests: 15 > S Number of successful tests: 108 > S + from this were verified: 105 > > Normal tests: > N Number of failed tests: 7 > N + from this fail compilation: 0 > N + from this timed out 0 > N Number of successful tests: 55 > N + from this were verified: 55 > > Orphaned tests: > O Number of failed tests: 8 > O + from this fail compilation: 0 > O + from this timed out 0 > O Number of successful tests: 53 > O + from this were verified: 50 >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150506/668cb6f5/attachment.html>