diff --git a/CMakeLists.txt b/CMakeLists.txt index c2ecf411..0f94a209 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,7 +22,7 @@ project( # ----------------------------- Setup ----------------------------- set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake") -set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_POSITION_INDEPENDENT_CODE ON) set(CMAKE_INSTALL_MESSAGE NEVER) diff --git a/docs/src/dev/mlx_in_cpp.rst b/docs/src/dev/mlx_in_cpp.rst index af778b33..5143ba0d 100644 --- a/docs/src/dev/mlx_in_cpp.rst +++ b/docs/src/dev/mlx_in_cpp.rst @@ -45,7 +45,7 @@ The next step is to setup a CMake file in ``CMakeLists.txt``: project(example LANGUAGES CXX) - set(CMAKE_CXX_STANDARD 17) + set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) diff --git a/docs/src/install.rst b/docs/src/install.rst index bb7ef1f1..7b448e87 100644 --- a/docs/src/install.rst +++ b/docs/src/install.rst @@ -83,7 +83,7 @@ Build from source Build Requirements ^^^^^^^^^^^^^^^^^^ -- A C++ compiler with C++17 support (e.g. Clang >= 5.0) +- A C++ compiler with C++20 support (e.g. Clang >= 15.0) - `cmake `_ -- version 3.25 or later, and ``make`` - Xcode >= 15.0 and macOS SDK >= 14.0 diff --git a/mlx/backend/cpu/simd/base_simd.h b/mlx/backend/cpu/simd/base_simd.h index 51d078a2..37c3c755 100644 --- a/mlx/backend/cpu/simd/base_simd.h +++ b/mlx/backend/cpu/simd/base_simd.h @@ -1,8 +1,11 @@ #pragma once +// Required for using M_LN2 in MSVC. +#define _USE_MATH_DEFINES + +#include #include #include -#include #include #include diff --git a/mlx/backend/cuda/CMakeLists.txt b/mlx/backend/cuda/CMakeLists.txt index dde2507b..e5894af1 100644 --- a/mlx/backend/cuda/CMakeLists.txt +++ b/mlx/backend/cuda/CMakeLists.txt @@ -126,9 +126,9 @@ endif() target_compile_options( mlx PRIVATE "$<$:--Wno-deprecated-gpu-targets>") -# Suppress nvcc warnings on MLX headers. -target_compile_options(mlx PRIVATE $<$:-Xcudafe - --diag_suppress=997>) +# Suppress nvcc warnings on C++ headers. +target_compile_options( + mlx PRIVATE $<$:-Xcudafe="--diag_suppress=997,20208">) # Use stronger binaries compression. This feature was introduced in CUDA 12.8 # and requires drivers released after CUDA 12.4. diff --git a/mlx/backend/metal/indexing.cpp b/mlx/backend/metal/indexing.cpp index 51a286aa..48311dc6 100644 --- a/mlx/backend/metal/indexing.cpp +++ b/mlx/backend/metal/indexing.cpp @@ -697,8 +697,8 @@ void MaskedScatter::eval_gpu(const std::vector& inputs, array& out) { auto lib = d.get_library(kernel_name, [&]() { std::string source = metal::utils(); source += metal::masked_scatter(); - source += fmt::format( - std::string(masked_assign_kernel), kernel_name, value_type, contiguous); + source += + fmt::format(masked_assign_kernel, kernel_name, value_type, contiguous); return source; }); auto kernel = d.get_kernel(kernel_name, lib); diff --git a/tests/einsum_tests.cpp b/tests/einsum_tests.cpp index 834d533c..42241e1b 100644 --- a/tests/einsum_tests.cpp +++ b/tests/einsum_tests.cpp @@ -5,6 +5,15 @@ using namespace mlx::core; +namespace std { + +// Required to make doctest compile. +ostream& operator<<(ostream& os, const vector>&) { + return os; +} + +} // namespace std + TEST_CASE("test einsum path") { std::vector> expected = {{1, 2}, {0, 1}}; auto path =