About Me

A Computer Enthusiast who's learning as much as I can, while attempting to share and re-distribute the knowledge! Enjoy! :D

Tuesday, May 25, 2010

Example of Eclipse + CUDA Integration

I'm tired of using vi to edit my .cu source files, so I decided to attempt to integrate CUDA with the Eclipse IDE.

Right off the back, when you build your CUDA project within Eclipse, it will FAIL! Determined not to use vi, I trolled Google for help. Additionally, I attempted to mimic a build similar to a simple Hello World Project.

Assumptions: Drop this Makefile (located after the Example Project Creation) at the top of your Project Directory to have a successful build.

MAC OS X

1. Create a new C++ Project
  • ctrl + mouse click --> New --> C++ Project

2. Create an Empty Project
  • Select Empty Project
  • Create a project name
  • Click Next

3. Click Advanced Settings

4. Remove Automatic Makefile Generation
  • C/C++ Build --> Makefile Generation
  • Uncheck Generate Makefile automatically

5. Apply and OK

6. Finish

7. Create a source directory within your project
  • ctrl+mouse click on project --> New --> Source Folder
  • Name the folder
  • Finish

8. Create C++ source files within the source folder

9. Create a regular file for the associated Makefile
  • ctrl+mouse click on the project --> New -->File
  • Name the file Makefile

10. Copy the example Makefile from below into your Project
(using your own information)

##############################################
#
# Makefile for CUDA
#
# A hack created by Mark Lagatuz to compile .cu files within Eclipse
#
# This makefile assumes you separate the device and host code into
# separate files:
#
# HOST: _H appended to file name (code_H.cu)
# DEVICE: _D appended to file name (code_D.cu)
#
# Replace the following with your own information:
#
# CUDA_INSTALL_PATH: /path/to/your/cuda/installation
# PROGRAM: Name of Executable
#
##############################################

# CUDA Installation Path
CUDA_INSTALL_PATH = /usr/local/cuda

# Source Folder (Relative to where Makefile is located)
SRC_FOLDER = src

# Compiler
NVCC = $(CUDA_INSTALL_PATH)/bin/nvcc

# Includes
INCLUDE = $(CUDA_INSTALL_PATH)/include

# Program or Executable
PROGRAM = mandelbrotCUDA

# Device Code
DEVICE = _D

# Host Code
HOST = _H

all : $(PROGRAM)

# Create Executable by linking *.o (host and device object's)
$(PROGRAM) : $(PROGRAM)$(DEVICE).o $(PROGRAM)$(HOST).o
$(NVCC) -o $(PROGRAM) $^

# Compile device code to an object
$(PROGRAM)$(DEVICE).o : $(SRC_FOLDER)/$(PROGRAM)$(DEVICE).cu
$(NVCC) -I $(INCLUDE) -o $@ -c $< # Compile host code to an object $(PROGRAM)$(HOST).o : $(SRC_FOLDER)/$(PROGRAM)$(HOST).cu $(NVCC) -I $(INCLUDE) -o $@ -c $< # Remove *.o files and executables clean : rm *.o $(PROGRAM) -- Resources

1. MAC OS X
  • /Developer/GPU Computing/C/common/common.mk (I utilized this file to help build my Makefile

2. Life of a Programmer Greek
  • http://lifeofaprogrammergeek.blogspot.com/2008/07/using-eclipse-for-cuda-development.html

3. How to set up CUDA in Eclipse
  • http://imonad.com/blog/how-to-set-cuda-in-eclipse/

No comments:

Post a Comment