Files
tssc-hpcg/Makefile.ext
2026-01-18 20:37:50 +08:00

222 lines
9.6 KiB
Makefile

# -*- Makefile -*-
# SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
arch = UNKNOWN
setup_file = setup/Make.$(arch)
include $(setup_file)
bin_name='bin/xhpcg'
ifeq ($(USE_CUDA), 0)
ifneq ($(USE_GRACE), 0)
bin_name='bin/xhpcg-cpu'
endif
endif
HPCG_DEPS = src/CG.o \
src/CG_ref.o \
src/TestCG.o \
src/ComputeResidual.o \
src/ExchangeHalo.o \
src/GenerateGeometry.o \
src/GenerateProblem.o \
src/GenerateProblem_ref.o \
src/CheckProblem.o \
src/MixedBaseCounter.o \
src/OptimizeProblem.o \
src/ReadHpcgDat.o \
src/ReportResults.o \
src/SetupHalo.o \
src/SetupHalo_ref.o \
src/TestSymmetry.o \
src/TestNorms.o \
src/WriteProblem.o \
src/YAML_Doc.o \
src/YAML_Element.o \
src/ComputeDotProduct.o \
src/ComputeDotProduct_ref.o \
src/mytimer.o \
src/ComputeOptimalShapeXYZ.o \
src/ComputeSPMV.o \
src/ComputeSPMV_ref.o \
src/ComputeSYMGS.o \
src/ComputeSYMGS_ref.o \
src/ComputeWAXPBY.o \
src/ComputeWAXPBY_ref.o \
src/ComputeMG_ref.o \
src/ComputeMG.o \
src/ComputeProlongation_ref.o \
src/ComputeRestriction_ref.o \
src/ComputeProlongation.o \
src/ComputeRestriction.o \
src/CheckAspectRatio.o \
src/OutputFile.o \
src/GenerateCoarseProblem.o \
src/init.o \
src/finalize.o \
src/CudaKernels.o \
src/CpuKernels.o
# These header files are included in many source files, so we recompile every file if one or more of these header is modified.
PRIMARY_HEADERS = HPCG_SRC_PATH/src/Geometry.hpp HPCG_SRC_PATH/src/SparseMatrix.hpp HPCG_SRC_PATH/src/Vector.hpp HPCG_SRC_PATH/src/CGData.hpp \
HPCG_SRC_PATH/src/MGData.hpp HPCG_SRC_PATH/src/hpcg.hpp
all: $(bin_name)
$(bin_name): src/main.o $(HPCG_DEPS)
$(LINKER) $(LINKFLAGS) src/main.o $(HPCG_DEPS) $(HPCG_LIBS) -o $(bin_name)
install:
cp $(bin_name) ../bin/
clean:
rm -f src/*.o $(bin_name)
.PHONY: all clean
src/main.o: HPCG_SRC_PATH/src/main.cpp $(PRIMARY_HEADERS)
$(CXX) -c $(CXXFLAGS) -IHPCG_SRC_PATH/src $< -o $@
src/CG.o: HPCG_SRC_PATH/src/CG.cpp HPCG_SRC_PATH/src/CG.hpp $(PRIMARY_HEADERS)
$(CXX) -c $(CXXFLAGS) -IHPCG_SRC_PATH/src $< -o $@
src/CG_ref.o: HPCG_SRC_PATH/src/CG_ref.cpp HPCG_SRC_PATH/src/CG_ref.hpp $(PRIMARY_HEADERS)
$(CXX) -c $(CXXFLAGS) -IHPCG_SRC_PATH/src $< -o $@
src/TestCG.o: HPCG_SRC_PATH/src/TestCG.cpp HPCG_SRC_PATH/src/TestCG.hpp $(PRIMARY_HEADERS)
$(CXX) -c $(CXXFLAGS) -IHPCG_SRC_PATH/src $< -o $@
src/ComputeResidual.o: HPCG_SRC_PATH/src/ComputeResidual.cpp HPCG_SRC_PATH/src/ComputeResidual.hpp $(PRIMARY_HEADERS)
$(CXX) -c $(CXXFLAGS) -IHPCG_SRC_PATH/src $< -o $@
src/ExchangeHalo.o: HPCG_SRC_PATH/src/ExchangeHalo.cpp HPCG_SRC_PATH/src/ExchangeHalo.hpp $(PRIMARY_HEADERS)
$(CXX) -c $(CXXFLAGS) -IHPCG_SRC_PATH/src $< -o $@
src/GenerateGeometry.o: HPCG_SRC_PATH/src/GenerateGeometry.cpp HPCG_SRC_PATH/src/GenerateGeometry.hpp $(PRIMARY_HEADERS)
$(CXX) -c $(CXXFLAGS) -IHPCG_SRC_PATH/src $< -o $@
src/GenerateProblem.o: HPCG_SRC_PATH/src/GenerateProblem.cpp HPCG_SRC_PATH/src/GenerateProblem.hpp $(PRIMARY_HEADERS)
$(CXX) -c $(CXXFLAGS) -IHPCG_SRC_PATH/src $< -o $@
src/GenerateProblem_ref.o: HPCG_SRC_PATH/src/GenerateProblem_ref.cpp HPCG_SRC_PATH/src/GenerateProblem_ref.hpp $(PRIMARY_HEADERS)
$(CXX) -c $(CXXFLAGS) -IHPCG_SRC_PATH/src $< -o $@
src/CheckProblem.o: HPCG_SRC_PATH/src/CheckProblem.cpp HPCG_SRC_PATH/src/CheckProblem.hpp $(PRIMARY_HEADERS)
$(CXX) -c $(CXXFLAGS) -IHPCG_SRC_PATH/src $< -o $@
src/MixedBaseCounter.o: HPCG_SRC_PATH/src/MixedBaseCounter.cpp HPCG_SRC_PATH/src/MixedBaseCounter.hpp $(PRIMARY_HEADERS)
$(CXX) -c $(CXXFLAGS) -IHPCG_SRC_PATH/src $< -o $@
src/OptimizeProblem.o: HPCG_SRC_PATH/src/OptimizeProblem.cpp HPCG_SRC_PATH/src/OptimizeProblem.hpp $(PRIMARY_HEADERS)
$(CXX) -c $(CXXFLAGS) -IHPCG_SRC_PATH/src $< -o $@
src/ReadHpcgDat.o: HPCG_SRC_PATH/src/ReadHpcgDat.cpp HPCG_SRC_PATH/src/ReadHpcgDat.hpp $(PRIMARY_HEADERS)
$(CXX) -c $(CXXFLAGS) -IHPCG_SRC_PATH/src $< -o $@
src/ReportResults.o: HPCG_SRC_PATH/src/ReportResults.cpp HPCG_SRC_PATH/src/ReportResults.hpp $(PRIMARY_HEADERS)
$(CXX) -c $(CXXFLAGS) -IHPCG_SRC_PATH/src $< -o $@
src/SetupHalo.o: HPCG_SRC_PATH/src/SetupHalo.cpp HPCG_SRC_PATH/src/SetupHalo.hpp $(PRIMARY_HEADERS)
$(CXX) -c $(CXXFLAGS) -IHPCG_SRC_PATH/src $< -o $@
src/SetupHalo_ref.o: HPCG_SRC_PATH/src/SetupHalo_ref.cpp HPCG_SRC_PATH/src/SetupHalo_ref.hpp $(PRIMARY_HEADERS)
$(CXX) -c $(CXXFLAGS) -IHPCG_SRC_PATH/src $< -o $@
src/TestSymmetry.o: HPCG_SRC_PATH/src/TestSymmetry.cpp HPCG_SRC_PATH/src/TestSymmetry.hpp $(PRIMARY_HEADERS)
$(CXX) -c $(CXXFLAGS) -IHPCG_SRC_PATH/src $< -o $@
src/TestNorms.o: HPCG_SRC_PATH/src/TestNorms.cpp HPCG_SRC_PATH/src/TestNorms.hpp $(PRIMARY_HEADERS)
$(CXX) -c $(CXXFLAGS) -IHPCG_SRC_PATH/src $< -o $@
src/WriteProblem.o: HPCG_SRC_PATH/src/WriteProblem.cpp HPCG_SRC_PATH/src/WriteProblem.hpp $(PRIMARY_HEADERS)
$(CXX) -c $(CXXFLAGS) -IHPCG_SRC_PATH/src $< -o $@
src/YAML_Doc.o: HPCG_SRC_PATH/src/YAML_Doc.cpp HPCG_SRC_PATH/src/YAML_Doc.hpp $(PRIMARY_HEADERS)
$(CXX) -c $(CXXFLAGS) -IHPCG_SRC_PATH/src $< -o $@
src/YAML_Element.o: HPCG_SRC_PATH/src/YAML_Element.cpp HPCG_SRC_PATH/src/YAML_Element.hpp $(PRIMARY_HEADERS)
$(CXX) -c $(CXXFLAGS) -IHPCG_SRC_PATH/src $< -o $@
src/ComputeDotProduct.o: HPCG_SRC_PATH/src/ComputeDotProduct.cpp HPCG_SRC_PATH/src/ComputeDotProduct.hpp $(PRIMARY_HEADERS)
$(CXX) -c $(CXXFLAGS) -IHPCG_SRC_PATH/src $< -o $@
src/ComputeDotProduct_ref.o: HPCG_SRC_PATH/src/ComputeDotProduct_ref.cpp HPCG_SRC_PATH/src/ComputeDotProduct_ref.hpp $(PRIMARY_HEADERS)
$(CXX) -c $(CXXFLAGS) -IHPCG_SRC_PATH/src $< -o $@
src/finalize.o: HPCG_SRC_PATH/src/finalize.cpp $(PRIMARY_HEADERS)
$(CXX) -c $(CXXFLAGS) -IHPCG_SRC_PATH/src $< -o $@
src/init.o: HPCG_SRC_PATH/src/init.cpp $(PRIMARY_HEADERS)
$(CXX) -c $(CXXFLAGS) -IHPCG_SRC_PATH/src $< -o $@
src/mytimer.o: HPCG_SRC_PATH/src/mytimer.cpp HPCG_SRC_PATH/src/mytimer.hpp $(PRIMARY_HEADERS)
$(CXX) -c $(CXXFLAGS) -IHPCG_SRC_PATH/src $< -o $@
src/ComputeOptimalShapeXYZ.o: HPCG_SRC_PATH/src/ComputeOptimalShapeXYZ.cpp HPCG_SRC_PATH/src/ComputeOptimalShapeXYZ.hpp $(PRIMARY_HEADERS)
$(CXX) -c $(CXXFLAGS) -IHPCG_SRC_PATH/src $< -o $@
src/ComputeSPMV.o: HPCG_SRC_PATH/src/ComputeSPMV.cpp HPCG_SRC_PATH/src/ComputeSPMV.hpp $(PRIMARY_HEADERS)
$(CXX) -c $(CXXFLAGS) -IHPCG_SRC_PATH/src $< -o $@
src/ComputeSPMV_ref.o: HPCG_SRC_PATH/src/ComputeSPMV_ref.cpp HPCG_SRC_PATH/src/ComputeSPMV_ref.hpp $(PRIMARY_HEADERS)
$(CXX) -c $(CXXFLAGS) -IHPCG_SRC_PATH/src $< -o $@
src/ComputeSYMGS.o: HPCG_SRC_PATH/src/ComputeSYMGS.cpp HPCG_SRC_PATH/src/ComputeSYMGS.hpp $(PRIMARY_HEADERS)
$(CXX) -c $(CXXFLAGS) -IHPCG_SRC_PATH/src $< -o $@
src/ComputeSYMGS_ref.o: HPCG_SRC_PATH/src/ComputeSYMGS_ref.cpp HPCG_SRC_PATH/src/ComputeSYMGS_ref.hpp $(PRIMARY_HEADERS)
$(CXX) -c $(CXXFLAGS) -IHPCG_SRC_PATH/src $< -o $@
src/ComputeWAXPBY.o: HPCG_SRC_PATH/src/ComputeWAXPBY.cpp HPCG_SRC_PATH/src/ComputeWAXPBY.hpp $(PRIMARY_HEADERS)
$(CXX) -c $(CXXFLAGS) -IHPCG_SRC_PATH/src $< -o $@
src/ComputeWAXPBY_ref.o: HPCG_SRC_PATH/src/ComputeWAXPBY_ref.cpp HPCG_SRC_PATH/src/ComputeWAXPBY_ref.hpp $(PRIMARY_HEADERS)
$(CXX) -c $(CXXFLAGS) -IHPCG_SRC_PATH/src $< -o $@
src/ComputeMG_ref.o: HPCG_SRC_PATH/src/ComputeMG_ref.cpp HPCG_SRC_PATH/src/ComputeMG_ref.hpp $(PRIMARY_HEADERS)
$(CXX) -c $(CXXFLAGS) -IHPCG_SRC_PATH/src $< -o $@
src/ComputeMG.o: HPCG_SRC_PATH/src/ComputeMG.cpp HPCG_SRC_PATH/src/ComputeMG.hpp $(PRIMARY_HEADERS)
$(CXX) -c $(CXXFLAGS) -IHPCG_SRC_PATH/src $< -o $@
src/ComputeProlongation_ref.o: HPCG_SRC_PATH/src/ComputeProlongation_ref.cpp HPCG_SRC_PATH/src/ComputeProlongation_ref.hpp $(PRIMARY_HEADERS)
$(CXX) -c $(CXXFLAGS) -IHPCG_SRC_PATH/src $< -o $@
src/ComputeRestriction_ref.o: HPCG_SRC_PATH/src/ComputeRestriction_ref.cpp HPCG_SRC_PATH/src/ComputeRestriction_ref.hpp $(PRIMARY_HEADERS)
$(CXX) -c $(CXXFLAGS) -IHPCG_SRC_PATH/src $< -o $@
src/ComputeProlongation.o: HPCG_SRC_PATH/src/ComputeProlongation.cpp HPCG_SRC_PATH/src/ComputeProlongation.hpp $(PRIMARY_HEADERS)
$(CXX) -c $(CXXFLAGS) -IHPCG_SRC_PATH/src $< -o $@
src/ComputeRestriction.o: HPCG_SRC_PATH/src/ComputeRestriction.cpp HPCG_SRC_PATH/src/ComputeRestriction.hpp $(PRIMARY_HEADERS)
$(CXX) -c $(CXXFLAGS) -IHPCG_SRC_PATH/src $< -o $@
src/GenerateCoarseProblem.o: HPCG_SRC_PATH/src/GenerateCoarseProblem.cpp HPCG_SRC_PATH/src/GenerateCoarseProblem.hpp $(PRIMARY_HEADERS)
$(CXX) -c $(CXXFLAGS) -IHPCG_SRC_PATH/src $< -o $@
src/CheckAspectRatio.o: HPCG_SRC_PATH/src/CheckAspectRatio.cpp HPCG_SRC_PATH/src/CheckAspectRatio.hpp $(PRIMARY_HEADERS)
$(CXX) -c $(CXXFLAGS) -IHPCG_SRC_PATH/src $< -o $@
src/OutputFile.o: HPCG_SRC_PATH/src/OutputFile.cpp HPCG_SRC_PATH/src/OutputFile.hpp $(PRIMARY_HEADERS)
$(CXX) -c $(CXXFLAGS) -IHPCG_SRC_PATH/src $< -o $@
src/CpuKernels.o: HPCG_SRC_PATH/src/CpuKernels.cpp HPCG_SRC_PATH/src/CpuKernels.hpp $(PRIMARY_HEADERS)
$(CXX) -c $(CXXFLAGS) -IHPCG_SRC_PATH/src $< -o $@
src/CudaKernels.o: HPCG_SRC_PATH/src/CudaKernels.cu
nvcc -c -O3 $(CUDA_ARCH) $(HPCG_DEFS) -IHPCG_SRC_PATH/src -I$(CUDA_HOME)/include -I$(CUBLASROOT)/include -I$(MPdir)/include $< -o $@