mamba-org / mamba

The Fast Cross-Platform Package Manager
https://mamba.readthedocs.io
BSD 3-Clause "New" or "Revised" License
6.71k stars 346 forks source link

Package ordering and duplication substantially affects solve times #3058

Open vyasr opened 8 months ago

vyasr commented 8 months ago

Troubleshooting docs

Anaconda default channels

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

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 commented 8 months ago

Interesting! Other solver performance tickets https://github.com/mamba-org/mamba/issues/3031 https://github.com/mamba-org/mamba/issues/2824

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

jonashaag commented 8 months ago

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 commented 8 months ago

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 commented 8 months ago

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 commented 8 months ago

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 commented 8 months ago

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 commented 8 months ago

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 commented 8 months ago

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 commented 8 months ago

See PR description at https://github.com/conda/conda-libmamba-solver/pull/381#issue-1993226728. 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](https://github.com/mamba-org/mamba/files/13649925/last.py.txt) 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 commented 8 months ago

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

vyasr commented 8 months ago

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 commented 7 months ago

I'm adding https://github.com/mamba-org/mamba/pull/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.