Skip to content

mat-transpose实现重复 #260

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
fpeanut opened this issue Mar 19, 2025 · 3 comments
Open

mat-transpose实现重复 #260

fpeanut opened this issue Mar 19, 2025 · 3 comments
Assignees

Comments

@fpeanut
Copy link

fpeanut commented Mar 19, 2025

Image
关于转置的实现,这其中有两个核函数,这两个核函数是不是重复了,我看转置计算的代码分解开其实是一样的,你只是调换了global_x和global_y,但本质展开计算的代码是一样的

@fpeanut
Copy link
Author

fpeanut commented Mar 19, 2025

还有,global void mat_transpose_f32x4_shared_col2row2d_kernel 及以下的函数测试的结果都不正确,是有什么操作不对吗

@hebangwen
Copy link

Image 关于转置的实现,这其中有两个核函数,这两个核函数是不是重复了,我看转置计算的代码分解开其实是一样的,你只是调换了global_x和global_y,但本质展开计算的代码是一样的

这个你可以理解为 col2row 是按照输入矩阵逐元素起线程;row2col 是按照输出矩阵逐元素起线程。

  1. 每个线程处理 1 个元素:col2rowrow2col 一样,对应你提出的这种情况。我觉得应该是用来做一个小练习。
  2. 每个线程处理 4 个元素:col2row 是从 x 上面顺序读取 4 个元素,转置后,每行一个地写入 y 中;row2col 是竖着读取 4 个元素,顺序写入 y 中

@bear-zd
Copy link
Contributor

bear-zd commented Apr 8, 2025

还有,global void mat_transpose_f32x4_shared_col2row2d_kernel 及以下的函数测试的结果都不正确,是有什么操作不对吗

关于编码虽然当时写的潦草但是基本上确实是前面的人提到的思路。
至于测试结果错误的问题,我目前在3090设备上进行测试好像还是没有问题,但是这个问题可能和设备有关,麻烦你提供更加详细的信息或者尝试调整一下M、N的取值范围。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants