Code Monkey home page Code Monkey logo

Comments (6)

yangkex avatar yangkex commented on August 18, 2024 1

若您在CUDA编程中做了padding、使用了threadIdx.x、threadIdx.y等来计算address,编译器会对应转换成一维形式的地址,硬件上也是按照此接口来的。 “承影”目前没有配套的编译器工具链,所以如果您想在其上测试自己的程序,只能在rvv汇编程序里手动完成该过程。address的计算可以参考我们的一些示例程序,通过csrrs+vid.v的方式取得。

好的,谢谢。 想请教一下你们后续的技术路线,假如准备增加编译器的支持,那么高层次代码是写成vector风格(并增加自动向量化的支持以映射到底层rvv汇编)、还是CUDA风格呢?

我们今日进行了第一次开发者活动,目前考虑是优先支持OpenCL。

from ventus-gpgpu.

yangkex avatar yangkex commented on August 18, 2024 1

blockIdx和threadIdx在硬件上都是一维的,可以通过CUDA中的三维坐标乘以blockDim等来计算出其一维的Idx 至于具体的一维Idx在我们的代码中:

  • class host2CTA_data是host向GPGPU发送的任务,以block为单位,其blockIdx是host_wg_id
  • class CTAreqData是CTA_scheduler将任务按warp拆分后发送到SM上的,此时threadIdx的基值为dispatch2cu_wf_tag_dispatch,还需要在汇编中加上vid.v指令返回的值才能得到threadIdx

谢谢。我再追问一下:举一个二维的例子,如下图所示,假设在一个block内,我逻辑上划分好了二维的thread。 image

但我实际的数据行与行之间存在padding,并不是完全连续的。那此时其实是需要同时用到 threadIdx.x、threadIdx.y。 即:address = base_address + threadIdx.y * stride + threadIdx.x image

那么是否应该分离地把 threadIdx.x、threadIdx.y 告诉硬件、而不是把它们计算成一维再告诉硬件呢? 还是说有其他方法处理这种情况?

我们之前的方案里是编译器计算好后直接传递threadIdx,期望能在此层次上进行一些简化,但按照PTX(和SASS)的做法是x y z均有各自的Special Register,OpenCL中也有get_global_id()获取各维度坐标和大小。
分离地把threadIdx.x、threadIdx.y告诉硬件,再由软件计算,应该是个对编译器实现更友好的方案。感谢您的提议!

from ventus-gpgpu.

yangkex avatar yangkex commented on August 18, 2024

blockIdx和threadIdx在硬件上都是一维的,可以通过CUDA中的三维坐标乘以blockDim等来计算出其一维的Idx
至于具体的一维Idx在我们的代码中:

  • class host2CTA_data是host向GPGPU发送的任务,以block为单位,其blockIdx是host_wg_id
  • class CTAreqData是CTA_scheduler将任务按warp拆分后发送到SM上的,此时threadIdx的基值为dispatch2cu_wf_tag_dispatch,还需要在汇编中加上vid.v指令返回的值才能得到threadIdx

from ventus-gpgpu.

kaitoukito avatar kaitoukito commented on August 18, 2024

blockIdx和threadIdx在硬件上都是一维的,可以通过CUDA中的三维坐标乘以blockDim等来计算出其一维的Idx 至于具体的一维Idx在我们的代码中:

  • class host2CTA_data是host向GPGPU发送的任务,以block为单位,其blockIdx是host_wg_id
  • class CTAreqData是CTA_scheduler将任务按warp拆分后发送到SM上的,此时threadIdx的基值为dispatch2cu_wf_tag_dispatch,还需要在汇编中加上vid.v指令返回的值才能得到threadIdx

谢谢。我再追问一下:举一个二维的例子,如下图所示,假设在一个block内,我逻辑上划分好了二维的thread。
image

但我实际的数据行与行之间存在padding,并不是完全连续的。那此时其实是需要同时用到 threadIdx.x、threadIdx.y。
即:address = base_address + threadIdx.y * stride + threadIdx.x
image

那么是否应该分离地把 threadIdx.x、threadIdx.y 告诉硬件、而不是把它们计算成一维再告诉硬件呢?
还是说有其他方法处理这种情况?

from ventus-gpgpu.

yangkex avatar yangkex commented on August 18, 2024

若您在CUDA编程中做了padding、使用了threadIdx.x、threadIdx.y等来计算address,编译器会对应转换成一维形式的地址,硬件上也是按照此接口来的。
“承影”目前没有配套的编译器工具链,所以如果您想在其上测试自己的程序,只能在rvv汇编程序里手动完成该过程。address的计算可以参考我们的一些示例程序,通过csrrs+vid.v的方式取得。

from ventus-gpgpu.

kaitoukito avatar kaitoukito commented on August 18, 2024

若您在CUDA编程中做了padding、使用了threadIdx.x、threadIdx.y等来计算address,编译器会对应转换成一维形式的地址,硬件上也是按照此接口来的。 “承影”目前没有配套的编译器工具链,所以如果您想在其上测试自己的程序,只能在rvv汇编程序里手动完成该过程。address的计算可以参考我们的一些示例程序,通过csrrs+vid.v的方式取得。

好的,谢谢。
想请教一下你们后续的技术路线,假如准备增加编译器的支持,那么高层次代码是写成vector风格(并增加自动向量化的支持以映射到底层rvv汇编)、还是CUDA风格呢?

from ventus-gpgpu.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.