Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
[submodule "external/madrona"]
path = external/madrona
url = https://github.com/shacklettbp/madrona.git
[submodule "external/json"]
path = external/json
url = https://github.com/nlohmann/json.git
2 changes: 1 addition & 1 deletion src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ target_link_libraries(gpudrive_mgr
PUBLIC
madrona_python_utils
PRIVATE
madrona_json
nlohmann_json::nlohmann_json
gpudrive_cpu_impl
madrona_mw_cpu
madrona_common
Expand Down
20 changes: 6 additions & 14 deletions src/MapReader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,13 +36,8 @@ madrona_gpudrive::Map *copyToArrayOnHostOrDevice(const madrona_gpudrive::Map *in

namespace madrona_gpudrive {

simdjson::dom::parser& MapReader::getParser() {
static simdjson::dom::parser parser;
return parser;
}

MapReader::MapReader(const std::string &pathToFile){
in_ = pathToFile;
MapReader::MapReader(const std::string &pathToFile) : in_(pathToFile) {
assert(in_.is_open());
map_ = new madrona_gpudrive::Map();
}

Expand All @@ -51,13 +46,10 @@ MapReader::~MapReader() {
}

void MapReader::doParse(float polylineReductionThreshold) {
// Parse with simdjson
auto& parser = getParser();
simdjson::dom::element doc;
auto error = parser.load(in_).get(doc);
nlohmann::json rawJson;
in_ >> rawJson;

// Parse the document into the map
from_json(doc, *map_, polylineReductionThreshold);
from_json(rawJson, *map_, polylineReductionThreshold);
}

madrona_gpudrive::Map* MapReader::parseAndWriteOut(const std::string &path,
Expand All @@ -68,4 +60,4 @@ madrona_gpudrive::Map* MapReader::parseAndWriteOut(const std::string &path,
return copyToArrayOnHostOrDevice(reader.map_, executionMode);

}
} // namespace madrona_gpudrive
} // namespace madrona_gpudrive
7 changes: 3 additions & 4 deletions src/MapReader.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

#include <fstream>
#include <madrona/exec_mode.hpp>
#include <simdjson.h>

#include "init.hpp"

namespace madrona_gpudrive {
Expand All @@ -14,13 +14,12 @@ class MapReader {
static madrona_gpudrive::Map* parseAndWriteOut(const std::string &path, madrona::ExecMode executionMode, float polylineReductionThreshold);

private:
static simdjson::dom::parser& getParser();
MapReader(const std::string &pathToFile);
~MapReader();
void doParse(float polylineReductionThreshold);

std::string in_;
std::ifstream in_;
madrona_gpudrive::Map *map_;
};

} // namespace madrona_gpudrive
} // namespace madrona_gpudrive
Loading
Loading