Why does the following happen when I compile the sample code for cufftmp in cudasample and run it dual-threaded
*With a single thread it can run
Why does the following happen when I compile the sample code for cufftmp in cudasample and run it dual-threaded
*With a single thread it can run
my makefile
include …/common.mk
exe = cufftmp_c2c
all: $(exe)
.PHONY: clean
clean:
rm -rf $(exe)
$(exe): $(exe).cu
${CUDA_HOME}/bin/nvcc $< -o $@ -lcuda -std=c++17
-L${CUFFT_LIB} -I${CUFFT_INC} -lcufftMp
-I${MPI_HOME}/include -L${MPI_HOME}/lib -l${MPI}
build: $(exe)
run: $(exe)
LD_LIBRARY_PATH=“${NVSHMEM_LIB}:${CUFFT_LIB}:${LD_LIBRARY_PATH}” mpirun -oversubscribe -n 2 $(exe)
common.mk
MPI_HOME ?= /opt/nvidia/hpc_sdk/Linux_x86_64/22.5/comm_libs/hpcx/hpcx-2.11/ompi
NVSHMEM_LIB ?= /opt/nvidia/hpc_sdk/Linux_x86_64/22.5/comm_libs/11.7/nvshmem/lib/
CUDA_HOME ?= $(shell dirname $$(command -v nvcc))/…
CUFFT_LIB ?= /opt/nvidia/hpc_sdk/Linux_x86_64/22.5/math_libs/11.7/targets/x86_64-linux/lib
CUFFT_INC ?= /opt/nvidia/hpc_sdk/Linux_x86_64/22.5/math_libs/11.7/targets/x86_64-linux/include/cufftmp
ARCH ?= $(shell uname -m)
ifeq ($(ARCH), ppc64le)
MPI ?= mpi_ibm
else
MPI ?= mpi
endif
This is not a compilation problem.
You may wish to search for descriptions of the problem “mpi failed to bind memory” when running a code inside a container.