Skip to content

Commit 77df178

Browse files
committed
Matrix Multiplication task creation on Client and small log fixes
1 parent 2bbb8e8 commit 77df178

File tree

2 files changed

+57
-137
lines changed

2 files changed

+57
-137
lines changed

src/cmd/clientMain.cpp

Lines changed: 55 additions & 137 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,36 @@ std::string promptSimpleMathTask() {
3636
return data.dump();
3737
}
3838

39+
std::string promptMatrixMultiplicationTask() {
40+
int matrixSize;
41+
std::cout << "Enter matrix size:" << std::endl;
42+
std::cout << "> ";
43+
std::cin >> matrixSize;
44+
45+
// Optimized random matrix generation using pre-allocated memory
46+
std::vector<int> randomNumbers(matrixSize * matrixSize * 2);
47+
std::random_device rd;
48+
std::mt19937 gen(rd());
49+
std::uniform_int_distribution<> distrib(0, 99);
50+
std::generate(randomNumbers.begin(), randomNumbers.end(), [&]() { return distrib(gen); });
51+
52+
json data = json::array();
53+
int index = 0;
54+
for (int i = 0; i < 2; ++i) {
55+
json matrixJson = json::array();
56+
for (int j = 0; j < matrixSize; ++j) {
57+
json rowJson = json::array();
58+
for (int k = 0; k < matrixSize; ++k) {
59+
rowJson.emplace_back(randomNumbers[index++]);
60+
}
61+
matrixJson.emplace_back(rowJson);
62+
}
63+
data.emplace_back(matrixJson);
64+
}
65+
66+
return data.dump();
67+
}
68+
3969

