Skip to content
Snippets Groups Projects

Implement separate Fortran and C++ Drivers.

Merged Joerg Behrens requested to merge fb-impl-fortran-driver into main
11 files
+ 524
80
Compare changes
  • Side-by-side
  • Inline
Files
11
+ 33
2
cmake_minimum_required(VERSION 3.20)
project(demo LANGUAGES CXX VERSION 0.0.1)
project(demo LANGUAGES CXX Fortran VERSION 0.0.1)
include(FetchContent)
@@ -30,15 +30,42 @@ elseif("${MU_ARCH}" STREQUAL "a100")
set(Kokkos_ENABLE_SERIAL ON CACHE BOOL "" FORCE)
set(Kokkos_ENABLE_CUDA ON CACHE BOOL "" FORCE)
set(Kokkos_ARCH_AMPERE80 ON CACHE BOOL "" FORCE)
elseif("${MU_ARCH}" STREQUAL "mi250x")
set(Kokkos_ENABLE_SERIAL ON CACHE BOOL "" FORCE)
set(Kokkos_ENABLE_HIP ON CACHE BOOL "" FORCE)
set(Kokkos_ARCH_AMD_GFX90A ON CACHE BOOL "" FORCE)
else()
message(FATAL_ERROR "${MU_ARCH} is not a valid/tested configuration, select architecture, x86_64, a100, h100, mi250x, mi300a(-unified), h100(-unified)")
endif()
FetchContent_MakeAvailable(kokkos)
add_executable(demo main.cpp)
add_executable(demo cdriver.cpp main.cpp)
target_link_libraries(demo PUBLIC Kokkos::kokkos)
set_source_files_properties(
fdriver.f90
PROPERTIES Fortran_PREPROCESS ON
)
if (Kokkos_ENABLE_CUDA OR Kokkos_ENABLE_HIP)
set(WITH_OPENACC_FORTRAN 1)
else()
set(WITH_OPENACC_FORTRAN 0)
endif()
add_executable(fdemo fdriver.f90 main.cpp)
target_link_libraries(fdemo PUBLIC Kokkos::kokkos)
if (WITH_OPENACC_FORTRAN)
#find_package(OpenACC REQUIRED OpenACC_Fortran)
find_package(OpenACC)
if (NOT ${OpenACC_Fortran_FOUND})
message(FATAL_ERROR "OpenACC_Fortran_FOUND=${OpenACC_Fortran_FOUND}")
endif()
target_link_libraries(fdemo PUBLIC OpenACC::OpenACC_Fortran )
endif()
set_property(TARGET fdemo PROPERTY LINKER_LANGUAGE Fortran)
if ("${MU_ARCH}" STREQUAL "a100")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -acc -Minfo=accel -gpu=cc80")
add_compile_definitions(DEMO_DEVICE)
@@ -46,3 +73,7 @@ if ("${MU_ARCH}" STREQUAL "a100")
target_link_options(demo PUBLIC "-gpu=pinned")
endif()
if ("${MU_ARCH}" STREQUAL "mi250x")
add_compile_definitions(DEMO_DEVICE)
endif()
Loading