cygwin_exception :: open_stackdumpfile:倾倒堆栈跟踪到matmul_rec.exe.stackdump

发布于 2025-01-27 18:55:37 字数 1388 浏览 3 评论 0原文

我是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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文