Topic: non-registered copy, and multi-CPU

Hi, I'm trying to compile a code with a demo copy on a machine I am not allowed to connect to the internet. This machine is a fancy DELL Precision T7610, Xeon processor(s). I had installed a demo SF previously, but that one expired after a month. So, I downloaded again, uninstalled old one, re-installed new download, and it still tells me it has expired. Note that I AM a REGISTERED user of SF on my personal machine.

Why am I doing this? The DELL machine is that of a client, and they do not want it connected to the internet. I have been running a .exe program on the DELL, but it is dead slow. I think it must have something to do with my compiler settings. Let me call the program a.exe. When I run a.exe on my personal machine, the CPU (intel i7) goes very fast and cranks the CPU up to like 90% sometimes (and this is what I want as it is a large numerical integration). On the DELL, it has 32 CPUs, intel Xeon, and the process uses a couple CPUs, and in total, is running at 3 to 5%. This is killing me!

Normally I compile with pretty benign settings and things are AOK. Also, I am not a Fortran/GNU compiler guru (one reason I went to SF). So.....aside from getting SF to run on the DELL (non-internet), if there are some basic pointers that I can try (with clear instructions, as though you are speaking to a 5 yr old!) this would be extremely appreciated.

Cheers,
Craig

Re: non-registered copy, and multi-CPU

Craig,

There are a few things to note:

1.  Simply Fortran's trial period is for 30 days regardless of version.  If we had a free 30-day trial with every new version, which are released on a monthly to bi-monthly basis, nobody would ever register since they could continue using the free versions as they are released.  If you'd like, I can send a trial extension for your client's machine.  An Internet connection is not necessary to use Simply Fortran.

2.  Simply Fortran's compiler doesn't automatically parallelize code.  Your Xeon has 32 CPU's listed (probably 16 of which are actual cores, the remaining 16 are most likely "Hyperthreading" virtual cores due to Intel's design choices).  If you write some standard Fortran, it will most likely be a serial program, meaning it can't take advantage of running in parallel.  If you do the math, the program would be running on only a single core, and Windows will correctly report that it is using 1/32, or 3.125%, of all CPU power available.  It will jump higher to nearly 6.25% on Intel chips with Hyperthreading on occasion because, again, half your cores are virtual and necessary to improve performance on Intel's chips.

3.  In contrast, your i7 might only have a handful of cores, and the apparent CPU usage is probably going to be drastically higher.

If you want to use the full power of a Xeon, you can start looking for ways to parallelize your code.  Again, you need to implement parallel code explicitly; compiled Fortran normally can't and won't take full advantage of multiple cores.  I would suggest that you consider reading up on how to use OpenMP, which is a relatively simple solution that should allow you to quickly parallelize, for example, "do" loops. We ship a small OpenMP reference and an simplistic example program with Simply Fortran.  You might prefer, though, to search online for an OpenMP tutorial.

Jeff Armstrong
Approximatrix, LLC

Re: non-registered copy, and multi-CPU

Hi Jeff,
Of course, #1 makes sense. You just never know until you try, though. smile
It sounds like I am stuck until changes to the code are made. Speaking with the original code developer, he believes the OpenMP route is probably the way to go as well. As I can't gain any advantage recompiling the code on the client machine, at this time there is likely no reason to obtain an trial extension. Thanks for your reply and advice. I've sent it on to the developer as well.
Craig