diff --git a/HISTORY.md b/HISTORY.md index 063d84c..e691c83 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,6 +1,19 @@ # History -1.2.4 (2026-04-24) +1.3.0 (2026-07-02) +------------------ +* Adds multi-GPU support - use `--gpus` (e.g. `--gpus 0,2`) to specify which CUDA device indices `phold` and Foldseek-GPU should use. Defaults to all visible CUDA GPUs. Has no effect on MPS/XPU systems +* Adds Intel XPU (Arc/Data Center GPU Max) support for ProstT5 prediction - thanks @linsalrob. See the [installation documentation](https://phold.readthedocs.io/en/latest/install/) for details +* Internal migration of `phold`'s analytical/IO code from `pandas` to `polars`, improving performance especially for large datasets +* Numerous internal performance improvements (faster masking, Foldseek database creation, sub-database and per-contig function count output writing, and faster `phold` startup via streamlined imports) +* Fixes bugs where NCBI GenBank input containing a pseudogene CDS (no translation) or a CDS with no product would cause `phold run`/`compare` to crash #132 +* Fixes `phold plot` bug affecting genomes with CRISPR repeats and tmRNA features +* `--restart` is more robust to interruption (fixes potential intermediate OOM issues and ensures the ProstT5 3Di prediction loop can safely resume) +* Fixes intermittent `phold install` database download issues (adds a timeout, fixes handling of incomplete downloads, fixes database move on some filesystems) +* Adds defensiveness around external tool (Foldseek) failures with clearer error messages +* Adds a golden-output regression test suite so future code changes are automatically checked in CI against reference annotation outputs + +1.2.5 (2026-04-24) ------------------ * Support `mps` (MacOS) with `phold autotune` @@ -124,4 +137,4 @@ Breaking CLI parameter changes 0.1.0 (2024-03-05) ------------------ -* Initial beta release \ No newline at end of file +* Initial beta release diff --git a/README.md b/README.md index d380825..580eb74 100644 --- a/README.md +++ b/README.md @@ -122,6 +122,10 @@ conda install -c conda-forge -c bioconda phold If you are have a different non-NVIDIA GPU, or have trouble with `pytorch`, see [this link](https://pytorch.org) for more instructions. If you have an older version of CUDA installed, then you might find [this link useful](https://pytorch.org/get-started/previous-versions/). +If you have an Intel machine with an XPU, see the separate [Intel XPU installation instructions](https://phold.readthedocs.io/en/latest/install/#intel-xpu). + +If you have multiple NVIDIA GPUs available, you can specify which to use with `--gpus` (e.g. `--gpus 0,2`) with `phold run`, `predict`, `proteins-predict` and `--foldseek_gpu` compatible commands. By default, all visible CUDA GPUs will be used. + Once `phold` is installed, to download and install the database run: ```bash diff --git a/docs/run.md b/docs/run.md index 234a31c..170191f 100644 --- a/docs/run.md +++ b/docs/run.md @@ -26,6 +26,8 @@ For `phold proteins-predict` and `phold proteins-compare`, the input will be a F `predict` uses the [ProstT5](https://github.com/mheinzinger/ProstT5) protein language model to translate protein amino acid sequences to the 3Di token alphabet used by [foldseek](https://github.com/steineggerlab/foldseek). This module is greatly accelerated if you have a GPU available and is recommended. +If you have multiple NVIDIA GPUs, you can restrict which are used for ProstT5 with `--gpus` (e.g. `--gpus 0,2`). By default all visible CUDA GPUs are used. This has no effect on MPS (Apple Silicon) or Intel XPU systems. + ```bash Usage: phold predict [OPTIONS] @@ -48,6 +50,10 @@ Options: autotuning will add rather than save runtime. --batch_size INTEGER batch size for ProstT5. [default: 1] --cpu Use cpus only. + --gpus TEXT Comma-separated CUDA device indices to use + (e.g. "0,2"). Default: all visible CUDA GPUs. + Overridden by --cpu. Has no effect on MPS / + XPU systems. --omit_probs Do not output per residue 3Di probabilities from ProstT5. Mean per protein 3Di probabilities will always be output. @@ -81,6 +87,8 @@ Alternatively, if you have provided pre-generated .pdb format protein structures `phold compare` does not use a GPU by default. However, if you have one available, you can utilise Foldseek-GPU acceleration using `--foldseek_gpu`. Note that you need to make sure your also run `phold install` with `--foldseek_gpu` prior. Regardless of whether you use `--foldseek_gpu` or not, it is recommended to use as many CPU threads with `-t` as you can (as the GPU only accelerates Foldseek's prefilter, not the alignment step). +If you have multiple NVIDIA GPUs, you can restrict which are used for Foldseek-GPU with `--gpus` (e.g. `--gpus 0,2`). By default all visible CUDA GPUs are used. + Example usage of `phold compare` following `phold predict` ```bash @@ -127,6 +135,10 @@ Options: found in the input GenBank file. Helpful if you have a directory with lots of .pdb files and want to annotate only e.g. 1 phage. + --gpus TEXT Comma-separated CUDA device indices for + Foldseek-GPU (e.g. "0,2"). Default: all + visible CUDA GPUs. Only meaningful with + --foldseek_gpu. -o, --output PATH Output directory [default: output_phold] -t, --threads INTEGER Number of threads [default: 1] -p, --prefix TEXT Prefix for output files [default: phold] @@ -191,6 +203,10 @@ Options: autotuning will add rather than save runtime. --batch_size INTEGER batch size for ProstT5. [default: 1] --cpu Use cpus only. + --gpus TEXT Comma-separated CUDA device indices to use + (e.g. "0,2"). Default: all visible CUDA GPUs. + Overridden by --cpu. Has no effect on MPS / + XPU systems. --omit_probs Do not output per residue 3Di probabilities from ProstT5. Mean per protein 3Di probabilities will always be output. @@ -265,6 +281,10 @@ Options: autotuning will add rather than save runtime. --batch_size INTEGER batch size for ProstT5. [default: 1] --cpu Use cpus only. + --gpus TEXT Comma-separated CUDA device indices to use + (e.g. "0,2"). Default: all visible CUDA GPUs. + Overridden by --cpu. Has no effect on MPS / + XPU systems. --omit_probs Do not output per residue 3Di probabilities from ProstT5. Mean per protein 3Di probabilities will always be output. @@ -318,6 +338,10 @@ Options: found in the input GenBank file. Helpful if you have a directory with lots of .pdb files and want to annotate only e.g. 1 phage. + --gpus TEXT Comma-separated CUDA device indices for + Foldseek-GPU (e.g. "0,2"). Default: all + visible CUDA GPUs. Only meaningful with + --foldseek_gpu. -o, --output PATH Output directory [default: output_phold] -t, --threads INTEGER Number of threads [default: 1] -p, --prefix TEXT Prefix for output files [default: phold] @@ -518,6 +542,9 @@ Options: want to use the default sample of 5000 Phold DB proteins --cpu Use cpus only. + --gpus TEXT Comma-separated CUDA device indices (e.g. "0,2"). + Default: lowest visible CUDA GPU. Overridden by + --cpu. -t, --threads INTEGER Number of threads [default: 1] -d, --database TEXT Specific path to installed phold database --min_batch INTEGER Minimum batch size to test [default: 1] diff --git a/mkdocs.yml b/mkdocs.yml index 19440a8..542b2f5 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -16,6 +16,7 @@ nav: - Citation: citation.md - RUNNING: - Install: install.md + - Install (Intel XPU): install_intel_xpu.md - Usage: run.md - Output: output.md - TUTORIAL: