2

Julia has a package for binary decision diagrams called CUDD_jll available from JuliaHub. The package is able to install and compile on the Apple M1 architecture. It does appear to install and compile on macOS v13 running Julia v1.82. But the user interface from an older package CUDD does not appear to be compatible with CUDD_jll.

What is needed is a test or examples revealing user commands for initializing cudd, defining logical variables, and the basic operations of AND, OR, NOT.

Does anyone have such information they will share?

dogwood
  • 371
  • 2
  • 11
  • Have you looked at https://github.com/sisl/CUDD.jl/blob/master/docs/example_usage.ipynb ? – Bill Oct 21 '22 at 05:51
  • 1
    Yes, thanks. Tried it again and when I executed Pkg.build("CUDD") text at the top of a long error report explained that the M1 system is not supported. I'm sorry I've wasted everyone's time. Thanks for your help. – dogwood Oct 21 '22 at 22:08

2 Answers2

1

_jll packages are generally not meant to be used directly, they're backend dependencies that will be automatically installed when you add a package that uses them.

In this case, CUDD.jl is the package you want to install and work with. That will automatically install CUDD_jll as a dependency and use it. Actually, the current CUDD.jl doesn't yet use CUDD_jll as a backend. It instead does its own download of the CUDD library, from a source that doesn't provide M1-compatible binaries. CUDD_jll is a recent effort to change that. It does provide binaries for the M1 architecture, but is yet to be merged in as a backend.

In the meantime, you can try ] add CUDD#update-to-yggdrasil to directly add the branch that uses CUDA_jll as the backend, and see if that works for you. (Once the PR gets merged, you can remove this branch-specific dependency and ] add CUDD like before.)

Sundar R
  • 13,776
  • 6
  • 49
  • 76
  • Thank you. CUDD.jl can't be compiled by the M1 system. I've tried it numerous times and the result is always the same. "Pkg.build("CUDD")" same problem. However, CUDD_jll does compile, so it may be using CUDD in its own manner. But the user interface commands used in CUDD.jl on Intel based systems aren't recognized on the M1 system, and the response is "undefined variable." That's why I concluded that the user interface is different. And I think you are telling me that it should be the same. Any suggestions? – dogwood Oct 21 '22 at 21:53
  • Ah, I see that I misread your answer. CUDD.jl will call CUDD_jll if needed. I'll try again, thanks. – dogwood Oct 21 '22 at 22:01
  • @dogwood Hi, I took a deeper look into the packages and found that things weren't quite as I'd assumed. I've updated the answer, let me know if this works out for you. – Sundar R Oct 22 '22 at 06:36
  • I tried the suggestion ] add DUDD#update-to-yggdrasil and it appeared to compile, but when I run my code the response is still that "initialize_cudd()" is an undefined variable. I can work on Intel based Apple computers for now. Thank you for the suggestion. – dogwood Oct 23 '22 at 19:28
0

The Apple M1 system is not compatible with CUDD. My mistake, sorry.

dogwood
  • 371
  • 2
  • 11
  • Recently Julia has a version that runs on M1 (Apple silicon) and is compatible with CUDD. At the Julia prompt do using Pkg; Pkg.add("CUDD") to install the CUDD package, then do using CUDD (may get an error message until a startup problem is fixed. Repeat using CUDD and all will be well from that point on. At least that's my experience. – dogwood Dec 03 '22 at 05:40