I run many times an OpenMP code for an increasing number of threads P1,P2,P3,....,P15 and for each thread number Pi, I estimated experimentally the corresponding speedup S1,S2,....,S15 by dividing the serial execution time with the corresponding parallel execution time. As it was expected by Amdahl's law, the speedup gain is progressively decreased and if this experiment continues to be executed infinitely, the upper speedup bound will be reached, according to Amdahl's law.
(a) Is it possible to use the pairs (Pi,Si) (i=1,2,...15), to estimate the serial fraction of calculations? If I solve the Amdahl's law with respect to f (the serial fraction) I can use the values of (Pi,Si) to get the corresponding fi value (i=1,2,...,15). These values are almost the same (if i remember correctly equal to 0.0015 or something like that) since the code is embarrassingly parallel. How can I use these values? I can get their average or something like that? I want to estimate the serial fraction, that due to the nature of the problem I suppose that it is associated with thread scheduling.
(b) how many threads I have to use? my CPU (Intel Core i5) supports 20 hardware threads. I stopped to 15 threads and I can go to 20, but what next? 30? 40? 50? If I can estimate the serial fraction of the previous question i can estimate the upper speedup as 1/fi.