Looks like Scott Parker gets better results:
Adding another data point, I ran in SNC-4 mode
with the configuration below and observed a consistent BW
around 440 GB/s
with the best run producing 442 GB/s. In this case 128 threads
gave the best results.
I've noticed that the STREAM results �sensitivity to build and
run parameters seems to vary depending on the memory
configuration
in flat-all2all I saw noticeably better results with memory
aligned on 2MB boundaries and 64 threads, in SNC-4 mode the
alignment
doesn't seem to matter and 128 threads is producing the best
results.
��Mode: flat & SNC-4
��Compiler: Intel 17 Beta
��Compile Options: icc -O3 -fopenmp
-DSTREAM_ARRAY_SIZE=134217728 -xMIC-AVX512 -mcmodel medium
-shared-intel
��Run Command: �OMP_NUM_THREADS=128 numactl -m 4,5,6,7
./stream_mod
��Results:
������Function ���Best Rate MB/s �Avg time ����Min time
����Max time
������Copy: ���������390378.3 ����0.005524 ����0.005501
0.005546
������Scale: ��������412738.8 ����0.005237 ����0.005203
0.005278
������Add: ����������448759.4 ����0.007199 ����0.007178
0.007218
������Triad: ��������441919.3 ����0.007355 ����0.007289
0.007548
Hi,
a quick update on STREAM with the latest beta compiler
[morozov@knl00 STREAM]$ icc -V
Intel(R) C Intel(R) 64 Compiler for
applications running on Intel(R) 64, Version
17.0.0.042 Beta Build 20160315
compiler options
mpiicc -O3 -xMIC-AVX512 -qopt-report=5
-Wall -g -fopenmp -mcmodel medium -shared-intel
-qopt-streaming-stores always -restrict stream.c -o
stream
Running in flat mode all2all
morozov@knl00 STREAM]$ export
OMP_NUM_THREADS=256
[morozov@knl00 STREAM]$ numactl -m 1
./stream
-------------------------------------------------------------
STREAM version $Revision: 5.9 $
-------------------------------------------------------------
This system uses 8 bytes per DOUBLE
PRECISION word.
-------------------------------------------------------------
Array size = 134217728, Offset = 0
Total memory required = 3072.0 MB.
Each test is run 500 times, but only
the *best*
time for each is used.
-------------------------------------------------------------
Number of Threads requested = 256
-------------------------------------------------------------
<skipped>
-------------------------------------------------------------
Your clock granularity/precision
appears to be 1 microseconds.
Each test below will take on the order
of 6356 microseconds.
�� (= 6356 clock ticks)
Increase the size of the arrays if
this shows that
you are not getting at least 20 clock
ticks per test.
-------------------------------------------------------------
WARNING -- The above is only a rough
guideline.
For best results, please be sure you
know the
precision of your system timer.
-------------------------------------------------------------
Function����� Rate (MB/s)�� Avg
time���� Min time���� Max time
Copy:����� 330891.5637������
0.0066������ 0.0065������ 0.0078
Scale:���� 330127.5200������
0.0066������ 0.0065������ 0.0069
Add:������ 383622.4448������
0.0085������ 0.0084������ 0.0093
Triad:���� 383252.4574������
0.0085������ 0.0084������ 0.0098
-------------------------------------------------------------
Solution Validates
-------------------------------------------------------------
Same with 64 threads scatter mode:
morozov@knl00 STREAM]$ export
OMP_NUM_THREADS=64
[morozov@knl00 STREAM]$
KMP_AFFINITY=scatter
[morozov@knl00 STREAM]$ numactl -m 1
./stream
-------------------------------------------------------------
STREAM version $Revision: 5.9 $
-------------------------------------------------------------
This system uses 8 bytes per DOUBLE
PRECISION word.
-------------------------------------------------------------
Array size = 134217728, Offset = 0
Total memory required = 3072.0 MB.
Each test is run 500 times, but only
the *best*
time for each is used.
-------------------------------------------------------------
Number of Threads requested = 64
-------------------------------------------------------------
<skipped>
-------------------------------------------------------------
Your clock granularity/precision
appears to be 1 microseconds.
Each test below will take on the order
of 6056 microseconds.
�� (= 6056 clock ticks)
Increase the size of the arrays if
this shows that
you are not getting at least 20 clock
ticks per test.
-------------------------------------------------------------
WARNING -- The above is only a rough
guideline.
For best results, please be sure you
know the
precision of your system timer.
-------------------------------------------------------------
Function����� Rate (MB/s)�� Avg
time���� Min time���� Max time
Copy:����� 353486.8826������
0.0061������ 0.0061������ 0.0067
Scale:���� 353265.0608������
0.0061������ 0.0061������ 0.0066
Add:������ 423961.3055������
0.0077������ 0.0076������ 0.0079
Triad:���� 424907.9750������
0.0076������ 0.0076������ 0.0084
-------------------------------------------------------------
Solution Validates
-------------------------------------------------------------
Vitali
On 4/18/16 12:43 PM,
Kumaran, Kalyan wrote:
FYI. Karthik will get on the machine to
debug.
Sent from my iPhone
Begin forwarded message:
From: "Chinthamani,
Sundaram" <
sundaram.chinthamani@intel.com>
Date: April 18, 2016 at 2:05:26 PM
CDT
To: "Harms, Kevin" <
harms@alcf.anl.gov>,
"Allen, Benjamin S." <
bsallen@alcf.anl.gov>
Cc: "Kumaran, Kalyan" <
kumaran@alcf.anl.gov>,
"Kaana Balakrishna, Abhishek" <
abhishek.kaana.balakrishna@intel.com>,
"Morozov, Vitali A." <
morozov@alcf.anl.gov>,
"Raman, Karthik" <
karthik.raman@intel.com>,
"Inkley, Benson" <
benson.inkley@intel.com>,
"Sodani, Avinash" <
avinash.sodani@intel.com>,
"Fromkin, Russ" <
russ.fromkin@intel.com>,
"Chinthamani, Sundaram" <
sundaram.chinthamani@intel.com>
Subject: RE:
[JLSE-Intel-NDA] KNL Status
I would expect Quad
mode / SNC-4 mode to provide higher bandwidth
compared to All2All mode. ��We haven't seen this
in our internal measurements. ���
-Thanks,
-Sundaram
-----Original Message-----
From: Harms, Kevin [mailto:harms@alcf.anl.gov]
Sent: Monday, April 18, 2016 12:00
PM
To: Allen, Benjamin S. <bsallen@alcf.anl.gov>
Cc: Kumaran, Kalyan <kumaran@alcf.anl.gov>;
Kaana Balakrishna, Abhishek <abhishek.kaana.balakrishna@intel.com>;
Morozov, Vitali A. <morozov@alcf.anl.gov>;
Chinthamani, Sundaram <sundaram.chinthamani@intel.com>;
Raman, Karthik <karthik.raman@intel.com>;
Inkley, Benson <benson.inkley@intel.com>;
Sodani, Avinash <avinash.sodani@intel.com>;
Fromkin, Russ <russ.fromkin@intel.com>
Subject: Re: [JLSE-Intel-NDA] KNL
Status
�I tested cached mode with all2all,
snc4 and quad models. Cached all2all gave
275,000 MB/s. Does that look reasonable? SNC4
and quad mode gave 225,000 MB/s or so.
kevin
The
following versions are now installed: BIOS
01.01.0104, ME 03.01.03.011.0, BMC 00.17.9699,
FRUSDR 1.14.
Ben
On
Apr 18, 2016, at 1:27 PM, Harms, Kevin <harms@alcf.anl.gov>
wrote:
Ben
completed the BIOS upgrade, but we do not
see any difference in performance. I have
attached results from runs done under three
configurations: flat+all2all, flat+quad,
flat+snc4.
flat+all2all
= 427046.0546 MB/s
flat+quad
���= 327253.8882 MB/s
flat+snc4
���= 308555.9588 MB/s
I
compiled the CORAL stream.c with the
following options:
icc
-mcmodel medium -shared-intel -O3
�-xMIC-AVX512 -DN=50000000 -DOFFSET=0
-DNTIMES=100 -openmp -opt-streaming-stores
always stream.c -o stream
I
added the alignment directives to the
arrays. The attached files show the NUMA
domains and numactl commands used and run
parameters.
Have
I missed a parameter?
kevin
Suggest a time Friday afternoon.
We are in central time zone. We can get
you access to this B0 too.
-Kumar
On Apr 13, 2016, at 5:06 PM,
Kaana Balakrishna, Abhishek <abhishek.kaana.balakrishna@intel.com>
wrote:
+ Benson
Cheers,
Abhishek K Balakrishna (KB)
Xeon Phi� Hardware Platform
Applications Engineer,
Technical Computing Group (TCG)
Intel Corporation
Ph - 512 466 9886
www.intel.com/xeonphi
-----Original Message-----
From: Vitali A. Morozov [mailto:morozov@anl.gov]
Sent: Wednesday, April 13, 2016
4:58 PM
To: Chinthamani, Sundaram <sundaram.chinthamani@intel.com>;
Raman, Karthik <karthik.raman@intel.com>;
Harms, Kevin <harms@alcf.anl.gov>;
Morozov, Vitali A. <morozov@alcf.anl.gov>;
Kumaran, Kalyan <kumaran@alcf.anl.gov>
Cc: Sodani, Avinash <avinash.sodani@intel.com>;
Fromkin, Russ <russ.fromkin@intel.com>;
Allen, Benjamin S. <bsallen@alcf.anl.gov>;
Kaana Balakrishna, Abhishek <abhishek.kaana.balakrishna@intel.com>
Subject: Re: [JLSE-Intel-NDA]
KNL Status
Sure!
Vitali
On 04/13/2016 04:54 PM,
Chinthamani, Sundaram wrote:
Would it be possible to have
a meeting to go over your questions
rather than exchanging E-mails back
and forth?
+ KB from Intel side. �He can
help set-up the meeting between Labs
and Intel.
-Thanks,
-Sundaram
-----Original Message-----
From: Vitali A. Morozov [mailto:morozov@anl.gov]
Sent: Wednesday, April 13,
2016 2:50 PM
To: Chinthamani, Sundaram
<sundaram.chinthamani@intel.com>;
Raman,
Karthik <karthik.raman@intel.com>;
Harms, Kevin <harms@alcf.anl.gov>;
Morozov, Vitali A. <morozov@alcf.anl.gov>;
Kumaran, Kalyan
<kumaran@alcf.anl.gov>
Cc: Sodani, Avinash <avinash.sodani@intel.com>;
Fromkin, Russ
<russ.fromkin@intel.com>;
Allen, Benjamin S. <bsallen@alcf.anl.gov>
Subject: Re: [JLSE-Intel-NDA]
KNL Status
On 04/13/2016 04:42 PM,
Chinthamani, Sundaram wrote:
node 4 free: 2907 MB
node 5 free: 2926 MB
node 6 free: 2922 MB
node 7 free: 2914 MB
There is 16 GB of MC-DRAM
and 4 GB per NUMA node. ���Is there
any other process running on the
machine? ���Why does "free memory"
show only 3 GB per node?
This is EXACTLY why I am
asking this question. Nothing is
running on the node - and I do not see
full 4 GiB of available MCDRAM memory.
This might be reason why I do not see
what is expected.
I understand that I can
reduce the array size, but I am trying
to reproduce your results.
I am still unclear on if you
run "no mpi" version, how come that
SNC-4 mode is giving you advantage?
All arrays are allocated in the same
quadrant. Requests from the other
quadrants will go to this one and
create congestion.
Vitali
If you want to test Stream
triad bandwidth to MC-DRAM in
Quad/Flat mode, you can use even
smaller arrays of few 100 MBs.
-Thanks,
-Sundaram
-----Original Message-----
From: Vitali A. Morozov [mailto:morozov@anl.gov]
Sent: Wednesday, April 13,
2016 2:32 PM
To: Raman, Karthik <karthik.raman@intel.com>;
Chinthamani, Sundaram
<sundaram.chinthamani@intel.com>;
Harms, Kevin <harms@alcf.anl.gov>;
Morozov, Vitali A. <morozov@alcf.anl.gov>;
Kumaran, Kalyan
<kumaran@alcf.anl.gov>
Cc: Sodani, Avinash <avinash.sodani@intel.com>;
Fromkin, Russ
<russ.fromkin@intel.com>;
Allen, Benjamin S. <bsallen@alcf.anl.gov>
Subject: Re:
[JLSE-Intel-NDA] KNL Status
ok, that is fine.
Now the next issue I have
is that for static arrays, all three
arrays must land up on one of the
numa nodes - the node that is
attached to a master thread.
You advice to use �N =
134217728, that gives exactly 3 GiB
of memory footprint for 3 arrays of
triad.
According to "numactl -H",
I do not have 3 GiB of available
memory on any of the MCDRAM numa
nodes:
numactl -H |grep free
node 0 free: 46336 MB
node 1 free: 46923 MB
node 2 free: 46970 MB
node 3 free: 46961 MB
node 4 free: 2907 MB
node 5 free: 2926 MB
node 6 free: 2922 MB
node 7 free: 2914 MB
Therefore, at least one
array will not be placed to the same
numa node.
Is this ok?
On 04/13/2016 04:17 PM,
Raman, Karthik wrote:
Yes we run pure OMP code
too.
The problem with
KMP_AFFINITY with SNC4 mode
(currently) is that it
may not equally balance
the threads per NUMA domain even
with
scatter or balanced, you
can check that by mapping �the
"verbose" output (e.g.
KMP_AFFINITY=scatter,verbose)
with "numactl -H" output to see if
the
OS thread to logical CPU
mapping is balanced across all
NUMA domains
With All2All/Quad this
should not be a problem
-----Original
Message-----
From: Vitali A. Morozov [mailto:morozov@anl.gov]
Sent: Wednesday, April
13, 2016 1:53 PM
To: Raman, Karthik <karthik.raman@intel.com>;
Chinthamani, Sundaram
<sundaram.chinthamani@intel.com>;
Harms, Kevin <harms@alcf.anl.gov>;
Morozov, Vitali A. <morozov@alcf.anl.gov>;
Kumaran, Kalyan
<kumaran@alcf.anl.gov>
Cc: Sodani, Avinash <avinash.sodani@intel.com>;
Fromkin, Russ
<russ.fromkin@intel.com>;
Allen, Benjamin S. <bsallen@alcf.anl.gov>
Subject: Re:
[JLSE-Intel-NDA] KNL Status
Before doing that - let
us check if we are running similar
benchmark.
I am running 1 MPI
process (in fact no mpi at all)
and 64 OpenMP threads version. The
threads can be placed with
"balanced" or "scattered"
policy. I am using
"scattered".
Is this ok so far?
Vitali
On 04/13/2016 03:48 PM,
Raman, Karthik wrote:
This still does not
look right, and the reason could
be that the
threads are not
balanced across all the NUMA
domains (ideally you
want
16 threads per
quadrant)
Before going to SNC4,
can you please boot in "Quad"
mode. If you
look in the BIOS
Cluster mode options there is
another mode called "Quad"
which is different from
SNC4, only 2 NUMA domains (DDR,
MCDRAM).
Please run similar to
All2All mode
-----Original
Message-----
From: Vitali A. Morozov
[mailto:morozov@anl.gov]
Sent: Wednesday, April
13, 2016 12:56 PM
To: Chinthamani,
Sundaram <sundaram.chinthamani@intel.com>;
Harms,
Kevin <harms@alcf.anl.gov>; Raman,
Karthik
<karthik.raman@intel.com>;
Morozov, Vitali A.
<morozov@alcf.anl.gov>;
Kumaran, Kalyan <kumaran@alcf.anl.gov>
Cc: Sodani, Avinash
<avinash.sodani@intel.com>;
Fromkin, Russ
<russ.fromkin@intel.com>;
Allen, Benjamin S. <bsallen@alcf.anl.gov>
Subject: Re:
[JLSE-Intel-NDA] KNL Status
ok, I am now in
SNC-4/Flat. Same binary.
OMP_NUM_THREADS=64
KMP_AFFINITY=scatter numactl -m
4,5,6,7 ./stream
|tee running.dat
-------------------------------------------------------------
STREAM version
$Revision: 5.9 $
-------------------------------------------------------------
This system uses 8
bytes per DOUBLE PRECISION word.
-------------------------------------------------------------
Array size = 134217728,
Offset = 0
Total memory required =
3072.0 MB.
Each test is run 100
times, but only the *best* time
for each is
used.
-------------------------------------------------------------
Number of Threads
requested = 64
-------------------------------------------------------------
<skipped>
-------------------------------------------------------------
Function �����Rate
(MB/s) ��Avg time ����Min time
����Max time
Copy: �����320997.8352
������0.0068 ������0.0067 0.0071
Scale: ����319994.2893
������0.0068 ������0.0067 0.0073
Add: ������306055.0205
������0.0106 ������0.0105 0.0107
Triad: ����306055.0205
������0.0106 ������0.0105 0.0109
Store: ����247056.8669
������0.0044 ������0.0043 0.0051
-------------------------------------------------------------
Solution Validates
-------------------------------------------------------------
306055 MB/s
Vitali
On 04/13/2016 02:01 PM,
Chinthamani, Sundaram wrote:
440 GB/s (base 10).
��To be precise, 440 bytes /
ns (nano-second). ��We always
report memory bandwidth in
GB/s (base 10) within Intel.
-Thanks,
-Sundaram
-----Original
Message-----
From: Harms, Kevin [mailto:harms@alcf.anl.gov]
Sent: Wednesday,
April 13, 2016 11:52 AM
To: Raman, Karthik
<karthik.raman@intel.com>;
Chinthamani,
Sundaram <sundaram.chinthamani@intel.com>;
Morozov, Vitali A.
<morozov@alcf.anl.gov>;
Kumaran, Kalyan <kumaran@alcf.anl.gov>
Cc: Sodani, Avinash
<avinash.sodani@intel.com>;
Fromkin, Russ
<russ.fromkin@intel.com>;
Allen, Benjamin S.
<bsallen@alcf.anl.gov>
Subject: Re:
[JLSE-Intel-NDA] KNL Status
����Just to be clear,
memory is always assumed to be
measured using base 2. It's
only the storage field that
uses base 10. So we assume if
you say 440 GB/s you mean GiB,
or 450,560 MB/s.
kevin
And just some fun
with units
http://sites.utexas.edu/jdm4372/2013/01/05/counting-binary-vs-dec
i
m
a
l
-powers-in-the-stream-benchmark/
From: Chinthamani,
Sundaram
Sent: Wednesday,
April 13, 2016 11:20 AM
To: Vitali A.
Morozov <morozov@anl.gov>;
Raman, Karthik
<karthik.raman@intel.com>;
Kumaran, Kalyan <kumaran@alcf.anl.gov>
Cc: Sodani, Avinash
<avinash.sodani@intel.com>;
Fromkin, Russ
<russ.fromkin@intel.com>;
Harms, Kevin <harms@alcf.anl.gov>;
Morozov, Vitali A.
<morozov@alcf.anl.gov>;
Allen, Benjamin S.
<bsallen@alcf.anl.gov>;
Chinthamani, Sundaram
<sundaram.chinthamani@intel.com>
Subject: RE:
[JLSE-Intel-NDA] KNL Status
440 GB/s �stream
triad for MC-DRAM and 80
GB/s is our internal
bin3 measurement.
�You should be able to get
closer these numbers, if you
run the benchmark in
Quad/Flat or SNC-4/Flat
mode.
-Thanks,
-Sundaram
From: Vitali A.
Morozov [mailto:morozov@anl.gov]
Sent: Wednesday,
April 13, 2016 11:11 AM
To: Raman, Karthik
<karthik.raman@intel.com>;
Chinthamani,
Sundaram <sundaram.chinthamani@intel.com>;
Kumaran, Kalyan
<kumaran@alcf.anl.gov>
Cc: Sodani, Avinash
<avinash.sodani@intel.com>;
Fromkin, Russ
<russ.fromkin@intel.com>;
Harms, Kevin <harms@alcf.anl.gov>;
Morozov, Vitali A.
<morozov@alcf.anl.gov>;
Allen, Benjamin S.
<bsallen@alcf.anl.gov>
Subject: Re:
[JLSE-Intel-NDA] KNL Status
I see - I am
treating 418122 MB/s as
418122/1024 GB/s (as this is
memory unit).
Anyway - great we
are on the same page here.
I am in
All2All/Flat mode. You seem
to suggest that I must be on
SNC-4/Flat to see 440000
MB/s?
Thanks!
Vitali
On 04/13/2016 01:06
PM, Raman, Karthik wrote:
Ok I read this as
418 GB/s
J
And ok, just
realized you are running in
All2All mode, so yes this
looks good. For Quad/Flat
you should see ~440 GB/s
with the same run.
From: Vitali A.
Morozov [mailto:morozov@anl.gov]
Sent: Wednesday,
April 13, 2016 11:02 AM
To: Raman, Karthik
<karthik.raman@intel.com>
<mailto:karthik.raman@intel.com>;
Chinthamani, Sundaram
<sundaram.chinthamani@intel.com>
<mailto:sundaram.chinthamani@intel.com>;
Kumaran, Kalyan
<kumaran@alcf.anl.gov>
<mailto:kumaran@alcf.anl.gov>
Cc: Sodani, Avinash
<avinash.sodani@intel.com>
<mailto:avinash.sodani@intel.com>;
Fromkin, Russ <russ.fromkin@intel.com>
<mailto:russ.fromkin@intel.com>;
Harms, Kevin <harms@alcf.anl.gov> <mailto:harms@alcf.anl.gov>;
Morozov, Vitali A.
<morozov@alcf.anl.gov> <mailto:morozov@alcf.anl.gov>;
Allen, Benjamin S.
<bsallen@alcf.anl.gov> <mailto:bsallen@alcf.anl.gov>
Subject: Re:
[JLSE-Intel-NDA] KNL Status
Hi Karthik,
Repeating the same
options you have:
mpiicc -O3
-xMIC-AVX512 -opt-report=5
-Wall -g -fopenmp -mcmodel
medium
-shared-intel
-opt-streaming-stores always
stream.c -o
stream
-------------------------------------------------------------
STREAM version
$Revision: 5.9 $
-------------------------------------------------------------
This system uses 8
bytes per DOUBLE PRECISION
word.
-------------------------------------------------------------
Array size =
134217728, Offset = 0 Total
memory required = 3072.0
MB.
Each test is run
100 times, but only the
*best* time for each is
used.
-------------------------------------------------------------
Number of Threads
requested = 64
-------------------------------------------------------------
< skiped >
Function �����Rate
(MB/s) ��Avg time ����Min
time ����Max time
Copy:
�����362331.5200
������0.0060 ������0.0059
������0.0061
Scale:
����359281.9806 ������0.0060
������0.0060 ������0.0062
Add:
������418122.7024
������0.0078 ������0.0077
������0.0081
Triad:
����418122.7024 ������0.0078
������0.0077 ������0.0081
Store:
����224685.6729 ������0.0048
������0.0048 ������0.0049
408GB/s
Vitali
On 04/13/2016 12:15
PM, Raman, Karthik wrote:
2. Effective MCDRAM
bandwidth is around 406-408
GB/s. Larger values are
possible for more high core
count bins.
For bin3 , you
should be able to get Triad
~440 GB/s. Please
check if you use
the following Intel compiler
flags -mcmodel
medium
-shared-intel -O3
�-xMIC-AVX512
-DSTREAM_ARRAY_SIZE=134217728
-DOFFSET=0 -DNTIMES=100
-openmp
-opt-streaming-stores always
The array size is just
allocating 1GB per array.
From: Vitali A.
Morozov [mailto:morozov@anl.gov]
Sent: Wednesday,
April 13, 2016 10:01 AM
To: Raman, Karthik
<karthik.raman@intel.com>
<mailto:karthik.raman@intel.com>;
Chinthamani, Sundaram
<sundaram.chinthamani@intel.com>
<mailto:sundaram.chinthamani@intel.com>;
Kumaran, Kalyan
<kumaran@alcf.anl.gov>
<mailto:kumaran@alcf.anl.gov>
Cc: Sodani, Avinash
<avinash.sodani@intel.com>
<mailto:avinash.sodani@intel.com>;
Fromkin, Russ <russ.fromkin@intel.com>
<mailto:russ.fromkin@intel.com>;
Harms, Kevin <harms@alcf.anl.gov> <mailto:harms@alcf.anl.gov>;
Morozov, Vitali A.
<morozov@alcf.anl.gov> <mailto:morozov@alcf.anl.gov>;
Allen, Benjamin S.
<bsallen@alcf.anl.gov> <mailto:bsallen@alcf.anl.gov>
Subject: Re:
[JLSE-Intel-NDA] KNL Status
Hello,
so, this is my
understanding that on bin3
hardware (64 cores, 6
channel DDR4-2133)
1. Effective DDR
bandwidth is 80 GB/s (around
78% of peak).
2. Effective MCDRAM
bandwidth is around 406-408
GB/s. Larger values are
possible for more high core
count bins.
3. Alignment is not
important for STREAM triad
benchmark.
4. For both static
and dynamic variables,
numactl -m [0|1] should be
used to direct memory
placement.
5. For explicit
MCDRAM allocation in flat
mode, �hbw_malloc.h API
should be use.
Please correct if I
am wrong...
Thanks a lot for
you help!
Vitali
On 04/12/2016 11:07
AM, Vitali A. Morozov wrote:
Hi Karthik,
I was also
wandering how the variable
could be influencing the
allocation if, in principle,
I do not need to link
against memkind in my case.
Anyway, sorry for confusion!
I think I did that
before - see my first
message. I was using
"numactl --membind=1
./stream" , which I believe
is equivalent to "numactl -m
1 ./stream" that you
suggest.
Here is the result
of "numactl -H":
[morozov@knl00
512_3_C64_MPI16_TH08_flat]$
numactl -H
available: 2 nodes
(0-1)
node 0 cpus: 0 1 2
3 4 5 6 7 8 9 10 11 12 13 14
15 16 17 18 19 20
21
22 23 24 25 26 27
28 29 30 31 32 33 34 35 36
37 38 39 40 41 42 43
44
45 46 47 48 49 50
51 52 53 54 55 56 57 58 59
60 61 62 63 64 65 66
67
68 69 70
71 72 73 74 75 76
77 78 79 80 81 82 83 84 85
86 87 88 89 90 91 92
93
94 95 96 97 98 99
100 101 102 103 104 105 106
107 108 109 110 111
112
113 114 115 116 117
118 119 120 121 122 123 124
125 126 127 128
129
130 131 132 133 134
135 136 137 138 139 140 141
142
143 144 145 146 147
148 149 150 151 152 153 154
155 156 157 158
159
160 161 162 163 164
165 166 167 168 169 170 171
172 173 174 175
176
177 178 179 180 181
182 183 184 185 186 187 188
189 190 191 192
193
194 195 196 197 198
199 200 201 202 203 204 205
206
207 208 209 210 211
212 213 214 215 216 217 218
219 220 221 222
223
224 225 226 227 228
229 230 231 232 233 234 235
236 237 238 239
240
241 242 243 244 245
246 247 248 249 250 251 252
253 254 255 node
0
size: 196511 MB
node 0 free: 186888 MB node
1 cpus:
node 1 size: 16384
MB
node 1 free: 11731
MB
node distances:
node ��0 ��1
���0: �10 �31
���1: �31 �10
Sounds like all as
expected.
[morozov@knl00
STREAM]$ OMP_NUM_THREADS=64
KMP_AFFINITY=scatter numactl
-m 1 ./stream
Triad:
����418262.7498 ������0.0058
������0.0057 ������0.0060
For a series of
runs, I see this:
# ��MB
��������������N
��������������GB/s
���228.88
���������10000000
�������408867.98
���457.76
���������20000000
�������405818.57
���686.65
���������30000000
�������414309.08
���915.53
���������40000000
�������415063.59
1144.41
���������50000000
�������415792.22
1373.29
���������60000000
�������415449.01
1602.17
���������70000000
�������414106.18
1831.05
���������80000000
�������416846.82
2059.94
���������90000000
�������414992.29
2288.82
��������100000000
�������417898.11
Vitali
On 04/12/2016 10:32
AM, Raman, Karthik wrote:
Hi Vitali,
1.
The
MEMKIND_HBW_NODES is *only*
when you are allocating
using
hbwalloc (+ MCDRAM
flat) in your application
and when memkind is
unable to find the
high bandwidth nodes (pmtt
not populated)
2.
With the below
static allocations,
in MCDRAM Flat mode, you can
simply use �numactl �m �1
./stream� with propery
affinity settings to get
peak out of MCDRAM.
a.
Check �numactl �H�
to find the NUMA domains in
your node. If
booted in
All2All/FLAT or Quad/Flat
mode it should show 2 NUMA
domains , one for
DDR (96 GB) and other for
MCDRAM (16GB)
Thanks
Karthik
From: Vitali A.
Morozov [mailto:morozov@anl.gov]
Sent: Tuesday,
April 12, 2016 7:27 AM
To: Raman, Karthik
<karthik.raman@intel.com>
<mailto:karthik.raman@intel.com>;
Chinthamani, Sundaram
<sundaram.chinthamani@intel.com>
<mailto:sundaram.chinthamani@intel.com>;
Kumaran, Kalyan
<kumaran@alcf.anl.gov>
<mailto:kumaran@alcf.anl.gov>
Cc: Sodani, Avinash
<avinash.sodani@intel.com>
<mailto:avinash.sodani@intel.com>;
Fromkin, Russ <russ.fromkin@intel.com>
<mailto:russ.fromkin@intel.com>;
Harms, Kevin <harms@alcf.anl.gov> <mailto:harms@alcf.anl.gov>;
Morozov, Vitali A.
<morozov@alcf.anl.gov> <mailto:morozov@alcf.anl.gov>;
Allen, Benjamin S.
<bsallen@alcf.anl.gov> <mailto:bsallen@alcf.anl.gov>
Subject: Re:
[JLSE-Intel-NDA] KNL Status
Hi Karthik,
The node is in
All2All mode for now. I made
the following changes. The
original code is using
static allocation therefore,
I follow the advice on 2MB
static array alignment:
[morozov@thing00
STREAM]$ head -n 108 <
stream.c | tail -n 4
static double
��a[N+OFFSET]
__attribute__((aligned(2097152))),
�����������������b[N+OFFSET]
__attribute__((aligned(2097152))),
�����������������c[N+OFFSET]
__attribute__((aligned(2097152))),
�����������������d[N+OFFSET]
__attribute__((aligned(2097152)));
[morozov@knl00
STREAM]$ make
mpiicc -O3
-xMIC-AVX512 -opt-report=5
-Wall -g -fopenmp -mcmodel
medium
-shared-intel -fno-alias
stream.c -o stream
[morozov@knl00
STREAM]$ MEMKIND_HBW_NODES=1
OMP_NUM_THREADS=64
KMP_AFFINITY=scatter
./stream
.....
Triad:
�����80251.3621 ������0.0300
������0.0299 ������0.0305
Apparently, the
"MEMKIND_HBW_NODES=1" is
ignored.
Thanks!
Vitali
On 04/12/2016 01:51
AM, Raman, Karthik wrote:
Also could you
please modify the memory
allocations in STREAM to
align at 2MB boundary.
For example:
static allocations:
static STREAM_TYPE
��a[STREAM_ARRAY_SIZE+OFFSET]
__attribute__((aligned(2097152)))
dynamic
allocations:
�����������������a
= (STREAM_TYPE
*)_mm_malloc(sizeof(STREAM_TYPE)*(STREAM_ARRAY_SIZE+OFFSET),20971
5
2
)
;
memkind/hbwalloc:
�����(STREAM_TYPE
*)hbw_posix_memalign((void
**)&a, 2097152,
sizeof(STREAM_TYPE)*(STREAM_ARRAY_SIZE+OFFSET))
For
memkind/hbwmalloc to work
out of the box, you need to
have
the PMTT tables
populated so that it can
identify the high bandwidth
nodes. Alternatively you can
set the MEMKIND_HBW_NODES
environment variable to the
high bandwidth node
(MCDRAM).
e.g. All2All/Flat
or Quad/Flat : export
MEMKIND_HBW_NODES=1 ;
./app_with_hbwmalloc
����������SNC4/Flat:
�export
MEMKIND_HBW_NODES=4,5,6,7 ;
./app_with_hbw_malloc
Thanks
Karthik
From: Chinthamani,
Sundaram
Sent: Monday, April
11, 2016 8:15 PM
To: Vitali Morozov
<morozov@anl.gov>
<mailto:morozov@anl.gov>;
Kumaran, Kalyan
<kumaran@alcf.anl.gov>
<mailto:kumaran@alcf.anl.gov>
Cc: Sodani, Avinash
<avinash.sodani@intel.com>
<mailto:avinash.sodani@intel.com>;
Fromkin, Russ <russ.fromkin@intel.com>
<mailto:russ.fromkin@intel.com>;
Raman, Karthik
<karthik.raman@intel.com>
<mailto:karthik.raman@intel.com>;
Harms, Kevin <harms@alcf.anl.gov> <mailto:harms@alcf.anl.gov>;
Morozov, Vitali A.
<morozov@alcf.anl.gov> <mailto:morozov@alcf.anl.gov>;
Allen, Benjamin S.
<bsallen@alcf.anl.gov> <mailto:bsallen@alcf.anl.gov>;
Chinthamani,
Sundaram <sundaram.chinthamani@intel.com>
<mailto:sundaram.chinthamani@intel.com>
Subject: RE:
[JLSE-Intel-NDA] KNL Status
You should use
numactl �m 4,5,6,7 �to get
the memory bandwidth out of
MC-DRAM.
What kind of part
is it? Is it bin1 or bin3?
��Even in All2All mode, �we
have measured up to 470 GB/s
of stream triad bandwidth.
��Quad mode should get 490
GB/s.
DDR-stream triad
bandwidth on Bin1-part
should be close to 90 GB/s.
-Sundaram
From: Vitali
Morozov [mailto:morozov@anl.gov]
Sent: Monday, April
11, 2016 6:59 PM
To: Kumaran, Kalyan
<kumaran@alcf.anl.gov>
Cc: Sodani, Avinash
<avinash.sodani@intel.com>;
Fromkin, Russ
<russ.fromkin@intel.com>;
Chinthamani, Sundaram
<sundaram.chinthamani@intel.com>;
Raman, Karthik
<karthik.raman@intel.com>;
Harms, Kevin <harms@alcf.anl.gov>;
Morozov, Vitali A.
<morozov@alcf.anl.gov>;
Allen, Benjamin S.
<bsallen@alcf.anl.gov>
Subject: Re:
[JLSE-Intel-NDA] KNL Status
Avinash and others,
here is what we
have so far for Flat more,
All2All.
The results from
memory were obtained by
using default STREAM with
static allocation. The
results from MCDRAM were
obtained by using modified
STREAM with hbwmalloc.h
interface.
1 MPI process, 64
threads, scatter affinity,
no numactl is used.
Most results are as
expected: 80 GB/s from DDR
memory, 420 GB/s from
MCDRAM, the MCDRAM size is
about 16 GB, the aggregate
L2 cache size is 32 MB.
Noticed
inconsistencies for
hbwmalloc benchmarks:
1. The result is
not validated - will spend
more time on that tomorrow.
2. hbw_malloc
continues allocating data
beyond the expected 16 GB up
to 48 GB. This means it
fails back to DDR if it
cannot allocate in MCDRAM -
not expected default
behavior. It must fail if it
does not have enough space.
The problem shows
up when I am running static
allocation and use numactl
--membind=1 to ask for
MCDRAM-only allocation. The
variation is very large and
inconsistent with the result
observed when using
hbw_malloc API:
# �MB
����������������N
���������GB/s numactl �GB/s
hbw_malloc
���228.88
���������10000000
�������255555.46
�����421009.18
���457.76
���������20000000
�������363930.93
�����416997.91
���686.65
���������30000000
�������309415.87
�����427808.31
���915.53
���������40000000
�������371691.30
�����423310.75
1144.41
���������50000000
�������187002.22
�����431032.35
1373.29
���������60000000
�������385954.23
�����427172.91
1602.17
���������70000000
�������388254.49
�����426823.59
1831.05
���������80000000
�������374491.43
�����428103.96
2059.94
���������90000000
�������379622.74
�����428152.02
2288.82
��������100000000
��������80868.34
�����430185.03
We also tried SNC-4
instead of All2All, but
could not get more than 40
GB/s from MCDRAM even with
hbw_malloc API.
Raw data:
# �flat memory,
running from memory
(default), alltoall
# �MB
����������������N
�������������GB/s
�����2.29
�����������100000
�������272062.96
�����4.58
�����������200000
�������491040.47
�����6.87
�����������300000
�������603979.78
�����9.16
�����������400000
�������745654.04
����11.44
�����������500000
�������811800.77
����13.73
�����������600000
�������901462.35
����16.02
�����������700000
�������891953.26
����18.31
�����������800000
������1019375.15
����20.60
�����������900000
�������984749.63
����22.89
����������1000000
�������923516.48
����25.18
����������1100000
�������758422.09
����27.47
����������1200000
�������779328.74
����29.75
����������1300000
�������513185.43
����32.04
����������1400000
�������155550.35
����34.33
����������1500000
�������103209.12
����36.62
����������1600000
��������97435.74
����38.91
����������1700000
��������83968.40
����41.20
����������1800000
��������83692.35
����43.49
����������1900000
��������80734.60
����45.78
����������2000000
��������76317.89
����68.66
����������3000000
��������81180.08
����91.55
����������4000000
��������78889.73
���114.44
����������5000000
��������79891.50
���137.33
����������6000000
��������79954.96
���160.22
����������7000000
��������79477.00
���183.11
����������8000000
��������79145.59
���205.99
����������9000000
��������79821.12
���228.88
���������10000000
��������79519.15
���228.88
���������10000000
��������79212.54
���457.76
���������20000000
��������79692.27
���686.65
���������30000000
��������79866.15
���915.53
���������40000000
��������79828.15
1144.41
���������50000000
��������80214.91
1373.29
���������60000000
��������80226.84
1602.17
���������70000000
��������80178.77
1831.05
���������80000000
��������80177.06
2059.94
���������90000000
��������80109.79
2288.82
��������100000000
��������80175.94
# �flat memory,
running from MCDRAM,
alltoall, hbwmalloc API
# �MB
����������������N
�������������GB/s
���228.88
���������10000000
�������421009.18
���457.76
���������20000000
�������416997.91
���686.65
���������30000000
�������427808.31
���915.53
���������40000000
�������423310.75
1144.41
���������50000000
�������431032.35
1373.29
���������60000000
�������427172.91
1602.17
���������70000000
�������426823.59
1831.05
���������80000000
�������428103.96
2059.94
���������90000000
�������428152.02
2288.82
��������100000000
�������430185.03
2343.75
��������102400000
�������425999.98
4687.50
��������204800000
�������427821.10
9155.27
��������400000000
�������429318.13
9375.00
��������409600000
�������428376.70
11444.09
��������500000000
�������428052.08
13732.91
��������600000000
�������266061.01
16021.73
��������700000000
�������200257.79
18310.55
��������800000000
�������168164.19
20599.37
��������900000000
�������150192.91
22888.18
�������1000000000
�������137862.07
25177.00
�������1100000000
�������129418.12
27465.82
�������1200000000
�������123019.53
29754.64
�������1300000000
�������118268.79
32043.46
�������1400000000
�������114343.33
34332.28
�������1500000000
�������110991.25
36621.09
�������1600000000
�������108538.36
38909.91
�������1700000000
�������106249.72
41198.73
�������1800000000
�������104455.07
43487.55
�������1900000000
�������102828.93
45776.37
�������2000000000
�������101348.56
48065.19
�������2100000000
�������100013.73
We appreciate any
help on that.
Best,
Vitali
On 04/11/2016 08:42
PM, Kumaran, Kalyan wrote:
Avinash, thanks for
the prompt reply.
Kevin/Vitali can provide
all the details.
The short summary is we are
unable to reproduce the
STREAM results from IPM or
DDR. It would be great if
Karthik or Sundaram can
advise us on how to run
(which mode etc) or if they
could log into the machine
and make sure we have set up
things correctly.
Thanks,
Kumar
On Apr 11, 2016, at
8:07 PM, Sodani, Avinash
<avinash.sodani@intel.com>
wrote:
Copying
Sundaram/Karthik from our
side.
Kumar,
Can you send us
more information on this?
-Avinash
From: Kumaran,
Kalyan [mailto:kumaran@alcf.anl.gov]
Sent: Monday, April
11, 2016 5:32 PM
To: Fromkin, Russ;
Sodani, Avinash
Cc: Harms, Kevin;
Morozov, Vitali A.
Subject: Fwd:
[JLSE-Intel-NDA] KNL Status
Russ, Avinash,
we need help in
understanding how to obtain
STREAM results. Can anyone
help?
Thanks,
Kumar
Begin forwarded
message:
From: "Harms,
Kevin" <harms@alcf.anl.gov>
Subject:
[JLSE-Intel-NDA] KNL Status
Date: April 11,
2016 at 5:42:15 PM CDT
To: "intel-nda@jlse.anl.gov"
<intel-nda@jlse.anl.gov>
The knl00 node is
currently in Flat mode and
All2All model. With this
setup we can get 420 GB/s
from IPM memory on STREAM
Triad when using hbw_malloc
and friends which was
confirmed by both Vitali and
I.
Changing the BIOS
settings and warm rebooting
seem to be problematic.
Vitali and I were running
earlier and could not get
over 80 GB/s with any method
even though memory capacity
indicated flat mode.
Using numactl
--membind is also
problematic. The STREAM
results
when using this to
launch the application were
erratic, so it is also
suggested not to use that.
That means you will need to
modify your code to use
dynamic memory and
hbw_malloc to exploit the
IPM.
Will followup with
more detailed results later.
kevin
_______________________________________________
Intel-nda mailing
list
Intel-nda@lists.jlse.anl.gov
https://lists.jlse.anl.gov/mailman/listinfo/intel-nda
<flat_a2a_ddr.txt><flat_a2a_ipm.txt><flat_quad_ddr.txt><flat_quad_ipm.txt><flat_snc4_ddr.txt><flat_snc4_ipm.txt>
_______________________________________________
Intel-nda mailing list
Intel-nda@lists.jlse.anl.gov
https://lists.jlse.anl.gov/mailman/listinfo/intel-nda
_______________________________________________
Intel-nda mailing list
Intel-nda@lists.jlse.anl.gov
https://lists.jlse.anl.gov/mailman/listinfo/intel-nda