Ulrich Genick wrote:
Hi,

has anybody compiled a SHELXL version with array sizes
suitable for full matrix refinement of small proteins.

I compiled a version with LM=3200000 JW=400000000 IM=200000 LU=4096

for a new quad core Xenon mac and the speeds I got were less impressive.

At the same time the precompiled versions from the SHELXL website ran circles
around my older Athlon boxes.

My suspicion is that I did not use the best compiler or that I am not using
the right optimizations, in particular, I have no idea what is the best
value for LU. The instruction in the SHELXL header file indicate
that one might have to play with this parameter...

So if anybody has played around with this and made executable
with a good compiler, I would love to get a copy.


Thanks,

Ulrich

Ulrich,

just some thoughts.

I guess you run Mac OSX on this box? I believe the Intel compiler "ifort" is available for it, and there's most probably a trial version limited to 30 days or so. With ifort on Linux, one should probably use the -xT option for the Xeon of the Mac Pro.

Is Mac OSX 64bit, and does it have 64bit compilers? I do have Mac Pros but run 64bit Linux on them ... very fast indeed - but unfortunately Linux binaries probably won't help you much.

JW=400000000 means 400 million integers, that's 1.6GB. A single array that size might work with a 32 bit compiler but you're getting close to the point where 32bit is not quite enough. Furthermore, with such big a problem your're also approaching the point where it might be better to do all calculations in double precision accuracy - which means a doubling of memory requirements.

With "precompiled versions" do you mean the OpenMP versions? You need those to fully utilize all the cores of your quad core Xeon Mac. If you use the OpenMP version then the size of the "B" array in shelxh is JW*<number_of_threads> - which again points to the requirement for 64bit compilation. The latest versions of gfortran do support OpenMP but I find them not to be reliable.

If you download the source code of the OpenMP version, then there's also a little README which explains how it has to be compiled. Although that's a bit outdated, it should still point you in the right direction.

Concerning LU, I use the following formula: <L1-cache-size>/(13*4); rounded down towards the nearest multiple of 8. This would give 624 for a 32K L1 cache. Multiples also work well. 4096 appears to be a bit high.

HTH,

Kay
--
Kay Diederichs                http://strucbio.biologie.uni-konstanz.de
email: [EMAIL PROTECTED]    Tel +49 7531 88 4049 Fax 3183
Fachbereich Biologie, Universit├Ąt Konstanz, Box M647, D-78457 Konstanz

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Reply via email to