Great, yes you should not need the DYLIB paths The branch is off master but what you can do is copy the config/BuildSystem/config/MatlabEngine.py to your PETSc 3.12.2 version and the configure should work (it won't automatically run the test case but you can test it manually).
Barry > On Jun 9, 2020, at 5:48 PM, Amneet Bhalla <[email protected]> wrote: > > That worked! > > amneetb@Amneets-MBP:~/Softwares/PETSc-Gitlab/petsc-matlab$ make > PETSC_DIR=/Users/amneetb/Softwares/PETSc-Gitlab/petsc-matlab > PETSC_ARCH=darwin-dbg check > Running check examples to verify correct installation > Using PETSC_DIR=/Users/amneetb/Softwares/PETSc-Gitlab/petsc-matlab and > PETSC_ARCH=darwin-dbg > C/C++ example src/snes/tutorials/ex19 run successfully with 1 MPI process > C/C++ example src/snes/tutorials/ex19 run successfully with 2 MPI processes > C/C++ example src/snes/tutorials/ex19 run successfully with hypre > Fortran example src/snes/tutorials/ex5f run successfully with 1 MPI process > C/C++ example src/vec/vec/tutorials/ex31 run successfully with Matlab engine > Completed test examples > > Should I remove DYLIB paths from .profile since these are now baked in the > linker? > > Also, Is this branch based-off of latest master? I'm currently using PETSc > v3.12.2 for IBAMR. Anything close to this version should work for me. > > > On Tue, Jun 9, 2020 at 3:17 PM Barry Smith <[email protected] > <mailto:[email protected]>> wrote: > > I tried including the directories into my DYLD environmental variables and > it didn't work; I am not sure why. This might be why > https://stackoverflow.com/questions/35568122/why-isnt-dyld-library-path-being-propagated-here > > <https://stackoverflow.com/questions/35568122/why-isnt-dyld-library-path-being-propagated-here> > > Anyways try my branch and that should work. > > Barry > > > >> On Jun 9, 2020, at 5:09 PM, Amneet Bhalla <[email protected] >> <mailto:[email protected]>> wrote: >> >> >> That's where I also found it. Thanks, Sanjay! >> >> (This path is included in my .profile file >> >> 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 >> >> >> >> ) >> >> Do I need to tell PETSc about this path as well? Something like: >> >> --with-matlab-engine-lib=/Applications/MATLAB_R2019b.app/bin/maci64/libeng.dylib >> >> >> On Tue, Jun 9, 2020 at 2:56 PM Sanjay Govindjee <[email protected] >> <mailto:[email protected]>> wrote: >> Try looking in: >> >> $(MLROOT)/bin/maci64 >> >> where MLROOT = /Applications/MATLAB_R2019a.app or the like >> >> >> On 6/9/20 2:51 PM, Junchao Zhang 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 >> >> >> > > > > -- > --Amneet > > >
