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

  • 相关阅读:
    解决PKIX:unable to find valid certification path to requested target 的问题
    Linux 上的常用文件传输方式介绍与比较
    用VNC远程图形化连接Linux桌面的配置方法
    红帽中出现”This system is not registered with RHN”的解决方案
    linux安装时出现your cpu does not support long mode的解决方法
    CentOS SSH配置
    es6扩展运算符及rest运算符总结
    es6解构赋值总结
    tortoisegit安装、clon、推送
    es6环境搭建
  • 原文地址:https://www.cnblogs.com/zhubinwang/p/4801257.html
Copyright © 2011-2022 走看看