Comments (19)
Have there been any updates on this? A conda install crest
(or through conda-forge) would be extremely helpful for continuous integration and fast setups on remote servers
from crest.
One step at a time, first we should check if crest
can be compiled with GCC or what we have to change to make this possible. Once crest
builds with GCC I will submit it to conda-forge.
If you are looking for a version for your Mac, have a look in the Intel oneAPI distribution, which should work on Mac as well to compile crest
from source.
from crest.
Currently that was not planned, but we'll have a look into this. Bundling this with the xtb
conda-forge channel may be a good idea indeed.
from crest.
Bundling packages is against the conda-forge philosophy, so not something we should do. Let's plan for a separate crest
package depending on the xtb
package, conda
will care for making the proper install than.
from crest.
We are not yet there, a few other things have to happen first before we can stage a recipe for conda-forge.
from crest.
Nice to hear that a xtb Mac binary is available for conda. I've been successfully using xtb 6.3.1 and crest on Ubuntu 18.04 running under Parallels Desktop 15 on my Macbook with macOS Catalina and on an old 12-core MacPro with High Sierra, but a native binary would be simpler to manage. For what macOS version/s has the xtb binary been made?
from crest.
Let's make this a separate issue on the xtb issue tracker, okay?
from crest.
@awvwgk @pprcht - anything we can do to help get a crest recipe for condo-forge? (I'd particularly like one for my Mac laptop. 😄 )
from crest.
Now that I have the source, I can try with GCC, but yes, I'll check into the Intel compilers.
from crest.
We are getting closer to a solution here. For a conda-forge package crest will be linked against the netlib BLAS and LAPACK API instead of the MKL to allow exchanging the LAPACK/BLAS backend at runtime. Therefore, crest should build correctly with meson setup _build -Dla_backend=netlib
. Currently this leads to linking errors as there are MKL specific routines in use:
/usr/bin/ld: crest.p/src_ompmklset.f90.o: in function `ompautoset_':
/home/awvwgk/projects/src/git/crest/gh-crest/_build/../src/ompmklset.f90:193: undefined reference to `mkl_set_num_threads_'
/usr/bin/ld: crest.p/src_solve.f.o: in function `intens_':
/home/awvwgk/projects/src/git/crest/gh-crest/_build/../src/solve.f:267: undefined reference to `mkl_scoomm_'
/usr/bin/ld: /home/awvwgk/projects/src/git/crest/gh-crest/_build/../src/solve.f:295: undefined reference to `mkl_scoomm_'
collect2: error: ld returned 1 exit status
mkl_set_num_threads_
can be guarded with preprocessor, but scoomm
doesn't seem to be part of the BLAS API, but of the sparse BLAS API, which is not available on conda-forge as far as I know. We can always require a specific BLAS/LAPACK implementation in the conda recipe, i.e. enforcing always MKL for crest, but preferably we can avoid this with small changes in the source here.
from crest.
Started a recipe at conda-forge/staged-recipes#15919 for crest
.
Linux build is working, but limited to MKL, for OSX we see the following failure:
+ meson --prefix=/Users/runner/miniforge3/conda-bld/crest_1629108083403/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_pla --libdir=lib --buildtype=release --warnlevel=0 -Dla_backend=mkl -Ddefault_library=shared ..
The Meson build system
Version: 0.59.0
Source dir: $SRC_DIR
Build dir: $SRC_DIR/_build
Build type: native build
Project name: crest
Project version: 2.11.0
Fortran compiler for the host machine: $BUILD_PREFIX/bin/x86_64-apple-darwin13.4.0-gfortran (gcc 9.3.0 "GNU Fortran (GCC) 9.3.0")
Fortran linker for the host machine: $BUILD_PREFIX/bin/x86_64-apple-darwin13.4.0-gfortran ld64 530
C compiler for the host machine: x86_64-apple-darwin13.4.0-clang (clang 11.1.0 "clang version 11.1.0")
C linker for the host machine: x86_64-apple-darwin13.4.0-clang ld64 530
Host machine cpu family: x86_64
Host machine cpu: x86_64
Run-time dependency OpenMP found: YES 5.0
../config/meson.build:70:4: ERROR: Fortran shared or static library 'mkl_gf_lp64' not found
In case somebody has an OSX version around and could try to build crest
using conda-forge's MKL and GCC versions, this might be insightful. Otherwise I will just disable OSX support for conda-forge and we can try to figure this out at a later point.
from crest.
I am able to build with CMake and gfortran-11, gcc-11 and conda-installed MKL on a M1 Mac under Rosetta. Generally I can't get Meson to detect MKL successfully and get the same error as you. Would think it is a Meson problem.
from crest.
Available on conda-forge now, see conda-forge/staged-recipes#16266. Thanks, @jan-janssen.
from crest.
from crest.
The main issue here for me was the absence of a Mac version on conda-forge. I think that should be possible with the same build.sh that you are using @jan-janssen.
from crest.
Added OSX support in conda-forge/crest-feedstock#3. No support for the new ARM processors though, unless there exist a port of the MKL for OSX/aarch64.
from crest.
Thanks, much appreciated! As far as I understand, Intel compiler/MKL support for ARM is nonexistent and will remain so for the foreseeable future. Support through Rosetta should be sufficient for now, but long term maybe would be nice with openblas that would enable ARM builds. Personally, I only use it on my Mac for development and would run any major jobs on a Linux cluster anyway.
from crest.
The issue is mainly related to the usage of some MKL specific procedures, like mkl_scoomm from the sparse BLAS API:
Not sure if there are more MKL specific routines in use. Having a drop-in for those would allow to remove the strict requirement on MKL. This is of course an open source project and contributions are always welcome ;).
from crest.
I had a look at the subroutine where it is used:
https://github.com/grimme-lab/crest/blob/594ef26f266ec0366e4340a349351a7c7c2de0c0/src/solve.f#L185
It is in turn called by the following subroutine, which as far as I can see is not called at all in the rest of the code.
https://github.com/grimme-lab/crest/blob/594ef26f266ec0366e4340a349351a7c7c2de0c0/src/solve.f#L20
Maybe it is just legacy code that could be removed? If I were to guess, it could be part of the NMR workflow that could have been moved to ANMR?
I did a test by:
- Commenting out "solve.f" in the src/meson.build
- Commenting out all calls to
MKL_Set_Num_Threads
in https://github.com/grimme-lab/crest/blob/594ef26f266ec0366e4340a349351a7c7c2de0c0/src/ompmklset.f90#L175 - Building with meson and
-Dla_backend=openblas
It compiles without errors and seems to be able to run a CREST job for butane without any problems. I would love to put in a pull request, but not confident how to handle the MKL_Set_Num_Threads
calls. Similar to what xtb does?
https://github.com/grimme-lab/xtb/blob/9cc3c208a923f91fd662d132c810976fd089ef3b/src/prog/main.F90#L1186
from crest.
Related Issues (20)
- Support compiling code under Windows HOT 1
- Patches to compile 3.0pre for unix platforms HOT 1
- QCG final geometry optimization at GFN-FF HOT 3
- --constrain does not create file HOT 1
- Output gets deleted HOT 3
- Initial geometry optimization error HOT 7
- Tautomerism screening with gfnff HOT 2
- Parallelization issue during iMTD-GC in crest 3.0 HOT 12
- Issue with QCG calculations in CREST 3.0 HOT 14
- tautomerize failure with gff, success with other ffs HOT 1
- compilation of crest3 fails when using "-DCMAKE_INSTALL_PREFIX" HOT 4
- Crest version 3 using QCG, is it to have a charged solvent? HOT 3
- Crest version 3 using QCG, issues with water as solvent HOT 5
- Updating conda to the latest version
- QCG failed with Hexane as solute HOT 2
- Crest 3 QCG, final xTB optimisations not using the available cores HOT 6
- Feature Suggestion: One sided harmonic constraint HOT 2
- Understanding final solvation free energy calculation with QCG HOT 6
- Utilizing the GROW results for conducting multiple QCG solvation FE calculations
- Defaults equivalence: v. 2.12 and v.3.01 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from crest.