# Apple M3 install support

**URL:** <https://community.geodynamics.org/t/apple-m3-install-support/3220>\
**Category:** SW4\
**Tags:** installation\
**Created:** [January 6, 2024, 10:04pm UTC](https://community.geodynamics.org/t/apple-m3-install-support/3220 "2024-01-06T22:04:45Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![amt.seismo](https://yyz2.discourse-cdn.com/flex036/user_avatar/community.geodynamics.org/amt.seismo/32/1765_2.png) [@amt.seismo](https://community.geodynamics.org/u/amt.seismo)\
**Post date:** [January 6, 2024, 10:04pm UTC](https://community.geodynamics.org/t/apple-m3-install-support/3220/1 "2024-01-06T22:04:45Z")

</div>

Hi,

I am attempting to install sw4 on a Macbook with an Apple M3 Pro chip by following the installation instructions. I installed gcc13 via Macports, and the lapack and blas libraries came preinstalled. I modified make.inc from make.osx for my particular setup

etree = no  
proj = no  
FC = /opt/local/bin/mpifort  
CXX = /opt/local/bin/mpicxx  
EXTRA\_FORT\_FLAGS =  
EXTRA\_LINK\_FLAGS = -framework Accelerate -L/opt/local/lib/gcc13 -lgfortran

I verified that the gfortran library is available in /opt/local/lib/gcc13. When I attempt to compile I get a linker error.

* * *

cd optimize\_mp; /opt/local/bin/mpicxx -O3 -I…/src -std=c++11 -Xpreprocessor -fopenmp -I…/src/double -o sw4 main.o EW.o Sarray.o version.o parseInputFile.o ForcingTwilight.o curvilinearGrid.o parallelStuff.o Source.o MaterialProperty.o MaterialData.o material.o setupRun.o solve.o Parallel\_IO.o Image.o GridPointSource.o MaterialBlock.o TimeSeries.o sacsubc.o SuperGrid.o TestRayleighWave.o MaterialPfile.o Filter.o Polynomial.o SecondOrderSection.o time\_functions.o Qspline.o MaterialIfile.o GeographicProjection.o Image3D.o ESSI3D.o ESSI3DHDF5.o MaterialVolimagefile.o MaterialRfile.o MaterialSfile.o AnisotropicMaterialBlock.o sacutils.o DataPatches.o addmemvarforcing2.o consintp.o oddIoddJinterp.o evenIoddJinterp.o oddIevenJinterp.o evenIevenJinterp.o CheckPoint.o geodyn.o AllDims.o Patch.o RandomizedMaterial.o MaterialInvtest.o sw4-prof.o sachdf5.o readhdf5.o TestTwilight.o TestPointSource.o curvilinear4sgwind.o TestEcons.o GridGenerator.o GridGeneratorGeneral.o GridGeneratorGaussianHill.o CurvilinearInterface2.o SfileOutput.o pseudohess.o fastmarching.o solveTT.o rhs4th3point.o MaterialGMG.o rayleighfort.o lamb\_exact\_numquad.o addsgdc.o bcfortc.o bcfortanisgc.o bcfreesurfcurvanic.o boundaryOpc.o energy4c.o checkanisomtrlc.o computedtanisoc.o curvilinear4sgc.o gradientsc.o randomfield3dc.o innerloop-ani-sgstr-vcc.o ilanisocurvc.o rhs4curvilinearc.o rhs4curvilinearsgc.o rhs4th3fortc.o solerr3c.o testsrcc.o rhs4th3windc.o tw\_aniso\_forcec.o tw\_aniso\_force\_ttc.o velsumc.o twilightfortc.o twilightsgfortc.o tw\_ani\_stiffc.o anisomtrltocurvilinearc.o scalar\_prodc.o updatememvarc.o addsg4windc.o bndryOpNoGhostc.o rhs4th3windc2.o dqags.o dqagse.o dqaws.o dqawse.o dqc25s.o dqcheb.o dqelg.o dqk15w.o dqk21.o dqmomo.o dqpsrt.o dqwgts.o qaws.o qawse.o qc25s.o qcheb.o qk15w.o qmomo.o qpsrt.o qwgts.o xerror.o d1mach.o r1mach.o -framework Accelerate -L/opt/local/lib/gcc13 -lgfortran  
Undefined symbols for architecture arm64:  
“\_GOMP\_atomic\_end”, referenced from:  
\_\_ZNK2EW13printPreambleERSt6vectorIP6SourceSaIS2\_EEi.\_omp\_fn.0 in EW.o  
\_\_ZN2EW26extractTopographyFromRfileENSt7\_\_cxx1112basic\_stringIcSt11char\_traitsIcESaIcEEE.\_omp\_fn.0 in EW.o  
\_\_ZN2EW15check\_materialsEv.\_omp\_fn.5 in material.o  
\_\_ZN2EW17preprocessSourcesERSt6vectorIS0\_IP6SourceSaIS2\_EESaIS4\_EE.\_omp\_fn.4 in setupRun.o  
\__ZN13MaterialBlock23set\_material\_propertiesERSt6vectorI6SarraySaIS1\_EES4\_S4\_S4\_S4_.\_omp\_fn.0 in MaterialBlock.o  
\__ZN13MaterialBlock23set\_material\_propertiesERSt6vectorI6SarraySaIS1\_EES4\_S4\_S4\_S4_.\_omp\_fn.1 in MaterialBlock.o  
\__Z6scmxmnPfiS\_S\_S_.\_omp\_fn.0 in sacsubc.o  
…  
“\_GOMP\_atomic\_start”, referenced from:  
\_\_ZNK2EW13printPreambleERSt6vectorIP6SourceSaIS2\_EEi.\_omp\_fn.0 in EW.o  
\_\_ZN2EW26extractTopographyFromRfileENSt7\_\_cxx1112basic\_stringIcSt11char\_traitsIcESaIcEEE.\_omp\_fn.0 in EW.o  
\_\_ZN2EW15check\_materialsEv.\_omp\_fn.5 in material.o  
\_\_ZN2EW17preprocessSourcesERSt6vectorIS0\_IP6SourceSaIS2\_EESaIS4\_EE.\_omp\_fn.4 in setupRun.o  
\__ZN13MaterialBlock23set\_material\_propertiesERSt6vectorI6SarraySaIS1\_EES4\_S4\_S4\_S4_.\_omp\_fn.0 in MaterialBlock.o  
\__ZN13MaterialBlock23set\_material\_propertiesERSt6vectorI6SarraySaIS1\_EES4\_S4\_S4\_S4_.\_omp\_fn.1 in MaterialBlock.o  
\__Z6scmxmnPfiS\_S\_S_.\_omp\_fn.0 in sacsubc.o  
…  
“\_GOMP\_barrier”, referenced from:  
\_\_ZN2EW17enforceBCfreeAtt2ERSt6vectorI6SarraySaIS1\_EES4\_S4\_RS0\_IPS1\_SaIS5\_EERS0\_IPPdSaISA\_EE.\_omp\_fn.1 in solve.o  
\__ZN24AnisotropicMaterialBlock23set\_material\_propertiesERSt6vectorI6SarraySaIS1\_EES4_.\_omp\_fn.0 in AnisotropicMaterialBlock.o  
\__ZN24AnisotropicMaterialBlock23set\_material\_propertiesERSt6vectorI6SarraySaIS1\_EES4_.\_omp\_fn.1 in AnisotropicMaterialBlock.o  
\_\_ZN2EW8consintpER6SarrayS1\_S1\_S1\_S1\_S1\_dS1\_S1\_S1\_S1\_S1\_S1\_ddiiPi.\_omp\_fn.3 in consintp.o  
\_\_ZN2EW8consintpER6SarrayS1\_S1\_S1\_S1\_S1\_dS1\_S1\_S1\_S1\_S1\_S1\_ddiiPi.\_omp\_fn.2 in consintp.o  
\__Z20oddIoddJinterpJacobiPdR6SarrayS1\_S1\_S1\_S1\_S1\_S1\_S1\_S1\_S1\_S1\_S1\_S1\_S1\_S1\_S1\_PiS2\_S2\_S2\_S2\_S2\_S2\_S2\_S2\_S2\_iiidddddS\_S_.\_omp\_fn.1 in oddIoddJinterp.o  
\__Z23oddIoddJinterpJacobiOptPdS\_S\_S\_S\_S\_S\_S\_S\_S\_S\_S\_S\_S\_S\_S\_S\_PiS0\_S0\_S0\_S0\_S0\_S0\_S0\_S0\_S0\_iiidddddS\_S_.\_omp\_fn.1 in oddIoddJinterp.o  
…  
“\_GOMP\_parallel”, referenced from:  
\_main in main.o  
\_\_ZN2EW22get\_exact\_point\_sourceEPddiR6SourcePi in EW.o  
\_\_ZN2EW14get\_exact\_lambERSt6vectorI6SarraySaIS1\_EEdR6Source in EW.o  
\_\_ZN2EW5ForceEdRSt6vectorI6SarraySaIS1\_EES0\_IP15GridPointSourceSaIS6\_EES0\_IiSaIiEE in EW.o  
\_\_ZN2EW8Force\_ttEdRSt6vectorI6SarraySaIS1\_EES0\_IP15GridPointSourceSaIS6\_EES0\_IiSaIiEE in EW.o  
\_\_ZN2EW34extractTopographyFromCartesianFileENSt7\_\_cxx1112basic\_stringIcSt11char\_traitsIcESaIcEEE in EW.o  
\_\_ZN2EW30extractTopographyFromImageFileENSt7\_\_cxx1112basic\_stringIcSt11char\_traitsIcESaIcEEE in EW.o  
…  
“\_omp\_get\_num\_threads”, referenced from:  
\_main.\_omp\_fn.0 in main.o  
\_\_ZNK2EW13printPreambleERSt6vectorIP6SourceSaIS2\_EEi.\_omp\_fn.0 in EW.o  
\_\_ZN2EW5ForceEdRSt6vectorI6SarraySaIS1\_EES0\_IP15GridPointSourceSaIS6\_EES0\_IiSaIiEE.\_omp\_fn.0 in EW.o  
\_\_ZN2EW8Force\_ttEdRSt6vectorI6SarraySaIS1\_EES0\_IP15GridPointSourceSaIS6\_EES0\_IiSaIiEE.\_omp\_fn.0 in EW.o  
\_\_ZN2EW13update\_imagesEidRSt6vectorI6SarraySaIS1\_EES4\_S4\_S4\_S4\_S4\_RS0\_IP6SourceSaIS6\_EEii.\_omp\_fn.0 in EW.o  
\_\_ZN2EW34extractTopographyFromCartesianFileENSt7\_\_cxx1112basic\_stringIcSt11char\_traitsIcESaIcEEE.\_omp\_fn.0 in EW.o  
\_\_ZN2EW30extractTopographyFromImageFileENSt7\_\_cxx1112basic\_stringIcSt11char\_traitsIcESaIcEEE.\_omp\_fn.0 in EW.o  
…  
“\_omp\_get\_thread\_num”, referenced from:  
\_main.\_omp\_fn.0 in main.o  
\_\_ZNK2EW13printPreambleERSt6vectorIP6SourceSaIS2\_EEi.\_omp\_fn.0 in EW.o  
\_\_ZN2EW5ForceEdRSt6vectorI6SarraySaIS1\_EES0\_IP15GridPointSourceSaIS6\_EES0\_IiSaIiEE.\_omp\_fn.0 in EW.o  
\_\_ZN2EW8Force\_ttEdRSt6vectorI6SarraySaIS1\_EES0\_IP15GridPointSourceSaIS6\_EES0\_IiSaIiEE.\_omp\_fn.0 in EW.o  
\_\_ZN2EW13update\_imagesEidRSt6vectorI6SarraySaIS1\_EES4\_S4\_S4\_S4\_S4\_RS0\_IP6SourceSaIS6\_EEii.\_omp\_fn.0 in EW.o  
\_\_ZN2EW34extractTopographyFromCartesianFileENSt7\_\_cxx1112basic\_stringIcSt11char\_traitsIcESaIcEEE.\_omp\_fn.0 in EW.o  
\_\_ZN2EW30extractTopographyFromImageFileENSt7\_\_cxx1112basic\_stringIcSt11char\_traitsIcESaIcEEE.\_omp\_fn.0 in EW.o  
…  
ld: symbol(s) not found for architecture arm64  
collect2: error: ld returned 1 exit status  
make: \*\*\* [sw4] Error 1

I also tried the spack installation instructions. On that front I get a message saying “Error: InstallError: OpenMPI requires both C and Fortran compilers!” I wasnt sure how to proceed here either.

Thank you!

Amanda

---

<div class="post-metadata">

**Author:** ![bangerth](https://yyz2.discourse-cdn.com/flex036/user_avatar/community.geodynamics.org/bangerth/32/52_2.png) [@bangerth](https://community.geodynamics.org/u/bangerth)\
**Post date:** [January 6, 2024, 10:17pm UTC](https://community.geodynamics.org/t/apple-m3-install-support/3220/2 "2024-01-06T22:17:50Z")

</div>

Amanda:  
I have nothing to do with the SW4 project, but anyone who does and wants to help will likely need to know what the linker error is. Can you provide the complete error message?  
Best  
W.

---

<div class="post-metadata">

**Author:** ![kjscholz](https://yyz2.discourse-cdn.com/flex036/user_avatar/community.geodynamics.org/kjscholz/32/1774_2.png) [@kjscholz](https://community.geodynamics.org/u/kjscholz)\
**Post date:** [January 11, 2024, 1:07am UTC](https://community.geodynamics.org/t/apple-m3-install-support/3220/3 "2024-01-11T01:07:13Z")

</div>

We got a fix over on the Github. It was and OpenMP issue, not a chip/compiler issue.  
Building without OpenMP works

> make sw4 openmp=no

SW4 LIVES,  
Kate
