Je suis en train d'utiliser poussée :: copy_if pour compacter un tableau avec un prédicat vérification des nombres positifs:poussée copy_if: type incomplet n'est pas autorisé
fichier en-tête: fichier.h:
struct is_positive
{
__host__ __device__
bool operator()(const int x)
{
return (x >= 0);
}
};
et file.cu
#include "../headers/file.h"
#include <thrust/device_ptr.h>
#include <thrust/device_vector.h>
#include <thrust/copy.h>
void compact(int* d_inputArray, int* d_outputArray, const int size)
{
thrust::device_ptr<int> t_inputArray(d_inputArray);
thrust::device_ptr<int> t_outputArray(d_outputArray);
thrust::copy_if(t_inputArray, t_inputArray + size, d_outputArray, is_positive());
}
Je reçois des messages d'erreur commençant par:
/usr/local/cuda/include/thrust/system/detail/generic/memory.inl(40): error: incomplete type is not allowed
Si je viens d'utiliser copie au lieu de copy_if, le code compile bien, donc je décidé tout sauf le prédicat is_positive() out.
Merci d'avance pour toute aide ou conseils généraux sur la façon de déboguer de telles erreurs de poussée.
e: J'utilise Cuda 7.5
Eh bien, c'est embarrassant. Merci, vous avez raison, fonctionne comme un charme! – mimre