4070
std::string promptMatrixDeterminantTask() {
4171
int matrixSize, matrixCount;
@@ -46,71 +76,6 @@ std::string promptMatrixDeterminantTask() {
4676
std::cout << "> ";
4777
std::cin >> matrixCount;
4878

49-
// std::random_device rd;
50-
// std::mt19937 gen(rd());
51-
// std::uniform_int_distribution<> distrib(0, 99);
52-
// const int totalNumbers = matrixSize * matrixSize * matrixCount;
53-
// std::vector<int> randomNumbers;
54-
// randomNumbers.reserve(totalNumbers);
55-
//
56-
// auto begin = std::chrono::steady_clock::now();
57-
// std::cout << "Start generating random numbers " << std::endl;
58-
//
59-
// for (int i = 0; i < totalNumbers; ++i) {
60-
// randomNumbers.push_back(distrib(gen));
61-
// }
62-
//
63-
// auto gen_end = std::chrono::steady_clock::now();
64-
// std::chrono::duration<double> gen_elapsed = gen_end - begin;
65-
// std::cout << "Elapsed time for generating random numbers: " << gen_elapsed.count() << " seconds." << std::endl;
66-
//
67-
// json data = json::array();
68-
// auto fill_begin = std::chrono::steady_clock::now();
69-
// std::cout << "Start filling matrices " << std::endl;
70-
//
71-
// int index = 0;
72-
// for (int i = 0; i < matrixCount; ++i) {
73-
// json matrixJson = json::array();
74-
// for (int j = 0; j < matrixSize; ++j) {
75-
// json rowJson = json::array();
76-
// for (int k = 0; k < matrixSize; ++k) {
77-
// rowJson.emplace_back(randomNumbers[index++]);
78-
// }
79-
// matrixJson.emplace_back(rowJson);
80-
// }
81-
// data.emplace_back(matrixJson);
82-
// }
83-
// auto fill_end = std::chrono::steady_clock::now();
84-
// std::chrono::duration<double> fill_elapsed = fill_end - fill_begin;
85-
// std::cout << "Elapsed time for filling matrices: " << fill_elapsed.count() << " seconds." << std::endl;
86-
//
87-
// auto total_end = std::chrono::steady_clock::now();
88-
// std::chrono::duration<double> total_elapsed = total_end - begin;
89-
// std::cout << "Total elapsed time: " << total_elapsed.count() << " seconds." << std::endl;
90-
// return data.dump();
91-
92-
// json data = json::array();
93-
// std::chrono::steady_clock::time_point begin = std::chrono::steady_clock::now();
94-
// std::cout << "Start randoming " << std::endl;
95-
// std::random_device rd; // Источник энтропии
96-
// std::mt19937 gen(rd()); // Генератор Mersenne Twister
97-
// std::uniform_int_distribution<> distrib(0, 99); // Распределение от 0 до 99
98-
// for (int i = 0; i < matrixCount; ++i) {
99-
// json matrixJson = json::array();
100-
// for (int j = 0; j < matrixSize; ++j) {
101-
// json rowJson = json::array();
102-
// for (int k = 0; k < matrixSize; ++k) {
103-
// rowJson.emplace_back(distrib(gen));
104-
// }
105-
// matrixJson.emplace_back(rowJson);
106-
// }
107-
// data.emplace_back(matrixJson);
108-
// }
109-
// std::chrono::steady_clock::time_point end = std::chrono::steady_clock::now();
110-
// std::chrono::duration<double> elapsed = end - begin;
111-
// std::cout << "Elapsed time: " << elapsed.count() << " seconds." << std::endl;
112-
// return data.dump();
113-
11479
json data = json::array();
11580
std::chrono::steady_clock::time_point begin = std::chrono::steady_clock::now();
11681
std::cout << "Start randoming " << std::endl;
@@ -130,57 +95,6 @@ std::string promptMatrixDeterminantTask() {
13095
std::chrono::steady_clock::time_point end = std::chrono::steady_clock::now();
13196
std::cout << "Time difference = " << std::chrono::duration_cast<std::chrono::seconds>(end - begin).count() << std::endl;
13297
return data.dump();
133-
134-
// std::vector<std::vector<std::vector<int>>> matrices;
135-
//
136-
// std::cout << "Start randoming" << std::endl;
137-
// for (int i = 0; i < matrixCount; i++) {
138-
// std::vector<std::vector<int>> matrix;
139-
// matrix.resize(matrixSize);
140-
// for (int j = 0; j < matrixSize; j++) {
141-
// std::vector<int> row;
142-
// row.resize(matrixSize);
143-
// for (int k = 0; k < matrixSize; k++) {
144-
// row.emplace_back(int(rand() % 100));
145-
// }
146-
// matrix.emplace_back(row);
147-
// }
148-
// matrices.emplace_back(matrix);
149-
// }
150-
// std::cout << "End randoming" << std::endl;
151-
// return data.dump();
152-
153-
// std::vector<std::vector<std::vector<int>>> matrices;
154-
//
155-
// std::cout << "Start randoming" << std::endl;
156-
// for (int i = 0; i < matrixCount; i++) {
157-
// std::vector<std::vector<int>> matrix;
158-
// matrix.resize(matrixSize);
159-
// for (int j = 0; j < matrixSize; j++) {
160-
// std::vector<int> row;
161-
// row.resize(matrixSize);
162-
// for (int k = 0; k < matrixSize; k++) {
163-
// row.push_back(int(rand() % 100));
164-
// }
165-
// matrix.push_back(row);
166-
// }
167-
// matrices.push_back(matrix);
168-
// }
169-
// std::cout << "End randoming" << std::endl;
170-
//
171-
// json data = json::array();
172-
// for (auto &matrix: matrices) {
173-
// json matrixJson = json::array();
174-
// for (auto &row: matrix) {
175-
// json rowJson = json::array();
176-
// for (int &elem: row) {
177-
// rowJson.push_back(elem);
178-
// }
179-
// matrixJson.push_back(rowJson);
180-
// }
181-
// data.push_back(matrixJson);
182-
// }
183-
// return data.dump();
18498
}
18599

186100
void *receiverThread(void *arg) {
@@ -195,8 +109,8 @@ void *senderThread(void *arg) {
195109
while (true) {
196110
std::cout << "Enter task number:" << std::endl;
197111
std::cout << "1 - simple math" << std::endl;
198-
std::cout << "2 - matrix multiplication" << std::endl;
199-
std::cout << "3 - bulk simple task" << std::endl;
112+
std::cout << "2 - matrix determinant" << std::endl;
113+
std::cout << "3 - matrix multiplication" << std::endl;
200114
std::cout << "0 - exit console" << std::endl;
201115
std::cout << "> ";
202116

@@ -226,27 +140,31 @@ void *senderThread(void *arg) {
226140
break;
227141

228142
case 3:
229-
int t, tasksCount, delay;
230-
std::cout << "Enter tasks count:" << std::endl;
231-
std::cout << "> ";
232-
std::cin >> tasksCount;
233-
std::cout << "Enter delay between tasks:" << std::endl;
234-
std::cout << "> ";
235-
std::cin >> delay;
236-
for (t = 0; t < tasksCount; t++) {
237-
json data;
238-
data["a"] = rand() % 100;
239-
data["b"] = rand() % 100;
240-
int taskId = rand();
241-
client->sendTask(TaskRequest{std::to_string(taskId), "simpleMath", data.dump(), cores});
242-
std::cout << "Task " << taskId << " sent" << std::endl;
243-
std::this_thread::sleep_for(std::chrono::milliseconds(delay));
244-
}
245-
246-
requestParams = promptMatrixDeterminantTask();
247-
requestFunc = "determinant";
143+
requestParams = promptMatrixMultiplicationTask();
144+
requestFunc = "matrixMultiplication";
248145
break;
249146

147+
// int t, tasksCount, delay;
148+
// std::cout << "Enter tasks count:" << std::endl;
149+
// std::cout << "> ";
150+
// std::cin >> tasksCount;
151+
// std::cout << "Enter delay between tasks:" << std::endl;
152+
// std::cout << "> ";
153+
// std::cin >> delay;
154+
// for (t = 0; t < tasksCount; t++) {
155+
// json data;
156+
// data["a"] = rand() % 100;
157+
// data["b"] = rand() % 100;
158+
// int taskId = rand();
159+
// client->sendTask(TaskRequest{std::to_string(taskId), "simpleMath", data.dump(), cores});
160+
// std::cout << "Task " << taskId << " sent" << std::endl;
161+
// std::this_thread::sleep_for(std::chrono::milliseconds(delay));
162+
// }
163+
//
164+
// requestParams = promptMatrixDeterminantTask();
165+
// requestFunc = "determinant";
166+
// break;
167+
250168
case 0:
251169
return nullptr;
252170

src/rabbitCore/server/RabbitServer.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,9 @@ void RabbitServer::processClient(Client &client) {
182182
std::vector<std::thread> threads;
183183
for (;;) {
184184
auto receiveMessage = client.connection->receiveMessage();
185+
#ifdef SERVER_ARCH_DEBUG
185186
std::cout << "Received message: " << receiveMessage->getDataAsString() << std::endl;
187+
#endif
186188
// json request = json::parse(receiveMessage->getDataAsString());
187189
// std::cout << "Received message: " << request.dump() << std::endl;
188190
std::cout << "start converting" << std::endl;

0 commit comments

Comments
 (0)