[Insight-developers] [Insight-users] Problems with ITK

Cory Quammen cquammen at cs.unc.edu
Tue Oct 23 12:01:08 EDT 2012


By including your .cuh and .cu files like that, your standard C++
compiler is going to try to compile the CUDA code in those source
files.  Since it doesn't know anything about CUDA, you are getting
errors.

This is off the top of my head, and I haven't tried to compile it, but
your source files will look something like this:

In my_cuda.h:

extern "C"
void someCudaFunction();

In my_cuda.cu:

__global__ void someCudaFunction()
{
}

In my_main.cpp:

#include "my_cuda.h"
#include <itkMyFavoriteFilter.h>

int main(int argc, char*argv[])
{
  // Do some ITK stuff here

  // Do some CUDA stuff here.
  someCudaFunction<<<block,grid>>>();
}

In CMakeLists.txt:

PROJECT( PROJECT_NAME )
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
FIND_PACKAGE ( ITK REQUIRED )
FIND_PACKAGE(CUDA)
INCLUDE(FindCUDA)
IF ( ITK_FOUND )
INCLUDE( ${ITK_USE_FILE} )
ENDIF( ITK_FOUND )
CUDA_ADD_EXECUTABLE( PROJECT_NAME my_cuda.cu my_main.cpp )
TARGET_LINK_LIBRARIES ( PROJECT_NAME ITKCommon ITKIO)

Hope that helps,
Cory

