{"id":22583497,"url":"https://github.com/uxlfoundation/onemath","last_synced_at":"2025-05-15T01:09:06.434Z","repository":{"id":37092961,"uuid":"245292084","full_name":"uxlfoundation/oneMath","owner":"uxlfoundation","description":"oneAPI Math Library (oneMath)","archived":false,"fork":false,"pushed_at":"2025-05-12T11:14:31.000Z","size":12206,"stargazers_count":674,"open_issues_count":70,"forks_count":169,"subscribers_count":48,"default_branch":"develop","last_synced_at":"2025-05-12T12:28:19.775Z","etag":null,"topics":["api","blas","cpu","cuda","dpcpp","gpu","hpc","intel","math-libraries","oneapi","onemkl","parallel-computing","parallel-programming","performance","rng"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/uxlfoundation.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-03-05T23:55:03.000Z","updated_at":"2025-05-12T11:14:01.000Z","dependencies_parsed_at":"2023-09-26T02:13:24.086Z","dependency_job_id":"33e5825e-e60f-4fab-aba2-9bd5d2392bf3","html_url":"https://github.com/uxlfoundation/oneMath","commit_stats":null,"previous_names":["uxlfoundation/onemath","oneapi-src/onemkl"],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uxlfoundation%2FoneMath","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uxlfoundation%2FoneMath/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uxlfoundation%2FoneMath/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uxlfoundation%2FoneMath/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/uxlfoundation","download_url":"https://codeload.github.com/uxlfoundation/oneMath/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254254042,"owners_count":22039792,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","blas","cpu","cuda","dpcpp","gpu","hpc","intel","math-libraries","oneapi","onemkl","parallel-computing","parallel-programming","performance","rng"],"created_at":"2024-12-08T07:00:47.053Z","updated_at":"2025-05-15T01:09:01.418Z","avatar_url":"https://github.com/uxlfoundation.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg src=\"https://github.com/uxlfoundation/artwork/blob/main/foundation/uxl-foundation-logo-horizontal-color.png\" alt=\"UXL Foundation Logo\" width=\"250\"/\u003e\n\n# oneAPI Math Library (oneMath)\n\noneMath is an open-source implementation of the [oneMath specification](https://oneapi-spec.uxlfoundation.org/specifications/oneapi/latest/elements/onemath/source/). It can work with multiple devices using multiple libraries (backends) underneath. The oneMath project was previously referred to as oneMKL Interfaces.\n\noneMath is part of the [UXL Foundation](http://www.uxlfoundation.org).\n\u003cbr/\u003e\u003cbr/\u003e\n\n\u003ctable\u003e\n    \u003cthead\u003e\n        \u003ctr align=\"center\" \u003e\n            \u003cth\u003eUser Application\u003c/th\u003e\n            \u003cth\u003eoneMath Layer\u003c/th\u003e\n            \u003cth\u003eThird-Party Library\u003c/th\u003e\n            \u003cth\u003eHardware Backend\u003c/th\u003e\n        \u003c/tr\u003e\n    \u003c/thead\u003e\n    \u003ctbody\u003e\n        \u003ctr\u003e\n            \u003ctd rowspan=15 align=\"center\"\u003eoneMath\u003c/td\u003e\n            \u003ctd rowspan=15 align=\"center\"\u003eoneMath selector\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e\u003ca href=\"https://software.intel.com/en-us/oneapi/onemkl\"\u003eIntel(R) oneAPI Math Kernel Library (oneMKL)\u003c/a\u003e\u003c/td\u003e\n            \u003ctd align=\"center\"\u003ex86 CPU, Intel GPU\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003e\u003ca href=\"https://developer.nvidia.com/cublas\"\u003e NVIDIA cuBLAS\u003c/a\u003e\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eNVIDIA GPU\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003e\u003ca href=\"https://developer.nvidia.com/cusolver\"\u003e NVIDIA cuSOLVER\u003c/a\u003e\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eNVIDIA GPU\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003e\u003ca href=\"https://developer.nvidia.com/curand\"\u003e NVIDIA cuRAND\u003c/a\u003e\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eNVIDIA GPU\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003e\u003ca href=\"https://developer.nvidia.com/cufft\"\u003e NVIDIA cuFFT\u003c/a\u003e\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eNVIDIA GPU\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003e\u003ca href=\"https://developer.nvidia.com/cusparse\"\u003e NVIDIA cuSPARSE\u003c/a\u003e\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eNVIDIA GPU\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003e\u003ca href=\"https://www.netlib.org\"\u003e NETLIB LAPACK\u003c/a\u003e \u003c/td\u003e\n            \u003ctd align=\"center\"\u003ex86 and aarch64 CPU\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003e\u003ca href=\"https://www.arm.com/products/development-tools/server-and-hpc/allinea-studio/performance-libraries\"\u003eArm Performance Libraries\u003c/a\u003e\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eaarch64 CPU\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003e\u003ca href=\"https://rocblas.readthedocs.io/en/rocm-4.5.2/\"\u003e AMD rocBLAS\u003c/a\u003e\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eAMD GPU\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/ROCmSoftwarePlatform/rocSOLVER\"\u003e AMD rocSOLVER\u003c/a\u003e\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eAMD GPU\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/ROCmSoftwarePlatform/rocRAND\"\u003e AMD rocRAND\u003c/a\u003e\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eAMD GPU\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/ROCmSoftwarePlatform/rocFFT\"\u003e AMD rocFFT\u003c/a\u003e\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eAMD GPU\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/ROCmSoftwarePlatform/rocSPARSE\"\u003e AMD rocSPARSE\u003c/a\u003e\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eAMD GPU\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/uxlfoundation/generic-sycl-components/tree/main/onemath/sycl/blas\"\u003e generic SYCL BLAS \u003c/a\u003e\u003c/td\u003e\n            \u003ctd align=\"center\"\u003ex86 CPU, Intel GPU, NVIDIA GPU, AMD GPU, Other SYCL devices (unsupported)\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/codeplaysoftware/portFFT\"\u003e portFFT \u003c/a\u003e\u003c/td\u003e\n            \u003ctd align=\"center\"\u003ex86 CPU, Intel GPU, NVIDIA GPU, AMD GPU, Other SYCL devices (unsupported)\u003c/td\u003e\n        \u003c/tr\u003e\n    \u003c/tbody\u003e\n\u003c/table\u003e\n\n\n## Table of Contents\n\n- [Support and Requirements](#support-and-requirements)\n- [Documentation](#documentation)\n- [FAQs](#faqs)\n- [Legal Information](#legal-information)\n\n---\n\n## Support and Requirements\n\n### Supported Usage Models:\n\n#### Host API\n\nThere are two oneMath selector layer implementations:\n\n- **Run-time dispatching**: The application is linked with the oneMath library and the required backend is loaded at run-time based on device vendor (all libraries should be dynamic).\n\n  Example of app.cpp with run-time dispatching:\n  \n  ```cpp\n  #include \"oneapi/math.hpp\"\n  \n  ...\n  cpu_dev = sycl::device(sycl::cpu_selector());\n  gpu_dev = sycl::device(sycl::gpu_selector());\n  \n  sycl::queue cpu_queue(cpu_dev);\n  sycl::queue gpu_queue(gpu_dev);\n  \n  oneapi::math::blas::column_major::gemm(cpu_queue, transA, transB, m, ...);\n  oneapi::math::blas::column_major::gemm(gpu_queue, transA, transB, m, ...);\n  ```\n  How to build an application with run-time dispatching:\n  \n  if OS is Linux, use icpx compiler. If OS is Windows, use icx compiler.\n  Linux example:\n  ```cmd\n  $\u003e icpx -fsycl –I$ONEMATH/include app.cpp\n  $\u003e icpx -fsycl app.o –L$ONEMATH/lib –lonemath\n  ```\n\n- **Compile-time dispatching**: The application uses a templated backend selector API where the template parameters specify the required backends and third-party libraries and the application is linked with the required oneMath backend wrapper libraries (libraries can be static or dynamic).\n\n  Example of app.cpp with compile-time dispatching:\n  \n  ```cpp\n  #include \"oneapi/math.hpp\"\n  \n  ...\n  cpu_dev = sycl::device(sycl::cpu_selector());\n  gpu_dev = sycl::device(sycl::gpu_selector());\n  \n  sycl::queue cpu_queue(cpu_dev);\n  sycl::queue gpu_queue(gpu_dev);\n  \n  oneapi::math::backend_selector\u003coneapi::math::backend::mklcpu\u003e cpu_selector(cpu_queue);\n  \n  oneapi::math::blas::column_major::gemm(cpu_selector, transA, transB, m, ...);\n  oneapi::math::blas::column_major::gemm(oneapi::math::backend_selector\u003coneapi::math::backend::cublas\u003e {gpu_queue}, transA, transB, m, ...);\n  ```\n  How to build an application with compile-time dispatching:\n  \n  ```cmd\n  $\u003e clang++ -fsycl –I$ONEMATH/include app.cpp\n  $\u003e clang++ -fsycl app.o –L$ONEMATH/lib –lonemath_blas_mklcpu –lonemath_blas_cublas\n  ```\n  \n*Refer to [Selecting a Compiler](https://uxlfoundation.github.io/oneMath/selecting_a_compiler.html) for the choice between `icpx/icx` and `clang++` compilers.*\n\n#### Device API\n\nHeader-based and backend-independent Device API can be called within ```sycl kernel``` or work from Host code ([device-rng-usage-model-example](https://spec.oneapi.io/versions/latest/elements/oneMath/source/domains/rng/device_api/device-rng-usage-model.html#id2)). Currently, the following domains support the Device API:\n\n- **RNG**. To use RNG Device API functionality it's required to include ```oneapi/math/rng/device.hpp``` header file.\n\n### Supported Configurations:\n\nSupported domains include: BLAS, LAPACK, RNG, DFT, SPARSE_BLAS\n\nSupported compilers include:\n- [Intel(R) oneAPI DPC++ Compiler](https://software.intel.com/en-us/oneapi/dpc-compiler): Intel proprietary compiler that supports CPUs and Intel GPUs. Intel(R) oneAPI DPC++ Compiler will be referred to as \"Intel DPC++\" in the \"Supported Compiler\" column of the tables below.\n- [oneAPI DPC++ Compiler](https://github.com/intel/llvm): Open source compiler that supports CPUs and Intel, NVIDIA, and AMD GPUs. oneAPI DPC++ Compiler will be referred to as \"Open DPC++\" in the \"Supported Compiler\" column of the tables below.\n- [AdaptiveCpp Compiler](https://github.com/AdaptiveCpp/AdaptiveCpp) (formerly known as hipSYCL): Open source compiler that supports CPUs and Intel, NVIDIA, and AMD GPUs.\u003c/br\u003e**Note**: The source code and some documents in this project still use the previous name hipSYCL during this transition period.\n\n#### Linux*\n\n\u003ctable\u003e\n    \u003cthead\u003e\n        \u003ctr align=\"center\" \u003e\n            \u003cth\u003eDomain\u003c/th\u003e\n            \u003cth\u003eBackend\u003c/th\u003e\n            \u003cth\u003eLibrary\u003c/th\u003e\n            \u003cth\u003eSupported Compiler\u003c/th\u003e\t\t\n            \u003cth\u003eSupported Link Type\u003c/th\u003e\n        \u003c/tr\u003e\n    \u003c/thead\u003e\n    \u003ctbody\u003e\n        \u003ctr\u003e\n            \u003ctd rowspan=12 align=\"center\"\u003eBLAS\u003c/td\u003e\n            \u003ctd rowspan=3 align=\"center\"\u003ex86 CPU\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eIntel(R) oneMKL\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eIntel DPC++\u003c/br\u003eAdaptiveCpp\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eDynamic, Static\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003eNETLIB LAPACK\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eIntel DPC++\u003c/br\u003eOpen DPC++\u003c/br\u003eAdaptiveCpp\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eDynamic, Static\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003egeneric SYCL BLAS\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eIntel DPC++\u003c/br\u003eOpen DPC++\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eDynamic, Static\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd rowspan=2 align=\"center\"\u003eaarch64 CPU\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eArm Performance Libraries\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eOpen DPC++\u003c/br\u003eAdaptiveCpp\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eDynamic, Static\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003eNETLIB LAPACK\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eOpen DPC++\u003c/br\u003eAdaptiveCpp\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eDynamic, Static\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd rowspan=2 align=\"center\"\u003eIntel GPU\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eIntel(R) oneMKL\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eIntel DPC++\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eDynamic, Static\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003egeneric SYCL BLAS\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eIntel DPC++\u003c/br\u003eOpen DPC++\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eDynamic, Static\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd rowspan=2 align=\"center\"\u003eNVIDIA GPU\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eNVIDIA cuBLAS\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eOpen DPC++\u003c/br\u003eAdaptiveCpp\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eDynamic, Static\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003egeneric SYCL BLAS\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eOpen DPC++\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eDynamic, Static\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd rowspan=2 align=\"center\"\u003eAMD GPU\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eAMD rocBLAS\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eOpen DPC++\u003c/br\u003eAdaptiveCpp\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eDynamic, Static\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003egeneric SYCL BLAS\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eOpen DPC++\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eDynamic, Static\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd rowspan=1 align=\"center\"\u003eOther SYCL devices (unsupported)\u003c/td\u003e\n            \u003ctd align=\"center\"\u003egeneric SYCL BLAS\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eIntel DPC++\u003c/br\u003eOpen DPC++\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eDynamic, Static\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd rowspan=5 align=\"center\"\u003eLAPACK\u003c/td\u003e\n            \u003ctd align=\"center\"\u003ex86 CPU\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eIntel(R) oneMKL\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eIntel DPC++\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eDynamic, Static\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003eaarch64 CPU\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eArm Performance Libraries\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eOpen DPC++\u003c/br\u003eAdaptiveCpp\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eDynamic, Static\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003eIntel GPU\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eIntel(R) oneMKL\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eIntel DPC++\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eDynamic, Static\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003eNVIDIA GPU\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eNVIDIA cuSOLVER\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eOpen DPC++\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eDynamic, Static\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003eAMD GPU\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eAMD rocSOLVER\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eOpen DPC++\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eDynamic, Static\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd rowspan=5 align=\"center\"\u003eRNG\u003c/td\u003e\n            \u003ctd align=\"center\"\u003ex86 CPU\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eIntel(R) oneMKL\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eIntel DPC++\u003c/br\u003eAdaptiveCpp\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eDynamic, Static\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003eaarch64 CPU\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eArm Performance Libraries\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eOpen DPC++\u003c/br\u003eAdaptiveCpp\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eDynamic, Static\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003eIntel GPU\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eIntel(R) oneMKL\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eIntel DPC++\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eDynamic, Static\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003eNVIDIA GPU\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eNVIDIA cuRAND\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eOpen DPC++\u003c/br\u003eAdaptiveCpp\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eDynamic, Static\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003eAMD GPU\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eAMD rocRAND\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eOpen DPC++\u003c/br\u003eAdaptiveCpp\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eDynamic, Static\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd rowspan=9 align=\"center\"\u003eDFT\u003c/td\u003e\n            \u003ctd rowspan=2 align=\"center\"\u003ex86 CPU\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eIntel(R) oneMKL\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eIntel DPC++\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eDynamic, Static\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003eportFFT (\u003ca href=\"https://github.com/codeplaysoftware/portFFT#supported-configurations\"\u003elimited API support\u003c/a\u003e)\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eIntel DPC++\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eDynamic, Static\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd rowspan=2 align=\"center\"\u003eIntel GPU\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eIntel(R) oneMKL\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eIntel DPC++\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eDynamic, Static\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003eportFFT (\u003ca href=\"https://github.com/codeplaysoftware/portFFT#supported-configurations\"\u003elimited API support\u003c/a\u003e)\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eIntel DPC++\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eDynamic, Static\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd rowspan=2 align=\"center\"\u003eNVIDIA GPU\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eNVIDIA cuFFT\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eOpen DPC++\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eDynamic, Static\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003eportFFT (\u003ca href=\"https://github.com/codeplaysoftware/portFFT#supported-configurations\"\u003elimited API support\u003c/a\u003e)\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eOpen DPC++\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eDynamic, Static\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd rowspan=2 align=\"center\"\u003eAMD GPU\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eAMD rocFFT\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eOpen DPC++\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eDynamic, Static\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003eportFFT (\u003ca href=\"https://github.com/codeplaysoftware/portFFT#supported-configurations\"\u003elimited API support\u003c/a\u003e)\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eOpen DPC++\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eDynamic, Static\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd rowspan=1 align=\"center\"\u003eOther SYCL devices (unsupported)\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eportFFT\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eOpen DPC++\u003c/br\u003eOpen DPC++\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eDynamic, Static\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd rowspan=4 align=\"center\"\u003eSPARSE_BLAS\u003c/td\u003e\n            \u003ctd align=\"center\"\u003ex86 CPU\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eIntel(R) oneMKL\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eIntel DPC++\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eDynamic, Static\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003eIntel GPU\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eIntel(R) oneMKL\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eIntel DPC++\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eDynamic, Static\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003eNVIDIA GPU\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eNVIDIA cuSPARSE\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eOpen DPC++\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eDynamic, Static\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003eAMD GPU\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eAMD rocSPARSE\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eOpen DPC++\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eDynamic, Static\u003c/td\u003e\n        \u003c/tr\u003e\n    \u003c/tbody\u003e\n\u003c/table\u003e\n\n#### Windows*\n\n\u003ctable\u003e\n    \u003cthead\u003e\n        \u003ctr align=\"center\" \u003e\n            \u003cth\u003eDomain\u003c/th\u003e\n            \u003cth\u003eBackend\u003c/th\u003e\n            \u003cth\u003eLibrary\u003c/th\u003e\n            \u003cth\u003eSupported Compiler\u003c/th\u003e\t\n            \u003cth\u003eSupported Link Type\u003c/th\u003e\n        \u003c/tr\u003e\n    \u003c/thead\u003e\n    \u003ctbody\u003e\n        \u003ctr\u003e\n            \u003ctd rowspan=3 align=\"center\"\u003eBLAS\u003c/td\u003e\n            \u003ctd rowspan=2 align=\"center\"\u003ex86 CPU\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eIntel(R) oneMKL\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eIntel DPC++\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eDynamic, Static\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003eNETLIB LAPACK\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eIntel DPC++\u003c/br\u003eOpen DPC++\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eDynamic, Static\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003eIntel GPU\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eIntel(R) oneMKL\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eIntel DPC++\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eDynamic, Static\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd rowspan=2 align=\"center\"\u003eLAPACK\u003c/td\u003e\n            \u003ctd align=\"center\"\u003ex86 CPU\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eIntel(R) oneMKL\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eIntel DPC++\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eDynamic, Static\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003eIntel GPU\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eIntel(R) oneMKL\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eIntel DPC++\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eDynamic, Static\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd rowspan=2 align=\"center\"\u003eRNG\u003c/td\u003e\n            \u003ctd align=\"center\"\u003ex86 CPU\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eIntel(R) oneMKL\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eIntel DPC++\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eDynamic, Static\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\"\u003eIntel GPU\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eIntel(R) oneMKL\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eIntel DPC++\u003c/td\u003e\n            \u003ctd align=\"center\"\u003eDynamic, Static\u003c/td\u003e\n        \u003c/tr\u003e\n    \u003c/tbody\u003e\n\u003c/table\u003e\n\n---\n\n### Hardware Platform Support\n\n- CPU\n    - Intel Atom(R) Processors\n    - Intel(R) Core(TM) Processor Family\n    - Intel(R) Xeon(R) Processor Family\n    - Arm Neoverse Processor Family (tested on N1, V1, V2)\n- Accelerators\n    - Intel(R) Arc(TM) A-Series Graphics\n    - Intel(R) Data Center GPU Max Series\n    - NVIDIA(R) A100 (Linux* only)\n    - AMD(R) GPUs see [here](https://github.com/RadeonOpenCompute/ROCm#hardware-and-software-support) tested on AMD Vega 20 (gfx906)\n    - Other SYCL devices can be used, but are not supported\n    \n---\n### Supported Operating Systems\n\n#### Linux*\n\nBackend | Supported Operating System\n:--- | :---\nx86 CPU    | Red Hat Enterprise Linux* 9 (RHEL* 9)\naarch64 CPU| Red Hat Enterprise Linux* 9 (RHEL* 9)\nIntel GPU  | Ubuntu 24.04 LTS\nNVIDIA GPU | Ubuntu 22.04 LTS\n\n#### Windows*\n\nBackend | Supported Operating System\n:--- | :---\nx86 CPU   | Microsoft Windows* Server 2022\nIntel GPU | Microsoft Windows* 11\n---\n\n### Software Requirements\n\n**What should I download?**\n\n#### General:\n\u003ctable\u003e\n    \u003cthead\u003e\n        \u003ctr align=\"center\"\u003e\n            \u003cth\u003e Functional Testing \u003c/th\u003e\n            \u003cth\u003e Build Only \u003c/th\u003e\n            \u003cth\u003eDocumentation\u003c/th\u003e\n        \u003c/tr\u003e\n    \u003c/thead\u003e\n    \u003ctbody\u003e\n        \u003ctr\u003e\n            \u003ctd colspan=3 align=center\u003e CMake (version 3.13 or newer) \u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd colspan=3 align=center\u003e Linux* : GNU* GCC 5.1 or higher \u003cbr\u003e Windows* : MSVS* 2017 or MSVS* 2019 (version 16.5 or newer) \u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctr\u003e\n                \u003ctd colspan=3 align=center\u003e Ninja (optional) \u003c/td\u003e\n            \u003c/tr\u003e\n            \u003ctr\u003e\n                \u003ctd\u003e GNU* FORTRAN Compiler \u003c/td\u003e\n                \u003ctd\u003e - \u003c/td\u003e\n                \u003ctd\u003e Sphinx \u003c/td\u003e\n            \u003c/tr\u003e\n            \u003ctr\u003e\n                \u003ctd\u003e NETLIB LAPACK \u003c/td\u003e\n                \u003ctd\u003e - \u003c/td\u003e\n                \u003ctd\u003e - \u003c/td\u003e\n            \u003c/tr\u003e\n        \u003c/tr\u003e\n    \u003c/tbody\u003e\n\u003c/table\u003e\n\n#### Hardware and OS Specific:\n\u003ctable\u003e\n    \u003cthead\u003e\n        \u003ctr align=\"center\"\u003e\n            \u003cth\u003eOperating System\u003c/th\u003e\n            \u003cth\u003eDevice\u003c/th\u003e\n            \u003cth\u003ePackage\u003c/th\u003e\n        \u003c/tr\u003e\n    \u003c/thead\u003e\n    \u003ctbody\u003e\n        \u003ctd rowspan=5\u003e Linux*/Windows* \u003c/td\u003e\n        \u003ctd rowspan=2\u003e x86 CPU \u003c/td\u003e\n        \u003ctd\u003e Intel(R) oneAPI DPC++ Compiler \u003cbr\u003e or \u003cbr\u003e oneAPI DPC++ Compiler \u003c/td\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e Intel(R) oneAPI Math Kernel Library \u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctd rowspan=3\u003e Intel GPU \u003c/td\u003e\n        \u003ctd\u003e Intel(R) oneAPI DPC++ Compiler \u003c/td\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e Intel GPU driver \u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e Intel(R) oneAPI Math Kernel Library \u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctd rowspan=2\u003e Linux* only \u003c/td\u003e\n        \u003ctd\u003e NVIDIA GPU \u003c/td\u003e\n        \u003ctd\u003e oneAPI DPC++ Compiler \u003cbr\u003e or \u003cbr\u003e AdaptiveCpp with CUDA backend and dependencies \u003c/td\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e AMD GPU \u003c/td\u003e\n            \u003ctd\u003e oneAPI DPC++ Compiler \u003cbr\u003e or \u003cbr\u003e AdaptiveCpp with ROCm backend and dependencies \u003c/td\u003e\n        \u003c/tr\u003e\n    \u003c/tbody\u003e\n\u003c/table\u003e\n\n#### Product and Version Information:\n\nProduct | Supported Version | License\n:--- | :--- | :---\n[CMake](https://cmake.org/download/) | 3.13 or higher | [The OSI-approved BSD 3-clause License](https://gitlab.kitware.com/cmake/cmake/raw/master/Copyright.txt)\n[Ninja](https://ninja-build.org/) | 1.10.0 | [Apache License v2.0](https://github.com/ninja-build/ninja/blob/master/COPYING)\n[GNU* FORTRAN Compiler](https://gcc.gnu.org/wiki/GFortran) | 7.4.0 or higher | [GNU General Public License, version 3](https://gcc.gnu.org/onlinedocs/gcc-7.5.0/gfortran/Copying.html)\n[Intel(R) oneAPI DPC++ Compiler](https://software.intel.com/en-us/oneapi/dpc-compiler) | Latest | [End User License Agreement for the Intel(R) Software Development Products](https://software.intel.com/en-us/license/eula-for-intel-software-development-products)\n[AdaptiveCpp](https://github.com/AdaptiveCpp/AdaptiveCpp) | Later than [2cfa530](https://github.com/AdaptiveCpp/AdaptiveCpp/commit/2cfa5303fd88b8f84e539b5bb6ed41e49c6d6118) | [BSD-2-Clause License ](https://github.com/AdaptiveCpp/AdaptiveCpp/blob/develop/LICENSE)\n[oneAPI DPC++ Compiler binary for x86 CPU](https://github.com/intel/llvm/releases) | Daily builds | [Apache License v2](https://github.com/intel/llvm/blob/sycl/sycl/LICENSE.TXT)\n[oneAPI DPC++ Compiler source for NVIDIA and AMD GPUs](https://github.com/intel/llvm) | Daily source releases | [Apache License v2](https://github.com/intel/llvm/blob/sycl/sycl/LICENSE.TXT)\n[Intel(R) oneAPI Math Kernel Library](https://software.intel.com/en-us/oneapi/onemkl) | Latest | [Intel Simplified Software License](https://software.intel.com/en-us/license/intel-simplified-software-license)\n[NVIDIA CUDA SDK](https://developer.nvidia.com/hpc-sdk) | 12.0 | [End User License Agreement](https://docs.nvidia.com/cuda/eula/index.html)\n[AMD rocBLAS](https://github.com/ROCm/rocblas) | 4.5 | [AMD License](https://github.com/ROCm/rocBLAS/blob/develop/LICENSE.md)\n[AMD rocRAND](https://github.com/ROCm/rocRAND) | 5.1.0 | [AMD License](https://github.com/ROCm/rocRAND/blob/develop/LICENSE.txt)\n[AMD rocSOLVER](https://github.com/ROCm/rocSOLVER) | 5.0.0 | [AMD License](https://github.com/ROCm/rocSOLVER/blob/develop/LICENSE.md)\n[AMD rocFFT](https://github.com/ROCm/rocFFT) | rocm-5.4.3 | [AMD License](https://github.com/ROCm/rocFFT/blob/rocm-5.4.3/LICENSE.md)\n[AMD rocSPARSE](https://github.com/ROCm/rocSPARSE) | 3.1.2 | [AMD License](https://github.com/ROCm/rocSPARSE/blob/develop/LICENSE.md)\n[NETLIB LAPACK](https://www.netlib.org/) | [5d4180c](https://github.com/Reference-LAPACK/lapack/commit/5d4180cf8288ae6ad9a771d18793d15bd0c5643c) | [BSD like license](http://www.netlib.org/lapack/LICENSE.txt)\n[Generic SYCL BLAS](https://github.com/uxlfoundation/generic-sycl-components/tree/main/onemath/sycl/blas) | 0.1 | [Apache License v2.0](https://github.com/uxlfoundation/generic-sycl-components/blob/main/LICENSE)\n[portFFT](https://github.com/codeplaysoftware/portFFT) | 0.1 | [Apache License v2.0](https://github.com/codeplaysoftware/portFFT/blob/main/LICENSE)\n[Arm Performance Libraries](https://developer.arm.com/downloads/-/arm-performance-libraries) | 22.0.1 or higher | [EULA](https://developer.arm.com/downloads/-/arm-performance-libraries/eula)\n\n---\n\n## Documentation\n- [Contents](https://uxlfoundation.github.io/oneMath/)\n- [About](https://uxlfoundation.github.io/oneMath/introduction.html)\n- Get Started\n  - [Selecting a Compiler](https://uxlfoundation.github.io/oneMath/selecting_a_compiler.html)\n  - [Building the Project with DPC++](https://uxlfoundation.github.io/oneMath/building_the_project_with_dpcpp.html)\n  - [Building the Project with AdaptiveCpp](https://uxlfoundation.github.io/oneMath/building_the_project_with_adaptivecpp.html)\n- Developer Reference\n  - [oneMath Defined Datatypes](https://uxlfoundation.github.io/oneMath/onemath-datatypes.html)\n  - [Dense Linear Algebra](https://uxlfoundation.github.io/oneMath/domains/dense_linear_algebra.html)\n- [Integrating a Third-Party Library](https://uxlfoundation.github.io/oneMath/create_new_backend.html)\n\n---\n\n## Governance\n\nThe oneMath project is governed by the UXL Foundation and you can get involved in this project in multiple ways. It is possible to join the [Math Special Interest Group (SIG)](https://github.com/uxlfoundation/foundation/tree/main/math) meetings where the group discusses and demonstrates work using this project. Members can also join the Open Source and Specification Working Group meetings.\n\nYou can also join the mailing lists for the [UXL Foundation](https://lists.uxlfoundation.org/g/main/subgroups) to be informed of when meetings are happening and receive the latest information and discussions.\n\n---\n\n## Contributing\n\nYou can contribute to this project and also contribute to [the specification for this project](https://oneapi-spec.uxlfoundation.org/specifications/oneapi/latest/elements/onemath/source/). Please read the [CONTRIBUTING](CONTRIBUTING.md) page for more information. You can also contact oneMath developers and maintainers via [UXL Foundation Slack](https://slack-invite.uxlfoundation.org/) using [#onemath](https://uxlfoundation.slack.com/archives/onemath) channel.\n\n---\n\n## License\n\nDistributed under the Apache license 2.0. See [LICENSE](LICENSE) for more information.\n\n---\n\n## FAQs\n\n### oneMath\n\n**Q: What is the difference between the following items?**\n   - The [oneAPI Specification for oneMath](https://oneapi-spec.uxlfoundation.org/specifications/oneapi/latest/elements/onemath/source/)\n   - The [oneAPI Math Library (oneMath)](https://github.com/uxlfoundation/oneMath) project\n   - The [Intel(R) oneAPI Math Kernel Library (oneMKL)](https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/onemkl.html) Product\n\n**A:**\n- The [oneAPI Specification for oneMath](https://oneapi-spec.uxlfoundation.org/specifications/oneapi/latest/elements/onemath/source/) defines the SYCL interfaces for performance math library functions. The oneMath specification can evolve faster and more frequently than implementations of the specification.\n\n- The [oneAPI Math Library (oneMath)](https://github.com/uxlfoundation/oneMath) project is an open source implementation of the specification. The project goal is to demonstrate how the SYCL interfaces documented in the oneMath specification can be implemented for any math library and work for any target hardware. While the implementation provided here may not yet be the full implementation of the specification, the goal is to build it out over time. We encourage the community to contribute to this project and help to extend support to multiple hardware targets and other math libraries.\n\n- The [Intel(R) oneAPI Math Kernel Library (oneMKL)](https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/onemkl.html) project is an Intel product provided as part of the Intel(R) oneAPI Base Toolkit. It is used for the Intel backends of oneMath. Its C++ API is very similar to the oneMath specification. It is highly optimized for Intel CPU and Intel GPU hardware.\n\n**Q: I'm trying to use oneMath in my project using `FetchContent`**, but I keep running into `ONEMATH::SYCL::SYCL target was not found` problem when I try to build the project. What should I do?\n\n**A:**\nMake sure you set the compiler when you configure your project.\nE.g. `cmake -Bbuild . -DCMAKE_CXX_COMPILER=icpx`.\n\n**Q: I'm trying to use oneMath in my project using `find_package(oneMath)`.** I set oneMath/oneTBB and Compiler environment first, then I built and installed oneMath, and finally I tried to build my project using installed oneMath (e.g. like this `cmake -Bbuild -GNinja -DCMAKE_CXX_COMPILER=icpx -DoneMath_ROOT=\u003cpath_to_installed_oneMath\u003e .`) and I noticed that cmake includes installed oneMath headers as a system include which ends up as a lower priority than the installed Intel(R) oneAPI Math Kernel Library package includes which I set before for building oneMath. As a result, I get conflicts between Intel(R) oneAPI Math Kernel Library and installed oneMath headers. What should I do?\n\n**A:**\nHaving installed oneMath headers as `-I` instead on system includes (as `-isystem`) helps to resolve this problem. We use `INTERFACE_INCLUDE_DIRECTORIES` to add paths to installed oneMath headers (check `oneMathTargets.cmake` in `lib/cmake` to find it). It's a known limitation that `INTERFACE_INCLUDE_DIRECTORIES` puts headers paths as system headers. To avoid that:\n- Option 1: Use CMake \u003e=3.25. In this case oneMath will be built with `EXPORT_NO_SYSTEM` property set to `true` and you won't see the issue.\n- Option 2: If you use CMake \u003c 3.25, set `PROPERTIES NO_SYSTEM_FROM_IMPORTED true` for your target. E.g: `set_target_properties(test PROPERTIES NO_SYSTEM_FROM_IMPORTED true)`.\n\n---\n\n\n#### [Legal information](legal_information.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fuxlfoundation%2Fonemath","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fuxlfoundation%2Fonemath","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fuxlfoundation%2Fonemath/lists"}