diff --git a/bitcoin-project/.gitignore b/bitcoin-project/.gitignore index a43df3f..381bf03 100644 --- a/bitcoin-project/.gitignore +++ b/bitcoin-project/.gitignore @@ -1,2 +1,3 @@ data -build \ No newline at end of file +build +out.txt \ No newline at end of file diff --git a/bitcoin-project/Makefile b/bitcoin-project/Makefile index db019f6..caba00b 100644 --- a/bitcoin-project/Makefile +++ b/bitcoin-project/Makefile @@ -1,5 +1,5 @@ -CXX = g++ -CXXFLAGS = -std=c++17 -O2 -Wall -Wextra +CXX = mpic++ +CXXFLAGS = -std=c++17 -O2 -Wall -Wextra -Wno-cast-function-type SRC_DIR = src BUILD_DIR = build diff --git a/bitcoin-project/README.md b/bitcoin-project/README.md new file mode 100644 index 0000000..77f3308 --- /dev/null +++ b/bitcoin-project/README.md @@ -0,0 +1,12 @@ +Проект обязательно должен быть расположен в общей директории для всех узлов, +например, в `/mnt/shared/bitcoin-project` + +```sh +make +``` + +```sh +sbatch run.slurm +``` + +Обязательно должны быть запущены все 4 нода. Результат будет в out.txt. \ No newline at end of file diff --git a/bitcoin-project/run.slurm b/bitcoin-project/run.slurm new file mode 100644 index 0000000..5557950 --- /dev/null +++ b/bitcoin-project/run.slurm @@ -0,0 +1,7 @@ +#!/bin/bash +#SBATCH --job-name=btc +#SBATCH --nodes=4 +#SBATCH --ntasks=4 +#SBATCH --output=out.txt + +mpirun -np 4 ./build/bitcoin_app diff --git a/bitcoin-project/src/main.cpp b/bitcoin-project/src/main.cpp index 763b38f..dcc6355 100644 --- a/bitcoin-project/src/main.cpp +++ b/bitcoin-project/src/main.cpp @@ -1,27 +1,14 @@ #include +#include #include "csv_loader.hpp" #include "utils.hpp" +#include "mpi_utils.hpp" -int main() { - auto records = load_csv("data/data.csv"); +int main(int argc, char** argv) { + MPI_Init(&argc, &argv); - std::cout << "Loaded rows: " << records.size() << "\n"; + mpi_test(); // просто тест, что всё работает - for (int i = 0; i < 5 && i < records.size(); i++) { - std::cout << records[i].timestamp << " " - << records[i].open << " " - << records[i].high << " " - << records[i].low << " " - << records[i].close << " " - << records[i].volume << "\n"; - } - - auto days = group_by_day(records); - std::cout << "Total days: " << days.size() << "\n"; - - auto parts = split_days(days, 4); - - for (int i = 0; i < 4; i++) { - std::cout << "Part " << i << " has " << parts[i].size() << " days:\n"; - } + MPI_Finalize(); + return 0; } diff --git a/bitcoin-project/src/mpi_utils.cpp b/bitcoin-project/src/mpi_utils.cpp new file mode 100644 index 0000000..2bf2274 --- /dev/null +++ b/bitcoin-project/src/mpi_utils.cpp @@ -0,0 +1,11 @@ +#include +#include + +void mpi_test() { + int rank, size; + + MPI_Comm_rank(MPI_COMM_WORLD, &rank); + MPI_Comm_size(MPI_COMM_WORLD, &size); + + std::cout << "Hello from rank " << rank << " of " << size << std::endl; +} diff --git a/bitcoin-project/src/mpi_utils.hpp b/bitcoin-project/src/mpi_utils.hpp new file mode 100644 index 0000000..5563bd9 --- /dev/null +++ b/bitcoin-project/src/mpi_utils.hpp @@ -0,0 +1,2 @@ +#pragma once +void mpi_test();