[VK] Create pass to legalize int widths for clspv (#2272)
Introduces a new LLVM pass to resolve by legalizing the LLVM IR int widths to those that can be handled by
clspvwhich is only used to seeing those that can be created from OpenCL-C.In particular
sycl::marray<short, 3>is now handled, and its test can be re-enabled. I’ve also verified that previously failing SYCL tests on aarch64 usingsycl::vec<float, 3>andsycl::vec<float,4>now pass with this change.Closes https://github.com/AdaptiveCpp/AdaptiveCpp/issues/2122
版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9
京公网安备 11010802047560号
AdaptiveCpp (formerly known as hipSYCL / Open SYCL)
(Note: Documentation and code may in some places still use the older name hipSYCL / Open SYCL)
AdaptiveCpp is the independent, community-driven modern platform for C++-based heterogeneous programming models targeting CPUs and GPUs from all major vendors. AdaptiveCpp lets applications adapt themselves to all the hardware found in the system. This includes use cases where a single binary needs to be able to target all supported hardware, or utilize hardware from different vendors simultaneously.
It currently supports the following programming models:
AdaptiveCpp supports CPUs (including x86, arm and other LLVM-supported architectures) as well as GPUs from Intel, NVIDIA, AMD, and Apple. This includes the ability to generate a single binary that can offload to all supported devices.
AdaptiveCpp’s compilation flows include
A full list of its compilation capabilities can be found here.
Because a program compiled with AdaptiveCpp appears just like any other program written in vendor-supported programming models (like CUDA or HIP) to vendor-provided software, vendor tools such as profilers or debuggers also work with AdaptiveCpp.
An illustration on how the project fits into the SYCL ecosystem can be found (here).
Performance & benchmarking
See the AdaptiveCpp performance guide.
Installing and using AdaptiveCpp
In order to compile software with AdaptiveCpp, use
acpp.acppcan be used like a regular compiler, i.e. you can useacpp -o test test.cppto compile your application calledtest.cppwith AdaptiveCpp.acppaccepts both command line arguments and environment variables to configure its behavior (e.g., to select the target to compile for). Seeacpp --helpfor a comprehensive list of options.For details and instructions on using AdaptiveCpp in CMake projects, please see the documentation on using AdaptiveCpp.
About the project
Development of AdaptiveCpp is currently primarily led by Heidelberg University, with contributions from a growing community. We see AdaptiveCpp as a community-driven project, in contrast to the many vendor-driven heterogeneous compiler efforts. AdaptiveCpp not only serves as a research platform, but is also a solution used in production on machines of all scales, including some of the most powerful supercomputers.
Getting in touch
Join us on Discord! Alternatively, open a discussion or issue in this repository.
Contributing to AdaptiveCpp
We encourage contributions and are looking forward to your pull request! Please have a look at CONTRIBUTING.md. If you need any guidance, please just open an issue and we will get back to you shortly.
If your institution or organization is considering to support the AdaptiveCpp development in some official capacity, we are always happy to discuss collaborations and to broaden the developer community. Please do reach out :-)
If you are a student at Heidelberg University and wish to work on AdaptiveCpp, please get in touch with us. There are various options possible and we are happy to include you in the project :-)
Citing AdaptiveCpp
AdaptiveCpp is a production platform for heterogeneous computing, but also a research project. As such, if you use AdaptiveCpp in your research, we kindly request that you cite one of the following publications, depending on your focus:
(The latter is a talk and available online. Note that some of the content in this talk is outdated by now)
Acknowledgements
We gratefully acknowledge contributions from the community.
Documentation