diff options
author | knarf <knarf@17b73243-c579-4c4c-a9d2-2d5706c11dac> | 2011-02-07 21:51:49 +0000 |
---|---|---|
committer | knarf <knarf@17b73243-c579-4c4c-a9d2-2d5706c11dac> | 2011-02-07 21:51:49 +0000 |
commit | a08107a97d6bda1ffcc7dcdc8e80ccd58f076134 (patch) | |
tree | a21e00d59dd889f6e62c00d5ba7bde9afc40e790 /lib/make/make.config.rules.in | |
parent | 9347b3e95ef4179391e56c8f2fe1f859db7869d3 (diff) |
add CUDA support to the flesh
git-svn-id: http://svn.cactuscode.org/flesh/trunk@4684 17b73243-c579-4c4c-a9d2-2d5706c11dac
Diffstat (limited to 'lib/make/make.config.rules.in')
-rw-r--r-- | lib/make/make.config.rules.in | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/lib/make/make.config.rules.in b/lib/make/make.config.rules.in index e656499d..e4f9ddf3 100644 --- a/lib/make/make.config.rules.in +++ b/lib/make/make.config.rules.in @@ -70,6 +70,11 @@ define F90_DEPENDENCIES current_wd=`$(GET_WD)` ; { if test $(F_LINE_DIRECTIVES) = 'yes'; then echo '#line 1 "'$<'"'; fi; cat $<; } | $(PERL) -p -e 's.//.CCTK_AUTOMATICALLY_GENERATED_CONCATENATION_PROTECTION.g' | $(FPP) $(FPPFLAGS) $(INCLUDE_LINE) $(EXTRA_DEFINES:%=-D%) -DFCODE -DF90CODE | $(PERL) -p -e 's.CCTK_AUTOMATICALLY_GENERATED_CONCATENATION_PROTECTION.//.g' | $(PERL) $(F_DEPEND_MODULES) $< $(basename $(notdir $<)).F90.o $(SRCDIR) $(USESTHORNS:%=$$current_wd/../%) $(F_DEPEND_MODULES_OUT) || { rm $@; exit 1; } endef +define CU_DEPENDENCIES + $(CU_DEPEND) $< $(INCLUDE_LINE) $(EXTRA_DEFINES:%=-D%) -DCCODE $(CU_DEPEND_OUT) + $(DEPENDENCY_FIXER) +endef + # No preprocessing, just create empty dependency file define f77_DEPENDENCIES echo "" > $@ @@ -87,6 +92,21 @@ define f90_DEPENDENCIES endef ##################################################################### +# Define how to do a CUDA compilation +# preporcess and postprocess are currently set the same as C. +define PREPROCESS_CU +{ if test $(C_LINE_DIRECTIVES) = 'yes'; then echo '#line 1 "'$<'"'; fi; cat $<; } | $(PERL) -s $(C_FILE_PROCESSOR) -line_directives=$(C_LINE_DIRECTIVES) -source_file_name=$< $(CONFIG) > $(notdir $<) +#{ if test $(C_LINE_DIRECTIVES) = 'yes'; then echo '#line 1 "'$<'"'; fi; cat $<; } | $(NVCC) -E $< $(INCLUDE_LINE) > $(notdir $<) +endef + +define COMPILE_CU +current_wd=`$(GET_WD)` ; cd $(SCRATCH_BUILD) ; $(NVCC) $(NVCCFLAGS) $(CCOMPILEONLY)$(OPTIONSEP)$$current_wd$(DIRSEP)$@ $$current_wd$(DIRSEP)$(notdir $<) $(INCLUDE_LINE) $(EXTRA_DEFINES:%=-D%) -DCCODE +endef + +define POSTPROCESS_CU +$(CU_POSTPROCESSING) +endef + # Define how to do a C compilation define PREPROCESS_C { if test $(C_LINE_DIRECTIVES) = 'yes'; then echo '#line 1 "'$<'"'; fi; cat $<; } | $(PERL) -s $(C_FILE_PROCESSOR) -line_directives=$(C_LINE_DIRECTIVES) -source_file_name=$< $(CONFIG) > $(notdir $<) @@ -168,6 +188,19 @@ define PREPROCESS_f90 cat $< > $(basename $(notdir $<)).$(F90_SUFFIX) endef +# Build rules for CUDA + +%.cu.o: $(SRCDIR)/%.cu + @echo Preprocessing $< + $(PREPROCESS_CU) + @echo Compiling $< + $(COMPILE_CU) + @echo Postprocessing $< + $(POSTPROCESS_CU) + @echo $(DIVIDER) + +%.cu.d: $(SRCDIR)/%.cu + $(CU_DEPENDENCIES) # Build rules for C |