zoukankan      html  css  js  c++  java
  • 关于GPU的 MAKEFILE

    引言

      最近由于更换项目,服务器也被换走,估计一时半会用不到GPU了,因此最近想把前一段时间做的一些工作,整理记录一下。

      实验室采用的GPU有两款:

      1. 服务器上的板卡:NVIDIA的Tesla K20C

      2. 嵌入式开发板: 丽台代工的Tegra K1 

          软件环境为 RHEL6.5 Linux系统 +  CUDA 6.5

    首先,附上自己写的一个MAKELIFE文件

    MAKEFILE

    #Location of the CUDA Toolkit
    CUDA_PATH ?= "/usr/local/cuda-6.5"
    GCC ?= g++
    NVCC := $(CUDA_PATH)/bin/nvcc -ccbin $(GCC)
     
    #internal flags
    NVCCFLAGS := -m64      #64位机器
    NVCCFLAGS += -g -G -lfftw3f
    # -G 是加调试
    # -lfftw3f 是加fftw3f的库
     CCFLAGS := $(NVCCFLAGS) -Xcompiler -fopenmp
     LDFLAGS := $(CCFLAGS) -lcudart -L /usr/local/cuda-6.5/lib64/
     
    #Common includes and paths for CUDA
    INCLUDES := -I /usr/local/cuda-6.5/samples/common/inc -I /usr/local/cuda-6.5/include
     
    LIBRARIES := -lcudadevrt -lcufft_static-lculibos
     
    CUDACCFLAGS := -shared -Xcompiler -fPIC
     
    #####################################################################################
     
    target = object   
     
    #源文件
    src-cpp = $(wildcard ./src/*.cpp)
    src-cu   = $(wildcard ./src/*.cu)
    #wildcard 是在某个目录下查找
    src-cpp-nodir = $(notdir $(src-cpp))
    src-cu-nodir   = $(notdir $(src-cu))
    #notdir 是在查找返回的文件里去除目录的信息
    objs-cpp-o = $(patsubst %.cpp, %.o, $(src-cpp-nodir))
    objs-cu-o  = $(patsubst %.cu, %.o, $(src-cu-nodir))
    objs-o   =  $(objs-cu-o)$(objs-cpp-o)
    #patsubst 是替换
     
    #Target rules
    all : $(target)
     
    $(objs-cu-o) : $(src-cu)
         $(EXEC)$(NVCC)$(INCLUDES)$(CCFLAGS) -c $(src-cu)
    $(target) : $(objs-o)
         $(NVCC) -o $(target)$(objs-o)$(LDFLAGS)$(LIBRARIES)
    clean:
         rm -f $(target)$(objs-o)
    

      本MAKEFILE,用于在Linux系统中,定义整个工程的编译规则。

      一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,MAKEFILE定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为MAKEFILE就像一个Shell脚本一样,其中也可以执行操作系统的命令。

      巧妙的利用wildcard notdir parsubst 这三个指令,可以很方便的在指定目录下搜素、查找替换等操作,就避免了一个个文件名输入来说明编译关系。

  • 相关阅读:
    2020年. NET Core面试题
    java Context namespace element 'component-scan' and its parser class ComponentScanBeanDefinitionParser are only available on JDK 1.5 and higher 解决方法
    vue 淡入淡出组件
    java http的get、post、post json参数的方法
    vue 父子组件通讯案例
    Vue 生产环境解决跨域问题
    npm run ERR! code ELIFECYCLE
    Android Studio 生成apk 出现 :error_prone_annotations.jar (com.google.errorprone:error) 错误
    记忆解析者芜青【总集】
    LwIP应用开发笔记之十:LwIP带操作系统基本移植
  • 原文地址:https://www.cnblogs.com/zhubinwang/p/4801257.html
Copyright © 2011-2022 走看看