Package management of a package with different versions required by other packages

I recently had a trouble with package Octavian. Because it can deal with BitArray or Int8 matrix, it has a great advantage over BLAS. It made it possible to deal with much larger matrix than BLAS. The problem is that with current Turing installed, Julia can only install VectorizationBase of version v0.16.2. I am not sure what happened of this version, but Octavian gave wrong results of matmul. After removing Turing, the problem was gone with VectorizationBase upgraded to v0.21.23.

I am wondering if there is a better way to do package management, either to be implemented , or there is one I don’t know.

Create an issue for Turing.jl to allow the current version of VectorizationBase and thus Octavian.

This is a solution. But this problem is a general one. I happened to find that my Octavian is giving wrong results. Otherwise it will stealthily damage my calculation results.

There is no general solution. Octavian is cutting edge, alpha or beta quality software, and if you use it you must ensure the correctness of your results yourself.

If you need to guarantee a certain version of Octavian you can explicitly ask for it via add Octavian@0.21 and will get an error if there’s a conflict.

If you’re on 1.7, your problem is likely that you are on a very old Turing version, as Turing doesn’t work yet on 1.7 so falls back on an old version.

Also if you happen to install your packages in the default environment but aren’t actually using Turing and Octavian at the same time, you can get around the conflict by working in project environments (which you should do in any case)

At the moment, I installed two version of Julia (1.6.5 & 1.7.1) as a solution.