c - 使用不同大小的 fo 跳转并在 MPI_Scatter 上发送数据
问题描述
我想按列发送我在 1d 数组(行)中的矩阵,我试过这个:(TAM 是矩阵的大小,C 是要发送到每个进程的列数)
PI_Datatype MPI_COLUMNA;
MPI_Type_vector(TAM, 1, TAM, MPI_DOUBLE, &MPI_COLUMNA);
MPI_Type_create_resized( MPI_COLUMNA, 0,sizeof(double), &MPI_COLUMNA );
MPI_Type_commit(&MPI_COLUMNA);
int ACTUAL=1;
double * buffer = malloc(sizeof(double) * C * TAM);
for (int i = 0; i < TAM; i+=C*PROCESOS){
MPI_Scatter(&A[i], 1, MPI_COLUMNA, buffer,
sizeof(double) * TAM * C, // Tamaño del envío a cada proceso
MPI_FLOAT, 0, MPI_COMM_WORLD);
}
但是当我尝试这个时,我只得到第一个项目,因为 MPI_COLUMNA 的大小是两倍,但是如果我将它更改为 4,程序会失败,因为 Scatter 跳跃太多(对于项目,转到下一行而不是下一列,从下一项开始)。
我如何将分散的跳跃定义为一个以及发送到另一个的数据的大小。
解决方案
推荐阅读
- termios - 无法导入 termios 包
- sql - 带有 CTE 的 SQL 子查询
- android - 在 Android 应用上跟踪转化的最佳方式是什么?
- c# - 使用 SimpleInjector 在 IExceptionFilter 中注入 Logger
- c++ - C++ 应用程序缺少 winrt::Windows::Storage::Streams::DataWriter
- c# - 搜索所有文件夹和子文件夹
- arrays - 反应推送数组到状态
- javascript - 将表格行复制到剪贴板 - 仅复制第一页
- c++ - 是否可以保存带有参数的函数指针以供以后使用?
- python - 循环遍历 2 个 numpy 数组并将它们连接起来