Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Package ordering and duplication substantially affects solve times #3058

Open
3 tasks done
vyasr opened this issue Dec 11, 2023 · 12 comments
Open
3 tasks done

Package ordering and duplication substantially affects solve times #3058

vyasr opened this issue Dec 11, 2023 · 12 comments

Comments

@vyasr
Copy link

vyasr commented Dec 11, 2023

Troubleshooting docs

  • My problem is not solved in the Troubleshooting docs

Anaconda default channels

  • I do NOT use the Anaconda default channels (pkgs/* etc.)

How did you install Mamba?

Mambaforge or latest Miniforge

Search tried in issue tracker

is:issue slow order; is:issue order; is:issue solve order

Latest version of Mamba

  • My problem is not solved with the latest version

Tried in Conda?

Not applicable

Describe your issue

I have an environment where the time to solve is very slow, and oddly is dramatically different based on the order in which packages are specified (see the env file pasted below). Moving shapely and pydeck to the end of the environment list has a dramatic reduction in the solve time (from ~400 seconds to ~80 seconds). I originally had a much larger environment but whittled it down to this minimal one a couple of days ago. Unfortunately, when I tried the same thing today the solve has become very fast, so I'm guessing that a new package release has made it much easier for the solver to converge quickly.

I realize that since mamba using a backtracking solver order-dependence is to be expected, so there may not be much that can be done here. One minor suggestion might be to sort and deduplicate the dependency list for the sake of predictability (while reducing the file down I also found that duplicates could also have odd behaviors, again depending on the ordering of those duplicates relative to other dependencies in the list).

I marked this problem as N/A for the "Tried in conda" dropdown above because the conda solve never converged in either case, so I couldn't get useful metrics (that was without the new libmamba solver, and unfortunately I didn't think to try the libmamba solver until today when the mamba issues also seem to have vanished). I also did not try forcing strict channel priority (my default is currently flexible).

mamba info / micromamba info

mamba version : 1.5.4
     active environment : main
    active env location : /home/vyasr/miniconda3/envs/main
            shell level : 1
       user config file : /home/vyasr/.condarc
 populated config files : /home/vyasr/.condarc
          conda version : 23.11.0
    conda-build version : not installed
         python version : 3.9.15.final.0
                 solver : libmamba (default)
       virtual packages : __archspec=1=zen2
                          __conda=23.11.0=0
                          __cuda=12.2=0
                          __glibc=2.35=0
                          __linux=6.2.0=0
                          __unix=0=0
       base environment : /home/vyasr/miniconda3  (writable)
      conda av data dir : /home/vyasr/miniconda3/etc/conda
  conda av metadata url : None
           channel URLs : 
          package cache : /home/vyasr/miniconda3/pkgs
                          /home/vyasr/.conda/pkgs
       envs directories : /home/vyasr/miniconda3/envs
                          /home/vyasr/.conda/envs
               platform : linux-64
             user-agent : conda/23.11.0 requests/2.28.1 CPython/3.9.15 Linux/6.2.0-35-generic ubuntu/22.04.3 glibc/2.35 solver/libmamba conda-libmamba-solver/23.11.1 libmambapy/1.5.4
                UID:GID : 1000:1000
             netrc file : /home/vyasr/.netrc
           offline mode : False

Logs

No response

environment.yml

channels:                                                                                                                                                                                                 
  - pytorch                                                                                                                                                                                                 
  - conda-forge                                                                                                                                                                                             
  dependencies:                                                                                                                                                                                             
  - c-compiler                                                                                                                                                                                              
  - cmake>=3.26.4                                                                                                                                                                                           
  - cxx-compiler                                                                                                                                                                                            
  - dlpack>=0.5,<0.6.0a0                                                                                                                                                                                    
  - fmt>=10.1.1,<11                                                                                                                                                                                         
  - geopandas>=0.11.0                                                                                                                                                                                       
  - libparquet==14.0.1.*                                                                                                                                                                                    
  - msgpack-python                                                                                                                                                                                          
  - proj                                                                                                                                                                                                    
  - protobuf>=4.21,<5                                                                                                                                                                                       
  - pydeck                                                                                                                                                                                                  
  - pytorch<1.12.0                                                                                                                                                                                          
  - shapely                                                                                                                                                                                                 
  - spdlog>=1.12.0,<1.13

~/.condarc

auto_activate_base: false
channels: []
channel_priority: flexible
@jonashaag
Copy link
Collaborator

Interesting! Other solver performance tickets #3031 #2824

Do you have any intuition/data on how to order dependencies to make libsolv go faster?

@jonashaag
Copy link
Collaborator

jonashaag commented Dec 11, 2023

On my machine, moving shapely and pydeck to the very top increases solve time only by 10% (6 s to 6.6 s with Micromamba)

@jakirkham
Copy link

Thanks Jonas! 🙏

Do you have any intuition/data on how to order dependencies to make libsolv go faster?

This is admittedly a complicated question. We discussed this a bit offline with @msarahan as well. Didn't immediately arrive at a general solution. Though thought it was worthwhile to discuss with everyone here to see if we might arrive at an improved approach

cc @jaimergp @mbargull (who may also have insights into this question)

On my machine, moving shapely and pydeck to the very top increases solve time only by 10% (6 s to 6.6 s with Micromamba)

Yeah Vyas worked pretty hard to simplify the original performance issue into an MRE. Admittedly that can make the changes less dramatic. The original use case involved multiple channels and a whole bunch of packages (explicitly listed with constraints). Vyas might still have the original use case floating around if that is of interest too

That said, think the fact that order does affect performance in this way is the more interesting bit, which then raises the question of could we order the dependencies in a more consistent fashion for more optimal performance

@jonashaag
Copy link
Collaborator

I think it would be nice if you guys could provide an example where ordering shows a more dramatic effect than 10% difference. 50% or more would be nice. I don't think 10% is worth investigating

@vyasr
Copy link
Author

vyasr commented Dec 11, 2023

I think it would be nice if you guys could provide an example where ordering shows a more dramatic effect than 10% difference. 50% or more would be nice. I don't think 10% is worth investigating

The performance difference was more like 400% as of Friday. My guess is that some package in the environment released a new version over the weekend that is causing different solves. Perhaps we could reproduce the same performance by inspecting the total environment and seeing which packages released a new version over the weekend and then constraining that one? I was still observing this behavior as of about 4 PST on Friday Dec 8.

Do you have any intuition/data on how to order dependencies to make libsolv go faster?

No specific data unfortunately. As far as intuition goes, my intuition would be to put packages with very tight constraints early since that would force the solver to choose only acceptable versions of other packages on the first try later, as opposed to putting packages with loose constraints first where something could be chosen that is not compatible with a package listed later, resulting in additional backtracking. I think that's also what @msarahan suggested.

@vyasr
Copy link
Author

vyasr commented Dec 11, 2023

FWIW I didn't see any new release in the packages explicitly listed in the environment.yml, so whatever changes must be some dependency.

Also to clarify what John said above, the original example (with hundreds of packages and 6 channels) also solves quickly now. The minimal example I posted exhibited nearly the same performance characteristics, they weren't ameliorated in any way by shrinking the environment. The less severe impact now is almost certainly due to some other change in the ecosystem of cf packages since Friday.

@jonashaag
Copy link
Collaborator

Funny. I also observed multiple environments magically solve much faster today. We must have gotten a new release of a very core package... Would be interesting to understand what exactly made it harder to solve previously

@vyasr
Copy link
Author

vyasr commented Dec 12, 2023

For sure, I'd be interested as well. The differences have been dramatic; the worst case examples I had on Friday were taking 15 minutes, and now even those take ~10 s.

@jaimergp
Copy link
Contributor

See PR description at conda/conda-libmamba-solver#381 (comment). I also saw this and decided to sort by spec strictness (strictest first), because I assume the user is really interested in those. I didn't go for alphabetic order because that usually sends python really in the back, and I had anecdotically seen that python going in first makes things simpler (so I assume that the "more core" the package, the earlier it should go?).

I also know that @wolfv and @BastianZim have introduced some tricks in resolvo to make the backtracking faster (sorting something somewhere, I don't remember where).


For the latest 100 updates in conda-forge: https://conda.anaconda.org/conda-forge/rss.xml

For all package names since last Thursday:

last.py

Name Last Updated
pytorch-3dunet 2023-12-12 15:36:38
visp 2023-12-12 13:34:07
libavif16 2023-12-12 13:30:13
climix 2023-12-12 11:58:32
mim-solvers 2023-12-12 11:05:24
m2-wget 2023-12-12 08:30:17
m2-libgpgme 2023-12-12 08:29:15
m2-libpsl 2023-12-12 07:58:50
m2-libgnutls 2023-12-12 07:57:56
m2-perl-try-tiny 2023-12-12 07:53:09
m2-perl-io-socket-ip 2023-12-12 07:48:02
m2-perl-io-html 2023-12-12 07:47:11
m2-perl-clone 2023-12-12 07:42:14
m2-nano 2023-12-12 07:40:27
m2-automake1.16 2023-12-12 07:37:39
m2-pinentry 2023-12-12 07:31:19
m2-bsdtar 2023-12-12 07:24:28
m2-libksba 2023-12-12 07:20:39
m2-libassuan 2023-12-12 07:19:45
m2-pcre2 2023-12-12 07:13:53
m2-libidn2 2023-12-12 07:12:06
m2-zstd 2023-12-12 07:03:22
m2-nettle 2023-12-12 07:01:37
m2-msys2-launcher 2023-12-12 07:01:11
m2-libpcre2posix 2023-12-12 06:58:59
m2-libpcre2_8 2023-12-12 06:51:36
m2-libpcre2_32 2023-12-12 06:51:11
m2-libpcre2_16 2023-12-12 06:50:45
m2-libnpth 2023-12-12 06:49:53
m2-libnghttp2 2023-12-12 06:49:27
m2-liblz4 2023-12-12 06:48:35
m2-libfido2 2023-12-12 06:47:17
m2-brotli 2023-12-12 06:45:04
m2-libhogweed 2023-12-12 06:43:21
m2-getent 2023-12-12 06:42:55
m2-libxcrypt 2023-12-12 06:39:49
m2-libcbor 2023-12-12 06:37:39
m2-libargp 2023-12-12 06:37:13
go-yq 2023-12-12 05:46:37
ollama 2023-12-12 04:47:42
anyscale 2023-12-12 04:02:03
ultralytics 2023-12-12 03:57:22
arize-phoenix 2023-12-12 03:24:53
pennylane-lightning-gpu 2023-12-12 02:05:37
kedro-datasets 2023-12-12 01:18:47
gita 2023-12-12 01:17:43
nannos 2023-12-12 00:00:25
bmad 2023-12-11 23:56:08
quartodoc 2023-12-11 23:28:23
cctk 2023-12-11 22:16:20
safe-pysha3 2023-12-11 22:06:05
wgpu-native 2023-12-11 21:54:33
llama.cpp 2023-12-11 20:46:47
ptscotch 2023-12-11 20:44:32
libptscotch 2023-12-11 20:43:52
scotch 2023-12-11 20:43:25
libscotch 2023-12-11 20:37:11
unidep 2023-12-11 20:11:29
ndsplines 2023-12-11 20:03:18
trame 2023-12-11 20:03:17
divemesh 2023-12-11 19:34:54
gdpx 2023-12-11 19:32:56
kerrgeopy 2023-12-11 19:30:58
ebg 2023-12-11 19:27:22
acgc 2023-12-11 19:24:45
r-datefixr 2023-12-11 18:59:25
folly 2023-12-11 18:50:28
fiatlux 2023-12-11 18:37:45
libgdal-arrow-parquet 2023-12-11 18:34:58
mmgsuite 2023-12-11 18:16:59
llama-cpp-python 2023-12-11 18:16:35
openfast 2023-12-11 18:07:33
ibm-platform-services 2023-12-11 18:04:59
pyecospold 2023-12-11 17:45:43
metgem-gui 2023-12-11 17:28:02
metgem-cli 2023-12-11 17:27:48
metgem 2023-12-11 17:27:26
dingo-gw 2023-12-11 16:51:37
nnpops 2023-12-11 16:47:14
jupyter_server_terminals 2023-12-11 16:34:49
r-rxode2parse 2023-12-11 16:34:22
openvscode-server 2023-12-11 16:28:09
ory-client 2023-12-11 16:28:07
cyclonedx-python-lib-with-validation 2023-12-11 16:24:20
cyclonedx-python-lib-with-xml-validation 2023-12-11 16:24:05
cyclonedx-python-lib-with-json-validation 2023-12-11 16:23:50
pokerkit 2023-12-11 16:09:59
pycocoevalcap 2023-12-11 15:51:12
mumps-mpi 2023-12-11 15:27:09
mumps-include 2023-12-11 15:16:13
kahip-python 2023-12-11 15:09:42
netgraph 2023-12-11 15:08:19
kahip 2023-12-11 15:06:47
actions-toolkit 2023-12-11 15:01:09
r-archive 2023-12-11 14:40:24
iconv 2023-12-11 14:12:27
rbeast 2023-12-11 14:07:29
acwater 2023-12-11 13:59:00
pycasreg 2023-12-11 13:27:11
coastsat-package 2023-12-11 13:11:28
dagger-io 2023-12-11 13:08:38
dynaphopy 2023-12-11 11:40:33
power-grid-model-io 2023-12-11 10:52:24
python-constraint2 2023-12-11 09:27:04
r-filelock 2023-12-11 09:23:47
kernel-tuner 2023-12-11 07:25:04
openconnect 2023-12-11 06:43:06
antarctic-plots 2023-12-11 06:09:30
hdx-python-country 2023-12-11 05:18:53
cdo 2023-12-11 05:17:01
r-getpass 2023-12-11 02:50:26
r-memisc 2023-12-11 02:32:47
gnss-sdr 2023-12-11 01:06:56
volk-gnss-sdr 2023-12-11 00:29:44
kmedoids 2023-12-10 23:00:19
u8darts-notorch 2023-12-10 22:03:29
continuedev 2023-12-10 21:48:56
qt6-gtk-platformtheme 2023-12-10 21:13:02
plateletanalysis 2023-12-10 21:11:44
napari-convpaint 2023-12-10 21:10:56
sardana-adlink 2023-12-10 19:13:27
sardana-alba 2023-12-10 19:10:56
libuwebsockets 2023-12-10 18:09:41
r-pkgsearch 2023-12-10 17:15:54
remotior-sensus 2023-12-10 15:28:17
zimpl 2023-12-10 14:34:19
r-rcppint64 2023-12-10 13:08:26
pyhams 2023-12-10 12:47:58
redflag 2023-12-10 12:00:44
css_inline 2023-12-10 07:46:15
sqlparams 2023-12-10 06:38:08
mosaicmpi 2023-12-10 05:01:06
ocp 2023-12-10 02:51:50
m2-libzstd 2023-12-09 22:48:18
r-marginaleffects 2023-12-09 22:46:55
skglm 2023-12-09 21:23:04
qsimcirq 2023-12-09 19:58:34
libev-static 2023-12-09 19:27:29
libev-libevent 2023-12-09 19:27:12
libev 2023-12-09 19:26:54
pennylane-lightning-kokkos 2023-12-09 19:06:20
itertable 2023-12-09 18:08:40
loki-logger-handler 2023-12-09 18:08:22
rest-pandas 2023-12-09 17:58:08
html-json-forms 2023-12-09 17:53:24
gguf 2023-12-09 17:50:23
hdwallets 2023-12-09 17:35:04
soqt6 2023-12-09 17:27:50
uhdm 2023-12-09 17:07:39
coin3d 2023-12-09 16:49:17
molfeat 2023-12-09 16:02:47
splito 2023-12-09 16:02:47
medchem 2023-12-09 16:01:53
libnghttp2 2023-12-09 14:59:03
pycrdt 2023-12-09 14:10:40
pybufrkit 2023-12-09 13:57:22
safe-mol 2023-12-09 12:28:53
hijridate 2023-12-09 11:51:12
rocket-fft 2023-12-09 09:19:52
napari-superres 2023-12-09 09:19:27
umetrix 2023-12-09 09:16:10
rainbow-logging-handler 2023-12-09 09:14:34
napari-steinpose 2023-12-09 09:11:55
napari-morphodynamics 2023-12-09 09:10:30
jinja2-simple-tags 2023-12-09 09:04:37
mat4py 2023-12-09 09:01:56
nomad 2023-12-09 08:59:10
unidiff 2023-12-09 08:54:11
st-annotated-text 2023-12-09 08:39:05
htbuilder 2023-12-09 08:36:58
compas_libigl 2023-12-09 08:32:16
pycirclize 2023-12-09 08:23:43
pyg-lib 2023-12-09 04:31:00
dclab 2023-12-09 02:20:19
libarrow-all 2023-12-09 02:07:39
libarrow-substrait 2023-12-09 02:06:49
libarrow-flight-sql 2023-12-09 02:05:05
libarrow-dataset 2023-12-09 02:03:28
libparquet 2023-12-09 02:01:46
libarrow-gandiva 2023-12-09 01:59:44
libarrow-flight 2023-12-09 01:57:55
libarrow-acero 2023-12-09 01:56:02
napari-boxmanager 2023-12-09 01:55:24
napari-gemspa 2023-12-09 01:54:17
libarrow 2023-12-09 01:53:21
amazon-codewhisperer-jupyterlab-ext 2023-12-09 01:41:51
napari-stress 2023-12-09 01:23:03
warp-lang 2023-12-09 01:03:35
domb 2023-12-09 01:03:32
darth-d 2023-12-09 00:30:24
napari-tomotwin 2023-12-09 00:20:26
napari-emd 2023-12-08 23:47:04
djangocms-text-ckeditor 2023-12-08 23:41:46
tabulous 2023-12-08 23:38:27
napari-indices 2023-12-08 23:32:59
rembg 2023-12-08 23:12:44
causal-learn 2023-12-08 22:58:40
hexdump 2023-12-08 22:55:13
plant-seg 2023-12-08 22:54:21
djangocms-history 2023-12-08 22:54:09
opendatasets 2023-12-08 22:53:53
fsspec-xrootd 2023-12-08 22:53:47
pelicanplatform 2023-12-08 22:44:44
tensorstore 2023-12-08 22:41:54
napari-sam4is 2023-12-08 22:39:45
napari-spreadsheet 2023-12-08 22:39:03
numcpp 2023-12-08 22:36:27
logutils 2023-12-08 22:35:31
brainglobe-segmentation 2023-12-08 22:24:32
commlib-py 2023-12-08 22:22:36
python-blosc2 2023-12-08 22:08:04
blast-codes 2023-12-08 21:56:00
steinbock 2023-12-08 21:54:04
terraform-provider-restapi 2023-12-08 21:53:29
napari-tiledb-bioimg 2023-12-08 21:49:57
jax-dataclasses 2023-12-08 21:49:15
morphodynamics 2023-12-08 21:48:52
napari-locan 2023-12-08 21:46:46
domb-napari 2023-12-08 21:46:18
pygeodesic 2023-12-08 21:32:54
r-proj 2023-12-08 21:18:18
tiledb-bioimg 2023-12-08 21:13:37
simdjson-static 2023-12-08 21:11:01
simdjson 2023-12-08 21:10:51
femto 2023-12-08 19:12:05
abacusutils 2023-12-08 19:02:52
zulip 2023-12-08 18:49:43
hostess 2023-12-08 18:42:14
lxmlh 2023-12-08 18:31:45
yaqd-pololu 2023-12-08 18:26:48
ncvis-climate 2023-12-08 18:19:24
parallel-numpy-rng 2023-12-08 18:15:05
pycrdt-websocket 2023-12-08 17:52:14
rio-stac 2023-12-08 17:44:31
gotrue 2023-12-08 17:38:53
ribasim 2023-12-08 16:10:38
pdal_wrench 2023-12-08 16:10:14
pyscal-rdf 2023-12-08 16:06:39
replicate 2023-12-08 16:06:09
basedmypy 2023-12-08 16:04:02
r-rtables 2023-12-08 15:30:59
robot_descriptions 2023-12-08 15:26:23
ingeoml 2023-12-08 12:41:54
dask-expr 2023-12-08 12:36:03
shapash 2023-12-08 12:32:16
enpt_enmapboxapp 2023-12-08 11:50:21
latex2mathml 2023-12-08 10:51:27
types-pywin32 2023-12-08 10:47:44
actinia-python-client 2023-12-08 10:41:56
vampyr 2023-12-08 10:39:19
optuna-integration 2023-12-08 10:07:58
smact 2023-12-08 09:19:00
caddy 2023-12-08 09:11:28
nbwipers 2023-12-08 07:56:54
chgnet 2023-12-08 06:18:00
cotengra 2023-12-08 05:37:37
pycolmap 2023-12-08 04:54:13
gklib 2023-12-08 04:31:40
alibabacloud-tea 2023-12-08 04:07:47
google-cloud-batch 2023-12-08 03:57:33
google-cloud-dataflow-client 2023-12-08 03:41:46
alibabacloud-adb20211201 2023-12-08 03:19:03
stamina 2023-12-08 03:08:21
openlineage-dbt 2023-12-08 03:03:44
gcloud-aio-auth 2023-12-08 03:00:44
openlineage-airflow 2023-12-08 02:41:14
google-cloud-bigquery-connection 2023-12-08 02:33:36
terraform-provider-opensearch 2023-12-08 02:27:53
gnuradio-pmt 2023-12-08 02:20:55
amundsen-databuilder 2023-12-08 01:08:17
colmap 2023-12-08 01:06:52
google-cloud-functions 2023-12-08 01:06:38
openlineage-integration-common 2023-12-08 00:33:33
linkchecker 2023-12-08 00:13:31
pysingular 2023-12-07 23:54:51
openmdao-with-all 2023-12-07 23:49:58
openmdao-with-visualization 2023-12-07 23:49:45
openmdao-with-notebooks 2023-12-07 23:49:33
openmdao-with-jax 2023-12-07 23:49:20
openmdao-with-doe 2023-12-07 23:49:08
directory-tree 2023-12-07 23:26:27
openlineage-sql 2023-12-07 22:36:24
aiohttp-devtools 2023-12-07 22:07:40
soapysdr-module-volk-converters 2023-12-07 21:55:05
dbt-semantic-interfaces 2023-12-07 21:54:45
openslide 2023-12-07 21:37:46
rust-std-x86_64-linux-android 2023-12-07 20:40:58
rust-std-x86_64-apple-ios 2023-12-07 20:39:09
rust-std-wasm32-unknown-unknown 2023-12-07 20:37:36
impactx 2023-12-07 20:36:13
rust-std-i686-linux-android 2023-12-07 20:35:47
rust-std-armv7-linux-androideabi 2023-12-07 20:34:02
rust-std-arm-linux-androideabi 2023-12-07 20:32:20
rust-std-aarch64-linux-android 2023-12-07 20:30:28
rust-std-aarch64-apple-ios-sim 2023-12-07 20:28:36
setfit 2023-12-07 20:28:21
openmetadata-managed-apis 2023-12-07 20:28:13
rust-std-aarch64-apple-ios 2023-12-07 20:26:49
openlineage-python 2023-12-07 20:26:20
financetoolkit 2023-12-07 20:25:54
rust-src 2023-12-07 20:25:27
libdicom 2023-12-07 19:46:20
referencing 2023-12-07 19:43:10
onemkl-sycl-sparse 2023-12-07 19:40:29
onemkl-sycl-lapack 2023-12-07 19:39:17
onemkl-sycl-vm 2023-12-07 19:37:33
eip712 2023-12-07 19:36:44
onemkl-sycl-stats 2023-12-07 19:36:30
openmetadata-ingestion 2023-12-07 19:35:34
onemkl-sycl-rng 2023-12-07 19:35:07
onemkl-sycl-dft 2023-12-07 19:34:06
onemkl-sycl-datafitting 2023-12-07 19:33:32
onemkl-sycl-blas 2023-12-07 19:32:28
clusterx 2023-12-07 19:30:56
impi-devel 2023-12-07 19:21:41
impi_rt 2023-12-07 19:11:30
pytest-golden 2023-12-07 16:26:26
netcdf-java 2023-12-07 16:23:41
vertica_highcharts 2023-12-07 16:08:32
vl-convert 2023-12-07 16:08:01
mlflow-gateway 2023-12-07 15:55:31
mlflow-skinny-gateway 2023-12-07 15:54:04
scikit-digital-health 2023-12-07 15:52:26
pymc-marketing 2023-12-07 15:24:36
glue-jupyter 2023-12-07 15:18:36
django-cms 2023-12-07 14:36:45
django-sekizai 2023-12-07 13:30:54
gluonts 2023-12-07 11:46:17
qibocal 2023-12-07 11:45:30
libcusolver-dev 2023-12-07 11:32:13
libcusolver 2023-12-07 11:29:07
libcusolver-static 2023-12-07 11:23:29
nomad-camels-driver-thorlabs-mff 2023-12-07 10:42:03
nomad-camels-driver-cam-control-pylablib 2023-12-07 10:41:18
nomad-camels-driver-keithley-2400 2023-12-07 10:41:14
nomad-camels-driver-mechonics-cu30cl 2023-12-07 10:40:42
nomad-camels-driver-thorlabs-tlpm 2023-12-07 10:40:32
nomad-camels-driver-thorlabs-k10cr1 2023-12-07 10:39:49
nomad-camels-driver-trinamic-tmcm-1110 2023-12-07 10:39:01
nomad-camels-driver-swabianinstruments-timetagger 2023-12-07 10:11:12
r-egcm 2023-12-07 09:25:40
locan 2023-12-07 09:19:00
nomad-camels 2023-12-07 09:01:58
lobsterpy 2023-12-07 09:00:14
gradio 2023-12-07 08:59:55
gradio-client 2023-12-07 08:41:12
libcublas-dev 2023-12-07 08:04:04
libcublas-static 2023-12-07 08:00:22
libcublas 2023-12-07 07:59:45
libcusparse-dev 2023-12-07 07:48:37
libcusparse 2023-12-07 07:47:04
libcusparse-static 2023-12-07 07:45:21
cuda-nvprof 2023-12-07 07:43:41
pyiron_workflow 2023-12-07 05:57:22
earthaccess 2023-12-07 03:38:27
polaris 2023-12-07 03:20:40
cuda-nvtx 2023-12-07 01:43:54
textual-textarea 2023-12-07 01:36:45
pplpy 2023-12-07 00:48:17
cuda-nvrtc-dev 2023-12-07 00:30:14
cuda-nvrtc-static 2023-12-07 00:26:54
cuda-nvrtc 2023-12-07 00:26:24
cuda-cudart-dev 2023-12-07 00:25:59
cuda-cudart-static 2023-12-07 00:25:46
cuda-cupti-dev 2023-12-07 00:25:45
cuda-cupti-doc 2023-12-07 00:25:34
cuda-cudart-dev_win-64 2023-12-07 00:25:30
cuda-cudart 2023-12-07 00:25:17
cuda-driver-dev 2023-12-07 00:25:17
libnvjitlink-dev 2023-12-07 00:25:16
cuda-cupti 2023-12-07 00:25:11
cuda-cudart_win-64 2023-12-07 00:25:03
libnpp-dev 2023-12-07 00:24:49
cuda-cudart-dev_linux-ppc64le 2023-12-07 00:24:47
cuda-driver-dev_linux-ppc64le 2023-12-07 00:24:19
cuda-cudart_linux-ppc64le 2023-12-07 00:24:05
libnpp-static 2023-12-07 00:23:55
cuda-cudart-static_linux-ppc64le 2023-12-07 00:23:49
libnpp 2023-12-07 00:23:19
libcufft-dev 2023-12-07 00:22:51
libnvjitlink-static 2023-12-07 00:22:03
libnvjpeg-dev 2023-12-07 00:22:00
libnvjpeg 2023-12-07 00:21:48
libnvjitlink 2023-12-07 00:21:38
libnvjpeg-static 2023-12-07 00:21:21
libcufft 2023-12-07 00:21:17
cuda-cudart-static_win-64 2023-12-07 00:21:05
libcurand-dev 2023-12-07 00:20:10
cuda-cudart-dev_linux-64 2023-12-07 00:19:32
libcurand 2023-12-07 00:19:29
cuda-driver-dev_linux-64 2023-12-07 00:19:05
cuda-cudart_linux-64 2023-12-07 00:18:51
cuda-cudart-static_linux-64 2023-12-07 00:18:36
cuda-cudart-dev_linux-aarch64 2023-12-07 00:17:26
cuda-driver-dev_linux-aarch64 2023-12-07 00:17:12
cuda-cudart_linux-aarch64 2023-12-07 00:17:05
cuda-cudart-static_linux-aarch64 2023-12-07 00:16:57
gds-tools 2023-12-07 00:16:44
libcufile-dev 2023-12-07 00:16:32
libcufile-static 2023-12-07 00:16:13
libcufile 2023-12-07 00:16:01
cuda-cupti-static 2023-12-07 00:15:07
libcufft-static 2023-12-07 00:14:14
libcurand-static 2023-12-07 00:12:49
peft 2023-12-06 23:38:48

You can also use this script to rollback repodata to a given moment in time and see what changed.

@jaimergp
Copy link
Contributor

We've also seen that some specific orders (but I don't know which ones) make libsolv crash 😂 xref conda/conda-libmamba-solver#391

@vyasr
Copy link
Author

vyasr commented Dec 12, 2023

Good to know that the conda libmamba solver is doing similar things! Less excited to find that libsolv has order-dependent behavior that leads to crashes (not just performance changes)...

@AntoinePrv
Copy link
Member

I'm adding #3163 to arbitrarily sort the input MatchSpecs before passing it to the solver.
The order is arbitrary and is only for consistency right now but it could easily be changed for a better function in case a promising candidate was found.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants