Я новичок в создании библиотеки и пытаюсь использовать ее в своем проекте. Вот очень простой пример кода. Он может быть скомпилирован без каких-либо проблем. Однако, когда я пытаюсь запустить его, он дает мне ошибку:Проблемы с CMakeLists: ошибка bad_alloc при вызове resize() on thrust :: device_vector
terminate called after throwing an instance of 'thrust::system::detail::bad_alloc'
what(): std::bad_alloc: unknown error
наряду с предупреждением:
nvlink warning : SM Arch ('sm_20') not found in ...
Проект может быть воспроизведена с помощью следующих двух файлов.
test.cpp
#include <thrust/device_vector.h>
int main(){
thrust::device_vector<int> x;
x.resize(10);
}
CMakeLists.txt
cmake_minimum_required(VERSION 2.8.9)
project(test_project)
find_package(CUDA QUIET REQUIRED)
list(APPEND CUDA_NVCC_FLAGS "-std=c++11;-arch=compute_52")
set(CUDA_SEPARABLE_COMPILATION ON)
cuda_add_executable("cuda_test" "test.cu")
После некоторого тестирования, то очевидно, что если линия "установлена (CUDA_SEPARABLE_COMPILATION ON)" удаляется, программа работает без проблем , Но мне действительно нужна отдельная компиляция, активированная для моего проекта.
Любая помощь или подсказка будут оценены.
UPDATE:
Запрошено @RobertCrovella, вот еще некоторая информация о.
Версия CUDA - 7.5, которая установлена на UBUNTU 14.04 с GTX980. После этого я не обновлял библиотеку Thrust.
Ниже приведена фактическая команда, созданная cmake, с помощью команды «make VERBOSE = 1».
CMake script with separable compilation
CMake script without separable compilation
ОБНОВЛЕНИЕ 2:
Та же ошибка подтверждается @merelyMark. Поскольку и код, и файл CMakeLists чрезвычайно просты, возможно ли, что это ошибка в Thrust/CUDA? [EDIT] №
ОБНОВЛЕНИЕ 3:
указывал @RobertCrovella, тяга библиотека работает нормально при правильном cmake comands. Теперь вопрос: как я могу сгенерировать эти команды с помощью CMakeLists?
то, что фактические команды компиляции генерируется с помощью CMake? Какую версию CUDA вы используете? Вы обновили версию тяги? –
@RobertCrovella Спасибо за вопрос. Я обновил информацию, которую вы запросили на главной странице. – Maverobot
Команды, которые вы указали, не генерируют код перемещаемого устройства в CUDA. Вы уверены, что использует сценарий CMake с 'CUDA_SEPARABLE_COMPILATION ON'? –