2016-05-27 5 views
2

Ich bin neu zu stoßen Bibliothek und versuche, es in meinem Projekt zu verwenden. Hier ist ein sehr einfaches Codebeispiel. Es kann ohne Probleme kompiliert werden. Allerdings, wenn ich versuche, es zu laufen, es gibt mir eine Fehlermeldung:CMakeLists Problem: Bad_alloc Fehler beim Aufrufen von resize() auf schub :: device_vector

terminate called after throwing an instance of 'thrust::system::detail::bad_alloc' 
what(): std::bad_alloc: unknown error 

zusammen mit einer Warnung:

nvlink warning : SM Arch ('sm_20') not found in ... 

Das Projekt kann mit den beiden folgenden Dateien wiedergegeben werden.

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") 

Nach einigen Tests, ist es offensichtlich, dass, wenn die Zeile "gesetzt (CUDA_SEPARABLE_COMPILATION ON)" entfernt worden ist, das Programm läuft problemlos . Aber ich brauche wirklich eine trennbare Kompilierung, die für mein Projekt aktiviert ist.

Jede Hilfe oder Hinweis wäre willkommen.

UPDATE:

Angefordert von @RobertCrovella, hier sind einige weitere Infos.

Die CUDA-Version ist 7.5, die auf UBUNTU 14.04 mit GTX980 neu installiert wird. Ich habe danach die Thrust-Bibliothek nicht aktualisiert.

Das folgende ist der tatsächliche Befehl, der von CMake generiert wird, indem "make VERBOSE = 1" verwendet.

CMake script with separable compilation

CMake script without separable compilation

UPDATE 2:

Der gleiche Fehler von @merelyMark bestätigt wird. Da sowohl der Code als auch die CMakeLists-Datei extrem einfach sind, ist es möglich, dass dies ein Bug in Thrust/CUDA ist? [EDIT] Nr

UPDATE 3:

von @RobertCrovella Weist darauf hin, Schub Bibliothek arbeitet gut mit dem richtigen cmake comands. Nun die Frage: Wie kann ich diese Befehle mit CMakeLists erzeugen?

+0

was von cmake erzeugt werden, um die tatsächliche Kompilierung Befehle? Welche CUDA-Version verwendest du? Haben Sie die Schubversion überhaupt aktualisiert? –

+0

@RobertCrovella Danke für Ihre Nachfrage. Ich habe die von Ihnen angeforderten Informationen auf dem Hauptpost aktualisiert. – Maverobot

+1

Die von Ihnen angezeigten Befehle generieren in CUDA keinen verschiebbaren Gerätecode. Sind Sie sicher, dass ein CMake-Skript mit 'CUDA_SEPARABLE_COMPILATION ON' verwendet wird? –

Antwort

1

Entschuldigung im Voraus, ich habe nicht genug Punkte, um einen Kommentar hinzuzufügen, aber ich kann das Verhalten auf meinem Rig bestätigen. Das kompiliert sich auf meinem Rechner mit einem E5-1650 v3 und einem Quadro M4000 mit CUDA 7.5 und Ubuntu 14.04.3. Ich erhalte eine Warnung Fehler:

nvlink warning : SM Arch ('sm_20') not found in ... 

ich das Verhalten bestätigen kann, wenn ich es laufen:

./cuda_test 
terminate called after throwing an instance of 'thrust::system::detail::bad_alloc' 
    what(): std::bad_alloc: unknown error 
Aborted (core dumped) 

ich mit @RobertCrovella zustimmen, ich bin nicht wirklich sicher, was Sie versuchen, hier zu tun .

Here's my VERBOSE output for separable compilation.

Here's my VERBOSE output without separable compilation.

+0

Danke für die Bestätigung. Ich habe eigentlich auch die gleiche Warnung. Aber ich muss noch einmal nachsehen, wenn ich am Montag wieder zurück zum Code komme. Dann wird mein Beitrag aktualisiert. – Maverobot

+0

Was ich versuche zu erreichen ist Thrust :: device_vector :: resize() läuft mit separablen Kompilierung aktiviert. – Maverobot

+1

@RobertCrovella ist wahrscheinlich richtig, dass dies ein CMake-Problem ist. Sie sollten CMake auch dazu markieren. Es gab einige Probleme mit CMake und separierbarer Kompilierung. Hier ist ein Bug Tracker von 2014, der immer noch offen ist. https://cmake.org/Bug/view.php?id=15157 FWIW, ich aktualisiert auf den neuesten CMake, und es ist immer noch ein Problem. – merelyMark

Verwandte Themen