Paul, Thrust 1.5 has removed that function but the cusp version 0.2 still uses it. Hence the error. The repo cusp version apparently fixed this issue.
http://code.google.com/p/cusp-library/source/browse/cusp/detail/device/generalized_spmv/coo_flat.h Chetan > -----Original Message----- > From: petsc-dev-bounces at mcs.anl.gov [mailto:petsc-dev-bounces at > mcs.anl.gov] On Behalf Of Paul Mullowney > Sent: Wednesday, January 04, 2012 3:08 PM > To: petsc-dev at mcs.anl.gov > Subject: [petsc-dev] PETSc build errors with he most recent thrust/cusp > > I'm having troubles building PETSc with the most recent version of CUSP > (v.0.2.0) and Thurst (v1.5.0). I see the errors below. Any help is much > appreciated. > > -Paul > > > nvcc -gencode arch=compute_20,code=sm_20 -O3 -I/usr/local/cuda/include > -O -arch=sm_13 -c --compiler-options="-g -O3 -O > -I/home/research/paulm/gpuPETSc/petsc-dev/include > -I/home/research/paulm/gpuPETSc/petsc-dev/arch-linux2-c-opt/include > -I/usr/local/cuda/include > -I/home/research/paulm/gpuPETSc/txpetscgpu/include > -I/home/research/paulm/gpuPETSc/externLibs/cusp/ > -I/usr/local/cuda/include/ > -I/usr/local/contrib/openmpi-1.4.2-nodl/include > -D__INSDIR__=src/mat/impls/aij/seq/seqcusp/" aijAssemble.cu > > /home/research/paulm/gpuPETSc/externLibs/cusp/cusp/detail/device/generalized_spmv/coo_flat.h(509): > error: namespace "thrust::detail::backend::cuda" has no member > "uniform_interval_splitting" > detected during instantiation of "void > cusp::detail::device::reduce_by_key(InputIterator1, InputIterator1, > InputIterator2, OutputIterator1, OutputIterator2, BinaryPredicate, > BinaryFunction) [with > InputIterator1=thrust::zip_iterator<thrust::tuple<thrust::detail::normal_iterator<thrust::device_ptr<P > etscInt>>, > thrust::detail::normal_iterator<thrust::device_ptr<PetscInt>>, > thrust::null_type, thrust::null_type, thrust::null_type, > thrust::null_type, thrust::null_type, thrust::null_type, > thrust::null_type, thrust::null_type>>, > InputIterator2=thrust::detail::normal_iterator<thrust::device_ptr<ValueType>>, > OutputIterator1=thrust::zip_iterator<thrust::tuple<thrust::detail::normal_iterator<thrust::device_ptr< > PetscInt>>, > thrust::detail::normal_iterator<thrust::device_ptr<PetscInt>>, > thrust::null_type, thrust::null_type, thrust::null_type, > thrust::null_type, thrust::null_type, thrust::null_type, > thrust::null_type, thrust::null_type>>, > OutputIterator2=thrust::detail::normal_iterator<thrust::device_ptr<ValueType>>, > BinaryPredicate=thrust::equal_to<thrust::tuple<PetscInt, PetscInt, > thrust::null_type, thrust::null_type, thrust::null_type, > thrust::null_type, thrust::null_type, thrust::null_type, > thrust::null_type, thrust::null_type>>, > BinaryFunction=thrust::plus<ValueType>]" > aijAssemble.cu(264): here > > /home/research/paulm/gpuPETSc/externLibs/cusp/cusp/detail/device/generalized_spmv/coo_flat.h(509): > error: type name is not allowed > detected during instantiation of "void > cusp::detail::device::reduce_by_key(InputIterator1, InputIterator1, > InputIterator2, OutputIterator1, OutputIterator2, BinaryPredicate, > BinaryFunction) [with > InputIterator1=thrust::zip_iterator<thrust::tuple<thrust::detail::normal_iterator<thrust::device_ptr<P > etscInt>>, > thrust::detail::normal_iterator<thrust::device_ptr<PetscInt>>, > thrust::null_type, thrust::null_type, thrust::null_type, > thrust::null_type, thrust::null_type, thrust::null_type, > thrust::null_type, thrust::null_type>>, > InputIterator2=thrust::detail::normal_iterator<thrust::device_ptr<ValueType>>, > OutputIterator1=thrust::zip_iterator<thrust::tuple<thrust::detail::normal_iterator<thrust::device_ptr< > PetscInt>>, > thrust::detail::normal_iterator<thrust::device_ptr<PetscInt>>, > thrust::null_type, thrust::null_type, thrust::null_type, > thrust::null_type, thrust::null_type, thrust::null_type, > thrust::null_type, thrust::null_type>>, > OutputIterator2=thrust::detail::normal_iterator<thrust::device_ptr<ValueType>>, > BinaryPredicate=thrust::equal_to<thrust::tuple<PetscInt, PetscInt, > thrust::null_type, thrust::null_type, thrust::null_type, > thrust::null_type, thrust::null_type, thrust::null_type, > thrust::null_type, thrust::null_type>>, > BinaryFunction=thrust::plus<ValueType>]" > aijAssemble.cu(264): here > > /home/research/paulm/gpuPETSc/externLibs/cusp/cusp/detail/device/generalized_spmv/coo_flat.h(509): > warning: expression has no effect > detected during: > instantiation of "void > cusp::detail::device::cuda::spmv_coo(SizeType, SizeType, IndexIterator1, > IndexIterator2, ValueIterator1, ValueIterator2, ValueIterator3, > ValueIterator4, BinaryFunction1, BinaryFunction2) [with > SizeType=unsigned long, > IndexIterator1=thrust::detail::normal_iterator<thrust::device_ptr<unsigned > int>>, IndexIterator2=thrust::constant_iterator<unsigned int, > thrust::use_default, thrust::use_default>, > ValueIterator1=thrust::detail::normal_iterator<thrust::device_ptr<ValueType>>, > ValueIterator2=thrust::constant_iterator<ValueType, thrust::use_default, > thrust::use_default>, > ValueIterator3=thrust::constant_iterator<ValueType, thrust::use_default, > thrust::use_default>, > ValueIterator4=thrust::detail::normal_iterator<thrust::device_ptr<ValueType>>, > BinaryFunction1=thrust::multiplies<ValueType>, > BinaryFunction2=thrust::plus<ValueType>]" > /home/research/paulm/gpuPETSc/externLibs/cusp/cusp/detail/device/reduce_by_key.inl(100): > here > instantiation of "void > cusp::detail::device::reduce_by_key(InputIterator1, InputIterator1, > InputIterator2, OutputIterator1, OutputIterator2, BinaryPredicate, > BinaryFunction) [with > InputIterator1=thrust::zip_iterator<thrust::tuple<thrust::detail::normal_iterator<thrust::device_ptr<P > etscInt>>, > thrust::detail::normal_iterator<thrust::device_ptr<PetscInt>>, > thrust::null_type, thrust::null_type, thrust::null_type, > thrust::null_type, thrust::null_type, thrust::null_type, > thrust::null_type, thrust::null_type>>, > InputIterator2=thrust::detail::normal_iterator<thrust::device_ptr<ValueType>>, > OutputIterator1=thrust::zip_iterator<thrust::tuple<thrust::detail::normal_iterator<thrust::device_ptr< > PetscInt>>, > thrust::detail::normal_iterator<thrust::device_ptr<PetscInt>>, > thrust::null_type, thrust::null_type, thrust::null_type, > thrust::null_type, thrust::null_type, thrust::null_type, > thrust::null_type, thrust::null_type>>, > OutputIterator2=thrust::detail::normal_iterator<thrust::device_ptr<ValueType>>, > BinaryPredicate=thrust::equal_to<thrust::tuple<PetscInt, PetscInt, > thrust::null_type, thrust::null_type, thrust::null_type, > thrust::null_type, thrust::null_type, thrust::null_type, > thrust::null_type, thrust::null_type>>, > BinaryFunction=thrust::plus<ValueType>]" > aijAssemble.cu(264): here > > /home/research/paulm/gpuPETSc/externLibs/cusp/cusp/detail/device/generalized_spmv/coo_flat.h(509): > warning: expression has no effect > detected during: > instantiation of "void > cusp::detail::device::cuda::spmv_coo(SizeType, SizeType, IndexIterator1, > IndexIterator2, ValueIterator1, ValueIterator2, ValueIterator3, > ValueIterator4, BinaryFunction1, BinaryFunction2) [with > SizeType=unsigned long, > IndexIterator1=thrust::detail::normal_iterator<thrust::device_ptr<unsigned > int>>, IndexIterator2=thrust::constant_iterator<unsigned int, > thrust::use_default, thrust::use_default>, > ValueIterator1=thrust::detail::normal_iterator<thrust::device_ptr<ValueType>>, > ValueIterator2=thrust::constant_iterator<ValueType, thrust::use_default, > thrust::use_default>, > ValueIterator3=thrust::constant_iterator<ValueType, thrust::use_default, > thrust::use_default>, > ValueIterator4=thrust::detail::normal_iterator<thrust::device_ptr<ValueType>>, > BinaryFunction1=thrust::multiplies<ValueType>, > BinaryFunction2=thrust::plus<ValueType>]" > /home/research/paulm/gpuPETSc/externLibs/cusp/cusp/detail/device/reduce_by_key.inl(100): > here > instantiation of "void > cusp::detail::device::reduce_by_key(InputIterator1, InputIterator1, > InputIterator2, OutputIterator1, OutputIterator2, BinaryPredicate, > BinaryFunction) [with > InputIterator1=thrust::zip_iterator<thrust::tuple<thrust::detail::normal_iterator<thrust::device_ptr<P > etscInt>>, > thrust::detail::normal_iterator<thrust::device_ptr<PetscInt>>, > thrust::null_type, thrust::null_type, thrust::null_type, > thrust::null_type, thrust::null_type, thrust::null_type, > thrust::null_type, thrust::null_type>>, > InputIterator2=thrust::detail::normal_iterator<thrust::device_ptr<ValueType>>, > OutputIterator1=thrust::zip_iterator<thrust::tuple<thrust::detail::normal_iterator<thrust::device_ptr< > PetscInt>>, > thrust::detail::normal_iterator<thrust::device_ptr<PetscInt>>, > thrust::null_type, thrust::null_type, thrust::null_type, > thrust::null_type, thrust::null_type, thrust::null_type, > thrust::null_type, thrust::null_type>>, > OutputIterator2=thrust::detail::normal_iterator<thrust::device_ptr<ValueType>>, > BinaryPredicate=thrust::equal_to<thrust::tuple<PetscInt, PetscInt, > thrust::null_type, thrust::null_type, thrust::null_type, > thrust::null_type, thrust::null_type, thrust::null_type, > thrust::null_type, thrust::null_type>>, > BinaryFunction=thrust::plus<ValueType>]" > aijAssemble.cu(264): here > > /home/research/paulm/gpuPETSc/externLibs/cusp/cusp/detail/device/generalized_spmv/coo_flat.h(506): > warning: variable "unit_size" was set but never used > detected during: > instantiation of "void > cusp::detail::device::cuda::spmv_coo(SizeType, SizeType, IndexIterator1, > IndexIterator2, ValueIterator1, ValueIterator2, ValueIterator3, > ValueIterator4, BinaryFunction1, BinaryFunction2) [with > SizeType=unsigned long, > IndexIterator1=thrust::detail::normal_iterator<thrust::device_ptr<unsigned > int>>, IndexIterator2=thrust::constant_iterator<unsigned int, > thrust::use_default, thrust::use_default>, > ValueIterator1=thrust::detail::normal_iterator<thrust::device_ptr<ValueType>>, > ValueIterator2=thrust::constant_iterator<ValueType, thrust::use_default, > thrust::use_default>, > ValueIterator3=thrust::constant_iterator<ValueType, thrust::use_default, > thrust::use_default>, > ValueIterator4=thrust::detail::normal_iterator<thrust::device_ptr<ValueType>>, > BinaryFunction1=thrust::multiplies<ValueType>, > BinaryFunction2=thrust::plus<ValueType>]" > /home/research/paulm/gpuPETSc/externLibs/cusp/cusp/detail/device/reduce_by_key.inl(100): > here > instantiation of "void > cusp::detail::device::reduce_by_key(InputIterator1, InputIterator1, > InputIterator2, OutputIterator1, OutputIterator2, BinaryPredicate, > BinaryFunction) [with > InputIterator1=thrust::zip_iterator<thrust::tuple<thrust::detail::normal_iterator<thrust::device_ptr<P > etscInt>>, > thrust::detail::normal_iterator<thrust::device_ptr<PetscInt>>, > thrust::null_type, thrust::null_type, thrust::null_type, > thrust::null_type, thrust::null_type, thrust::null_type, > thrust::null_type, thrust::null_type>>, > InputIterator2=thrust::detail::normal_iterator<thrust::device_ptr<ValueType>>, > OutputIterator1=thrust::zip_iterator<thrust::tuple<thrust::detail::normal_iterator<thrust::device_ptr< > PetscInt>>, > thrust::detail::normal_iterator<thrust::device_ptr<PetscInt>>, > thrust::null_type, thrust::null_type, thrust::null_type, > thrust::null_type, thrust::null_type, thrust::null_type, > thrust::null_type, thrust::null_type>>, > OutputIterator2=thrust::detail::normal_iterator<thrust::device_ptr<ValueType>>, > BinaryPredicate=thrust::equal_to<thrust::tuple<PetscInt, PetscInt, > thrust::null_type, thrust::null_type, thrust::null_type, > thrust::null_type, thrust::null_type, thrust::null_type, > thrust::null_type, thrust::null_type>>, > BinaryFunction=thrust::plus<ValueType>]" > aijAssemble.cu(264): here > > 2 errors detected in the compilation of > "/tmp/tmpxft_000056d7_00000000-6_aijAssemble.compute_20.cpp1.ii".
