Giter Club home page Giter Club logo

Comments (13)

cnpetra avatar cnpetra commented on July 30, 2024 3

it is on my todo list but I am a bit short-handed momentarily. I will keep you posted. Thanks for the interest.

from hiop.

pelesh avatar pelesh commented on July 30, 2024 2

@nychiang, as far as I know we used a combination of clang C++ and gcc Fortran compilers to build HiOp with Fortran interface. My understanding is that ROCm bitcode library is specific to the clang intermediate representation and won't work with gcc. If flang is available and mature enough, one should go with that instead of combining different compilers imho.

@ashermancinelli, please chime in.

from hiop.

cnpetra avatar cnpetra commented on July 30, 2024 1

open :)

from hiop.

nychiang avatar nychiang commented on July 30, 2024 1

The following Fortran examples are given:
For sparse linear system:
https://github.com/LLNL/hiop/blob/develop/src/Drivers/Sparse/NlpSparseExHS071.f
https://github.com/LLNL/hiop/blob/develop/src/Drivers/Sparse/NlpSparseFEx1.f
For dense linear system:
https://github.com/LLNL/hiop/blob/develop/src/Drivers/Dense/NlpDenseConsFEx1.f

from hiop.

ashermancinelli avatar ashermancinelli commented on July 30, 2024

What is the status of this issue?

from hiop.

cnpetra avatar cnpetra commented on July 30, 2024

@nychiang : how stage is the Fortran interface?

from hiop.

nychiang avatar nychiang commented on July 30, 2024

On the platform with AMD GPU, some compiling error happened when HIOP_BUILD_SHARED is set to ON.
The error message is
/opt/rocm-4.5.0/amdgcn/bitcode/hip.bc: file not recognized: file format not recognized

This error prevents HiOp creating all the fortran related examples.

from hiop.

nychiang avatar nychiang commented on July 30, 2024

More details:
When Cmake links libraries from hip toolchain, e.g.,
target_link_libraries(hiop_hip INTERFACE hip::device Magma) (Asher's approach)
or
target_link_libraries(hiop_hip INTERFACE hip::hiprand roc::rocrand hip::hipfft roc::hipblas roc::rocblas hip::hipcub roc::rocprim_hip Magma ) (my modification due to the usage of hiprand),
the new ROCm bitcode library /opt/rocm-4.5.0/amdgcn/bitcode/hip.bc needs to be linked.
However, it seems that the fortran compiler ftn doesnโ€™t recognize this format and hence we received this error.

A quick solution is that we use flang as the fortran compiler, since this bitcode is build by clang and several llvm development tools (https://github.com/RadeonOpenCompute/ROCm-Device-Libs).
Without any change to the existing hiop files, but just setting cmake flag -DCMAKE_Fortran_COMPILER=/opt/rocm-4.5.0/bin/amdflang, all the unit tests work fine as well as the fortran examples.

@pelesh @cameronrutherford have you ever got similar problem like this? Can we use ftn with bitcode library? (hard to find relevant discussions on google)

@cnpetra

from hiop.

cnpetra avatar cnpetra commented on July 30, 2024

@nychiang, as far as I know we used a combination of clang C++ and gcc Fortran compilers to build HiOp with Fortran interface. My understanding is that ROCm bitcode library is specific to the clang intermediate representation and won't work with gcc. If flang is available and mature enough, one should go with that instead of combining different compilers imho.

@ashermancinelli, please chime in.

PR #514 adds a partial fix and allows using flang compiler on the problematic AMD/ROCm machine. Some investigation is needed to figure out use of gfortran. Nvidia/CUDA machines work fine with generic Fortran compilers.

from hiop.

jacobwilliams avatar jacobwilliams commented on July 30, 2024

This is great! But can the examples be written in modern Fortran? I don't think there is any reason to use the F77 format nowadays. Do you need some assistance with doing that?

from hiop.

jacobwilliams avatar jacobwilliams commented on July 30, 2024

This is what I have in mind: https://github.com/jacobwilliams/hiop/blob/modern-fortran/src/Drivers/Dense/NlpDenseConsFEx1.f90

from hiop.

cnpetra avatar cnpetra commented on July 30, 2024

This is what I have in mind: https://github.com/jacobwilliams/hiop/blob/modern-fortran/src/Drivers/Dense/NlpDenseConsFEx1.f90

We would be supportive of also using more recent Fortran for examples. Please feel free to take a shot and PR, our experience with Fortran is limited.

In the meanwhile I suggest we close this issue and open an issue re: examples in modern Fortran.

from hiop.

cnpetra avatar cnpetra commented on July 30, 2024

Will close this and we track the developement of a more modern F examples in isssue #532

from hiop.

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.