Conversation
|
@sbalint98 Thanks for the PR. Here are a few general comments before reviewing the PR in detail.
|
andrewtbarker
left a comment
There was a problem hiding this comment.
I'm looking forward to seeing this capability added!
|
Hi, thank you for the quick feedback @mmeterel and @andrewtbarker !
Formatted, and checked.
This seems to be a rocm issue I opened ROCm/ROCm#1625 , hipSYCL just uses the rocm interface that does not seem to work on the test system.
Yes I agree
I'll look into this I will ping you in the next 1-2 days when I am finished with the changes to the README. |
|
@sbalint98 Could you please comment on the minimum ROCm version and the hardware support needed for ROCm support in general with hipSYCL? For example, do we need ROCm 4.5? Can we use Vega RX, or do we absolutely need MI100? |
I tested this PR with rocm 4.5 exclusively but in my opinion, it should work with rocm+rocblas 4.2 and above. In terms of the version of rocBLAS the presence of the
In terms of hipSYCL rocm backend hardware support, all cards supported by rocm are available under hipSYCL as well. see here . Pinging @illuhad for more details if needed.
I think Vega cards are sufficient for hipSYCL. We are also using a FirePro card for some of our testings. Pinging @illuhad for more details |
|
FWIW: hipSYCL/hipSYCL-rocm 0.9.0 (can't remember which version of ROCm was included) worked for me back in April. Vega RX and MI-50 were supported. |
That's right, there's nothing special in hipSYCL that would restrict hardware support - it should "just work" on all devices supported by ROCm. Naturally, we can only test on a selection of GPUs due to not having all conceivable ROCm GPUs available. We mainly test on Radeon VII, Radeon Pro VII workstation cards and MI50 and MI100 data center cards. The main limiting factor for oneMKL is the availability of some functionality in earlier rocBLAS versions as @sbalint98 points out. |
This is the case with some clang versions (I think clang 12), because not all changes required for ROCm 4.2+ support had reached upstream clang by that point. When building hipSYCL against newer clang versions, those might work without coming from the ROCm release. |
|
@sbalint98 @illuhad Thank you for your responses. One more question :) Is there a specific linux kernel we need? |
|
I think the answer is similar to the hardware support one. We are supposed to be supporting everything that rocm supports as well :https://rocmdocs.amd.com/en/latest/Installation_Guide/Installation-Guide.html#prerequisites |
|
@illuhad Can you have a look at the changes to the README? |
96f8fe2 to
afb5234
Compare
|
@mmeterel test_helper.hpp includes oneapi/mkl.hpp that in turn includes types.hpp. However, let me update this solution. Defining half conflicts with rocrand.h since half is also defined there. I also noticed that in the rocblas backend I use |
|
@mmeterel, I added the fix |
babfb80 to
f4a5fb3
Compare
mmeterel
left a comment
There was a problem hiding this comment.
Thanks for the PR:
General comments:
- Please review the entire PR for copyright banner
- Please review the entire PR for std::vector usage instead of cl::sycl::vector_class
- Please review entire PR for wrong "CUDA" usage.
- Please use rocBLAS instead of rocblas as appropriate, except file names.
- Please add rocBLAS to the top table in README.
- Please provide test results for mklcpu and netlib backends.
|
Results of the mklCPU and netlib backend tests: |
mmeterel
left a comment
There was a problem hiding this comment.
Added some more reviews, questions. A few notes:
- Please apply clang-format to all edited files. I see some of them are not formatted.
- Please rebase to take latest merges.
- I will run CI again after the changes.
|
@mkrainiuk Could you please review this PR? Especially for the changes in Copyright banner, build process and README? I provided feedback on README as much as possible (it is WIP) |
875e1d6 to
d58f126
Compare
mkrainiuk
left a comment
There was a problem hiding this comment.
Thanks for the PR, adding several comments for README.
Thanks for confirming. |
|
@sbalint98 Could you please resolve conflicts? |
821860d to
9fedd47
Compare
|
Sure, rebased onto develop |
mmeterel
left a comment
There was a problem hiding this comment.
@sbalint98 Thanks a lot for your efforts in adding hipSYCL compiler support and enabling rocBLAS backend for AMD GPUs.
Co-authored-by: Mesut Meterelliyoz <mesut.meterelliyoz@intel.com>
Co-authored-by: Maria Kraynyuk <maria.kraynyuk@intel.com>
|
Thanks for your time, helpful comments and contributions @mmeterel @mkrainiuk |
Description
As discussed in #99 with the newly added hipSYCL support oneMKL is able to target AMD GPUs. This PR adds the rocBLAS backend to the BLAS domain. The changes were based on the Cuda backend, and the set of supported BLAS functions matches the functionality of the Cuda backend.
Testing was carried out using rocm 4.5 and rocBLAS 4.5, and hipSYCL built from develop cc794e3, on a system with AMD MI Instinct 100 GPUs.
rocm_tests_out.log