MPI的相关问题

dwandqq 2016-10-24 09:54:23
int F (float *Y, float *B, int row, int col)
{
int idx;
for(int i=0; i<row; i++)
{
for(int j=0; j<col; j++)
{
idx = i*col + j;
Y[idx] = B[j];
}
}
return 0;
}

这种函数如何利用MPI来做?
...全文
1405 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
你的MPI指的是GPU并行编程还是什么,如果是的话,可以用opencl来计算,他里面最多可以有三维数据,里面有个内建函数是专门用来获取指定维当前正在计算的id(相当于你这里的i和j)。你这里的这个二维计算可以启用2维并行来计算。 当然如果是CPU并行的话,直接在VS里启用AMP,再加上omp的相关编译指令就行了,很简单的,百度一下就知道,但是由于CPU并行受到系统的影响,有时候其实会一直单线程执行,我也不知道怎么才能一直多线程。
dwandqq 2016-10-26
  • 打赏
  • 举报
回复
引用 1 楼 hhhhhhhhhhkkkkkkkkkk 的回复:
你的MPI指的是GPU并行编程还是什么,如果是的话,可以用opencl来计算,他里面最多可以有三维数据,里面有个内建函数是专门用来获取指定维当前正在计算的id(相当于你这里的i和j)。你这里的这个二维计算可以启用2维并行来计算。 当然如果是CPU并行的话,直接在VS里启用AMP,再加上omp的相关编译指令就行了,很简单的,百度一下就知道,但是由于CPU并行受到系统的影响,有时候其实会一直单线程执行,我也不知道怎么才能一直多线程。
用的MPI的对等模式,我是这样做的,但是,不太对 int F(float *Y, float *B, int row, int col) { int n=row/size; int ncol=col/size; MPI_Allgather(B,ncol,MPI_FLOAT,Y,ncol,MPI_FLOAT,MPI_COMM_WORLD); return 0; }
dwandqq 2016-10-26
  • 打赏
  • 举报
回复
引用 1 楼 hhhhhhhhhhkkkkkkkkkk 的回复:
你的MPI指的是GPU并行编程还是什么,如果是的话,可以用opencl来计算,他里面最多可以有三维数据,里面有个内建函数是专门用来获取指定维当前正在计算的id(相当于你这里的i和j)。你这里的这个二维计算可以启用2维并行来计算。 当然如果是CPU并行的话,直接在VS里启用AMP,再加上omp的相关编译指令就行了,很简单的,百度一下就知道,但是由于CPU并行受到系统的影响,有时候其实会一直单线程执行,我也不知道怎么才能一直多线程。
我上面说的这样函数,可以用MPI吗?如果可以的话,该如何做呢,刚开始学,不会

2,408

社区成员

发帖
与我相关
我的任务
社区描述
高性能计算
社区管理员
  • 高性能计算社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