《UPC++ DepSpawn 库:数据流式计算的改进与评估》
1. UPC++ DepSpawn 中的 Cholesky 分解代码示例
在数据流式计算中,UPC++ DepSpawn 库有着重要的应用。以下是其实现 Cholesky 分解的代码示例:
shared_array<Tile> A(N * N);
#define _(i, j) ((i) * N + (j))
...
void dgemm(global_ref<Tile> dest, Tile a, Tile b) {
// dest = dest + a x b
}
for(i = 0; i < N; i++) {
upcxx_spawn(potrf, A[_(i,i)]);
for(r = i+1; r < N; r++) {
upcxx_spawn(trsm, A[_(i,i)], A[_(r,i)]);
}
for(j = i+1; j < N; j++) {
upcxx_spawn(dsyrk, A[_(j,i)], A[_(j,j)]);
for(r = j+1; r < N; r++) {
upcxx_spawn(dgemm, A[_(r,j)]), A[_(r,i)]), A[_(j,i)]));
}
}
}
upcxx_wait_for_all();
这段代码通过多个嵌套循环和任务调度函数(如 upcxx_spawn
超级会员免费看
订阅专栏 解锁全文
8万+

被折叠的 条评论
为什么被折叠?



