207 похожих чатов

Я пишу программу, которая использует CUDA на машине, которая

это поддерживает и не использует на остальных.
CMakeLists.txt:
cmake_minimum_required(VERSION 3.10)

project(libslm LANGUAGES CXX)

set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)

set(CMAKE_VERBOSE_MAKEFILE OFF)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_CXX_FLAGS "-Wall -Wextra -march=native")

if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "Build type" FORCE)
endif()

# CUDA/Thrust configuration
include(CheckLanguage)
check_language(CUDA)
add_compile_definitions(THRUST_HOST_SYSTEM=THRUST_HOST_SYSTEM_OMP)
if(CMAKE_CUDA_COMPILER)
message(STATUS "CUDA support is ON")
enable_language(CUDA)
add_compile_definitions(THRUST_DEVICE_SYSTEM=THRUST_DEVICE_SYSTEM_CUDA)
file(GLOB SRCS "*.cu" "display.cpp")
#set(CMAKE_SHARED_LIBRARY_CUDA_FLAGS "")
#set(CMAKE_SHARED_MODULE_CUDA_FLAGS "")
else()
message(STATUS "CUDA not found")
add_compile_definitions(THRUST_DEVICE_SYSTEM=THRUST_DEVICE_SYSTEM_OMP)
file(GLOB SRCS "*.cpp")

# FFTW
target_link_libraries(libslm PUBLIC fftw3f)
endif()

file(GLOB HDRS "*.h")

add_library(libslm SHARED ${SRCS} ${HDRS})
set_target_properties(libslm PROPERTIES OUTPUT_NAME "slm")
target_include_directories(libslm PRIVATE "..")
target_include_directories(libslm PUBLIC "../../vendor/thrust")

Структура файлов:
amplitude.cpp
amplitude.cu
amplitude.h
CMakeLists.txt
CMakeLists.txt.user
display.cpp
display.h
field_container.h
functors.h
gs_algorithm.cpp
gs_algorithm.cu
gs_algorithm.h
hologram.cpp
hologram.cu
hologram.h
slm.cpp
slm.cu
slm.h
Каждый .cu файл содержит только инклюд соответсвтующего .cpp файла (костыль, чтобы они комплиилилсь через nvcc, если есть способы умнее, то мне интересно)

Так вот, при сборке в nvcc почему-то попадает флаг -fPIC, который для него не определен, из-за чего компилятор падет с ошибкой.

Я посмотрел, этот флаг почему-то добавляется в CUDA_FLAGS в flags.make.
Вопрос 1: какая скотина добавляет этот флаг?
Вопрос 2: что я делаю не так?

4 ответов

20 просмотров

не совсем про то что спрашиваешь. про c++ by nvcc можно как-то так попробовать https://stackoverflow.com/questions/58861467/how-to-compile-c-as-cuda-using-cmake

-fPIC похож на "стандартный" флаг для шаредной либы

Eugene- Автор вопроса
Maxim Elchugin
-fPIC похож на "стандартный" флаг для шаредной либ...

А его может добавлять факт добавления либы? Всм, у меня там подключаются Qt, fftw и прочее. Оно может влиять?

Похожие вопросы

Обсуждают сегодня

У меня это всегда вопрос вызывало.. Нафига писать код так, чтобы потом ошибки вылавливать?
Nik
44
всем привет. реально ли понять чем в процессе занята память? delphi/linux, процесс свой
Handatros
12
что за асемблер кста?
Shvabrikk Nya
19
Добрый день! Пробую отловить исключение EConvertError: function _TryTextToDouble(var DoubleVar: Extended; Text: String): Boolean; begin try DoubleVar := StrToFloat...
Kirill Filippenok
19
А где @Grinyaha уважаемый пропал?
Am Ambrion
14
This automated cryptocurrency trading system uses intelligent algorithms to buy low and sell high on leading crypto exchanges. Many users have already enjoyed significant prof...
Endu Wako
1
Доброе утро, а кто то делал Google аналитику через php ? curl_setopt($ch, CURLOPT_NOSIGNAL, true); Это должно быть async без ожидания ответа. Вообще php нормально с таким с...
Max Dubovsky
6
Сделал краткий обзор магазина из статьи и заодно там же записал инструкцию по развёртыванию. https://www.youtube.com/watch?v=8-sE1vNk95Q (чё думаете по звуку? кое-что поменял...
Andrey K
17
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Привет, коллеги! Возникла задача ограничить максимальный размер вложений для определённых расширений, например, чтобы для изображений лимит был 10 МБ, а для видео — 100 МБ. Ог...
Andro
1
Карта сайта