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

Quick update for MPI collective block size and minor SYCL document update #1014

Closed
wants to merge 588 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
588 commits
Select commit Hold shift + click to select a range
31d152b
added Q0 to tomogram set, and have it imported from the start
scheres Jan 20, 2023
6bfa539
ignore empty images in getDiff2 and storeWSUMs in legacy code for sub…
scheres Jan 20, 2023
6692ef0
Fix rich import error
EuanPyle Jan 24, 2023
bc20c43
Remove superfluous import
EuanPyle Jan 24, 2023
80bb046
Merge pull request #89 from EuanPyle/fix_rich
EuanPyle Jan 24, 2023
f307db3
EER 2K rendering (not-tested)
biochem-fan Feb 14, 2023
8d5ebe7
Tomo_Model: Fixed issue where missing images were kept in star file a…
EuanPyle Feb 20, 2023
4ddec4d
add simple picker for isolated particles (#91)
alisterburt Feb 28, 2023
b63b8e6
prevent multi gpu use in cryocare
EuanPyle Mar 8, 2023
583b2b5
clarify that GPU ID must be provided
EuanPyle Mar 8, 2023
e929461
Merge pull request #92 from EuanPyle/remove_cryocare_parallel_gpus_two
EuanPyle Mar 8, 2023
2ffcb0c
Add a 'sphere picker' (#93)
alisterburt Mar 8, 2023
5e3f91c
Initiali patch set of MPI collectives
do-jason Mar 9, 2023
8fcd257
Make split size of MPI data multiple of 8 bytes
do-jason Mar 9, 2023
c1d84fa
Msum just need memory allocation
do-jason Mar 9, 2023
c0fa8f9
fix name error
alisterburt Mar 9, 2023
004daf5
Merge branch 'tomo_model' of https://github.com/3dem/relion-devel int…
scheres Mar 9, 2023
d2053c6
added picking tomograms jobtype on gui
scheres Mar 10, 2023
5de0bb9
Integrate picking python scripts with pipeline control
EuanPyle Mar 23, 2023
7ecded3
Merge pull request #96 from EuanPyle/fix_picking_gui_bugs
EuanPyle Mar 23, 2023
563d1bf
Picking particles needs napari-threedee so added to dependencies (#95)
EuanPyle Mar 24, 2023
947437d
USE_MPI_COLLECTIVE enabled by default for CPU acceleration
do-jason Apr 3, 2023
561a8bf
Merge pull request #94 from do-jason/mpi_opt
biochem-fan Apr 3, 2023
a6db59e
make optics star file for particles in tomo_subtomo when coming in co…
scheres Apr 12, 2023
3e541b9
Merge branch 'tomo_model' of https://github.com/3dem/relion-devel int…
scheres Apr 12, 2023
ea531d6
resolving merge conflicts
scheres Apr 12, 2023
0655d1d
set version to 5.0-alpha-1
scheres Apr 12, 2023
2a97908
resolved tricky merge conflict in ml_optimiser
scheres Apr 12, 2023
f927561
assume zero offsets if offsets are not present in the input star file
scheres Apr 12, 2023
375bdbf
FAO Alister: Make pick particle read denoised tomograms if they exist…
EuanPyle Apr 14, 2023
922bb88
fix merge snafu (#98)
alisterburt Apr 18, 2023
cb26a7b
fixed bug in mpi-version of tomo_subtomo
scheres Apr 19, 2023
609a5c8
Merge branch 'tomo_model' into subtomo_stack2d
scheres Apr 19, 2023
08b82b0
not sure why merge deleted 3 lines around l118 in ml_optimiser_mpi.cp…
scheres Apr 19, 2023
de7ca87
removed spurious imag_name printing
scheres Apr 19, 2023
4331f41
tidying up MPI code for reconstruct_tomogram, also raise errors if n…
scheres Apr 19, 2023
b292786
removed sanity checks on rlnTomoFrameCount, as recommended by Alister
scheres Apr 19, 2023
2fc3e05
now repaired bug in mpi of reconstruct_tomogram
scheres Apr 19, 2023
d238302
pass tomoset to constructor of particleset, in case there is no optic…
scheres Apr 20, 2023
3f8dafb
tomo_reconstruct_particle now also works when there are no rlnRandomS…
scheres Apr 20, 2023
b9b73e6
implemented anisotropic offset searches through sigma2_offset_xyz wit…
scheres Apr 25, 2023
ae7882d
keep the priors fixed at the input offsets, when using user-specified…
scheres Apr 25, 2023
d862f9d
only remove offset priors from particles.star if they werent there to…
scheres Apr 25, 2023
2080b78
removed writing of optimisation set at Alisters request
scheres May 2, 2023
cfda6be
remove compulsory prsence of pre-exposure in global table, still rema…
scheres May 4, 2023
c8375f1
integrate latest versions of pickers
alisterburt May 5, 2023
e63bd28
put passive viewers in one program
alisterburt May 5, 2023
8cc8bd7
fix imports in GUI components
alisterburt May 5, 2023
02d7954
adjust output directories - annotations now go in 'annotations' subdi…
alisterburt May 5, 2023
d6e74d3
add program for combining particle annotations
alisterburt May 5, 2023
566381d
add RELION program for deriving positions and eulers from spheres usi…
alisterburt May 5, 2023
f376026
make picking programs compatible with the relion pipeliner
alisterburt May 5, 2023
c963dd7
add program for deriving poses from filaments using morphosamplers
alisterburt May 5, 2023
3b7c044
fix minor bugs in sampling sphere program
alisterburt May 5, 2023
b0deb94
initial test of support for helical priors
alisterburt May 5, 2023
9a9629e
update deps
alisterburt May 5, 2023
bedcdc7
invert rotated basis for euler conversion
alisterburt May 5, 2023
b62c595
EER: supported 2K EER with the 7+2 bits coding
biochem-fan May 9, 2023
03c3df3
Merge branch 'ver4.0' into EER2K
biochem-fan May 9, 2023
3cca351
EER: updated texts for --eer_upsampling
biochem-fan May 9, 2023
b2db1fa
removing error for filament picker
scheres May 9, 2023
2604ece
added warning not to use --apply_orientations anymore
scheres May 9, 2023
13da3f0
add filament priors with rlnTomoSubtomogramRot/Tilt/Psi set to partic…
alisterburt May 9, 2023
3d9c4c9
Merge remote-tracking branch 'origin/subtomo_stack2d' into subtomo_st…
alisterburt May 9, 2023
6648b76
sort on pre-exposure instead of tilt_movie_index
scheres May 9, 2023
c9b5f78
Merge branch 'subtomo_stack2d' of https://github.com/3dem/relion-deve…
scheres May 9, 2023
ee617a4
make sphere pose program give pre-rotated particles with SubtomogramR…
alisterburt May 9, 2023
60bb2e7
Merge remote-tracking branch 'origin/subtomo_stack2d' into subtomo_st…
alisterburt May 9, 2023
dbf9040
mdocfile no longer produces snake-case labels, fix bug in exposure do…
alisterburt May 9, 2023
2db3960
add check for pre-exposure dose being all 0 on import
alisterburt May 9, 2023
1db5ef0
put pre-expsure labels back into ctffind runner star file
scheres May 9, 2023
d146e18
Merge branch 'subtomo_stack2d' of https://github.com/3dem/relion-deve…
scheres May 9, 2023
5dee585
output message for is_tomo corrected
scheres May 9, 2023
6824bbb
remove rlnTomoTiltMovieIndex as no longer needed
alisterburt May 9, 2023
a9538b7
EER 2K: Use H/V subpixel fields
biochem-fan May 10, 2023
9d0df80
EER: supported 2K detectors in loadEERGain(). This function is no longer
biochem-fan May 10, 2023
35994c5
address datetime deprecation warning
alisterburt May 10, 2023
59e0970
only write success/failure if --pipeline_control is set
alisterburt May 10, 2023
ce4122d
make helicaltubeID start at 1
alisterburt May 10, 2023
c2ef892
EER: fix 2K super-resolution
biochem-fan May 11, 2023
5e6ca29
update import gui to not be movie specific
alisterburt May 17, 2023
dd99514
extract subtomograms tilted 90 degrees around Y relative to a referen…
alisterburt May 18, 2023
47c357c
go ahead with 2D shifts in stacks
scheres May 19, 2023
0405404
finetuned verbosity
scheres May 19, 2023
195a0eb
added particle spacing and call to get_poses for picktomo jobtype
scheres May 19, 2023
1693b1c
Merge branch 'subtomo_stack2d' of https://github.com/3dem/relion-deve…
scheres May 19, 2023
2861734
dont use spacing with particles
scheres May 25, 2023
fecc464
Add particle visualisation program (#99)
alisterburt May 25, 2023
6fe8577
minor visualisation improvements to particle viewer (#100)
alisterburt May 25, 2023
cba2c34
Merge branch 'subtomo_stack2d' of https://github.com/3dem/relion-deve…
scheres Jul 3, 2023
2acf32e
Merge branch 'EER2K' of https://github.com/3dem/relion-devel
scheres Jul 3, 2023
352d461
Merge branch 'master' into tomo_model
scheres Jul 3, 2023
6f70a93
after merging tomo_model (from master and EER2K) into subtomo_stack2d
scheres Jul 3, 2023
5b9c10c
Removed unsued flag.
dkimanius Jul 12, 2023
6ecf8e9
added float16 option to stack_create
scheres Jul 13, 2023
11b815d
changed version to 5.0-alpha
scheres Jul 13, 2023
643445e
Merge branch 'suyash/ver4.0-hip' of https://github.com/suyashtn/relio…
scheres Jul 13, 2023
ec830ce
repaired bug in stack_create, introduced when introducing float16 option
scheres Jul 13, 2023
58966cf
added dynamight and modelangelo jobtypes and added blush option ot re…
scheres Jul 18, 2023
69d01e4
Fixed broken config due to HIP and removed classranker dependency
dkimanius Jul 19, 2023
a5b1363
Added conda environment.yml for python dependencies
dkimanius Jul 19, 2023
00feefb
Classranker moved to the new python environment access approach.
dkimanius Jul 19, 2023
25c87ad
added a jiffy to suggest T values for focussed classification or ref…
scheres Jul 20, 2023
2e74daa
better output suggest_tvalues
scheres Jul 20, 2023
833f25b
Merge branch 'relion-5.0-alpha' of https://github.com/3dem/relion-dev…
scheres Jul 20, 2023
d020815
Class ranker now works with the new python environment.
dkimanius Jul 20, 2023
9658d6a
Merge branch 'ver4.0'
biochem-fan Jul 25, 2023
11b9758
Merge branch 'ver4.0' into relion-5.0-alpha
biochem-fan Jul 25, 2023
98ef12f
tweaking in modelangelo gui
scheres Jul 25, 2023
583e134
Merge branch 'master' into subtomo_stack2d
scheres Jul 31, 2023
78386aa
Merge branch 'subtomo_stack2d' of https://github.com/3dem/relion-deve…
scheres Jul 31, 2023
2c61af8
Merge branch 'master' into subtomo_stack2d
scheres Jul 31, 2023
f16b6c1
resolved conflicts and set version to relion-5.0-alpha-2
scheres Jul 31, 2023
690d673
now compiles with rocm again, inserted += kernels in HIP, also put ba…
scheres Jul 31, 2023
b5d7f3e
added extra lines in HIP code that are needed after merging with subt…
scheres Aug 1, 2023
abafd86
making sure that Hip code also compiles with ALTCPU=on
scheres Aug 1, 2023
1264119
repaired bug due to merging of amd and subtomo_stack2d branches
scheres Aug 2, 2023
8b40fd7
Quick-fix for USE_MPI_COLLECTIVE
do-jason Aug 3, 2023
7d768ea
Merge pull request #103 from 3dem/qfix_mpi_collective
biochem-fan Aug 3, 2023
8cbed75
Replace -std::numeric_limits<double>::max()
do-jason Aug 4, 2023
1a7a871
Added DynaMight to Python dependencies.
dkimanius Aug 18, 2023
ca2b972
Cmake use bash wrappers for all python modules
dkimanius Aug 22, 2023
a0ca1e3
Added more python wrappers
dkimanius Aug 22, 2023
b795819
Blush is now a flag in refine and refine_mpi
dkimanius Aug 22, 2023
86db099
Automatic conda environment search
dkimanius Aug 23, 2023
4d9932b
Added DynaMight command call
dkimanius Aug 23, 2023
607ddce
Added a script that automatically finds the right conda environment a…
dkimanius Aug 23, 2023
a75ccec
Fixed Blush issue with new line character in Python return string.
dkimanius Aug 23, 2023
e05c96d
README instruction on Conda and Python
dkimanius Aug 23, 2023
04ed6ea
First SYCL implementation for RELION
do-jason Aug 24, 2023
9931569
Fix errorneous CMakeList file copy
do-jason Aug 24, 2023
75e1ed7
Temporary change branch name
do-jason Aug 24, 2023
13ac278
Minor update on SYCL document
do-jason Aug 24, 2023
b43a01c
URL changes for OpenCL and NVIDIA
do-jason Aug 24, 2023
f7c8b45
Minor README fix-up
dkimanius Aug 24, 2023
3681b58
New GUI background
dkimanius Aug 24, 2023
fbcede8
Changed constant to float in SYCL kernels
do-jason Aug 25, 2023
d5ab75c
2K EER: repair 2K to 4K upsampling
biochem-fan Aug 29, 2023
64f1ddb
Merge branch 'EER2K' of github.com:3dem/relion into EER2K
biochem-fan Aug 29, 2023
1a13d90
Merge branch 'EER2K' into relion-5.0-alpha
biochem-fan Aug 29, 2023
ecbdcd1
Impose lower bound for offset sigma square.
dkimanius Aug 29, 2023
ee2e716
added dynamight jobtype
scheres Aug 30, 2023
d0c2e53
Merge branch 'master' of github.com:3dem/relion
scheres Aug 30, 2023
645486d
merged in master from public relion, after fixing bug with local symm…
scheres Aug 30, 2023
c91a1e3
GPU specifications passed to Blush along with additional arguments.
dkimanius Aug 30, 2023
6d6f2ed
Blush arguments are set via environmental variable RELION_BLUSH_ARGS
dkimanius Aug 30, 2023
453079f
added topaz python wrapper
scheres Aug 31, 2023
fa74b3a
Merge branch 'relion-5.0-alpha' of https://github.com/3dem/relion-dev…
scheres Aug 31, 2023
2dc80c7
Print info when running Blush.
dkimanius Aug 31, 2023
ec482ba
Fixed README
dkimanius Aug 31, 2023
2102c84
Refine flag for skipping spectral trailing in Blush.
dkimanius Aug 31, 2023
49de7b6
Add FP64 support check routine for ACC_DOUBLE_PRECISION
do-jason Sep 11, 2023
6432dba
SYCL: updated build and runtime information
biochem-fan Sep 12, 2023
cace7cf
Add --gpu 0:1 syntax support
do-jason Sep 13, 2023
9c04399
Catchup "relion-5.0-alpha" as of Sep. 1st
do-jason Sep 13, 2023
92084ec
Refined SYCL device information
do-jason Sep 14, 2023
a09f661
Rename the term from CCS to Slice
do-jason Sep 15, 2023
f42cc1d
Remove debug BOOST usage
do-jason Sep 15, 2023
e10c92d
Add SYCL_EXT_ONEAPI_MAX_WORK_GROUP_QUERY and minor CMakeLists.txt cha…
do-jason Sep 15, 2023
f72af59
Add SYCL_EXT_INTEL_CSLICE feature test macro
do-jason Sep 18, 2023
66edc6d
added python versions of Alisters tomo prgrams
scheres Sep 18, 2023
0faf8b4
replaced calls to Alisters tomo programs with their python versions
scheres Sep 18, 2023
cb6eebe
Add -fsigned-zeros compiler flag and sycl::native math functions, and…
do-jason Sep 19, 2023
8a4ae43
added Alisters code in current directory to enviroment.yml
scheres Sep 19, 2023
2f23a49
changed dose-rate entry on tilt series import
scheres Sep 19, 2023
97ac504
remove dose-per-frame for motioncorr of tilt series tomo
scheres Sep 19, 2023
dd10f8a
relion_convert_to_tiff: improve parallelization with
biochem-fan Sep 19, 2023
583eca9
Merge branch 'ver4.0' into relion-5.0-alpha
biochem-fan Sep 19, 2023
6ecbb2f
Merge branch 'public-master' into ver4.0
biochem-fan Sep 19, 2023
fe3317b
Merge branch 'ver4.0' into relion-5.0-alpha
biochem-fan Sep 19, 2023
3fa3b1d
added David Lis Filament selection tools based on dendrogram threshol…
scheres Sep 20, 2023
60cf67c
Merge branch 'relion-5.0-alpha' of https://github.com/3dem/relion-dev…
scheres Sep 20, 2023
72bc1ff
Refactoring of two CMakeLists.txt files
do-jason Sep 21, 2023
2cfdb4e
fixed some bugs in dynamight GUI
scheres Sep 21, 2023
5182e90
tweaking dynamight io
scheres Sep 21, 2023
ea59d12
tweaking dynamight io2
scheres Sep 21, 2023
f3ca8e9
only add rlnClassNumber in displayer if it is not yet present, as thi…
scheres Sep 21, 2023
270c778
repair bug ctffind_runner for SPA
scheres Sep 23, 2023
f61d7c2
DynaMight moved to 3dem repo
dkimanius Sep 25, 2023
237a297
Added ModelAngelo to cmake and added weights download attempt during …
dkimanius Sep 25, 2023
cddf3aa
moved dynamight repo to 3dem
scheres Sep 26, 2023
d77879f
Merge branch 'relion-5.0-alpha' of https://github.com/3dem/relion-dev…
scheres Sep 26, 2023
c4b91a6
Fix ModelAngelo install in environment.yml
jamaliki Sep 26, 2023
4b2fc43
Fix fetch weights for ModelAngelo
jamaliki Sep 26, 2023
5a7dc00
Merge pull request #105 from jamaliki/patch-1
dkimanius Sep 26, 2023
950c0f5
Merge branch 'relion-5.0-alpha' of https://github.com/3dem/relion-dev…
scheres Sep 27, 2023
2499607
add bundle name to fetch weight call for modelangelo
scheres Sep 27, 2023
615fed6
changed default modelabgelo to our python callable version
scheres Sep 27, 2023
669f234
fixing classranker calls with python_classranker setup
scheres Sep 28, 2023
06ee9c7
replaced topaz_exe and modelangelo_exe with relion_python calls
scheres Sep 28, 2023
2e2a835
for now, blush always works in pad 1
scheres Sep 28, 2023
9ef47ad
repaired bug in renaming alias, as reported by Takanori
scheres Oct 3, 2023
e1b2456
repaired bug in renaming alias, as reported by Takanori
scheres Oct 3, 2023
60ce734
Merge branch 'ver4.0' into relion-5.0-alpha
biochem-fan Oct 3, 2023
7d4bd5a
repaired picktomo of particles, not passing spacing param
scheres Oct 4, 2023
f5c7718
merged
scheres Oct 4, 2023
6baf48e
renamed particles metadatatable
scheres Oct 4, 2023
c5ab49e
collect data from all spheres
Oct 5, 2023
d47f83f
Merge pull request #107 from ranganawarshamanage/relion-5.0-alpha
scheres Oct 10, 2023
609f1ba
Added the below environment variables
do-jason Oct 16, 2023
6251f23
repaired bug in changes in angles as reported by Katerina Naydenova
scheres Oct 16, 2023
b0c9f9d
Replace -std::numeric_limits<double>::max()
do-jason Aug 4, 2023
0f561cc
Fix errorneous CMakeList file copy
do-jason Aug 24, 2023
a581fad
Minor update on SYCL document
do-jason Aug 24, 2023
1e12911
URL changes for OpenCL and NVIDIA
do-jason Aug 24, 2023
5d5b0bb
Changed constant to float in SYCL kernels
do-jason Aug 25, 2023
60dd7c1
Add FP64 support check routine for ACC_DOUBLE_PRECISION
do-jason Sep 11, 2023
98fea97
SYCL: updated build and runtime information
biochem-fan Sep 12, 2023
5a29942
Add --gpu 0:1 syntax support
do-jason Sep 13, 2023
87c28af
Catchup "relion-5.0-alpha" as of Sep. 1st
do-jason Sep 13, 2023
6d4d6db
Refined SYCL device information
do-jason Sep 14, 2023
fd9fc58
Rename the term from CCS to Slice
do-jason Sep 15, 2023
b90a7da
Remove debug BOOST usage
do-jason Sep 15, 2023
e6f8622
Add SYCL_EXT_ONEAPI_MAX_WORK_GROUP_QUERY and minor CMakeLists.txt cha…
do-jason Sep 15, 2023
46a3b95
Add SYCL_EXT_INTEL_CSLICE feature test macro
do-jason Sep 18, 2023
2a9711e
Add -fsigned-zeros compiler flag and sycl::native math functions, and…
do-jason Sep 19, 2023
e6ddc77
Refactoring of two CMakeLists.txt files
do-jason Sep 21, 2023
8ce734a
Added the below environment variables
do-jason Oct 16, 2023
1fb01d2
Rebase and prepare for PR
do-jason Oct 17, 2023
95393d7
Merge branch 'sycl-merge' of https://github.com/3dem/relion-devel int…
do-jason Oct 17, 2023
81f827a
Remained fix after rebase
do-jason Oct 17, 2023
f424a53
Merge pull request #108 from 3dem/sycl-merge
scheres Oct 17, 2023
069537c
Fix an error in CMakeList.txt about SYCL-NVIDIA.
biochem-fan Oct 17, 2023
6e7bbf3
Fix compilation for Intel Classic compiler
do-jason Oct 18, 2023
051a654
Update README.md
scheres Oct 20, 2023
bcb483f
Update README.md
scheres Oct 20, 2023
4f9f8c2
Downloading model weights is a Cmake option now.
dkimanius Oct 24, 2023
e770269
Throw a warning when model weights download fails.
dkimanius Oct 24, 2023
6e74050
Don't warn when successful
dkimanius Oct 24, 2023
89853c3
User can set CUDA and HIP architecture during cmake config
dkimanius Oct 24, 2023
43924ec
Fixed issue in Cmake option for cuda architecture
dkimanius Oct 24, 2023
051978c
Fixed issue in Cmake option for cuda architecture for new cmake version
dkimanius Oct 24, 2023
1c90a05
final changes for release-5.0 before going beta
scheres Oct 25, 2023
d34da6a
changed version to 5.0-beta-0
scheres Oct 25, 2023
08be2f1
Updated README.md for 5.0 beta release.
biochem-fan Oct 26, 2023
1833087
Small typo
MartinSalinas98 Oct 27, 2023
ab1ec7a
added back executables for topaz, dynamight and modelangelo in case t…
scheres Oct 27, 2023
c13a226
Merge branch 'master' of https://github.com/3dem/relion-devel
scheres Oct 27, 2023
e47d962
Merge pull request #998 from MartinSalinas98/patch-1
biochem-fan Oct 27, 2023
8c0dc33
Merge branch 'ver4.0' into ver5.0
biochem-fan Oct 27, 2023
a5f88a0
Update README.md
scheres Oct 27, 2023
cff8554
Merge branch 'ver5.0' of github.com:3dem/relion into ver5.0
biochem-fan Oct 27, 2023
b09c573
Updated the About dialog.
biochem-fan Oct 27, 2023
aa3b373
Further remove duplicates from README.md.
biochem-fan Oct 27, 2023
a22079d
removed group members to avoid having to maintain ever changing list
scheres Oct 27, 2023
7396508
better passing of topaz executable
scheres Oct 27, 2023
0dada4d
Fixed CPU single precision build reported in GitHub issue #1002 by
biochem-fan Oct 31, 2023
8f8e6d9
Merge branch 'ver5.0' of github.com:3dem/relion into ver5.0
biochem-fan Oct 31, 2023
da8ee23
Remove old specific branch checkout statement
do-jason Oct 31, 2023
1343fa3
Change MPI block size and minor SYCL document update
do-jason Nov 1, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions AUTHORS
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
This program is developed in the group of Sjors Scheres at the MRC Laboratory of Molecular Biology, with contributions from the following people (in alphabetical order):

- Tom Burnley (from the CCP-EM team at STFC)
- Alister Burt (from David Barford's group at the MRC-LMB)
- Liyi Dong
- Bjoern Forsberg (from the Lindahl group at SciLifeLabs)
- Shaoda He
Expand All @@ -10,6 +11,7 @@ This program is developed in the group of Sjors Scheres at the MRC Laboratory of
- Takanori Nakane
- Joaquin Oton (from the Briggs group at MRC-LMB)
- Colin Palmer (from the CCP-EM team at STFC)
- Euan Pyle (from Giulia Zanetti's group at Birkbeck)
- Sjors Scheres
- Jasenko Zivanov

Expand Down
413 changes: 300 additions & 113 deletions CMakeLists.txt

Large diffs are not rendered by default.

79 changes: 8 additions & 71 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,86 +1,23 @@
RELION 4.0.1
============
RELION 5.0-beta
===============

RELION (for REgularised LIkelihood OptimisatioN) is a stand-alone computer
program for Maximum A Posteriori refinement of (multiple) 3D reconstructions
or 2D class averages in cryo-electron microscopy. It is developed in the
research group of Sjors Scheres at the MRC Laboratory of Molecular Biology.

The underlying theory of MAP refinement is given in a [scientific publication](https://www.ncbi.nlm.nih.gov/pubmed/22100448).
If RELION is useful in your work, please cite this paper.
If RELION is useful in your work, please cite our papers.

The more comprehensive documentation of RELION is stored [here](https://relion.readthedocs.io/en/release-4.0/).
Comprehensive documentation of RELION and tutorials are stored [here](https://relion.readthedocs.io/).

## Installation

More extensive options and configurations are available [here](https://relion.readthedocs.io/en/release-4.0/Installation.html),
but the outlines to clone and install relion for typical use are made easy through [cmake](https://en.wikipedia.org/wiki/CMake).

On Debian or Ubuntu machines, installing cmake, the compiler, and additional dependencies (mpi, fftw) is as easy as:

```
sudo apt install cmake git build-essential mpi-default-bin mpi-default-dev libfftw3-dev libtiff-dev libpng-dev ghostscript libxft-dev
```

RedHat-like systems (CentOS, RHEL, Scientific Linux etc) use `yum` package manager:

```
sudo yum install cmake git gcc gcc-c++ openmpi-devel fftw-devel libtiff-devel libpng-devel ghostscript libXft-devel libX11-devel
```

Once git and cmake are installed, relion can be easily installed through:

```
git clone https://github.com/3dem/relion.git
cd relion
git checkout master # or ver4.0; see below
mkdir build
cd build
cmake ..
make
```

By performing `git checkout ver4.0` instead of `git checkout master`, you can access the latest
(developmental) updates for RELION 4.0.x. The code there is not tested as throughfully as that in
the master branch and not generally recommended.

The binaries will be produced in the `build/bin` directory. If you want to copy binaries
into somewhere else, run `cmake` with `-DCMAKE_INSTALL_PREFIX=/where/to/install/` and
perform `make install` as the final step. Do not specify the build directory itself
as `CMAKE_INSTALL_PREFIX`! This will not work.

Also note that the MPI library used for compilation must be the one you intend to use RELION with.
Compiling RELION with one version of MPI and running the resulting binary with mpirun from another
version can cause crash. See our wiki below for details.

In any case, you have to make sure your PATH environmental variable points to the directory
containing relion binaries. Launching RELION as `/path/to/relion` is NOT a right way; this
starts the right GUI, but the GUI might invoke other versions of RELION in the PATH.

If FLTK related errors are reported, please add `-DFORCE_OWN_FLTK=ON` to
`cmake`. For FFTW related errors, try `-DFORCE_OWN_FFTW=ON`.

RELION also requires libtiff. Most Linux distributions have packages like `libtiff-dev` or `libtiff-devel`.
Note that you need a developer package. You need version 4.0.x to read BigTIFF files. If you installed
libtiff in a non-standard location, specify the location by
`-DTIFF_INCLUDE_DIR=/path/to/include -DTIFF_LIBRARY=/path/to/libtiff.so.5`.

## Updating

RELION is intermittently updated, with both minor and major features.
To update an existing installation, simply use the following commands

```
cd relion
git pull
cd build
make
make install # Only when you have specified CMAKE_INSTALL_PREFIX in the cmake step
```

If something went wrong, remove the `build` directory and try again from `cmake`.
See our [installation instructions](https://relion.readthedocs.io/en/release-5.0/Installation.html).

You will have to set up a Python environment to use Python modules (e.g. Blush, ModelAngelo and DynaMight).
Thus, please read the above instructions carefully even if you are familiar with earlier versions.

## Class Ranker

The default model for the class ranker has been trained and tested in Python 3.9.12 with Pytorch 1.10.0 and Numpy 1.20.0.
If you wish to retrain the class ranker model with your own data, please refer to [this repo](https://github.com/3dem/relion-classranker).
98 changes: 98 additions & 0 deletions README_sycl.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
# RELION SYCL/DPC++ version

This is SYCL/DPC++ version for [RELION](https://github.com/3dem/relion)

## Build & Running

+ Additional requirements for RELION SYCL/DPC++ version
+ Intel(R) oneAPI Base Toolkit and HPC Toolkit (Installing all components are recommended. - https://www.intel.com/content/www/us/en/developer/tools/oneapi/toolkits.html)
+ Intel(R) software for general purpose GPU capabilities (https://dgpu-docs.intel.com)
+ Intel(R) CPU Runtime for OpenCL(TM) Applications (optional - https://www.intel.com/content/www/us/en/developer/articles/technical/intel-cpu-runtime-for-opencl-applications-with-sycl-support.html)
+ Codeplay(R) oneAPI for NVIDIA(R) GPU (optional - https://developer.codeplay.com/products/oneapi/nvidia/)
+ Codeplay(R) oneAPI for AMD GPU (optional - https://developer.codeplay.com/products/oneapi/amd/)

+ SYCL specific command line arguments
+ `--gpu`, `--sycl` or `--sycl-levelzero`: This is for Intel(R) GPU specific Level Zero backend (Recommended for Intel GPU)
+ `--sycl-opencl`: This is for OpenCL(TM) GPU backend
+ `--sycl-cpu`: This is for OpenCL(TM) CPU backend
+ `--sycl-cuda`: This is for CUDA(R) backend over SYCL (Not tested)
+ `--sycl-hip`: This is for HIP backend over SYCL (Not tested)
+ If you need finer control of SYCL devices, you can set `ONEAPI_DEVICE_SELECTOR` environment variable. For detailed description, please look at https://intel.github.io/llvm-docs/EnvironmentVariables.html#oneapi-device-selector


```bash
$ mkdir build_sycl; cd build_sycl
$ {Load Intel oneAPI toolkit and SYCL/Level Zero/OpenCL runtime environment}
$ sycl-ls # This will display available SYCL devices
$ cmake \
-DCMAKE_C_COMPILER=mpiicx \
-DCMAKE_CXX_COMPILER=mpiicpx \
-DMPI_C_COMPILER=mpiicx \
-DMPI_CXX_COMPILER=mpiicpx \
-DMKLFFT=ON \
-DSYCL=ON \
-DCUDA=OFF \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_FLAGS="-O3" \
-DCMAKE_CXX_FLAGS="-O3 -march=native" \
..

$ #### This is Intel GPU Level Zero backend specific #####
$ export ZE_AFFINITY_MASK=0 # Use only the first available Level Zero device. This can be replaced by --gpu 0 syntax.
$ export ZEX_NUMBER_OF_CCS=0:4,1:4 # Set this only if you are putting more than one MPI ranks per GPU. 0:4 means 4 MPI ranks running on card 0
$ export SYCL_PI_LEVEL_ZERO_USE_IMMEDIATE_COMMANDLISTS=2
$ export SYCL_PI_LEVEL_ZERO_DEVICE_SCOPE_EVENTS=0
$ export SYCL_PI_LEVEL_ZERO_USM_ALLOCATOR="1;4G;host:16M,512,64K;device:16M,1024,64K;shared:0,0,64K"
$ #### End of Intel GPU Level Zero backend specific #####
$ # For finer control of SYCL devcices, please see the above descrpition on ONEAPI_DEVICE_SELECTOR
$
$ ulimit -n 512000 # this is necessary for multi-GPU jobs
$ {Run 2D/3D/refinement application by replacing --gpu/--cpu with --gpu/--sycl/--sycl-opencl/--sycl-cpu/--sycl-cuda/--sycl-hip}
```

## Optional runtime environment variables

+ The below shell environment variables can be tested for more potential SYCL specific tuning. Setting it to "1" or "on" will enable these features.
+ `relionSyclUseCuda`: --sycl-cuda will be used even if --gpu/--sycl is specified in command lines
+ `relionSyclUseHip`: --sycl-hip will be used even if --gpu/--sycl is specified in command lines
+ `relionSyclUseInOrderQueue`: Use in-order SYCL queue. Without this, out-of-order SYCL queue is used by default. (experimental)
+ `relionSyclUseAsyncSubmission`: Remove wait() for each SYCL kernel submission. (experimental)
+ `relionSyclUseStream`: Create new in-order SYCL queue for each cudaStream. (experimental)
+ `relionSyclUseSubSubDevice`: Create separate SYCL queue for each CCS. (experimental)


## Added macros

+ For CMake configuration
+ `SYCL`(=ON/OFF): Enable SYCL based acceleration build
+ `SyclForceOneDPL`(=ON/OFF): Use oneDPL(https://github.com/oneapi-src/oneDPL) if it can be used. This has the same effect as setting "-DUSE_ONEDPL" for CMAKE_CXX_FLAGS below. (experimental)
+ `SYCL_AOT_COMPILE`(=ON/OFF): Enable AOT(Ahead-Of-Time) compilation for SPIR64 target. Default target is pvc. (for future use)
+ `SYCL_AOT_TARGET`(=ON/OFF): Specify AOT(Ahead-Of-Time) SPIR64 target. Possible list can be checked using "ocloc compile --help" command. (for future use)
+ `SYCL_CUDA_COMPILE`(=ON/OFF): Enable SYCL compilation for CUDA target (Not tested)
+ `SYCL_CUDA_TARGET`: SYCL CUDA arch target (Not tested)
+ `SYCL_HIP_COMPILE`(=ON/OFF): Enable SYCL compilation for HIP target (Not tested)
+ `SYCL_HIP_TARGET`: SYCL HIP arch target (Not tested)
+ `SYCL_HOST_FLAGS`(=list of flags with space as separator): Additional flags for host compiler (for future use)
+ `SYCL_COMPILER_NAME`: SYCL compiler command name (for future use)
+ `SYCL_COMPILE_FLAGS`: Additional SYCL compile flags (for future use)
+ `SYCL_LINK_FLAGS`: SYCL link flags except "-lsycl -lOpenCL" if needed (for future use)

+ Others for testing purpose (just defining with -D* is needed in cmake -DCMAKE_CXX_FLAGS)
+ `USE_ONEDPL`: Use SYCL kernel for weight sorting routines. If this is set, oneDPL(https://github.com/oneapi-src/oneDPL) is used when it is beneficial. (experimental)
+ `USE_LESS_ONEDPL`: If this is set, oneDPL is used only when there is no other implementation.
+ `USE_MORE_ONEDPL`: If this is set, oneDPL is used everywhere when it is applicable. If this is set, you SHOULD NOT SET DisableIndirectAccess=1.
+ `SYCL_OFFLOAD_FFT`: Use SYCL kernel for the current FFTW routines. (Not implemented)
+ `INTEL_EXPLICIT_SIMD`: Use Explicit SIMD extension for SYCL kernels. (Not implemented)
+ `INTEL_SG_SIZE`: Used for Intel sub-group size in SYCL kernel. 32 is recommended for PVC and 16 is for ATS. (Not tested well)
+ `USE_IPP`: Use Intel IPP library's RadixSort for sortOnDevice instead of std::sort. Enabled by default if IPP library exists.
+ `USE_MPI_COLLECTIVE`: Use MPI collective whenever possible. Enabled by default for ALTCPU and SYCL.
+ `USE_EXISTING_SYCL_DEVICE`: This will copy and use created SYCL device pointer instead of creating new SYCL device for each thread. Not recommended.
+ `USE_SINCOS_TABLE`: Pre-calculate sine/cosine table before main loop in some kernels (Not implemented)

+ Macros defined in source code (No need to specify in CMake configuration and it is defined by -DSYCL=ON above)
+ `_SYCL_ENABLED`: source codes with SYCL which may be compiled with any SYCL compiler
+ `_DPCPP_ENABLED`: source codes with DPC++ which should be compiled with Intel oneAPI compiler only

+ Prefined macros by Intel(R) oneAPI compiler
+ `__INTEL_LLVM_COMPILER`: For icx and icpx

91 changes: 0 additions & 91 deletions cmake/BuildTorch.cmake

This file was deleted.

Loading