Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.
7093 Discussions

Intel MKL MPI 2020.4 Cluster FFT Fatal Errors when creating DftiDM descriptor

JR
New Contributor I
2,633 Views

Having encountered the same problem with my own code, I tried to run the Intel provided Cluster FFT examples located at /opt/intel/oneapi/mkl/latest/examples/examples_cluster_c.tgz. As a first pick, I tried compiling and running dm_complex_2d_single_ex2.c. The code runs fine until it is time to allocate memory for the descriptor by calling DftiCreateDescriptorDM. This is where the code encounters the runtime fatal errors.

 

/*
**  2. Allocate memory for the descriptor by calling DftiCreateDescriptorDM
**     (Create DftiDM descriptor for 2D single precision transform)
*/
printf("%2d: Creating Descriptor Handle.\n", MPI_Rank); fflush(stdout);
Status = DftiCreateDescriptorDM(MPI_COMM_WORLD,&desc,PREC,DFTI_COMPLEX,2,lengths);
printf("%2d: Descriptor Created.\n", MPI_Rank); fflush(stdout);
if (ADVANCED_DATA_PRINT && (MPI_Rank == 0))
    printf("Create=%ld\n",(long)Status);
if (!DftiErrorClass(Status, DFTI_NO_ERROR)) local_failure++;
MPI_Allreduce(&local_failure, &global_failure, 1, MPI_INT, MPI_MAX, MPI_COMM_WORLD);
if (global_failure != 0) goto FREE_DESCRIPTOR;

 

Before the built executable actually starts running the code, I get the following startup warning from each process.

 

MPI startup(): Warning: I_MPI_PMI_LIBRARY will be ignored since the hydra process manager was found

 

When the code gets to the point where it has to call the DftiCreateDescriptorDM function, every process throws the following error and exits.

 

Intel MKL FATAL ERROR: Cannot load symbol MKLMPI_Get_wrappers.

 

I am not sure what the problem really is and how I should solve it. Any help is appreciated. Thank you.

Labels (1)
0 Kudos
1 Solution
SantoshY_Intel
Moderator
2,518 Views

Hi,

 

We tried with the below Makefile and it worked fine at our end as seen in the attached screenshot below.

 

# Specify the compiler and the linker flags to use
CXX   = mpiicc
CXXFLAGS = -c -mkl -Wall -Wextra
LDFLAGS = -mkl -L${MKLROOT}/lib/intel64 -lmkl_cdft_core -lmkl_intel_ilp64 -lmkl_sequential -lmkl_core -lmkl_blacs_intelmpi_ilp64 -lpthread -ldl

# Specify the names of the object and header files
OBJECTS = dm_complex_2d_single_ex2.o cdft_example_support.o
DEPS  = mkl_cdft_examples.h

# RULE 0: (Run the executable, if it exists)
run:  build
    @mpirun -np 4 ./build ../data/dm_complex_2d_single_ex2.dat
# RULE 1: (Link object files into an executable)
build: $(OBJECTS)
    $(CXX) $(OBJECTS) $(LDFLAGS) -o $@

# RULE 2: (Comipile sources to object files)
%.o:  %.c $(DEPS)
    $(CXX) $(CXXFLAGS) $< -o $@@

Please make use of the Intel oneMKL Link Line Advisor for using the appropriate linker flags. Please find the link below:

https://www.intel.com/content/www/us/en/developer/tools/oneapi/onemkl-link-line-advisor.html

 

If this resolves your issue, make sure to accept this as a solution. This would help others with a similar issue. Thank you!

 

Best Regards,

Santosh

View solution in original post

0 Kudos
5 Replies
SantoshY_Intel
Moderator
2,572 Views

Hi,


Thanks for reaching out to us.


>>"Intel MKL MPI 2020.4 Cluster FFT Fatal Errors when creating DftiDM descriptor"

Could you please try using the latest Intel MKL i.e Intel oneMKL 2021.4?


If your issue still persists, then could you please provide us with the steps(compilation and execution commands) to reproduce your issue at our end for further investigation?


Also, please provide your environment(OS) details.


Thanks & Regards,

Santosh


0 Kudos
JR
New Contributor I
2,562 Views

I first tested this with Intel MPI and MKL 2020.4 on a CentOS Linux release 8.4.2105 system. I subsequently tested this on Ubuntu 20.04.3 LTS running Intel MPI and MKL 2021.4 Build 20210831. I get exactly the same behaviour on the two systems.

The Makefile I wrote is the following.

 

# Specify the compiler and the linker flags to use
CXX      = mpiicc
CXXFLAGS = -c -mkl -Wall -Wextra
LDFLAGS  = -mkl 

# Specify the names of the object and header files
OBJECTS = dm_complex_2d_single_ex2.o cdft_example_support.o
DEPS    = mkl_cdft_examples.h

# RULE 0: (Run the executable, if it exists)
run:    build
    @mpirun -np 4 ./build ../data/dm_complex_2d_single_ex2.dat

# RULE 1: (Link object files into an executable)
build:  $(OBJECTS)
    $(CXX) $(OBJECTS) $(LDFLAGS) -o $@

# RULE 2: (Comipile sources to object files) 
%.o:    %.c $(DEPS)
    $(CXX) $(CXXFLAGS) $< -o $@@

 

0 Kudos
SantoshY_Intel
Moderator
2,519 Views

Hi,

 

We tried with the below Makefile and it worked fine at our end as seen in the attached screenshot below.

 

# Specify the compiler and the linker flags to use
CXX   = mpiicc
CXXFLAGS = -c -mkl -Wall -Wextra
LDFLAGS = -mkl -L${MKLROOT}/lib/intel64 -lmkl_cdft_core -lmkl_intel_ilp64 -lmkl_sequential -lmkl_core -lmkl_blacs_intelmpi_ilp64 -lpthread -ldl

# Specify the names of the object and header files
OBJECTS = dm_complex_2d_single_ex2.o cdft_example_support.o
DEPS  = mkl_cdft_examples.h

# RULE 0: (Run the executable, if it exists)
run:  build
    @mpirun -np 4 ./build ../data/dm_complex_2d_single_ex2.dat
# RULE 1: (Link object files into an executable)
build: $(OBJECTS)
    $(CXX) $(OBJECTS) $(LDFLAGS) -o $@

# RULE 2: (Comipile sources to object files)
%.o:  %.c $(DEPS)
    $(CXX) $(CXXFLAGS) $< -o $@@

Please make use of the Intel oneMKL Link Line Advisor for using the appropriate linker flags. Please find the link below:

https://www.intel.com/content/www/us/en/developer/tools/oneapi/onemkl-link-line-advisor.html

 

If this resolves your issue, make sure to accept this as a solution. This would help others with a similar issue. Thank you!

 

Best Regards,

Santosh

0 Kudos
JR
New Contributor I
2,498 Views

Hi Santosh,

You have been really helpful and kind. Thank you so much for your time.

Best,
J.R.

0 Kudos
SantoshY_Intel
Moderator
2,480 Views

Hi,


Thanks for accepting our solution. If you need any additional information, please post a new question as this thread will no longer be monitored by Intel.


Thanks & Regards,

Santosh


0 Kudos
Reply