cygwin_exception :: open_stackdumpfile:倾倒堆栈跟踪到matmul_rec.exe.stackdump
我是C语言的新手,我正在尝试为我正在处理的这项任务实现递归块矩阵乘法,但是我一直遇到此错误,我在Internet上找不到任何解决方案。
'''
/*
* Matrix-matrix product W += U*V
* U has dimension m * n
* V has dimension n * l
* W has dimension m * l
*/
void gemm_rec(int m, int n, int l, int srU, int scU, int srV, int scV, int srW, int scW, double *U, double *V, double *W, int block_num)
{
if (block_num > 4)
{
block_num /= 4;
m /= 2;
n /= 2;
l /= 2;
gemm_rec(m, n, l, srU, scU, srV, scV, srW, scW, U, V, W, block_num);
gemm_rec(m, n, l, srU, scU+n, srV+n, scV, srW, scW, U, V, W, block_num);
gemm_rec(m, n, l, srU, scU, srV, scV+l, srW, scW+l, U, V, W, block_num);
gemm_rec(m, n, l, srU, scU+n, srV+n, scV+l, srW, scW+l, U, V, W, block_num);
gemm_rec(m, n, l, srU+m, scU, srV, scV, srW+m, scW, U, V, W, block_num);
gemm_rec(m, n, l, srU+m, scU+n, srV+n, scV, srW+m, scW, U, V, W, block_num);
gemm_rec(m, n, l, srU+m, scU, srV, scV+l, srW+m, scW+l, U, V, W, block_num);
gemm_rec(m, n, l, srU+m, scU+n, srV+n, scV+l, srW+m, scW+l, U, V, W, block_num);
}
else
{
for(int i=srW; i<srW+m; i++)
for(int j=scW; i<scW+l; j++)
for(int k=0; k<n; k++)
W[i * m + j] += U[i * m + (k+scU)]*V[(k+srV) * n + j];
}
}
'''
太感谢了。
I am rather new to C language, I'm trying to implement a recursive block matrix multiplication for this assignment I'm working on, but I keep getting this error, I couldn't find anywhere on the internet any solution.
'''
/*
* Matrix-matrix product W += U*V
* U has dimension m * n
* V has dimension n * l
* W has dimension m * l
*/
void gemm_rec(int m, int n, int l, int srU, int scU, int srV, int scV, int srW, int scW, double *U, double *V, double *W, int block_num)
{
if (block_num > 4)
{
block_num /= 4;
m /= 2;
n /= 2;
l /= 2;
gemm_rec(m, n, l, srU, scU, srV, scV, srW, scW, U, V, W, block_num);
gemm_rec(m, n, l, srU, scU+n, srV+n, scV, srW, scW, U, V, W, block_num);
gemm_rec(m, n, l, srU, scU, srV, scV+l, srW, scW+l, U, V, W, block_num);
gemm_rec(m, n, l, srU, scU+n, srV+n, scV+l, srW, scW+l, U, V, W, block_num);
gemm_rec(m, n, l, srU+m, scU, srV, scV, srW+m, scW, U, V, W, block_num);
gemm_rec(m, n, l, srU+m, scU+n, srV+n, scV, srW+m, scW, U, V, W, block_num);
gemm_rec(m, n, l, srU+m, scU, srV, scV+l, srW+m, scW+l, U, V, W, block_num);
gemm_rec(m, n, l, srU+m, scU+n, srV+n, scV+l, srW+m, scW+l, U, V, W, block_num);
}
else
{
for(int i=srW; i<srW+m; i++)
for(int j=scW; i<scW+l; j++)
for(int k=0; k<n; k++)
W[i * m + j] += U[i * m + (k+scU)]*V[(k+srV) * n + j];
}
}
'''
Thank you so much.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论