• 关于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 这三个指令,可以很方便的在指定目录下搜素、查找替换等操作,就避免了一个个文件名输入来说明编译关系。

  • 相关阅读:
    Windows常用命令
    Linux常用命令
    SpringBoot实现动态数据源切换及单库事务控制
    ArrayList与LinkedList
    java学习笔记之集合—ArrayList源码解析
    java学习笔记之反射—反射和工厂模式
    java学习笔记之反射—Class类实例化和对象的反射实例化
    java学习笔记之IO编程—对象序列化
    java学习笔记之IO编程—打印流和BufferedReader
    java学习笔记之IO编程—内存流、管道流、随机流
  • 原文地址:https://www.cnblogs.com/zhubinwang/p/4801257.html
Copyright © 2020-2023  润新知