- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I'm trying to create a formula for determining the correct problem size and leading dimension value for a given amount of memory to test, for the "Intel Optimized LINPACK Benchmark for Windows ".
(Can't link to its Intel page, since apparently it contains a string that is not permitted)
These are excerpts from the help when executing linpack_xeon64.exe -e:
The benchmark solves a real*8 system of linear equations; just to store the matrix requires at least 8*(leading dimension)*(number of equations) bytes.
[...]
Experience has shown that the best performance for a given problem size is obtained when the leading dimension is set to the nearest odd multiple of 8 (16 for Intel(R) AVX processors) equal to or larger than the number of equations (divisible by 8 but not by 16, or divisible by 16 but not 32 for Intel(R) AVX processors).
[...]
Number of tests : 5
Number of equations to solve (problem size) : 1000 2000 3000 4000 5000
Leading dimension of array : 1000 2008 3000 4008 5000
Number of trials to run : 4 4 2 1 1
Data alignment value (in Kbytes) : 4 4 4 4 4
Since the value for "number of equations" and "leading dimension" is basically the same, you can assume that memory in bytes = number of equations ^2 * 8, or number of equations = sqrt(memory in bytes /
From the quoted help text I assume that this value for the number of equations / problem size should be "divisible by 16 but not 32 for Intel(R) AVX processors". Or does this condition apply to leading dimension value?
Because if I apply this condition to the number of equations, I never arrive at a value of e.g. 4000, which is shown later in the help text. 4000 is divisible by each 8, 16, and 32, so it would be an invalid (undesirable) number of equations value in the first place (for both AVX and non-AVX).
Example:
Memory size (bytes): 128000000
Number of Equations: sqrt(128000000/8)
Number of Equations: 4000
Divisable by 8: 4000/8 = 500
Divisable by 16: 4000/16 = 250
Divisable by 32: 4000/32 = 125
Invalid / undesired value?
So if I assume that this condition does apply, I would need to find the next lower value that meets these conditions, so I would end up at 3984 (for AVX). Is that correct?
Number of Equations: 3984
Divisable by 8: 3984/8 = 498 (not needed for AVX)
Divisable by 16: 3984/16 = 249 (is divisable)
Divisable by 32: 3984/32 = 124.5 (not divisable)
And since this is also already an odd multiple of 16, the leading dimension value would be the same as the number of equation.
And actually every value for the number of equations determined this way would also already be an odd multiple of 16, since it's not divisible by 32. So the number of equations would always be the same as the leading dimension value.
Which means I'd never arrive in a situation where I would need to add +16 (or +8) to the number of equations to get the correct value for the leading dimension, which makes me wonder if I understood the text correctly, or if both of these conditions should only be used when trying to determine the leading dimension.
Can someone chime in an help me understand how to do this exactly?
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Does nobody calculate the problem size on their own or did I express this too complicated?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank you for posting in the forum!
The number of equations might be equal to or smaller than the leading dimension, as the matrix of to-be-solved system could be a submatrix of a larger matrix. It is the leading dimension that should be "divisible by 8 but not by 16, or divisible by 16 but not 32 for Intel(R) AVX processors". In the output of "help", you could find it for the problem sizes 2000 and 4000, the leading dimensions 2008 and 4008 are used.
Thanks,
Fengrui
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Ok, so just to make sure, the wording in the help file is then what's ambiguous, and the last section in parentheses does indeed refer to the leading dimension and not to the number of equations (even though it directly comes after the term "number of equations")?
Experience has shown that the best performance for a given problem size is obtained when the leading dimension is set to the nearest odd multiple of 8 (16 for Intel(R) AVX processors) equal to or larger than the number of equations (divisible by 8 but not by 16, or divisible by 16 but not 32 for Intel(R) AVX processors).

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page