五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

2

2023-06-22 15:29 作者:釋o懷灬  | 我要投稿

#include <iostream>

#include <fstream>

#include <sstream>

#include <string>

#include <mpi.h>


const int ROWS = 2002;

const int COLS = 2002;


int arr[4][ROWS-1];

int t[ROWS][COLS];


void split(const std::string& str, const char delimiter, std::string* tokens, int size) {

? ? std::stringstream ss(str);

? ? std::string token;

? ? int index = 0;

? ? while (getline(ss, token, delimiter) && index < size) {

? ? ? ? tokens[index++] = token;

? ? }

}


int main(int argc, char* argv[]) {

? ? int num_procs, rank;

? ? MPI_Init(&argc, &argv);

? ? MPI_Comm_size(MPI_COMM_WORLD, &num_procs);

? ? MPI_Comm_rank(MPI_COMM_WORLD, &rank);


? ? if (rank == 0) {

? ? ? ? std::ifstream file("data.csv");

? ? ? ? std::string line;

? ? ? ? int row = 0;

? ? ? ? while (getline(file, line) && row < ROWS) {

? ? ? ? ? ? std::string tokens[4];

? ? ? ? ? ? split(line, ',', tokens, 4);

? ? ? ? ? ? for (int col = 0; col < 4; col++) {

? ? ? ? ? ? ? ? arr[col][row] = stoi(tokens[col]);

? ? ? ? ? ? }

? ? ? ? ? ? row++;

? ? ? ? }

? ? ? ? file.close();


? ? ? ? // 使用arr數(shù)組將t數(shù)組初始化

? ? ? ? for (int i = 0; i < ROWS; i++) {

? ? ? ? ? ? for (int j = 0; j < COLS; j++) {

? ? ? ? ? ? ? ? if (i == 0 && j != 0 && j != (COLS - 1)) {? // 上方

? ? ? ? ? ? ? ? ? ? t[i][j] = arr[0][j-1];

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? else if (i == (ROWS - 1) && j != 0 && j != (COLS - 1)) {? // 下方

? ? ? ? ? ? ? ? ? ? t[i][j] = arr[1][j-1];

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? else if (j == 0 && i != 0 && i != (ROWS - 1)) {? // 左方

? ? ? ? ? ? ? ? ? ? t[i][j] = arr[2][i-1];

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? else if (j == (COLS - 1) && i != 0 && i != (ROWS - 1)) {? // 右方

? ? ? ? ? ? ? ? ? ? t[i][j] = arr[3][i-1];

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? else {

? ? ? ? ? ? ? ? ? ? t[i][j] = 0;

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? }

? ? }


? ? // 使用MPI廣播將arr數(shù)組發(fā)送給其他進(jìn)程

? ? MPI_Bcast(arr, 4 * (ROWS - 1), MPI_INT, 0, MPI_COMM_WORLD);


? ? // 每個(gè)進(jìn)程負(fù)責(zé)計(jì)算一部分?jǐn)?shù)據(jù)

? ? int start_row = rank * (ROWS - 2) / num_procs + 1;

? ? int end_row = (rank + 1) * (ROWS - 2) / num_procs + 1;


? ? for (int i = start_row; i < end_row; i++) {

? ? ? ? for (int j = 1; j < COLS - 1; j++) {

? ? ? ? ? ? // 進(jìn)程間通信,將邊界數(shù)據(jù)發(fā)送和接收

? ? ? ? ? ? if (i == start_row) {

? ? ? ? ? ? ? ? MPI_Send(&t[i - 1][j], 1, MPI_INT, rank - 1, 0, MPI_COMM_WORLD);

? ? ? ? ? ? ? ? MPI_Recv(&t[i][j], 1, MPI_INT, rank - 1, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE);

? ? ? ? ? ? }

? ? ? ? ? ? else if (i == end_row - 1) {

? ? ? ? ? ? ? ? MPI_Recv(&t[i][j], 1, MPI_INT, rank + 1, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE);

? ? ? ? ? ? ? ? MPI_Send(&t[i + 1][j], 1, MPI_INT, rank + 1, 0, MPI_COMM_WORLD);

? ? ? ? ? ? }


? ? ? ? ? ? t[i][j] = (t[i - 1][j] + t[i + 1][j] + t[i][j - 1] + t[i][j + 1]) / 4;

? ? ? ? }

? ? }


? ? // 合并每個(gè)進(jìn)程計(jì)算的結(jié)果

? ? MPI_Gather(&t[start_row][0], (end_row - start_row) * COLS, MPI_INT, &t[start_row][0], (end_row - start_row) * COLS, MPI_INT, 0, MPI_COMM_WORLD);


? ? if (rank == 0) {

? ? ? ? // 打印最終結(jié)果

? ? ? ? for (int i = 0; i < ROWS; i++) {

? ? ? ? ? ? for (int j = 0; j < COLS; j++) {

? ? ? ? ? ? ? ? std::cout << t[i][j] << " ";

? ? ? ? ? ? }

? ? ? ? ? ? std::cout << std::endl;

? ? ? ? }

? ? }


? ? MPI_Finalize();

? ? return 0;

}


2的評論 (共 條)

分享到微博請遵守國家法律
都昌县| 额济纳旗| 延庆县| 阿图什市| 安陆市| 蓬莱市| 同仁县| 拜泉县| 泸水县| 隆尧县| 宣城市| 来凤县| 清原| 宁强县| 抚宁县| 彭山县| 论坛| 亚东县| 集安市| 鄂伦春自治旗| 昆明市| 大足县| 上蔡县| 绿春县| 来安县| 五指山市| 秦安县| 岳阳市| 夏邑县| 绍兴市| 镇远县| 榆树市| 西峡县| 格尔木市| 高密市| 富平县| 新干县| 绿春县| 盐源县| 响水县| 定陶县|