Remove the concept of a resource directory

The concept of a resource directory was confusing, error-prone and
was only used to specify the directory of the base config json anyway.
Therefore, remove the concept of the resource directory and use the
parent directory of the base config directly.
This commit is contained in:
2025-04-07 12:58:13 +02:00
parent ee85f0df8f
commit a97b676b92
11 changed files with 35 additions and 49 deletions

View File

@@ -50,10 +50,5 @@ target_link_libraries(configuration
nlohmann_json::nlohmann_json
)
target_compile_definitions(configuration
PUBLIC
DRAMSYS_RESOURCE_DIR="${DRAMSYS_RESOURCE_DIR}"
)
target_compile_features(configuration PUBLIC cxx_std_17)
add_library(DRAMSys::config ALIAS configuration)

View File

@@ -41,9 +41,10 @@
namespace DRAMSys::Config
{
Configuration from_path(std::string_view path, std::string_view resourceDirectory)
Configuration from_path(std::filesystem::path baseConfig)
{
std::ifstream file(path.data());
std::ifstream file(baseConfig);
std::filesystem::path baseDir = baseConfig.parent_path();
enum class SubConfig
{
@@ -59,7 +60,7 @@ Configuration from_path(std::string_view path, std::string_view resourceDirector
// with the actual json data.
std::function<bool(int depth, nlohmann::detail::parse_event_t event, json_t& parsed)>
parser_callback;
parser_callback = [&parser_callback, &current_sub_config, resourceDirectory](
parser_callback = [&parser_callback, &current_sub_config, baseDir](
int depth, nlohmann::detail::parse_event_t event, json_t& parsed) -> bool
{
using nlohmann::detail::parse_event_t;
@@ -90,12 +91,11 @@ Configuration from_path(std::string_view path, std::string_view resourceDirector
if (event == parse_event_t::value && current_sub_config != SubConfig::Unkown)
{
// Replace name of json file with actual json data
auto parse_json = [&parser_callback,
resourceDirectory](std::string_view base_dir,
std::string_view sub_config_key,
const std::string& filename) -> json_t
auto parse_json = [&parser_callback, baseDir](std::string_view base_dir,
std::string_view sub_config_key,
const std::string& filename) -> json_t
{
std::filesystem::path path(resourceDirectory);
std::filesystem::path path{baseDir};
path /= base_dir;
path /= filename;
@@ -129,7 +129,7 @@ Configuration from_path(std::string_view path, std::string_view resourceDirector
json_t simulation = json_t::parse(file, parser_callback, true, true).at(Configuration::KEY);
return simulation.get<Config::Configuration>();
}
throw std::runtime_error("Failed to open file " + std::string(path));
throw std::runtime_error("Failed to open file " + std::string(baseConfig));
}
} // namespace DRAMSys::Config

View File

@@ -75,8 +75,7 @@ struct Configuration
NLOHMANN_JSONIFY_ALL_THINGS(
Configuration, addressmapping, mcconfig, memspec, simconfig, simulationid, tracesetup)
Configuration from_path(std::string_view path,
std::string_view resourceDirectory = DRAMSYS_RESOURCE_DIR);
Configuration from_path(std::filesystem::path baseConfig);
} // namespace DRAMSys::Config

View File

@@ -100,6 +100,7 @@ target_compile_features(libdramsys PUBLIC cxx_std_17)
target_compile_definitions(libdramsys
PUBLIC
DRAMSYS_RESOURCE_DIR="${DRAMSYS_RESOURCE_DIR}"
$<$<BOOL:${DRAMPower_FOUND}>:DRAMPOWER>
)

View File

@@ -42,21 +42,15 @@
int sc_main(int argc, char** argv)
{
std::filesystem::path resourceDirectory = DRAMSYS_RESOURCE_DIR;
if (argc >= 3)
{
resourceDirectory = argv[2];
}
std::filesystem::path baseConfig = resourceDirectory / "ddr4-example.json";
if (argc >= 2)
{
baseConfig = argv[1];
}
DRAMSys::Config::Configuration configuration =
DRAMSys::Config::from_path(baseConfig.c_str(), resourceDirectory.c_str());
DRAMSys::Config::Configuration configuration = DRAMSys::Config::from_path(baseConfig.c_str());
Simulator simulator(std::move(configuration), std::move(resourceDirectory));
Simulator simulator(std::move(configuration), std::move(baseConfig));
simulator.run();
return 0;

View File

@@ -41,13 +41,12 @@
#include "player/StlPlayer.h"
#include "util.h"
Simulator::Simulator(DRAMSys::Config::Configuration configuration,
std::filesystem::path resourceDirectory) :
Simulator::Simulator(DRAMSys::Config::Configuration configuration, std::filesystem::path baseConfig) :
storageEnabled(configuration.simconfig.StoreMode == DRAMSys::Config::StoreModeType::Store),
memoryManager(storageEnabled),
configuration(std::move(configuration)),
resourceDirectory(std::move(resourceDirectory)),
dramSys(std::make_unique<DRAMSys::DRAMSys>("DRAMSys", this->configuration))
dramSys(std::make_unique<DRAMSys::DRAMSys>("DRAMSys", this->configuration)),
baseConfig(baseConfig)
{
terminateInitiator = [this]()
{
@@ -104,7 +103,7 @@ Simulator::instantiateInitiator(const DRAMSys::Config::Initiator& initiator)
}
else if constexpr (std::is_same_v<T, DRAMSys::Config::TracePlayer>)
{
std::filesystem::path tracePath = resourceDirectory / TRACE_DIRECTORY / config.name;
std::filesystem::path tracePath = baseConfig.parent_path() / TRACE_DIRECTORY / config.name;
std::optional<StlPlayer::TraceType> traceType;

View File

@@ -46,8 +46,7 @@ static constexpr std::string_view TRACE_DIRECTORY = "traces";
class Simulator
{
public:
Simulator(DRAMSys::Config::Configuration configuration,
std::filesystem::path resourceDirectory);
Simulator(DRAMSys::Config::Configuration configuration, std::filesystem::path baseConfig);
void run();
@@ -58,7 +57,6 @@ private:
MemoryManager memoryManager;
DRAMSys::Config::Configuration configuration;
std::filesystem::path resourceDirectory;
std::unique_ptr<DRAMSys::DRAMSys> dramSys;
std::vector<std::unique_ptr<Initiator>> initiators;
@@ -69,4 +67,6 @@ private:
unsigned int terminatedInitiators = 0;
uint64_t totalTransactions{};
uint64_t transactionsFinished = 0;
std::filesystem::path baseConfig;
};