2012-05-04 5 views
1

J'essaie d'exécuter un exemple de code à partir du Guide de démarrage rapide de Thrust. C'est collé ci-dessous. Ce qui me tue, c'est que quand je l'exécute, je reçois une exception "R6010 -abort() a été appelée) à chaque fois que je frappe le find_ifnvidia cuda thrust abort() appelé find_if

J'ai essayé ceci en utilisant à la fois le 4.1 et 4.2 buildtimes Je construis ceci dans Visual Studio 2010 Ultimate en utilisant la dernière version candidate de NSight (téléchargé le 4 Mai 2012) Ma carte graphique est une NVidia NVS 3100m

Je peux lancer l'exemple d'addition vectorielle généré dans un nouveau projet VS (qui n'utilise pas Thrust) et il fonctionne bien. Thrust Ajout me donne cependant cette bizarrerie.

Toutes les suggestions sont appréciés.

mj

thrust::device_vector<int> input(4); 

input[0] = 0; 
input[1] = 5; 
input[2] = 3; 
input[3] = 7; 

thrust::device_vector<int>::iterator iter; 

iter = thrust::find_if(input.begin(), input.end(), greater_than_four()); 
iter = thrust::find_if(input.begin(), input.end(), greater_than_ten()); 

EDIT1

Une autre friandise de l'information. Je suis en train de creuser plus en profondeur et de voir qu'une erreur est interceptée pendant cudaThreadSynchronize(). Le message est "launch_closure_by_value".

Répondre

1

Je l'ai compris. Les étiquettes __host__ et __device__ étaient manquantes.

struct greater_than_four 
{ 
__host__ __device__ 
    bool operator()(int x) 
    { 
     return x > 4; 
    } 
}; 
+0

pouvez-vous fournir plus de détails. Le problème était-il dans la source? – nouveau

+0

Vous voyez la 3ème ligne? Le "__ hôte __ __ périphérique __". C'est ce qui manquait. Il ne doit pas y avoir d'espaces entre les traits de soulignement et le texte. –

Questions connexes