On Tue, Oct 23, 2012 at 11:19 AM, Gabriel Santiago
<santiago.eletrica at gmail.com> wrote:
> Thank you for your attention, Cory. But this can sound very stupid, but
> *how* exactly do I do that?
>
> I packed everything in a .cuh and a .cu file and than included then in my
> main.cpp file, but the compiler complains about my cuda functions, saying
> that the qualifier __global__ does not name a type.
>
> Could you please, give me a quick example on how my files should look like?
> I would be very grateful.
>
>
> On 23 October 2012 11:56, Cory Quammen <cquammen at cs.unc.edu> wrote:
>>
>> Gabriel,
>>
>> You must be trying to use CUDA in your project. I wouldn't be
>> surprised if the CUDA compiler has trouble with all the features of
>> C++ that ITK uses.
>>
>> The good news is that you don't need to define your main function
>> inside a CUDA source file. You can instead compile only your CUDA
>> source with the CUDA compiler, and all your regular C++ code as C++
>> files. Just put the CUDA code in a .cu file, put your main C++ code in
>> a .cpp file, then add all the source files to your call to
>> CUDA_ADD_EXECUTABLE. CMake should figure out how to compile them
>> automatically.
>>
>> Hope that helps,
>> Cory
>>
>> On Tue, Oct 23, 2012 at 9:45 AM, Bill Lorensen <bill.lorensen at gmail.com>
>> wrote:
>> > Why are you using .cu?
>> >
>> > On Tue, Oct 23, 2012 at 9:37 AM, Gabriel Santiago
>> > <santiago.eletrica at gmail.com> wrote:
>> >>
>> >> I am using 3.20.1 version.
>> >>
>> >> If I change to .cpp instead of .cu everything works fine.
>> >>
>> >>
>> >> On 23 October 2012 11:34, Bill Lorensen <bill.lorensen at gmail.com>
>> >> wrote:
>> >>>
>> >>> Please keep on list....
>> >>>
>> >>> What version of ITK? And what happens if you define it as a .cxx
>> >>> rather
>> >>> than .cu?
>> >>>
>> >>>
>> >>> On Tue, Oct 23, 2012 at 9:17 AM, Gabriel Santiago
>> >>> <santiago.eletrica at gmail.com> wrote:
>> >>>>
>> >>>> Sure!
>> >>>>
>> >>>> In my main.cu file:
>> >>>>
>> >>>> #include <iostream>
>> >>>> #include <string>
>> >>>> #include "itkImageFileReader.h"
>> >>>>
>> >>>> using std::cout;
>> >>>> using std::string;
>> >>>>
>> >>>> int main(void){
>> >>>>
>> >>>> string filename = "dicom_file.dcm";
>> >>>>
>> >>>> typedef signed int InputPixelType;
>> >>>> typedef itk::Image<InputPixelType, 3> InputImageType;
>> >>>> typedef itk::ImageFileReader<InputImageType> ReaderType;
>> >>>> ReaderType::Pointer reader = ReaderType::New();
>> >>>> reader->SetFileName(filename.c_str());
>> >>>>
>> >>>> return 0;
>> >>>>
>> >>>> }
>> >>>>
>> >>>> My CMakeLists.txt file conatins:
>> >>>>
>> >>>> PROJECT( PROJECT_NAME )
>> >>>> CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
>> >>>> FIND_PACKAGE ( ITK REQUIRED )
>> >>>> FIND_PACKAGE(CUDA)
>> >>>> INCLUDE(FindCUDA)
>> >>>> IF ( ITK_FOUND )
>> >>>> INCLUDE( ${ITK_USE_FILE} )
>> >>>> ENDIF( ITK_FOUND )
>> >>>> CUDA_ADD_EXECUTABLE( PROJECT_NAME main.cu )
>> >>>> TARGET_LINK_LIBRARIES ( PROJECT_NAME ITKCommon ITKIO)
>> >>>>
>> >>>> Thank you for your reply,
>> >>>>
>> >>>> On 23 October 2012 11:08, Bill Lorensen <bill.lorensen at gmail.com>
>> >>>> wrote:
>> >>>>>
>> >>>>> Gabriel,
>> >>>>>
>> >>>>> Can you provide a small compilable example to illustrate your
>> >>>>> problem?
>> >>>>>
>> >>>>> Bill
>> >>>>>
>> >>>>> On Mon, Oct 22, 2012 at 7:35 AM, Gabriel Santiago
>> >>>>> <santiago.eletrica at gmail.com> wrote:
>> >>>>>>
>> >>>>>> Hi guys,
>> >>>>>>
>> >>>>>> I am trying to read a DICOM file using ITK. I am doing exactly what
>> >>>>>> is
>> >>>>>> described in the ITK User Guide but I am getting some weird error
>> >>>>>> messages.
>> >>>>>> Here they are:
>> >>>>>>
>> >>>>>>  overriding ‘itk::ImageBase<VImageDimension>::Pointer
>> >>>>>> itk::ImageBase<VImageDimension>::CreateAnother() const [with
>> >>>>>> unsigned int
>> >>>>>> VImageDimension = 3u, itk::ImageBase<VImageDimension>::Pointer =
>> >>>>>> itk::SmartPointer<itk::ImageBase<3u> >]’
>> >>>>>>
>> >>>>>> overriding ‘virtual itk::LightObject::Pointer
>> >>>>>> itk::Object::CreateAnother() const’
>> >>>>>>
>> >>>>>> invalid covariant return type for
>> >>>>>> ‘itk::ImageBase<VImageDimension>::Pointer
>> >>>>>> itk::ImageBase<VImageDimension>::CreateAnother() const [with
>> >>>>>> unsigned int
>> >>>>>> VImageDimension = 3u, itk::ImageBase<VImageDimension>::Pointer =
>> >>>>>> itk::SmartPointer<itk::ImageBase<3u> >]’
>> >>>>>>
>> >>>>>> invalid covariant return type for ‘itk::LightObject::Pointer
>> >>>>>> itk::Image<TPixel, VImageDimension>::CreateAnother() const [with
>> >>>>>> TPixel =
>> >>>>>> int, unsigned int VImageDimension = 3u, itk::LightObject::Pointer =
>> >>>>>> itk::SmartPointer<itk::LightObject>]’
>> >>>>>>
>> >>>>>> All of them are not in my code. Can anyone here, please tell me
>> >>>>>> what
>> >>>>>> is going on?
>> >>>>>>
>> >>>>>> Thank you all,
>> >>>>>>
>> >>>>>> --
>> >>>>>> Gabriel Santiago
>> >>>>>>
>> >>>>>> ~"As long as I live so long do I learn"~
>> >>>>>> Ramakhrishna
>> >>>>>>
>> >>>>>>
>> >>>>>> _____________________________________
>> >>>>>> Powered by www.kitware.com
>> >>>>>>
>> >>>>>> Visit other Kitware open-source projects at
>> >>>>>> http://www.kitware.com/opensource/opensource.html
>> >>>>>>
>> >>>>>> Kitware offers ITK Training Courses, for more information visit:
>> >>>>>> http://www.kitware.com/products/protraining.php
>> >>>>>>
>> >>>>>> Please keep messages on-topic and check the ITK FAQ at:
>> >>>>>> http://www.itk.org/Wiki/ITK_FAQ
>> >>>>>>
>> >>>>>> Follow this link to subscribe/unsubscribe:
>> >>>>>> http://www.itk.org/mailman/listinfo/insight-users
>> >>>>>>
>> >>>>>
>> >>>>>
>> >>>>>
>> >>>>> --
>> >>>>> Unpaid intern in BillsBasement at noware dot com
>> >>>>>
>> >>>>
>> >>>>
>> >>>>
>> >>>> --
>> >>>> Gabriel Santiago
>> >>>>
>> >>>>
>> >>>> ~"As long as I live so long do I learn"~
>> >>>> Ramakhrishna
>> >>>>
>> >>>
>> >>>
>> >>>
>> >>> --
>> >>> Unpaid intern in BillsBasement at noware dot com
>> >>>
>> >>
>> >>
>> >>
>> >> --
>> >> Gabriel Santiago
>> >>
>> >> ~"As long as I live so long do I learn"~
>> >> Ramakhrishna
>> >>
>> >
>> >
>> >
>> > --
>> > Unpaid intern in BillsBasement at noware dot com
>> >
>> >
>> > _______________________________________________
>> > Powered by www.kitware.com
>> >
>> > Visit other Kitware open-source projects at
>> > http://www.kitware.com/opensource/opensource.html
>> >
>> > Kitware offers ITK Training Courses, for more information visit:
>> > http://kitware.com/products/protraining.php
>> >
>> > Please keep messages on-topic and check the ITK FAQ at:
>> > http://www.itk.org/Wiki/ITK_FAQ
>> >
>> > Follow this link to subscribe/unsubscribe:
>> > http://www.itk.org/mailman/listinfo/insight-developers
>> >
>>
>>
>>
>> --
>> Cory Quammen
>> Research Associate
>> Department of Computer Science
>> The University of North Carolina at Chapel Hill
>
>
>
>
> --
> Gabriel Santiago
>
> ~"As long as I live so long do I learn"~
> Ramakhrishna
>



-- 
Cory Quammen
Research Associate
Department of Computer Science
The University of North Carolina at Chapel Hill


More information about the Insight-developers mailing list