-
Notifications
You must be signed in to change notification settings - Fork 25
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
base: master
Are you sure you want to change the base?
AMX extension #68
Changes from all commits
95f1c83
1fdf36f
2b9adf9
a91ea44
e2a8731
529bb7f
b3b94f8
8e8e82d
892f234
5c5f935
edf806c
af302d6
7caf6cb
38fe61d
0427834
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: daniel.hackenberg@tu-dresden.de | ||
*****************************************************************************/ | ||
|
||
#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: daniel.hackenberg@tu-dresden.de | ||
*****************************************************************************/ | ||
|
||
#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, | ||
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. The first string should represent a short hand for Sapphire Rapids, this one is for Skylake. |
||
{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?