Hi all,

I conducted another experiment.

Compiler version:
- gcc (GCC) 4.7.0 20110331 (experimental)
- icc (ICC) 12.0.3 20110309


CPU info:
32 AMD CPUs. Each has 4 cores.


I calculated fibonacci(37) both by gcc and icc.
As the OMP_NUM_THREADS increase,
  - gcc increased the exec time steadly.
  - icc decreased the exec time.

I got a graph but it seems nonsense because the exection time
of the program compiled by gcc was far slower than icc.

Here is the result:
===Execution Time with the Increase of Number of Threads===
# OMP_NUM_THREADS  Exec time [sec]

# gcc
1                   11.90681
2                   91.97240
4                  142.69790
8                  281.87043
16                 751.86979
32                1103.64058


# icc
1                    8.38479
2                   16.03128
4                    7.81509
8                    4.34125
16                   2.19561
32                   1.32377
==========================================================


This paper also shows that OpenMP implementation in GOMP is
slower than others.
https://iwomp.zih.tu-dresden.de/downloads/runtime-olivier.pdf
(There are graphs from page 5.)

So, I'd like to speed up GOMP.
I'm planning to use `Lazy Task Creation' algorithm for it.

I heard from my teacher that my senior associate has made a library
for Lazy Task Creation. So I can utilize it for the experimental purpose.

>From now on, I try to visualize how tasks are created as time passes
not just to show the reason why GOMP is slower compared to icc implementation
but to make my idea clear for myself :-)
So, I need to know OpenMPI API to get tasks info like:
- A task is created
- A task finished its job
- On which CPU core a task is on

Do you know any document?

Thanks,

--
Sho Nakatani

Reply via email to