User Tools

Site Tools


guide:scaling

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
guide:scaling [2020/04/15 10:11]
kevin created
guide:scaling [2021/12/09 16:42] (current)
Line 2: Line 2:
  
  
-=====Using Fewer Cores than Requested=====+=====Using Fewer Cores than Available=====
  
 There are several reasons why you would want to request more cores than you need, and they all depend on the hardware limits of the compute nodes. There are several reasons why you would want to request more cores than you need, and they all depend on the hardware limits of the compute nodes.
Line 27: Line 27:
  
 Each compute node has 126 GiB or 64 GiB of memory (RAM).  Codes that create very large data structures may be limited by the amount of memory available per thread.  Divide the total RAM by the amount each thread needs to get an estimate on the number of cores needed. Each compute node has 126 GiB or 64 GiB of memory (RAM).  Codes that create very large data structures may be limited by the amount of memory available per thread.  Divide the total RAM by the amount each thread needs to get an estimate on the number of cores needed.
 +
 +====Affinity====
 +
 +Performance is also affected by //where// your threads run, i.e., which cores on which chip are running your thread. 
 +
 +The operating system numbers the available CPUs (individual physical cores) are follows:
 +
 +|  PKG  |  CORE  |  CPU  |
 +|   0|   0|   0|
 +|   0|   1|   2|
 +|   0|   2|   4|
 +|   0|   3|   6|
 +|   0|   4|   8|
 +|   0|   5|  10|
 +|   0|   8|  12|
 +|   0|   9|  14|
 +|   0|  10|  16|
 +|   0|  11|  18|
 +|   0|  12|  20|
 +|   0|  13|  22|
 +|   1|   0|   1|
 +|   1|   1|   3|
 +|   1|   2|   5|
 +|   1|   3|   7|
 +|   1|   4|   9|
 +|   1|   5|  11|
 +|   1|   8|  13|
 +|   1|   9|  15|
 +|   1|  10|  17|
 +|   1|  11|  19|
 +|   1|  12|  21|
 +|   1|  13|  23|
 +
 +'PKG' means //package// i.e. chip; 'CORE' is the core within each chip; 'CPU' is the operating system number.
 +
 +On a standard compute node we see that all //even// numbered CPUs are on one chip and all //odd// numbered CPUs are on the other chip.
 +
 +To set how your threads should be allocated across the chips use the CPU number or specify the //affinity// setting to your code.
 +
 +
 +
  
 ====Benchmark==== ====Benchmark====
Line 35: Line 76:
  
 But the output of the ''time'' command for the entire code run is what you plot against thread count to see the scaling. But the output of the ''time'' command for the entire code run is what you plot against thread count to see the scaling.
 +
  
/app/dokuwiki/data/attic/guide/scaling.1586938265.txt.gz · Last modified: 2021/12/09 16:42 (external edit)