-
Notifications
You must be signed in to change notification settings - Fork 26
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
AMX extension #68
AMX extension #68
Changes from 15 commits
95f1c83
1fdf36f
2b9adf9
a91ea44
e2a8731
529bb7f
b3b94f8
8e8e82d
892f234
5c5f935
edf806c
af302d6
7caf6cb
38fe61d
0427834
9fc69b6
b5fa958
fb60acd
5576797
ee707cf
6e66d26
824520c
87d6af9
b775b8c
ce86848
3a789bf
83e91eb
fdf01db
ce35b28
b1577ce
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
/****************************************************************************** | ||
* FIRESTARTER - A Processor Stress Test Utility | ||
* Copyright (C) 2020 TU Dresden, Center for Information Services and High | ||
* Performance Computing | ||
* | ||
* This program is free software: you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License as published by | ||
* the Free Software Foundation, either version 3 of the License, or | ||
* (at your option) any later version. | ||
* | ||
* This program is distributed in the hope that it will be useful, | ||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
* GNU General Public License for more details. | ||
* | ||
* You should have received a copy of the GNU General Public License | ||
* along with this program. If not, see <http://www.gnu.org/licenses/\>. | ||
* | ||
* Contact: [email protected] | ||
*****************************************************************************/ | ||
|
||
#pragma once | ||
|
||
#include <firestarter/Environment/X86/Payload/X86Payload.hpp> | ||
|
||
namespace firestarter::environment::x86::payload { | ||
class AVX512_AMX_Payload final : public X86Payload { | ||
public: | ||
AVX512_AMX_Payload(asmjit::CpuFeatures const &supportedFeatures) | ||
: X86Payload(supportedFeatures, {asmjit::CpuFeatures::X86::kAMX_BF16}, | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Checking for the kAMX_BF16 feature may have prevented you from integrating the AMX code it into the AVX512 payload. Can we check this feature if the "AMX" meta-instruction is selection during the compilePayload step instead? |
||
"AVX512_AMX", 8, 32) {} | ||
|
||
int compilePayload( | ||
std::vector<std::pair<std::string, unsigned>> const &proportion, | ||
unsigned instructionCacheSize, | ||
std::list<unsigned> const &dataCacheBufferSize, unsigned ramBufferSize, | ||
unsigned thread, unsigned numberOfLines, bool dumpRegisters, | ||
bool errorDetection) override; | ||
std::list<std::string> getAvailableInstructions() const override; | ||
void init(unsigned long long *memoryAddr, | ||
unsigned long long bufferSize) override; | ||
|
||
firestarter::environment::payload::Payload *clone() const override { | ||
return new AVX512_AMX_Payload(this->supportedFeatures()); | ||
}; | ||
|
||
private: | ||
const std::map<std::string, unsigned> instructionFlops = { | ||
{"REG", 32}, {"L1_L", 32}, {"L1_BROADCAST", 16}, {"L1_S", 16}, | ||
{"L1_LS", 16}, {"L2_L", 32}, {"L2_S", 16}, {"L2_LS", 16}, | ||
{"L3_L", 32}, {"L3_S", 16}, {"L3_LS", 16}, {"L3_P", 16}, | ||
{"RAM_L", 32}, {"RAM_S", 16}, {"RAM_LS", 16}, {"RAM_P", 16}, | ||
{"AMX", 512}}; | ||
|
||
const std::map<std::string, unsigned> instructionMemory = { | ||
{"RAM_L", 64}, {"RAM_S", 128}, {"RAM_LS", 128}, {"RAM_P", 64}}; | ||
}; | ||
} // namespace firestarter::environment::x86::payload |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
/****************************************************************************** | ||
* FIRESTARTER - A Processor Stress Test Utility | ||
* Copyright (C) 2020 TU Dresden, Center for Information Services and High | ||
* Performance Computing | ||
* | ||
* This program is free software: you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License as published by | ||
* the Free Software Foundation, either version 3 of the License, or | ||
* (at your option) any later version. | ||
* | ||
* This program is distributed in the hope that it will be useful, | ||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
* GNU General Public License for more details. | ||
* | ||
* You should have received a copy of the GNU General Public License | ||
* along with this program. If not, see <http://www.gnu.org/licenses/\>. | ||
* | ||
* Contact: [email protected] | ||
*****************************************************************************/ | ||
|
||
#pragma once | ||
|
||
#include <firestarter/Environment/X86/Payload/AVX512_AMX_Payload.hpp> | ||
#include <firestarter/Environment/X86/Platform/X86PlatformConfig.hpp> | ||
|
||
namespace firestarter::environment::x86::platform { | ||
class SapphireRapidsConfig final : public X86PlatformConfig { | ||
|
||
public: | ||
SapphireRapidsConfig(asmjit::CpuFeatures const &supportedFeatures, | ||
unsigned family, unsigned model, unsigned threads) | ||
: X86PlatformConfig("SKL_XEONEP", 6, {85}, {1, 2}, 0, | ||
marenz2569 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
{32768, 1048576, 1441792}, 1048576000, 1536, family, | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I assume these values also have not been updated |
||
model, threads, | ||
new payload::AVX512_AMX_Payload(supportedFeatures)) {} | ||
|
||
std::vector<std::pair<std::string, unsigned>> | ||
getDefaultPayloadSettings() const override { | ||
return std::vector<std::pair<std::string, unsigned>>({{"RAM_S", 3}, | ||
{"RAM_P", 1}, | ||
{"L3_S", 1}, | ||
{"L3_P", 1}, | ||
{"L2_S", 4}, | ||
{"L2_L", 70}, | ||
{"L1_S", 0}, | ||
{"L1_L", 40}, | ||
{"REG", 140}, | ||
{"AMX", 1}}); | ||
} | ||
}; | ||
} // namespace firestarter::environment::x86::platform |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are these necessary?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
-mamx-tile is necessary.
-mamx-int8 got removed.