Hi,
I have installed the latest version of ROMS in Linux. I could compile and execute the ocean upwelling test case in serial(oceanS executable). When I used USE_openMP option 'on'(in build.sh script) on a shared memory system, it compiled and created the oceanO executable which I am unable to run. It just writes
Process Information:
and does nothing. I am using gfortran compiler and using oceanO<ocean_upwelling.in command to run.
It does not even write the header information
(as in the case of serial run
Thread # 0 (pid= 27200) is active.
Model Input Parameters: ROMS/TOMS version 3.4
Wednesday - September 22, 2010 - 2:32:52 PM)
I have tried changing domain decomposition parameters NtileI, NtileJ but no change in the result. I suppose execution stops before reading ocean_upwelling.in file itself.
Any suggestion in this regard.
Thanks
Roms executable problem
- arango
- Site Admin
- Posts: 1361
- Joined: Wed Feb 26, 2003 4:41 pm
- Location: DMCS, Rutgers University
- Contact:
Re: Roms executable problem
Well, you need to know first what shared-memory parallel computing is. Then, you need to check if you can actually run shared-memory in your computer and how many CPUs do you have for such a task. Obviously, you can spawn as many shared-memory threads as you want in theory. But in practice that's not recommended because it will affect the efficiency of the computations. Ideally, you should use the same number of shared-memory threads as available shared-memory CPUs. In a computer cluster, you can only run shared-memory on a single node because we need to explicitly transport the data from one node to another. This is what distributed-memory does using MPI communications. This is not possible with the shared-memory paradigm (OpenMP) alone. If your computer cluster has multi-core processors, then your should run 2 (dual-core), 4 (quad-core), or 6 (hexa-core) shared-memory threads and no more than that. As the word shared implies, the program it is accessing simultaneously the same data in memory (global arrays) but operate in different parts of the data to avoid race conditions (more than one thread writing the same memory location at the same time; a nasty shared-memory parallel bug with unpredictable results).
Obviously, you need to learn more about parallel computing before you start running ROMS in parallel. You need to know what are you doing and why. I made the clarification above because you are not the only one and many users have done this in the past and run shared-memory in cluster with a lot of CPUs. The cluster technology is for distributed-memory (MPI) parallel applications.
The internet is a great source of information and you can use your favorite search engine to find any kind of information nowadays...
There is a lot of information in WikiROMS. Notice that in shared-memory you need to set the environmental variable OMP_NUM_THREADS to the number of parallel threads (NtileI x NtileJ) before you run ROMS every time
Obviously, you need to learn more about parallel computing before you start running ROMS in parallel. You need to know what are you doing and why. I made the clarification above because you are not the only one and many users have done this in the past and run shared-memory in cluster with a lot of CPUs. The cluster technology is for distributed-memory (MPI) parallel applications.
The internet is a great source of information and you can use your favorite search engine to find any kind of information nowadays...
There is a lot of information in WikiROMS. Notice that in shared-memory you need to set the environmental variable OMP_NUM_THREADS to the number of parallel threads (NtileI x NtileJ) before you run ROMS every time