Pregunta

Estoy tratando de compilar un ejemplo simple de Gráfico de empuje.

Por el momento tengo todo comentado en main(void)

¡Estoy buscando cualquier dirección que alguien esté dispuesto a dar!

Mi error de compilación es este:

mseil@cuda:~/mseil_CUDA/test$ nvcc Example.cu 
/usr/local/cuda/bin/../include/thrust/detail/device/cuda/reduce_by_keyvalue.inl(90): error: name followed by "::" must be a class or namespace name

/usr/local/cuda/bin/../include/thrust/graph/detail/adjacency_list.inl(141): error: name followed by "::" must be a class or namespace name

/usr/local/cuda/bin/../include/thrust/graph/detail/adjacency_list.inl(213): error: name followed by "::" must be a class or namespace name

/usr/local/cuda/bin/../include/thrust/graph/detail/adjacency_list.inl(344): error: name followed by "::" must be a class or namespace name

4 errors detected in the compilation of "/tmp/tmpxft_00007122_00000000-9_Example.cpp4.ii".

Me concentré en el primer error, línea 90 de la include/thrust/detail/device/cuda/reduce_by_keyvalue.inl Archivo y no puedo ver cuál es el problema. Soy nuevo en C ++ (y sé C a nivel de principiante). Todo se ve bien en lo que respecta a un archivo de plantilla, y me sorprendería si los chicos de Nvidia no saben lo que están haciendo, así que debe ser yo.

El código alrededor de la línea 90:

  typedef typename thrust::iterator_traits<InputIterator1>::difference_type difference_type;

  difference_type n =key_last - key_first;
  difference_type N =result_last - result_first;

  const std::size_t BLOCK_SIZE =512; // number of threads per block
  const std::size_t MAX_BLOCKS =thrust::experimental::arch::max_active_threads() / BLOCK_SIZE;
  const std::size_t NUM_BLOCKS =std::min( MAX_BLOCKS, n + (BLOCK_SIZE - 1) / BLOCK_SIZE);  //offending line.

Y actualmente el único código en mi principal: (todo lo demás se comenta).

#include <thrust/graph/adjacency_list.hpp>
using namespace thrust;

int main(void){
    typedef adjacency_list<undirectedS, disallow_parallelS> graph_t;

    return 0;
}
¿Fue útil?

Solución

Soy un desarrollador de Lib Lib, Drkkojima. Actualicé a 0.2RC03 y resolví los problemas.

Otros consejos

¿Problema con la inclusión de los archivos de E/S estándar?

El problema es aparentemente una incompatibilidad de CUDA 3.2, y empuje 1.3 con gráfico de empuje 0.2RC2. Regresamos a CUDA 3.1, y el gráfico de empuje 1.2.1 y esto ha resuelto en gran medida el problema. (Todos los archivos de ejemplo se compilan excepto uno en cada uno; pero podemos vivir con esto).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top