Skip to content

Commit 9f57c0e

Browse files
committed
compiling options for CUDA
1 parent c2d8499 commit 9f57c0e

File tree

3 files changed

+59
-7
lines changed

3 files changed

+59
-7
lines changed

CMakeLists.txt

Lines changed: 47 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
cmake_minimum_required(VERSION 3.22)
22
project(Tensorium LANGUAGES C CXX)
33

4-
# ─────────────────────────────── Options ───────────────────────────────
54
option(USE_MPI "Enable MPI support" OFF)
65
option(USE_KNL "Tune for Intel KNL" OFF)
76
option(AVX512 "Enable AVX-512" OFF)
@@ -17,7 +16,6 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
1716

1817
message(STATUS "Detecting architecture...")
1918

20-
# ─────────────────────────────── Architecture detection ───────────────────────────────
2119
if (CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|AMD64")
2220
message(STATUS "→ Building for x86_64 (AVX/AVX2/AVX512 enabled)")
2321
add_compile_definitions(TENSORIUM_X86)
@@ -30,9 +28,55 @@ else()
3028
add_compile_definitions(TENSORIUM_FALLBACK)
3129
endif()
3230

31+
find_package(CUDAToolkit QUIET)
32+
33+
execute_process(
34+
COMMAND bash -c "command -v nvidia-smi >/dev/null && nvidia-smi --query-gpu=name --format=csv,noheader | head -n 1 || echo none"
35+
OUTPUT_VARIABLE GPU_NAME OUTPUT_STRIP_TRAILING_WHITESPACE
36+
)
37+
38+
if (NOT GPU_NAME STREQUAL "none")
39+
message(STATUS "Detected NVIDIA GPU: ${GPU_NAME}")
40+
add_compile_definitions(TENSORIUM_GPU_PRESENT)
41+
else()
42+
message(WARNING "⚠️ Aucun GPU NVIDIA détecté (ou nvidia-smi absent)")
43+
endif()
44+
45+
46+
option(USE_CUDA "Enable CUDA kernels (requires nvcc)" OFF)
47+
48+
if (USE_CUDA)
49+
if (NOT CUDAToolkit_FOUND)
50+
message(FATAL_ERROR "USE_CUDA=ON mais aucun CUDA toolkit détecté ⚠️")
51+
endif()
52+
53+
message(STATUS "CUDA toolkit found at: ${CUDAToolkit_ROOT}")
54+
message(STATUS "→ Version: ${CUDAToolkit_VERSION}")
55+
add_compile_definitions(TENSORIUM_CUDA)
56+
57+
enable_language(CUDA)
58+
set(CMAKE_CUDA_COMPILER "${CUDAToolkit_NVCC_EXECUTABLE}")
59+
message(STATUS "Using NVCC for CUDA compilation: ${CMAKE_CUDA_COMPILER}")
60+
61+
set(CMAKE_CUDA_ARCHITECTURES 61 70 75 80 86 90)
62+
add_compile_definitions(TENSORIUM_CUDA_ARCH=${CMAKE_CUDA_ARCHITECTURES})
63+
64+
set(CMAKE_CUDA_STANDARD 17)
65+
set(CMAKE_CUDA_STANDARD_REQUIRED ON)
66+
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -O3 -Xcompiler=-fPIC")
67+
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} --use_fast_math -lineinfo -Wno-deprecated-gpu-targets")
68+
69+
include_directories(${CUDAToolkit_INCLUDE_DIRS})
70+
link_directories(${CUDAToolkit_LIBRARY_DIR})
71+
72+
message(STATUS "→ CUDA architectures: ${CMAKE_CUDA_ARCHITECTURES}")
73+
74+
else()
75+
message(STATUS "CUDA support disabled (USE_CUDA=OFF)")
76+
add_compile_definitions(TENSORIUM_NO_CUDA)
77+
endif()
3378
include_directories(${CMAKE_SOURCE_DIR}/Includes)
3479

35-
# ─────────────────────────────── CPU optimization flags ───────────────────────────────
3680
if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64" OR CMAKE_SYSTEM_PROCESSOR MATCHES "amd64")
3781
message(STATUS "Configuring for x86_64: enabling AVX2/FMA or AVX512")
3882
set(BASE_FLAGS "-O3 -mtune=native -Wno-ignored-attributes -Rpass-analysis=tensorium-align")
@@ -60,7 +104,6 @@ endif()
60104

61105
message(STATUS "Detected architecture: ${CMAKE_SYSTEM_PROCESSOR}")
62106

63-
# ─────────────────────────────── OpenMP handling ───────────────────────────────
64107
if(APPLE)
65108
if(CMAKE_SYSTEM_PROCESSOR MATCHES "arm64")
66109
message(STATUS "Configuring OpenMP manually for macOS ARM64 (Apple Clang)")
@@ -81,12 +124,10 @@ else()
81124
endif()
82125
endif()
83126

84-
# ─────────────────────────────── Plugins ───────────────────────────────
85127
if(BUILD_PLUGINS)
86128
add_subdirectory(Plugins)
87129
endif()
88130

89-
# ─────────────────────────────── Tests ───────────────────────────────
90131
if(BUILD_TESTS)
91132
add_subdirectory(Tests)
92133
endif()

Tests/Matrix/Matrix.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,7 @@ int matrix_tests() {
294294

295295
tensorium::Vector<double> X(dim);
296296
X(0) = 0.0;
297-
X(1) = 50.0;
297+
X(1) = 10.0;
298298
X(2) = M_PI / 2.0;
299299
X(3) = 0.0;
300300

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#pragma once
2+
3+
#include "../../Core/Tensor.hpp"
4+
#include "../../Core/Vector.hpp"
5+
#include <cassert>
6+
#include <cstddef>
7+
#include <stdexcept>
8+
template <typename T> class BSSNConstraints {
9+
public:
10+
11+
};

0 commit comments

Comments
 (0)