Announcement

Collapse
No announcement yet.

Work Revised On Adding SPIR-V Support To Clover Gallium3D

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Work Revised On Adding SPIR-V Support To Clover Gallium3D

    Phoronix: Work Revised On Adding SPIR-V Support To Clover Gallium3D

    Last May we reported on a Nouveau developer adding SPIR-V support to Gallium3D's OpenCL state tracker. Finally the better part of one year later, Pierre Moreau is ready with the second version of these patches to accept this IR associated with Vulkan / OpenCL 2.1+ within Clover...

    Phoronix, Linux Hardware Reviews, Linux hardware benchmarks, Linux server benchmarks, Linux benchmarking, Desktop Linux, Linux performance, Open Source graphics, Linux How To, Ubuntu benchmarks, Ubuntu hardware, Phoronix Test Suite

  • #2
    While Clover still only officially supports OpenCL 1.2
    Clover officially only supports 1.1 (which is the version advertised when querying either for the platform or device version).

    And yes, I do hope as well that it won’t take another year to get it merged. Most of the year since the RFC was spent on adding things to SPIRV-Tools, as well as improving the SPIR-V consumer.

    Comment


    • #3
      Hey, that's cool as hell. I know Clover was supposed to be the OCL implementation for R600 class hardware so it's good to see that it's still being worked on. I haven't really used Clover too much though although I do have it installed and configured on a HD6850.

      Comment


      • #4
        Originally posted by pmoreau View Post

        Clover officially only supports 1.1 (which is the version advertised when querying either for the platform or device version).

        And yes, I do hope as well that it won’t take another year to get it merged. Most of the year since the RFC was spent on adding things to SPIRV-Tools, as well as improving the SPIR-V consumer.
        Yeah, clover's still at 1.1, and libclc is getting fairly close to supporting the full set of 1.1 functions. There's a few 1.2 functions that are still missing (printf being a big one), but the big thing at this point is fixing up the existing bugs/gaps in both the clover API and implementation so that we can get around to at least supporting platform/language version 1.2. Besides clc functions, there's still a few CTS failures in the clover API that need to be dealt with.

        pmoreau I'll try to take a look at your clover spir-v series. Do you have any easy-to-follow environment-setup / testing steps if I want to follow along while I'm going through the patches? I'll try to give any feedback I run into on the mesa-dev list. I'll probably be trying to test this out on radeonsi, but I can also test it out on R600 or Nouveau (I recently got a second-hand 760 [kepler?] from a friend that he retired, if that would work).

        --Aaron Watry

        Comment


        • #5
          Originally posted by Veerappan View Post

          Yeah, clover's still at 1.1, and libclc is getting fairly close to supporting the full set of 1.1 functions. There's a few 1.2 functions that are still missing (printf being a big one), but the big thing at this point is fixing up the existing bugs/gaps in both the clover API and implementation so that we can get around to at least supporting platform/language version 1.2. Besides clc functions, there's still a few CTS failures in the clover API that need to be dealt with.
          I’ll try to look into some of the issues from the OpenCL bug tracker while continuing to work on the SPIR-V consumer. I should look at the CTS results for the host API part a bit more, rather than just looking at the device tests. Vedran is looking into having a feature file for OpenCL, which would help pin down the missing features for 1.2.

          Originally posted by Veerappan View Post
          pmoreau I'll try to take a look at your clover spir-v series. Do you have any easy-to-follow environment-setup / testing steps if I want to follow along while I'm going through the patches? I'll try to give any feedback I run into on the mesa-dev list. I'll probably be trying to test this out on radeonsi, but I can also test it out on R600 or Nouveau (I recently got a second-hand 760 [kepler?] from a friend that he retired, if that would work).
          Thanks Aaron! The most annoying part of the testing is having to clone the Khronos 3.6.1 fork of LLVM and clang, to generate the SPIR-V; I haven’t got around to using Tomeu’s llvm-spirv yet. But apart from that, I have some instructions here on how to set up everything; there is also a script for cloning and building everything, and generating an “environment” file setting up the PATH and so on. (I have a small repo with OpenCL samples, that can use cl_khr_il_program or the OpenCL 2.1 equivalent, that I use to “unit test” my SPIR-V consumer, if you want to try it on RadeonSI.) Feel free to ping me on IRC if you have any questions (pmoreau, on #dri-devel and #nouveau).

          Comment


          • #6
            Cool work. pmoreau , do you know if this allow you to run ComputeCpp 0.3.0? Or are you blocked lacking event handling?

            Comment


            • #7
              Originally posted by fusionS View Post
              Cool work. pmoreau , do you know if this allow you to run ComputeCpp 0.3.0? Or are you blocked lacking event handling?
              Thanks fusionS! I have been mainly writing some small “unit tests” to test one aspect of OpenCL and check that clover and the SPIR-V consumer work well for those (and that I don’t regress them when changing the code), and running the OpenCL CTS to have some more checking, but I haven’t tried running real applications yet. I’ll have a try at ComputeCpp and see what’s happening, thanks for the idea.

              Comment

              Working...
              X