Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

install intel icx open source #1039

Closed

Conversation

rscohn2
Copy link
Contributor

@rscohn2 rscohn2 commented Jun 19, 2023

Download daily build from https://github.com/intel/llvm

It is possible to build from source, but they build, test, and publish a binary every day.

Copy link
Member

@mattgodbolt mattgodbolt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some comments as I looked through things; will see if I can rephrase more simply to use our existing installation types! Thanks!

check_exe: bin/clang++ --version
check_stderr_on_stdout: true
targets:
- name: 2023.0618
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As phrased this will once and once only install 2023.0618. We need to ensure this is tagged as nightly with

if: nightly

somewhere, and we will need to consider how to do the nightly "rotation". There are two choices: either we force: yes or similar (I forget the exact syntax), which will unconditionally re-install "over the top" of the current build (probably ok), or else we need to have a daily_script type: which does the necessary care and feeding of the symlinks we use in other cases.

targets:
- name: 2023.0618
fetch:
- https://github.com/intel/llvm/releases/download/sycl-nightly%2F20230618/dpcpp-compiler.tar.gz dpcpp-compiler.tar.gz
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is sycl the same as C++ here?

- name: 2023.0618
fetch:
- https://github.com/intel/llvm/releases/download/sycl-nightly%2F20230618/dpcpp-compiler.tar.gz dpcpp-compiler.tar.gz
script: &intel-os-install-script |
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This script appears to do nothing the normal installation process does...I think this can be rephrased in terms of a normal install, which would fix the "daily" part too! Will sketch out soemthing!

@mattgodbolt
Copy link
Member

So this diff:

    intel-os-cpp:
      dir: "intel-os-cpp-{name}"
      type: tarballs
      check_exe: bin/clang++ --version
      compression: gz
      untar_dir: dpcpp_compiler
      nightly:
        if: nightly
        type: nightlytarballs
        url: https://github.com/intel/llvm/releases/download/sycl-nightly%2F20230618/dpcpp-compiler.tar.gz
        targets:
          - trunk

is all we need to make it daily download that 20230618 "sycl" install. It will symlink it daily as:

Symlinking intel-os-cpp-trunk-20230619 to /opt/compiler-explorer/intel-os-cpp-trunk

but I'm not sure why there's a 20230618 in there, or a SYCL? Perhaps I'm misunderstanding what this compiler is: should this be a "trunk" still? (or will we have other "trunk"s later for different dated SYCL/non-SYCL things?)

@mattgodbolt
Copy link
Member

(in the example above the 20230619 name part in the intel-os-cpp-trunk-20230619 comes from the day the install ran on, which is confusingly very similar to the sycl-nightly's 20230618 -- is that even required or wanted, now I think about it? It seems like we'd install the same release over and over again.

There doesn't seem to be a latest release on https://github.com/intel/llvm/releases/ - just a named dated branch. We'd have to add new support to somehow script the datetime (and handle when it's not there etc)...but I wonder if we've done this before elsewhere...

@mattgodbolt
Copy link
Member

Doesn't look like it after all: we could try and write some "find latest build" stuff for github specifically if we really needed it though. Seems like something useful...

BUT! https://github.com/intel/llvm/tags I found this and it seems like maybe the https://github.com/intel/llvm/releases/tag/sycl-web%2Fsycl-latest-good might be a good one?

Do you know if this is the appropriate tag to use?

@rscohn2
Copy link
Contributor Author

rscohn2 commented Jun 20, 2023

One approach is to build from sources. It could make a tag from the date and try to check it out and then build it. It has been a while since I built, but it was not hard. It would use a lot more compute resources. If it could not find a tag, it would not build a compiler. It looks like you do this for other compilers. Do you usually have a tag that indicates latest? If you have that, it is fully automated?

Another approach is to use the nightly build. I expect we would have to use github APIs to find the latest release, then get the URL's for the attached assets, and then download/install (that part is in this PR). This would require some work specific to this particular compiler.

I did a simpler variation for nightly build where I hardcode the URL of a specific release, and would have to use PR's to manually update it, similar to what I do for oneapi product releases.

Building from source is probably the right thing to do if it can be fully automated and would work like other compilers you publish. If you let me know how you want to proceed and what would be needed, I can investigate some more.

@rscohn2
Copy link
Contributor Author

rscohn2 commented Jul 2, 2023

Closing. Building from source will allow directly enabling non-intel GPU: #1046

@rscohn2 rscohn2 closed this Jul 2, 2023
@rafbiels
Copy link

rafbiels commented Jul 3, 2023

@rscohn2, I was just made aware that there is work ongoing towards enabling the non-intel GPU support in the nightly builds, but it doesn't seem to work just yet - the libraries are still missing from the tar file. Possibly this will be available in the near future: intel/llvm#9850

@rscohn2
Copy link
Contributor Author

rscohn2 commented Jul 3, 2023

Thanks for letting me know. I will ask James if the nightly build support for other hardware will be something suitable for use beyond their Ci. I will leave the PR closed, the other issue was that this PR required manual updates.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants