saiislam wrote:

> > > I don't think we want to support this. `-march` was the wrong option to 
> > > use in the first place, and upstream LLVM never supported specifying 
> > > multiple device images with `-march` so there isn't a legacy argument in 
> > > trunk. However, AOMP did support this and if it's deemed too disruptive 
> > > to request users move to `--offload-arch=a,b,c` then we can carry that 
> > > change in the fork.
> > > > It will fix tests like: 
> > > > [targetid_multi_image](https://github.com/ROCm/aomp/tree/aomp-dev/test/smoke/targetid_multi_image)
> > > 
> > > 
> > > I think the easier way to fix this is to update the Makefile.
> > 
> > 
> > Irrespective of what AOMP does, I think it makes sense to ensure parity 
> > between the two ways of specifying architecture. People have been 
> > historically using `-Xopenmp-target -march` style, and using the same for 
> > multiple architectures seems to be the most obvious choice. Isn't it quite 
> > confusing to tell the users that they can use `offload-arch` style for 
> > single as well as multiple archs, but can use `-march` style only for 
> > single arch?
> 
> `-march` was the wrong option to use for this from the beginning. It's 
> supposed to be an overriding option and it shouldn't be overloaded to mean 
> something different here. In LLVM / trunk we never supported multiple 
> architectures with the `-march` option so I don't see any reason to start 
> now. `--offload-arch=` is a complete replacement for this behavior and I 
> consider the single `-march` option to be legacy. Even within this it's 
> divergent because HIP / OpenCL / AMDGPU use `-mcpu` but the OpenMP toolchain 
> ignored that and uses `-march=`.
> 
> Using `--offload-arch=` is a direct replacement for `-march` in all 
> use-cases. It's also easier to use and interoperable with CUDA. I would just 
> change the test, you can replace every use of `-march` with `--offload-arch` 
> and it will work. See the following.
> 
> ```
> > clang input.c -fopenmp 
> > -fopenmp-targets=amdgcn-amd-amdhsa,nvptx64-nvidia-cuda \
>   -Xopenmp-target=amdgcn-amd-amdhsa --offload-arch=gfx1030 \
>   -Xopenmp-target=amdgcn-amd-amdhsa --offload-arch=gfx90a \
>   -Xopenmp-target=nvptx64-nvidia-cuda --offload-arch=sm_89 
> > llvm-objdump --offloading a.out
>                                                                               
>       
> a.out:        file format elf64-x86-64
> 
> OFFLOADING IMAGE [0]:
> kind            elf
> arch            sm_89
> triple          nvptx64-nvidia-cuda
> producer        openmp
> 
> OFFLOADING IMAGE [1]:
> kind            elf
> arch            gfx90a
> triple          amdgcn-amd-amdhsa
> producer        openmp
> 
> OFFLOADING IMAGE [2]:
> kind            elf
> arch            gfx1030
> triple          amdgcn-amd-amdhsa
> producer        openmp
> ```

If `-march` is the wrong option then let's start deprecating it and remove it 
altogether in the next llvm release. But, as long as it is here, it should be 
equivalent to `--offload-arch`.

https://github.com/llvm/llvm-project/pull/92290
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to