OpenMP incompatible with Phenix GUI?
Dear developers, I would really like to use OpenMP parallelization and also use the Phenix GUI. When I attempted a source build with OpenMP support, I was informed that the two were incompatible. My understanding is that this used to work fine with the old wizards. Would it be possible to fix this? -- Thanks, Donnie Donald S. Berkholz, Postdoctoral research fellow James R. Thompson lab, Physiology & Biomedical Engineering Grazia Isaya lab, Pediatric & Adolescent Medicine Medical Sciences 2-66 Mayo Clinic College of Medicine 200 First Street SW Rochester, MN 55905 612-991-1321
On Wed, Apr 7, 2010 at 10:03 AM, Donnie Berkholz
I would really like to use OpenMP parallelization and also use the Phenix GUI. When I attempted a source build with OpenMP support, I was informed that the two were incompatible. My understanding is that this used to work fine with the old wizards. Would it be possible to fix this?
The OpenMP incompatibility has to do with the way the GUI used to run every process - some weird conflict with Python threading, we think. Now that it is possible to run fully "detached" jobs from the GUI, I think it should be possible to turn OpenMP on for just these jobs. I will look into this. However, I think you're confusing the different kinds of parallelization we use. OpenMP works at the level of C++ 'for' loops, and is used in the FFT for phenix.refine, and some parts of Phaser, so you'll get a little speed boost on those apps - but in our experience this is rarely better than 2x, if that, regardless of # of CPUs. AutoBuild (and related programs) actually spawns several parallel jobs, which do most of the work independently, and this scales very well (and potentially over multiple machines). This is also supported in the GUI (and it tries to detect how many cores you have and set the 'nproc' parameter appropriately). -Nat
On 10:21 Wed 07 Apr , Nathaniel Echols wrote:
The OpenMP incompatibility has to do with the way the GUI used to run every process - some weird conflict with Python threading, we think. Now that it is possible to run fully "detached" jobs from the GUI, I think it should be possible to turn OpenMP on for just these jobs. I will look into this.
However, I think you're confusing the different kinds of parallelization we use. OpenMP works at the level of C++ 'for' loops, and is used in the FFT for phenix.refine, and some parts of Phaser, so you'll get a little speed boost on those apps - but in our experience this is rarely better than 2x, if that, regardless of # of CPUs.
Dear Nat, Thanks for looking into it! I am aware of the different types of parallization and would like to use the OpenMP support. A 2x difference may seem negligible to you, but I've got refinement jobs that can take 8 hours on my dual-core laptop so any improvement is welcome. (It seems that 12x NCS + 16 TLS groups per chain makes phenix.refine a sad boy, at least on my protein, whereas Refmac completes in minutes.) -- Thanks, Donnie Donald S. Berkholz, Postdoctoral research fellow James R. Thompson lab, Physiology & Biomedical Engineering Grazia Isaya lab, Pediatric & Adolescent Medicine Medical Sciences 2-66 Mayo Clinic College of Medicine 200 First Street SW Rochester, MN 55905 612-991-1321
participants (2)
-
Donnie Berkholz
-
Nathaniel Echols