Giter VIP home page Giter VIP logo

Comments (6)

illuhad avatar illuhad commented on June 10, 2024

syclcc.json likely needs to customizable by every user, from /etc/hipSYCL to ~/.hipSYCL/

Why? syclcc.json only provides defaults for the compiler toolchain configuration. Why would users have to modify that? If they want to add additional backends or similar, they will need to rebuild AdaptiveCpp anyway.

ex/ HIP is not found at the prefix is /opt/ROCm/.. is its /usr

There is a cmake variable to change the ROCm path.

no rpath usage

This was already discussed. I believe most of the rpath usage we do is in compliance with Fedora guidelines as internal libraries. #1014 (comment)

lib -> lib64

Why not just install AdaptiveCpp to /opt/AdaptiveCpp? This is far better tested, and you will have a much easier time with this.

EDIT: Instead of a single monolithic package, IMHO A better way to package it is to split it up into a core package, and optional backend-specific packages which provide support for particular backends.. This allows containing backend-specific dependencies like CUDA or ROCm to the backend packages that actually need them. Users can then install the components they actually need for their system.
This works because backend plugins are discovered at runtime. When building, currently you'd need a full build with everything enabled, and then only include those files in the package that are neded for that component.

from adaptivecpp.

trixirt avatar trixirt commented on June 10, 2024

A user specific config may be necessary because the user may not be using the default compiler or some other knob syclcc.json controls. A user will not have write access to /etc and if they did would interfere with other users use of the shared file.

Why not /opt/AdaptiveCpp is same as why not /opt/ROCm ?
We have moved ROCm from /opt/ROCm to well known system locations /usr/include, /usr/lib64 etc.
This allows other packages and users to not have to know a per-package install location.
I expect the same to be required for AdaptiveCpp and there will be similar testing issues.

Splitting the package into subpackages is the likely path.
Because ROCm is in Fedora we can build against it and it will be a backend.
CUDA is not in Fedora so we can not build against it so will not be a backend.

from adaptivecpp.

illuhad avatar illuhad commented on June 10, 2024

A user specific config may be necessary because the user may not be using the default compiler or some other knob syclcc.json controls

I'm not sure this makes sense. syclcc.json contains a lot of internal stuff. Its main purpose is to relay information from cmake build time to acpp. The vast majority of our compilation flows are clang-based, and use additional clang/LLVM passes. You cannot just change the underlying clang as you likely would have to rebuild AdaptiveCpp due to ABI incompatibility between various LLVM versions.
If you want to change something about the configuration, I think you can already do this. Almost everything that is in syclcc.json can be overriden using environment variables or compiler flags. If a user really knows what they are doing (most will not) they can already just set some environment variables and put that into their shell configuration or similar. Or just pass the appropriate flag to acpp. There is no user-relevant knob that can only be controlled via syclcc.json.

Splitting the package into subpackages is the likely path.
Because ROCm is in Fedora we can build against it and it will be a backend.
CUDA is not in Fedora so we can not build against it so will not be a backend.

There is a lot of software with CUDA support. How does Fedora handle this dependency for other software?

from adaptivecpp.

trixirt avatar trixirt commented on June 10, 2024

CUDA is not open source, it can not be packaged, so it can not be used to build other packages. This will not prevent an user from building their own.

Because ROCm is packaged on Fedora, we can use it to build other packages, like yours. The ROCm we build against is Fedora's ROCm, not AMD's. So the install location for ROCm is the standard unix locations /usr not the /opt/ROCm location.

I would like to have an adaptivecpp-rocm package as part of Fedora, but it will have to install to the expected, for fedora, standard locations. As ROCm is being added to other distros, I would expect the other distros would also want to package adaptivecpp and would need it conform to their standard locations.

from adaptivecpp.

illuhad avatar illuhad commented on June 10, 2024

I'm open to making the lib-prefix configurable, but I'm not yet convinced of the need for the other changes you have proposed. E.g. as I said, all our rpath usage is for internal libraries.

from adaptivecpp.

al42and avatar al42and commented on June 10, 2024

CMake's GNUInstallDirs module seems to be a good solution here, but the acpp wrapper would also need to be modified to use the correct path for libraries (and, optionally, includes). Would it be acceptable to make it CMake-generatable (i.e., acpp.py.in + file(CONFIGURE ...))?

from adaptivecpp.

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.