Skip to main content

5 posts tagged with "compiler"

View All Tags

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),大家可以在此基础上进行修改。

在 CUDA 环境下安装 HIP

· 9 min read

HIP (Heterogeneous-Compute Interface for Portability) 是 AMD 开发的一款异构计算的接口工具。 HIP 允许只用写一套代码(hip代码), 就可以将程序同时在 NVIDIA GPU 和 AMD GPU 及 DCU 上编译运行。

HIP is a C++ Runtime API and Kernel Language that allows developers to create portable applications for AMD and NVIDIA GPUs from single source code.

HIP 的 API 和 CUDA 的API十分类似,例如 CUDA 中内存拷贝用cuMemory, 在 hip 中用hipMemcpy,且参数也十分一致。 因此,会 CUDA 的开发者可以很轻松地转移到 hip 上。 并且,hip 还提供了hipfy 工具,将 CUDA 代码转换为 hip 代码。
HIP 在不降低性能的前提下,统一了CUDA API 和AMD GPU 编程API,可谓极大地降低了各个平台的适配与移植工作, 做到了一套代码,在多个异构平台上运行。 可以说, "舍弃 CUDA,进入HIP时代"。

那么,在 NV GPU下,如何安装并使用 hip 呢?