Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2025-03-08 03:06:51

0001 #
0002 # stuff to make
0003 #
0004 
0005 CCSOURCES=$(wildcard ../../src/*.cc)
0006 ALPAKACCSOURCES=$(wildcard ../../src/alpaka/*.dev.cc)
0007 CCOBJECTS_CPU=$(patsubst ../../src/alpaka/%.dev.cc, %_cpu.o, $(ALPAKACCSOURCES)) $(patsubst ../../src/%.cc, %_cpu.o, $(CCSOURCES))
0008 CCOBJECTS_CUDA=$(patsubst ../../src/alpaka/%.dev.cc, %_cuda.o, $(ALPAKACCSOURCES)) $(patsubst ../../src/%.cc, %_cuda.o, $(CCSOURCES))
0009 CCOBJECTS_ROCM=$(patsubst ../../src/alpaka/%.dev.cc, %_rocm.o, $(ALPAKACCSOURCES)) $(patsubst ../../src/%.cc, %_rocm.o, $(CCSOURCES))
0010 
0011 LSTSOURCES=../../src/alpaka/LST.cc
0012 LSTOBJECTS_CPU=$(patsubst ../../src/alpaka/%.cc, %_cpu.o, $(LSTSOURCES))
0013 LSTOBJECTS_CUDA=$(patsubst ../../src/alpaka/%.cc, %_cuda.o, $(LSTSOURCES))
0014 LSTOBJECTS_ROCM=$(patsubst ../../src/alpaka/%.cc, %_rocm.o, $(LSTSOURCES))
0015 
0016 # Default to CPU and CUDA backends
0017 ifeq ($(BACKEND),)
0018   LIB_CPU=liblst_cpu.so
0019   LIB_CUDA=liblst_cuda.so
0020 endif
0021 
0022 ifneq ($(findstring cpu,$(BACKEND)),)
0023   LIB_CPU=liblst_cpu.so
0024 endif
0025 ifneq ($(findstring cuda,$(BACKEND)),)
0026   LIB_CUDA=liblst_cuda.so
0027 endif
0028 ifneq ($(findstring rocm,$(BACKEND)),)
0029   LIB_ROCM=liblst_rocm.so
0030 endif
0031 ifneq ($(findstring all,$(BACKEND)),)
0032   LIB_CPU=liblst_cpu.so
0033   LIB_CUDA=liblst_cuda.so
0034   LIB_ROCM=liblst_rocm.so
0035 endif
0036 
0037 LIBS=$(LIB_CPU) $(LIB_CUDA) $(LIB_ROCM)
0038 
0039 #
0040 # flags to keep track of
0041 #
0042 
0043 # Different architectures to optimize for
0044 GENCODE_CUDA := -gencode arch=compute_70,code=[sm_70,compute_70] -gencode arch=compute_89,code=[sm_89,compute_89]
0045 
0046 CXX                  = g++
0047 CXXFLAGS_CPU         = -march=native -mtune=native -Ofast -fno-reciprocal-math -fopenmp-simd -g -Wall -Woverloaded-virtual -fPIC -fopenmp -I..
0048 CXXFLAGS_CUDA        = -O3 -g --compiler-options -Wall --compiler-options -Woverloaded-virtual --compiler-options -fPIC --compiler-options -fopenmp -dc -lineinfo --ptxas-options=-v --cudart shared $(GENCODE_CUDA) --use_fast_math --default-stream per-thread -I..
0049 CXXFLAGS_ROCM        = -O3 -g -Wall -Woverloaded-virtual -fPIC -I${ROCM_ROOT}/include -I..
0050 CMSSWINCLUDE        := -I${TRACKLOOPERDIR}/../../../ -I${CMSSW_BASE}/src -I${FMT_ROOT}/include
0051 ifdef CMSSW_RELEASE_BASE 
0052 CMSSWINCLUDE        := ${CMSSWINCLUDE} -I${CMSSW_RELEASE_BASE}/src
0053 endif
0054 ALPAKAINCLUDE        = -I${ALPAKA_ROOT}/include -I/${BOOST_ROOT}/include -std=c++20 ${CMSSWINCLUDE} 
0055 ALPAKASERIAL         = -DALPAKA_ACC_CPU_B_SEQ_T_SEQ_ENABLED -DALPAKA_DISABLE_VENDOR_RNG -DALPAKA_DEFAULT_HOST_MEMORY_ALIGNMENT=128
0056 ALPAKACUDA           = -DALPAKA_ACC_GPU_CUDA_ENABLED -DALPAKA_ACC_GPU_CUDA_ONLY -DALPAKA_DISABLE_VENDOR_RNG -DALPAKA_DEFAULT_HOST_MEMORY_ALIGNMENT=128 --expt-relaxed-constexpr
0057 ALPAKAROCM           = -DALPAKA_ACC_GPU_HIP_ENABLED -DALPAKA_ACC_GPU_HIP_ONLY -DALPAKA_DISABLE_VENDOR_RNG -DALPAKA_DEFAULT_HOST_MEMORY_ALIGNMENT=128 -DGNU_GCC -D_GNU_SOURCE --target=x86_64-redhat-linux-gnu --gcc-toolchain=$(patsubst %/bin/gcc,%,$(shell command -v gcc))
0058 ROOTINCLUDE          = -I$(ROOT_ROOT)/include
0059 ROOTCFLAGS           = -pthread -m64 $(ROOTINCLUDE) 
0060 PTCUTFLAG            =
0061 LSTWARNINGSFLAG      =
0062 LSTSTANDALONEFLAG    = -DLST_STANDALONE
0063 CMSSW_WERRORS_CPU    = -Werror=pointer-arith -Werror=overlength-strings -Werror=return-type -Werror=missing-braces -Werror=unused-value -Werror=unused-label \
0064                        -Werror=address -Werror=format -Werror=sign-compare -Werror=write-strings -Werror=delete-non-virtual-dtor -Werror=strict-aliasing -Werror=narrowing \
0065                        -Werror=unused-but-set-variable -Werror=reorder -Werror=unused-variable -Werror=conversion-null -Werror=return-local-addr -Wnon-virtual-dtor -Werror=switch \
0066                        -Werror=main -Werror=overflow -Werror=format-contains-nul -Werror=type-limits -Wreturn-type -Wextra -Wpessimizing-move -Wclass-memaccess -Wunused \
0067                        -Wparentheses -Wno-vla -Wno-non-template-friend -Wno-long-long -Wno-cast-function-type -Wno-unused-but-set-parameter -Wno-ignored-qualifiers \
0068                        -Wno-unused-parameter -Wno-unused-local-typedefs -Wno-attributes
0069 CMSSW_WERRORS_CUDA   = $(patsubst %,-Xcompiler %,$(CMSSW_WERRORS_CPU))
0070 CMSSW_WERRORS_ROCM   = $(CMSSW_WERRORS_CPU)
0071 T5CUTFLAGS           = $(T5DNNFLAG) $(T5RZCHI2FLAG)
0072 
0073 LD_CPU               = g++
0074 SOFLAGS_CPU          = -g -shared -fPIC
0075 ALPAKABACKEND_CPU    = $(ALPAKASERIAL)
0076 COMPILE_CMD_CPU      = $(LD_CPU) -c
0077 
0078 LD_CUDA              = nvcc
0079 SOFLAGS_CUDA         = -g -shared --compiler-options -fPIC --cudart shared $(GENCODE_CUDA)
0080 ALPAKABACKEND_CUDA   = $(ALPAKACUDA)
0081 COMPILE_CMD_CUDA     = $(LD_CUDA) -x cu
0082 
0083 LD_ROCM              = hipcc
0084 SOFLAGS_ROCM         = -g -shared -fPIC
0085 ALPAKABACKEND_ROCM   = $(ALPAKAROCM)
0086 COMPILE_CMD_ROCM     = $(LD_ROCM) -c
0087 
0088 CUTVALUEFLAG =
0089 CUTVALUEFLAG_FLAGS = -DCUT_VALUE_DEBUG
0090 
0091 %_cpu.o: ../../src/alpaka/%.dev.cc
0092         $(COMPILE_CMD_CPU) $(CXXFLAGS_CPU) $(ROOTINCLUDE) $(CUTVALUEFLAG) $(LSTWARNINGSFLAG) $(LSTSTANDALONEFLAG) $(CMSSW_WERRORS_CPU) $(T5CUTFLAGS) $(ALPAKAINCLUDE) $(ALPAKABACKEND_CPU) $< -o $@
0093 
0094 %_cuda.o: ../../src/alpaka/%.dev.cc
0095         $(COMPILE_CMD_CUDA) $(CXXFLAGS_CUDA) $(ROOTINCLUDE) $(CUTVALUEFLAG) $(LSTWARNINGSFLAG) $(LSTSTANDALONEFLAG) $(CMSSW_WERRORS_CUDA) $(T5CUTFLAGS) $(ALPAKAINCLUDE) $(ALPAKABACKEND_CUDA) $< -o $@
0096 
0097 %_rocm.o: ../../src/alpaka/%.dev.cc
0098         $(COMPILE_CMD_ROCM) $(CXXFLAGS_ROCM) $(ROOTINCLUDE) $(CUTVALUEFLAG) $(LSTWARNINGSFLAG) $(LSTSTANDALONEFLAG) $(CMSSW_WERRORS_ROCM) $(T5CUTFLAGS) $(ALPAKAINCLUDE) $(ALPAKABACKEND_ROCM) $< -o $@
0099 
0100 %_cpu.o: ../../src/alpaka/%.cc
0101         $(COMPILE_CMD_CPU) $(CXXFLAGS_CPU) $(ROOTINCLUDE) $(CUTVALUEFLAG) $(LSTWARNINGSFLAG) $(LSTSTANDALONEFLAG) $(CMSSW_WERRORS_CPU) $(T5CUTFLAGS) $(ALPAKAINCLUDE) $(ALPAKABACKEND_CPU) $< -o $@
0102 
0103 %_cuda.o: ../../src/alpaka/%.cc
0104         $(COMPILE_CMD_CUDA) $(CXXFLAGS_CUDA) $(ROOTINCLUDE) $(CUTVALUEFLAG) $(LSTWARNINGSFLAG) $(LSTSTANDALONEFLAG) $(CMSSW_WERRORS_CUDA) $(T5CUTFLAGS) $(ALPAKAINCLUDE) $(ALPAKABACKEND_CUDA) $< -o $@
0105 
0106 %_rocm.o: ../../src/alpaka/%.cc
0107         $(COMPILE_CMD_ROCM) $(CXXFLAGS_ROCM) $(ROOTINCLUDE) $(CUTVALUEFLAG) $(LSTWARNINGSFLAG) $(LSTSTANDALONEFLAG) $(CMSSW_WERRORS_ROCM) $(T5CUTFLAGS) $(ALPAKAINCLUDE) $(ALPAKABACKEND_ROCM) $< -o $@
0108 
0109 %_cpu.o: ../../src/%.cc
0110         $(COMPILE_CMD_CPU) $(CXXFLAGS_CPU) $(ROOTINCLUDE) $(CUTVALUEFLAG) $(LSTWARNINGSFLAG) $(LSTSTANDALONEFLAG) $(CMSSW_WERRORS_CPU) $(T5CUTFLAGS) $(ALPAKAINCLUDE) $(ALPAKABACKEND_CPU) $< -o $@
0111 
0112 %_cuda.o: ../../src/%.cc
0113         $(COMPILE_CMD_CUDA) $(CXXFLAGS_CUDA) $(ROOTINCLUDE) $(CUTVALUEFLAG) $(LSTWARNINGSFLAG) $(LSTSTANDALONEFLAG) $(CMSSW_WERRORS_CUDA) $(T5CUTFLAGS) $(ALPAKAINCLUDE) $(ALPAKABACKEND_CUDA) $< -o $@
0114 
0115 %_rocm.o: ../../src/%.cc
0116         $(COMPILE_CMD_ROCM) $(CXXFLAGS_ROCM) $(ROOTINCLUDE) $(CUTVALUEFLAG) $(LSTWARNINGSFLAG) $(LSTSTANDALONEFLAG) $(CMSSW_WERRORS_ROCM) $(T5CUTFLAGS) $(ALPAKAINCLUDE) $(ALPAKABACKEND_ROCM) $< -o $@
0117 
0118 $(LIB_CPU): $(CCOBJECTS_CPU) $(LSTOBJECTS_CPU)
0119         $(LD_CPU) $(SOFLAGS_CPU) $^ -o $@
0120 
0121 $(LIB_CUDA): $(CCOBJECTS_CUDA) $(LSTOBJECTS_CUDA)
0122         $(LD_CUDA) $(SOFLAGS_CUDA) $^ -o $@
0123 
0124 $(LIB_ROCM): $(CCOBJECTS_ROCM) $(LSTOBJECTS_ROCM)
0125         $(LD_ROCM) $(SOFLAGS_ROCM) $^ -o $@
0126 
0127 explicit: $(LIBS)
0128 
0129 explicit_cutvalue: CUTVALUEFLAG = $(CUTVALUEFLAG_FLAGS)
0130 explicit_cutvalue: $(LIBS)
0131 
0132 clean:
0133         rm -f *.opp
0134         rm -f *.o
0135         rm -f *.d
0136         rm -f *.so
0137 
0138 .PHONY: clean explicit explicit_cutvalue format check check-fix
0139 
0140 format:
0141         clang-format --style=file:../.clang-format -i *.cc *.h
0142 
0143 # Collect all the include paths from the compiler.
0144 # The .../gcc/x86_64-redhat-linux-gnu/*/include path is excluded since .../gcc/x86_64-redhat-linux-gnu/*/include-fixed should be used instead.
0145 TIDYINCLUDEFLAGS := $(shell g++ -E -x c++ - -v < /dev/null 2>&1 | awk '/#include <...>/,/^End of search/{if (/^ / && !/x86_64-redhat-linux-gnu\/[0-9.]+\/include$$/) print "-I"$$1}' | tr '\n' ' ')
0146 TIDYFLAGS := --language=c++ $(CXXFLAGS_CPU) $(ALPAKAINCLUDE) $(ALPAKASERIAL) $(ROOTCFLAGS) $(DUPLICATED) $(TIDYINCLUDEFLAGS)
0147 
0148 check:
0149         clang-tidy --config-file=../.clang-tidy *.cc *.h -- $(TIDYFLAGS)
0150 
0151 check-fix:
0152         clang-tidy --config-file=../.clang-tidy --format-style=file:../.clang-format --fix --fix-errors --fix-notes *.cc *.h -- $(TIDYFLAGS)