Timeline for Why isn't my Matrix-Vector Multiplication Scaling?
Current License: CC BY-SA 3.0
13 events
when toggle format | what | by | license | comment | |
---|---|---|---|---|---|
Mar 23, 2012 at 18:29 | comment | added | Pedro |
Not quite, Fortran stores two-dimensional data in column-major format, but in C everything is linear. Row/Column-major is a design decision and I see that in your code, if i is the row and j is the column, that you are actually using column-major ordering.
|
|
Mar 23, 2012 at 18:19 | comment | added | Inquest | isn't row-major correct in C and column major in FORTRAN? | |
Mar 23, 2012 at 16:46 | comment | added | Pedro | @Nunoxic, is there any particular reason why you're using row-major ordering? Many of these routines may be optimized for column-major. Apart from that, I'd say that your problem is bandwidth limited and thus there is no hope for more improvement (see Wolfgang's reply). | |
Mar 23, 2012 at 16:43 | comment | added | Inquest | Thanks ! 2 gives the best performance among 2,3,4. However, the speedup is still 1.1. Any way I can increase this number? | |
Mar 23, 2012 at 15:51 | history | edited | Pedro | CC BY-SA 3.0 |
Added an update following the discussion in the comments.
|
Mar 23, 2012 at 15:33 | comment | added | Inquest | I've pasted /proc/cpuinfo here | |
Mar 23, 2012 at 15:29 | comment | added | Pedro |
@Nunoxic, if you're on a linux machine, do more /proc/cpuinfo and look at the "core id" entry. Or google whatever is in the "model name" entry. I don't think there are any genuine 4-core Core i3 CPUs out there though...
|
|
Mar 23, 2012 at 15:14 | comment | added | Inquest | How do I find that out? I havev included my KMP_AFFINITY in the main. | |
Mar 23, 2012 at 15:12 | comment | added | Pedro | Just out of curiosity again, what do you get for two or three cores? Does your machine actually have four physical cores, or just two cores with hyperthreading? | |
Mar 23, 2012 at 14:59 | comment | added | Inquest | Yes. The CPU histogram shows 1 core. | |
Mar 23, 2012 at 14:11 | comment | added | Pedro | Ok, and for the scaling, are you sure that in your baseline case, the code is only running on a single CPU? E.g. if you benchmark it, does the CPU usage histogram show only a single core? | |
Mar 23, 2012 at 10:15 | comment | added | Inquest | I've tried ATLAs, GoTo and Netlib BLAS. All are weaker than MKL in performance. Is this expected or am I doing something wrong? I compiled ATLAS as mentioned in the handbook. Further, I have pasted my (exact) code here. Its calling MKL's BLAS. | |
Mar 22, 2012 at 22:04 | history | answered | Pedro | CC BY-SA 3.0 |