- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Good afternoon!
I am running Ubuntu Linux and I have installed MKL library. I tried to compile the following example:
/******************************************************************************* * Copyright 2004-2016 Intel Corporation All Rights Reserved. * * The source code, information and material ("Material") contained herein is * owned by Intel Corporation or its suppliers or licensors, and title to such * Material remains with Intel Corporation or its suppliers or licensors. The * Material contains proprietary information of Intel or its suppliers and * licensors. The Material is protected by worldwide copyright laws and treaty * provisions. No part of the Material may be used, copied, reproduced, * modified, published, uploaded, posted, transmitted, distributed or disclosed * in any way without Intel's prior express written permission. No license under * any patent, copyright or other intellectual property rights in the Material * is granted to or conferred upon you, either expressly, by implication, * inducement, estoppel or otherwise. Any license under such intellectual * property rights must be express and approved by Intel in writing. * * Unless otherwise agreed by Intel in writing, you may not remove or alter this * notice or any other notice embedded in Materials by Intel or Intel's * suppliers or licensors in any way. *******************************************************************************/ /* * Content : MKL DSS C example * ******************************************************************************** */ /* ** ** Example program to solve symmetric positive definite system of equations. ** */ #include<stdio.h> #include<stdlib.h> #include<math.h> #include "mkl_dss.h" #include "mkl_types.h" /* ** Define the array and rhs vectors */ #define NROWS 5 #define NCOLS 5 #define NNONZEROS 9 #define NRHS 1 static const MKL_INT nRows = NROWS; static const MKL_INT nCols = NCOLS; static const MKL_INT nNonZeros = NNONZEROS; static const MKL_INT nRhs = NRHS; static _INTEGER_t rowIndex[NROWS + 1] = { 1, 6, 7, 8, 9, 10 }; static _INTEGER_t columns[NNONZEROS] = { 1, 2, 3, 4, 5, 2, 3, 4, 5 }; static _DOUBLE_PRECISION_t values[NNONZEROS] = { 9, 1.5, 6, .75, 3, 0.5, 12, .625, 16 }; static _DOUBLE_PRECISION_t rhs[NCOLS] = { 1, 2, 3, 4, 5 }; MKL_INT main () { MKL_INT i; /* Allocate storage for the solver handle and the right-hand side. */ _DOUBLE_PRECISION_t solValues[NROWS]; _MKL_DSS_HANDLE_t handle; _INTEGER_t error; _CHARACTER_t statIn[] = "determinant"; _DOUBLE_PRECISION_t statOut[5]; MKL_INT opt = MKL_DSS_DEFAULTS; MKL_INT sym = MKL_DSS_SYMMETRIC; MKL_INT type = MKL_DSS_POSITIVE_DEFINITE; /* --------------------- */ /* Initialize the solver */ /* --------------------- */ error = dss_create (handle, opt); if (error != MKL_DSS_SUCCESS) goto printError; /* ------------------------------------------- */ /* Define the non-zero structure of the matrix */ /* ------------------------------------------- */ error = dss_define_structure (handle, sym, rowIndex, nRows, nCols, columns, nNonZeros); if (error != MKL_DSS_SUCCESS) goto printError; /* ------------------ */ /* Reorder the matrix */ /* ------------------ */ error = dss_reorder (handle, opt, 0); if (error != MKL_DSS_SUCCESS) goto printError; /* ------------------ */ /* Factor the matrix */ /* ------------------ */ error = dss_factor_real (handle, type, values); if (error != MKL_DSS_SUCCESS) goto printError; /* ------------------------ */ /* Get the solution vector */ /* ------------------------ */ error = dss_solve_real (handle, opt, rhs, nRhs, solValues); if (error != MKL_DSS_SUCCESS) goto printError; /* ------------------------ */ /* Get the determinant (not for a diagonal matrix) */ /*--------------------------*/ if (nRows < nNonZeros) { error = dss_statistics (handle, opt, statIn, statOut); if (error != MKL_DSS_SUCCESS) goto printError; /*-------------------------*/ /* print determinant */ /*-------------------------*/ printf (" determinant power is %g \n", statOut[0]); printf (" determinant base is %g \n", statOut[1]); printf (" Determinant is %g \n", (pow (10.0, statOut[0])) * statOut[1]); } /* -------------------------- */ /* Deallocate solver storage */ /* -------------------------- */ error = dss_delete (handle, opt); if (error != MKL_DSS_SUCCESS) goto printError; /* ---------------------- */ /* Print solution vector */ /* ---------------------- */ printf (" Solution array: "); for (i = 0; i < nCols; i++) printf (" %g", solValues); printf ("\n"); exit (0); printError: printf ("Solver returned error code %d\n", error); exit (1); }
After compilation when I run the program I obtain the following message:
MKL-DSS-DSS-Error, Invalid option Solver returned error code -13
The same program is compiled and run perfectly in Windows using Visual C++ compiler and MKL library.
The command for the code compilation in Linux is following:
g++ -m64 tstdss3.cpp -o test2 -L/opt/intel/mkl/lib/intel64 -L/opt/intel/parallel_studio_xe_2016.3.067/compilers_and_libraries_2016/linux/compiler/lib/intel64 -I/opt/intel/mkl/include -lmkl_intel_ilp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread -lm -ldl -v Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/5/lto-wrapper Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Ubuntu 5.4.0-6ubuntu1~16.04.1' --with-bugurl=file:///usr/share/doc/gcc-5/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-5 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-5-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-5-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-5-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu Thread model: posix gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.1) COLLECT_GCC_OPTIONS='-m64' '-o' 'test2' '-L/opt/intel/mkl/lib/intel64' '-L/opt/intel/parallel_studio_xe_2016.3.067/compilers_and_libraries_2016/linux/compiler/lib/intel64' '-I' '/opt/intel/mkl/include' '-v' '-shared-libgcc' '-mtune=generic' '-march=x86-64' /usr/lib/gcc/x86_64-linux-gnu/5/cc1plus -quiet -v -I /opt/intel/mkl/include -imultiarch x86_64-linux-gnu -D_GNU_SOURCE tstdss3.cpp -quiet -dumpbase tstdss3.cpp -m64 -mtune=generic -march=x86-64 -auxbase tstdss3 -version -fstack-protector-strong -Wformat -Wformat-security -o /tmp/ccB2IPdf.s GNU C++ (Ubuntu 5.4.0-6ubuntu1~16.04.1) version 5.4.0 20160609 (x86_64-linux-gnu) compiled by GNU C version 5.4.0 20160609, GMP version 6.1.0, MPFR version 3.1.4, MPC version 1.0.3 GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 ignoring duplicate directory "/usr/include/x86_64-linux-gnu/c++/5" ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu" ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/5/../../../../x86_64-linux-gnu/include" #include "..." search starts here: #include <...> search starts here: /opt/intel/mkl/include /usr/include/c++/5 /usr/include/x86_64-linux-gnu/c++/5 /usr/include/c++/5/backward /usr/lib/gcc/x86_64-linux-gnu/5/include /usr/local/include /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed /usr/include/x86_64-linux-gnu /usr/include End of search list. GNU C++ (Ubuntu 5.4.0-6ubuntu1~16.04.1) version 5.4.0 20160609 (x86_64-linux-gnu) compiled by GNU C version 5.4.0 20160609, GMP version 6.1.0, MPFR version 3.1.4, MPC version 1.0.3 GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: 54c46ecad36e047174be4f497c131a62 COLLECT_GCC_OPTIONS='-m64' '-o' 'test2' '-L/opt/intel/mkl/lib/intel64' '-L/opt/intel/parallel_studio_xe_2016.3.067/compilers_and_libraries_2016/linux/compiler/lib/intel64' '-I' '/opt/intel/mkl/include' '-v' '-shared-libgcc' '-mtune=generic' '-march=x86-64' as -v -I /opt/intel/mkl/include --64 -o /tmp/ccd7qc5s.o /tmp/ccB2IPdf.s GNU assembler version 2.26.1 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.26.1 COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/5/:/usr/lib/gcc/x86_64-linux-gnu/5/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/5/:/usr/lib/gcc/x86_64-linux-gnu/ LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/5/:/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/5/../../../:/lib/:/usr/lib/ COLLECT_GCC_OPTIONS='-m64' '-o' 'test2' '-L/opt/intel/mkl/lib/intel64' '-L/opt/intel/parallel_studio_xe_2016.3.067/compilers_and_libraries_2016/linux/compiler/lib/intel64' '-I' '/opt/intel/mkl/include' '-v' '-shared-libgcc' '-mtune=generic' '-march=x86-64' /usr/lib/gcc/x86_64-linux-gnu/5/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/5/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/5/lto-wrapper -plugin-opt=-fresolution=/tmp/cc8xx8XG.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --sysroot=/ --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -z relro -o test2 /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crt1.o /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/5/crtbegin.o -L/opt/intel/mkl/lib/intel64 -L/opt/intel/parallel_studio_xe_2016.3.067/compilers_and_libraries_2016/linux/compiler/lib/intel64 -L/usr/lib/gcc/x86_64-linux-gnu/5 -L/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/5/../../.. /tmp/ccd7qc5s.o -lmkl_intel_ilp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread -ldl -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/5/crtend.o /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crtn.o
When I run gcc -v I obtain:
gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/5/lto-wrapper Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Ubuntu 5.4.0-6ubuntu1~16.04.1' --with-bugurl=file:///usr/share/doc/gcc-5/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-5 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-5-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-5-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-5-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu Thread model: posix gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.1)
What can I do to run the program?
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
One or more of the MKL libraries that you are using contain ilp64 in their name(s). Any integer type arguments to routines in MKL should be 64-bit integers when those libraries are used. If you want to pass 32-bit integer arguments to MKL functions, you should use MKL libraries with lp64 in their names, instead. The MKL Link Line Advisor can help you with this.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks for support. I used the The MKL Link Line Advisor and the problem was solved.
I changed -lmkl_intel_ilp64 to -lmkl_intel_lp64 and worked.
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page