The rpath is not being set properly by PETSc when it links in the Matlab engine libraries; it used to work but something else must have changed to break it.
I have a fix in the branch barry/2020-06-08/fix-matlabengine-details You should be able to do git fetch git checkout barry/2020-06-08/fix-matlabengine-details ./configure ARGS .... Please let us know if this resolves the problem Unfortunately we don't have a Matlab license for our test Mac machines so cannot test this in our test suite and detect the problem as soon as it is introduced. Perhaps Satish can see if there is a spare Matlab license for Mac that MCS pays for but isn't used. Barry > On Jun 9, 2020, at 4:58 PM, Amneet Bhalla <[email protected]> wrote: > > It is under > > amneetb@Amneets-MBP:/Applications/MATLAB_R2019b.app/bin/maci64$ ls *eng.dylib > libeng.dylib* > > On Tue, Jun 9, 2020 at 2:51 PM Junchao Zhang <[email protected] > <mailto:[email protected]>> wrote: > Find recursively where is libeng.dylib under > /Applications/MATLAB_R2019b.app/extern/engines/ > > --Junchao Zhang > > > On Tue, Jun 9, 2020 at 4:27 PM Amneet Bhalla <[email protected] > <mailto:[email protected]>> wrote: > Forgot to mention that configure found the following about MATLAB > > Matlab: > Includes: -I/Applications/MATLAB_R2019b.app/extern/include > /Applications/MATLAB_R2019b.app > MatlabEngine: > Library: -L/Applications/MATLAB_R2019b.app/bin/maci64 > -L/Applications/MATLAB_R2019b.app/extern/lib/maci64 -leng -lmex -lmx -lmat > -lut -licudata -licui18n -licuuc > > On Tue, Jun 9, 2020 at 2:20 PM Amneet Bhalla <[email protected] > <mailto:[email protected]>> wrote: > Do these additional configure flags for MATLAB look OK? > > --with-matlab=1 --with-matlab-dir=/Applications/MATLAB_R2019b.app > --with-matlab-engine=1 > --with-matlab-engine-dir=/Applications/MATLAB_R2019b.app/extern/engines/ > > > > With this configuration make compiled files like: > > CC darwin-dbg/obj/sys/classes/viewer/impls/matlab/vmatlab.o > CC > darwin-dbg/obj/sys/classes/viewer/impls/matlab/ftn-custom/zvmatlabf.o > CC darwin-dbg/obj/sys/classes/matlabengine/matlab.o > CC darwin-dbg/obj/sys/classes/matlabengine/ftn-auto/matlabf.o > CC darwin-dbg/obj/sys/classes/matlabengine/ftn-custom/zmatlabf.o > CC darwin-dbg/obj/vec/pf/impls/matlab/cmatlab.o > CC darwin-dbg/obj/vec/vec/utils/matlab/gcreatev.o > > make[2]: Leaving directory `/Users/amneetb/Softwares/PETSc-Gitlab/PETSc' > BEGINNING TO COMPILE MATLAB INTERFACE > Building with 'Xcode with Clang'. > ld: warning: cannot export hidden symbol _mexfilerequiredapiversion from > c_mexapi_version.o > > ld: warning: cannot export hidden symbol _mexfilerequiredapiversion from > c_mexapi_version.o > > MEX completed successfully. > Building with 'Xcode with Clang'. > ld: warning: cannot export hidden symbol _mexfilerequiredapiversion from > c_mexapi_version.o > > ld: warning: cannot export hidden symbol _mexfilerequiredapiversion from > c_mexapi_version.o > > MEX completed successfully. > Building with 'Xcode with Clang'. > ld: warning: cannot export hidden symbol _mexfilerequiredapiversion from > c_mexapi_version.o > > MEX completed successfully. > Building with 'Xcode with Clang'. > ld: warning: cannot export hidden symbol _mexfilerequiredapiversion from > c_mexapi_version.o > > ld: warning: cannot export hidden symbol _mexfilerequiredapiversion from > c_mexapi_version.o > > MEX completed successfully. > > > However, make check gives error > > amneetb@Amneets-MBP:~/Softwares/PETSc-Gitlab/PETSc$ make > PETSC_DIR=/Users/amneetb/Softwares/PETSc-Gitlab/PETSc PETSC_ARCH=darwin-dbg > check > Running test examples to verify correct installation > Using PETSC_DIR=/Users/amneetb/Softwares/PETSc-Gitlab/PETSc and > PETSC_ARCH=darwin-dbg > Possible error running C/C++ src/snes/examples/tutorials/ex19 with 1 MPI > process > See http://www.mcs.anl.gov/petsc/documentation/faq.html > <http://www.mcs.anl.gov/petsc/documentation/faq.html> > dyld: Library not loaded: @rpath/libeng.dylib > Referenced from: > /Users/amneetb/Softwares/PETSc-Gitlab/PETSc/src/snes/examples/tutorials/./ex19 > Reason: image not found > > =================================================================================== > = BAD TERMINATION OF ONE OF YOUR APPLICATION PROCESSES > = PID 14057 RUNNING AT Amneets-MBP > = EXIT CODE: 6 > = CLEANING UP REMAINING PROCESSES > = YOU CAN IGNORE THE BELOW CLEANUP MESSAGES > =================================================================================== > YOUR APPLICATION TERMINATED WITH THE EXIT STRING: Abort trap: 6 (signal 6) > This typically refers to a problem with your application. > Please see the FAQ page for debugging suggestions > Possible error running C/C++ src/snes/examples/tutorials/ex19 with 2 MPI > processes > See http://www.mcs.anl.gov/petsc/documentation/faq.html > <http://www.mcs.anl.gov/petsc/documentation/faq.html> > dyld: Library not loaded: @rpath/libeng.dylib > Referenced from: > /Users/amneetb/Softwares/PETSc-Gitlab/PETSc/src/snes/examples/tutorials/./ex19 > Reason: image not found > dyld: Library not loaded: @rpath/libeng.dylib > Referenced from: > /Users/amneetb/Softwares/PETSc-Gitlab/PETSc/src/snes/examples/tutorials/./ex19 > Reason: image not found > > =================================================================================== > = BAD TERMINATION OF ONE OF YOUR APPLICATION PROCESSES > = PID 14062 RUNNING AT Amneets-MBP > = EXIT CODE: 6 > = CLEANING UP REMAINING PROCESSES > = YOU CAN IGNORE THE BELOW CLEANUP MESSAGES > =================================================================================== > YOUR APPLICATION TERMINATED WITH THE EXIT STRING: Abort trap: 6 (signal 6) > This typically refers to a problem with your application. > Please see the FAQ page for debugging suggestions > 1,5c1,17 > < lid velocity = 0.0016, prandtl # = 1., grashof # = 1. > < 0 SNES Function norm 0.0406612 > < 1 SNES Function norm 4.12227e-06 > < 2 SNES Function norm 6.098e-11 > < Number of SNES iterations = 2 > --- > > dyld: Library not loaded: @rpath/libeng.dylib > > Referenced from: > > /Users/amneetb/Softwares/PETSc-Gitlab/PETSc/src/snes/examples/tutorials/./ex19 > > Reason: image not found > > dyld: Library not loaded: @rpath/libeng.dylib > > Referenced from: > > /Users/amneetb/Softwares/PETSc-Gitlab/PETSc/src/snes/examples/tutorials/./ex19 > > Reason: image not found > > > > =================================================================================== > > = BAD TERMINATION OF ONE OF YOUR APPLICATION PROCESSES > > = PID 14072 RUNNING AT Amneets-MBP > > = EXIT CODE: 6 > > = CLEANING UP REMAINING PROCESSES > > = YOU CAN IGNORE THE BELOW CLEANUP MESSAGES > > =================================================================================== > > YOUR APPLICATION TERMINATED WITH THE EXIT STRING: Abort trap: 6 (signal 6) > > This typically refers to a problem with your application. > > Please see the FAQ page for debugging suggestions > /Users/amneetb/Softwares/PETSc-Gitlab/PETSc/src/snes/examples/tutorials > Possible problem with ex19 running with hypre, diffs above > ========================================= > Possible error running Fortran example src/snes/examples/tutorials/ex5f with > 1 MPI process > See http://www.mcs.anl.gov/petsc/documentation/faq.html > <http://www.mcs.anl.gov/petsc/documentation/faq.html> > dyld: Library not loaded: @rpath/libeng.dylib > Referenced from: > /Users/amneetb/Softwares/PETSc-Gitlab/PETSc/src/snes/examples/tutorials/./ex5f > Reason: image not found > > =================================================================================== > = BAD TERMINATION OF ONE OF YOUR APPLICATION PROCESSES > = PID 14211 RUNNING AT Amneets-MBP > = EXIT CODE: 6 > = CLEANING UP REMAINING PROCESSES > = YOU CAN IGNORE THE BELOW CLEANUP MESSAGES > =================================================================================== > YOUR APPLICATION TERMINATED WITH THE EXIT STRING: Abort trap: 6 (signal 6) > This typically refers to a problem with your application. > Please see the FAQ page for debugging suggestions > Completed test examples > > > I have added the following paths in my .profile and sourced it before make > all and make check > > export > DYLD_FALLBACK_LIBRARY_PATH=/Applications/MATLAB_R2019b.app/bin/maci64:/Applications/MATLAB_R2019b.app/sys/os/maci64:$DYLD_FALLBACK_LIBRARY_PATH > > export > DYLD_LIBRARY_PATH=/Applications/MATLAB_R2019b.app/bin/maci64:/Applications/MATLAB_R2019b.app/sys/os/maci64:$DYLD_LIBRARY_PATH > > > > On Mon, Jun 8, 2020 at 6:39 PM Barry Smith <[email protected] > <mailto:[email protected]>> wrote: > > Looks like the tool to list the examples in the manual pages is broken > since it didn't find these other examples, I'll take a look at it. > > There is also a discussion in the users manual > > $ git grep MatlabEngine | grep ex > src/docs/tex/manual/part2.tex:PetscMatlabEngineCreate(MPI_Comm comm,char > *machine,PetscMatlabEngine *e); > src/docs/tex/manual/part2.tex:PetscMatlabEnginePut(PetscMatlabEngine > e,PetscObject obj); > src/docs/tex/manual/part2.tex:PetscMatlabEngineGet(PetscMatlabEngine > e,PetscObject obj); > src/docs/tex/manual/part2.tex:PetscMatlabEnginePutArray(PetscMatlabEngine > e,int m,int n,PetscScalar *array,char *name); > src/docs/tex/manual/part2.tex:PetscMatlabEngineGetArray(PetscMatlabEngine > e,int m,int n,PetscScalar *array,char *name); > src/docs/tex/manual/part2.tex:PetscMatlabEngineEvaluate(PetscMatlabEngine,"format",...); > src/docs/tex/manual/part2.tex:PetscMatlabEngineEvaluate(PetscMatlabEngine,"x > = \%g *y + z;",avalue); > src/docs/tex/manual/part2.tex:PetscMatlabEngineGetOutput(PetscMatlabEngine,char > **); > src/docs/tex/manual/part2.tex:PetscMatlabEnginedPrintOutput(PetscMatlabEngine,FILE*). > src/snes/tutorials/ex5.c: ierr = > PetscMatlabEnginePut(PETSC_MATLAB_ENGINE_(comm),(PetscObject)localX);CHKERRQ(ierr); > src/snes/tutorials/ex5.c: ierr = > PetscMatlabEngineEvaluate(PETSC_MATLAB_ENGINE_(comm),"localF=ex5m(localX,%18.16e,%18.16e,%18.16e)",hx,hy,lambda);CHKERRQ(ierr); > src/snes/tutorials/ex5.c: ierr = > PetscMatlabEngineGet(PETSC_MATLAB_ENGINE_(comm),(PetscObject)localF);CHKERRQ(ierr); > src/sys/tests/ex16.c:static char help[] = "Demonstrates > PetscMatlabEngineXXX()\n"; > src/sys/tests/ex16.c: ierr = > PetscMatlabEngineGetOutput(PETSC_MATLAB_ENGINE_(PETSC_COMM_WORLD),&output);CHKERRQ(ierr); > src/sys/tests/ex16.c: ierr = > PetscMatlabEngineEvaluate(PETSC_MATLAB_ENGINE_(PETSC_COMM_WORLD),"MPI_Comm_rank");CHKERRQ(ierr); > src/sys/tests/ex16.c: ierr = > PetscMatlabEngineEvaluate(PETSC_MATLAB_ENGINE_(PETSC_COMM_WORLD),user);CHKERRQ(ierr); > src/vec/vec/tests/ex31.c:static const char help[] = "Demonstrates > PetscMatlabEngineXXX()\n"; > src/vec/vec/tests/ex31.c: ierr = > PetscMatlabEngineGetOutput(PETSC_MATLAB_ENGINE_WORLD,&output); > src/vec/vec/tests/ex31.c: ierr = > PetscMatlabEngineEvaluate(PETSC_MATLAB_ENGINE_WORLD,"MPI_Comm_rank"); > src/vec/vec/tests/ex31.c: ierr = > PetscMatlabEnginePut(PETSC_MATLAB_ENGINE_WORLD,(PetscObject)x);CHKERRQ(ierr); > src/vec/vec/tests/ex31.c: ierr = > PetscMatlabEngineEvaluate(PETSC_MATLAB_ENGINE_WORLD,"x = x + > MPI_Comm_rank;\n"); > src/vec/vec/tests/ex31.c: ierr = > PetscMatlabEngineGet(PETSC_MATLAB_ENGINE_WORLD,(PetscObject)x);CHKERRQ(ierr); > src/vec/vec/tests/ex31.c: ierr = > PetscMatlabEngineEvaluate(PETSC_MATLAB_ENGINE_WORLD,"whos\n");CHKERRQ(ierr); > >> On Jun 8, 2020, at 8:26 PM, Amneet Bhalla <[email protected] >> <mailto:[email protected]>> wrote: >> >> Great! >> >> Clicking on some of the functions pointed me to this example >> https://www.mcs.anl.gov/petsc/petsc-3.13/src/snes/tutorials/ex5.c.html >> <https://www.mcs.anl.gov/petsc/petsc-3.13/src/snes/tutorials/ex5.c.html> >> >> Are there more examples, which are perhaps simpler than the above, which I >> can refer to? >> >> On Mon, Jun 8, 2020 at 5:51 PM Barry Smith <[email protected] >> <mailto:[email protected]>> wrote: >> >> You should use the PetscMatlabEngine >> https://www.mcs.anl.gov/petsc/petsc-3.13/docs/manualpages/Sys/PetscMatlabEngine.html >> >> <https://www.mcs.anl.gov/petsc/petsc-3.13/docs/manualpages/Sys/PetscMatlabEngine.html> >> >> Barry >> >> >>> On Jun 8, 2020, at 7:09 PM, Amneet Bhalla <[email protected] >>> <mailto:[email protected]>> wrote: >>> >>> Hi Folks, >>> >>> My parallel application written in C++ (which also uses PETSc library for >>> linear solvers) requires calling control and optimization toolbox of MATLAB >>> at every time step to get a small number of double values. Likewise the >>> MATLAB function will need to know some values from the parallel C++ >>> application to return those doubles. I'm wondering if there is a >>> recommended way of calling MATLAB from parallel C/C++/Fortran codes, and if >>> PETSc has some interface that could be leveraged for this exchange. >>> >>> Thanks, >>> -- >>> --Amneet >>> >>> >>> >> >> >> >> -- >> --Amneet >> >> >> > > > > -- > --Amneet > > > > > > -- > --Amneet > > > > > > -- > --Amneet > > >
