Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • eu/admire/io-scheduler
1 result
Show changes
Commits on Source (5)
...@@ -24,7 +24,12 @@ ...@@ -24,7 +24,12 @@
#include <fmt/format.h> #include <fmt/format.h>
#include <admire.hpp> #include <admire.hpp>
#include "common.hpp"
#define NJOB_NODES 50
#define NADHOC_NODES 25
#define NINPUTS 10
#define NOUTPUTS 5
int int
main(int argc, char* argv[]) { main(int argc, char* argv[]) {
...@@ -37,16 +42,40 @@ main(int argc, char* argv[]) { ...@@ -37,16 +42,40 @@ main(int argc, char* argv[]) {
admire::server server{"tcp", argv[1]}; admire::server server{"tcp", argv[1]};
admire::job job{42, 42}; const auto job_nodes = prepare_nodes(NJOB_NODES);
const auto adhoc_nodes = prepare_nodes(NADHOC_NODES);
const auto inputs = prepare_datasets("input-dataset-{}", NINPUTS);
const auto outputs = prepare_datasets("output-dataset-{}", NOUTPUTS);
std::string name = "adhoc_storage_42";
const auto adhoc_storage_ctx = admire::adhoc_storage::ctx{
admire::adhoc_storage::execution_mode::separate_new,
admire::adhoc_storage::access_type::read_write,
admire::adhoc_storage::resources{adhoc_nodes}, 100, false};
try { try {
[[maybe_unused]] const auto ret = admire::remove_job(server, job);
const auto adhoc_storage = admire::register_adhoc_storage(
server, name, admire::storage::type::gekkofs,
adhoc_storage_ctx);
admire::job_requirements reqs(inputs, outputs, adhoc_storage);
[[maybe_unused]] const auto job = admire::register_job(
server, admire::job::resources{job_nodes}, reqs, 0);
// do something with job
fmt::print(stdout, "ADM_register_job() remote procedure completed "
"successfully\n");
admire::remove_job(server, job);
fmt::print(stdout, "ADM_remove_job() remote procedure completed " fmt::print(stdout, "ADM_remove_job() remote procedure completed "
"successfully\n"); "successfully\n");
exit(EXIT_SUCCESS); exit(EXIT_SUCCESS);
} catch(const std::exception& e) { } catch(const std::exception& e) {
fmt::print(stdout, "ADM_remove_job() remote procedure not completed " fmt::print(stderr, "FATAL: example failed: {}\n", e.what());
"successfully\n");
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
} }
...@@ -63,22 +63,15 @@ main(int argc, char* argv[]) { ...@@ -63,22 +63,15 @@ main(int argc, char* argv[]) {
server, name, admire::storage::type::gekkofs, server, name, admire::storage::type::gekkofs,
adhoc_storage_ctx); adhoc_storage_ctx);
const auto ret = admire::update_adhoc_storage(server, adhoc_storage, admire::update_adhoc_storage(server, adhoc_storage,
new_adhoc_storage_ctx); new_adhoc_storage_ctx);
if(!ret) {
fmt::print(stderr, "FATAL: ADM_update_adhoc_storage() failed: {}\n",
ret.message());
exit(EXIT_FAILURE);
}
fmt::print(stdout, fmt::print(stdout,
"ADM_update_adhoc_storage() remote procedure completed " "ADM_update_adhoc_storage() remote procedure completed "
"successfully\n"); "successfully\n");
exit(EXIT_SUCCESS); exit(EXIT_SUCCESS);
} catch(const std::exception& e) { } catch(const std::exception& e) {
fmt::print(stderr, "FATAL: ADM_register_adhoc_storage() failed: {}\n", fmt::print(stderr, "FATAL: example failed: {}\n", e.what());
e.what());
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
} }
...@@ -65,8 +65,7 @@ main(int argc, char* argv[]) { ...@@ -65,8 +65,7 @@ main(int argc, char* argv[]) {
[[maybe_unused]] const auto job = admire::register_job( [[maybe_unused]] const auto job = admire::register_job(
server, admire::job::resources{job_nodes}, reqs, 0); server, admire::job::resources{job_nodes}, reqs, 0);
[[maybe_unused]] ADM_return_t ret = admire::update_job( admire::update_job(server, job, admire::job::resources{new_job_nodes});
server, job, admire::job::resources{new_job_nodes});
fmt::print( fmt::print(
stdout, stdout,
......
...@@ -221,15 +221,27 @@ register_job(const server& srv, const job::resources& resources, ...@@ -221,15 +221,27 @@ register_job(const server& srv, const job::resources& resources,
return rv.value(); return rv.value();
} }
admire::error_code void
update_job(const server& srv, const job& job, update_job(const server& srv, const job& job,
const job::resources& job_resources) { const job::resources& job_resources) {
return detail::update_job(srv, job, job_resources);
const auto ec = detail::update_job(srv, job, job_resources);
if(!ec) {
throw std::runtime_error(
fmt::format("ADM_update_job() error: {}", ec.message()));
}
} }
admire::error_code void
remove_job(const server& srv, const job& job) { remove_job(const server& srv, const job& job) {
return detail::remove_job(srv, job);
const auto ec = detail::remove_job(srv, job);
if(!ec) {
throw std::runtime_error(
fmt::format("ADM_remove_job() error: {}", ec.message()));
}
} }
admire::adhoc_storage admire::adhoc_storage
...@@ -248,15 +260,27 @@ register_adhoc_storage(const server& srv, const std::string& name, ...@@ -248,15 +260,27 @@ register_adhoc_storage(const server& srv, const std::string& name,
return rv.value(); return rv.value();
} }
admire::error_code void
update_adhoc_storage(const server& srv, const adhoc_storage& adhoc_storage, update_adhoc_storage(const server& srv, const adhoc_storage& adhoc_storage,
const adhoc_storage::ctx& adhoc_storage_ctx) { const adhoc_storage::ctx& adhoc_storage_ctx) {
return detail::update_adhoc_storage(srv, adhoc_storage_ctx, adhoc_storage); const auto ec =
detail::update_adhoc_storage(srv, adhoc_storage_ctx, adhoc_storage);
if(!ec) {
throw std::runtime_error(fmt::format(
"ADM_update_adhoc_storage() error: {}", ec.message()));
}
} }
admire::error_code void
remove_adhoc_storage(const server& srv, const adhoc_storage& adhoc_storage) { remove_adhoc_storage(const server& srv, const adhoc_storage& adhoc_storage) {
return detail::remove_adhoc_storage(srv, adhoc_storage);
const auto ec = detail::remove_adhoc_storage(srv, adhoc_storage);
if(!ec) {
throw std::runtime_error(fmt::format(
"ADM_remove_adhoc_storage() error: {}", ec.message()));
}
} }
ADM_return_t ADM_return_t
......
...@@ -51,10 +51,10 @@ admire::job ...@@ -51,10 +51,10 @@ admire::job
register_job(const server& srv, const job::resources& job_resources, register_job(const server& srv, const job::resources& job_resources,
const job_requirements& reqs, admire::slurm_job_id slurm_id); const job_requirements& reqs, admire::slurm_job_id slurm_id);
admire::error_code void
update_job(const server& srv, const job&, const job::resources& job_resources); update_job(const server& srv, const job&, const job::resources& job_resources);
admire::error_code void
remove_job(const server& srv, const job& job); remove_job(const server& srv, const job& job);
admire::adhoc_storage admire::adhoc_storage
...@@ -62,11 +62,11 @@ register_adhoc_storage(const server& srv, const std::string& name, ...@@ -62,11 +62,11 @@ register_adhoc_storage(const server& srv, const std::string& name,
enum adhoc_storage::type type, enum adhoc_storage::type type,
const adhoc_storage::ctx& ctx); const adhoc_storage::ctx& ctx);
admire::error_code void
update_adhoc_storage(const server& srv, const adhoc_storage& adhoc_storage, update_adhoc_storage(const server& srv, const adhoc_storage& adhoc_storage,
const adhoc_storage::ctx& adhoc_storage_ctx); const adhoc_storage::ctx& adhoc_storage_ctx);
admire::error_code void
remove_adhoc_storage(const server& srv, const adhoc_storage& adhoc_storage); remove_adhoc_storage(const server& srv, const adhoc_storage& adhoc_storage);
ADM_return_t ADM_return_t
......
...@@ -68,8 +68,8 @@ ADM_update_job(ADM_server_t server, ADM_job_t job, ...@@ -68,8 +68,8 @@ ADM_update_job(ADM_server_t server, ADM_job_t job,
const admire::server srv{server}; const admire::server srv{server};
return admire::update_job(srv, admire::job{job}, return admire::detail::update_job(srv, admire::job{job},
admire::job::resources{job_resources}); admire::job::resources{job_resources});
} }
ADM_return_t ADM_return_t
...@@ -77,7 +77,7 @@ ADM_remove_job(ADM_server_t server, ADM_job_t job) { ...@@ -77,7 +77,7 @@ ADM_remove_job(ADM_server_t server, ADM_job_t job) {
const admire::server srv{server}; const admire::server srv{server};
return admire::remove_job(srv, admire::job{job}); return admire::detail::remove_job(srv, admire::job{job});
} }
ADM_return_t ADM_return_t
......