This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Some questions regarding ArmPL for Windows

I have a few questions regarding the Windows version of ArmPL:

  1. I downloaded the package and I am confused by the file names. What is the difference between armpl_lp64_mp.lib and libarmpl_lp64_mp.lib, between FortranDecimal.lib and libFortranDecimal.lib, between FortranRuntime.lib and libFortranRuntime.lib, between libomp.dll.lib and omp.dll.lib?
  2. What is the difference between libomp.dll and omp.dll? How do they compare to Microsoft's libomp140.aarch64.dll? Which of the three libraries should I use in my application?
  3. What hardware is ArmPL optimized for on Windows?
  4. It would be nice to have the DLLs code signed.
  5. It would be nice to have a working Fortran compiler for arm64 on Windows (and for macOS too). It seems that ARM has one. Any plans to make it public?

What I am trying to do is build a DLL by statically linking ArmPL and the Fortran runtime. The OpenMP library should be linked dynamically. I would guess that the files with and without the lib-prefix are identical but they have different sizes (which means that they are not).

Parents
  • Hello, I think most of your questions are answered in the README.txt file provided in the release. We're currently preparing more online documentation for our Windows release as well.
    In answer to each of your questions:
    1. What is the difference between armpl_lp64_mp.lib and libarmpl_lp64_mp.lib ? The first has dynamic /MD linkage to the Windows UCRT; the latter has static /MT linkage. More details can also be found from Microsoft on UCRT linkage: learn.microsoft.com/.../crt-library-features In general, all the libraries that have a "lib" prefix indicate /MT linkage and those without (starting with armpl) have MD linkage.
    2. The OpenMP runtime we provide are the ones we've used to build and test the library with, from an LLVM build. we recommend linking to the ones provided in the Arm PL installation.
    3. The initial build was focused on porting to Windows and functionality correctness. We haven't tuned the library for any specific Windows hardware in the current release. Tunings will come in later releases and we will document the hardware we've tuned for in the accompanying release notes/README.

    4. We're working on code signing for future releases as well.
    5. We used the flang-new compiler from LLVM to build the library. We documented the specific git hash used for the build in the release notes. A good reference for building LLVM on Windows is this page: www.linaro.org/.../ To build flang-new, try following those instructions along with using -DLLVM_ENABLE_PROJECTS="clang;flang;mlir".
    If you want to link statically to the Fortran runtime, link to FortranRuntime.lib and FortranDecimal.lib, and to pick up the OpenMP dll link to omp.dll.lib Here I'm assuming you'll want to use /MD linkage; prepend lib to each of those files if you want to link statically to the UCRT.
Reply
  • Hello, I think most of your questions are answered in the README.txt file provided in the release. We're currently preparing more online documentation for our Windows release as well.
    In answer to each of your questions:
    1. What is the difference between armpl_lp64_mp.lib and libarmpl_lp64_mp.lib ? The first has dynamic /MD linkage to the Windows UCRT; the latter has static /MT linkage. More details can also be found from Microsoft on UCRT linkage: learn.microsoft.com/.../crt-library-features In general, all the libraries that have a "lib" prefix indicate /MT linkage and those without (starting with armpl) have MD linkage.
    2. The OpenMP runtime we provide are the ones we've used to build and test the library with, from an LLVM build. we recommend linking to the ones provided in the Arm PL installation.
    3. The initial build was focused on porting to Windows and functionality correctness. We haven't tuned the library for any specific Windows hardware in the current release. Tunings will come in later releases and we will document the hardware we've tuned for in the accompanying release notes/README.

    4. We're working on code signing for future releases as well.
    5. We used the flang-new compiler from LLVM to build the library. We documented the specific git hash used for the build in the release notes. A good reference for building LLVM on Windows is this page: www.linaro.org/.../ To build flang-new, try following those instructions along with using -DLLVM_ENABLE_PROJECTS="clang;flang;mlir".
    If you want to link statically to the Fortran runtime, link to FortranRuntime.lib and FortranDecimal.lib, and to pick up the OpenMP dll link to omp.dll.lib Here I'm assuming you'll want to use /MD linkage; prepend lib to each of those files if you want to link statically to the UCRT.
Children