[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