Skip to main content
genshen
student in CS
View all authors

DCU 上的 Matrix Core 编程(part1)

· 10 min read
genshen
student in CS

预备知识:Matrix Core 简介

英伟达GPU上,Volta架构首次引入 tensor core,可以在一个周期内计算完两个4*4矩阵的乘法,其最广泛的用法就是矩阵乘,因此tensor core硬件受到深度学习研究者的广泛欢迎。

AMD 的GPU,也自 CDNA架构开始引入 Matrix Core,来对标 NVIDIA Tensor Core。 由于功能类似,所以有时候,我们也将 Matrix Core 称为 tensor core,但这两者在编程接口上区别还是比较大的。 DCU 架构的GPU,由于部分采用ROCm生态,其上的 Matrix Core 编程接口和 AMD GPU相近,因此很多 AMD GPU的编程资料可供参考。

Fortran77 编译器对 Logical 的处理

· 5 min read
genshen
student in CS

在Fortran 77 中,可以使用 Logical 类型的变量来表示 .true. 或者 .false.。 实际上,是采用4字节(64位)来存储 Logical。 对于Intel ifort 编译器和 GNU 下的 gfortran 编译器,.true. 的表示会有所不同:

编译器.true..false.
Intel ifort0xFFFFFFFF(全1)0x00000000
GNU gfortran0x000000010x00000000

参考:https://stackoverflow.com/a/61597485

一个用于包装编译器的脚本

· 3 min read
genshen
student in CS

有时候,在调用编译器的时候,我们像移除掉编译器的某些参数(例如这些参数是 cmake 等工具生成的,我们由不好修改cmake的内部机制)。 一种典型的场景是,英伟达的 nvcc 对很多 gcc/clang 的参数都不支持,当使用 nvcc 作为编译器时,需要移除掉一些参数或者进行特殊处理。

这时候,可以考虑用我御用的脚本。 下面的脚本是一个参考,支持移除编译器参数、修改或者添加编译器参数。 这里用的编译器是 hipcc(在英伟达平台上,hipcc 会调用 nvcc,然后 nvcc 调用系统的gcc),大家可以在此基础上进行修改。