[RTEMS Project] #2274: Enable libgomp build in GCC

RTEMS trac trac at rtems.org
Thu Jul 16 08:32:03 UTC 2015


#2274: Enable libgomp build in GCC
-----------------------------+------------------------------
 Reporter:  sebastian.huber  |       Owner:  sebastian.huber
     Type:  enhancement      |      Status:  accepted
 Priority:  normal           |   Milestone:  4.11.1
Component:  GCC              |     Version:  4.11
 Severity:  normal           |  Resolution:
 Keywords:                   |
-----------------------------+------------------------------

Comment (by sebastian.huber):

 The malloc() problem is solved in the GCC 6.0:

 https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=225811

 Microbench (2 processor T4240):

 barrier bench 23.3409 seconds
 parallel bench 9.60804 seconds
 static bench 0.472419 seconds
 dynamic bench 0.223881 seconds
 guided bench 0.00999273 seconds
 runtime bench 0.229282 seconds
 single bench 2.18316 seconds

 [[Image(libgomp-parallel-bench-posix-no-malloc.png, center, 75%)]]

 Microbench (24 processor T4240):

 barrier bench 783.888 seconds
 parallel bench 115.901 seconds
 static bench 5.7876 seconds
 dynamic bench 0.262251 seconds
 guided bench 0.0133215 seconds
 runtime bench 0.261378 seconds
 single bench 57.3227 seconds

 There is a significant overhead due to the creation/destruction of POSIX
 mutexes and semaphores. In particular there is high contention on the
 allocator lock. The next step is to provide self-contained objects defined
 in Newlib <sys/lock.h> which can be used to implement the libgomp
 primitives and avoid the creation/destruction overhead.  In addition a
 spin based barrier implementation based on the Linux futex barrier will be
 provided.

--
Ticket URL: <http://devel.rtems.org/ticket/2274#comment:5>
RTEMS Project <http://www.rtems.org/>
RTEMS Project


More information about the bugs mailing list