I have been browsing through the documentation of the IBM Platform Load Sharing Facility, to find out if it supports parallel task computing.Below is what I think is relevant for this question, Please correct me if my perception is wrong.Focus seems to be on the parallel job execution, where a computation has to be split up and run as different processes.The code we have, however, is optimized for parallel task execution. Here is some pseudo C# code:for(timeStep=0; timeStep < MaxTimeSteps; timeStep++){    Parallel.ForEach(Cube.Cells, currentCell =>    {        Compute(currentCell, Cube);    }}This code will calculate a time series and perform some computation on each cell in every time step. The computation needs the state of other cells in the same time step, to do the computation. Note the Parallel.ForEach instruction.This problem cannot easily be split into separately running processes which calculate a time step each. The state of each cell of the previous time step is needed in current time step. Splitting the problem further, into a job for each cell in each time step, would require synchronization and extensive exchange of data, be it inter process or through files or database systems.On the other hand, the Parallel.ForEach instruction could benefit extremely from the availability of many CPU's.So, could this problem, running as a single process, benefit from a grid running LSF? Would it be transparent for the process, so that it perceives one huge system, with many CPU's and one big memory address space?
Does IBM LSF facilitate parallel computing?
parallel computing
LSF definitely does not provide transparent combination of nodes into a single shared memory environment for the single process running your multi-threaded program. There are tools that can do this (like ScaleMP's product), but that's not what LSF does. LSF is responsible for queuing up many jobs which wish to run on 1 to many nodes of a cluster and then executing those jobs in some order. It is the responsibility of the jobs themselves to deal with how the nodes in that job are utilized. This is usually done with MPI which provides a portable interface for sending messages between programs or processes which are running independently on, perhaps, different computers using a variety of interconnect networks (including shared memory). Most HPC clusters use some sort of specialized network like Infiniband for low-latency ($\sim\!1\,{\rm \mu s}$) and high-bandwidth connectivity (56Gb/s).MPI programs are increasingly, themselves, multi-threaded inside each process using such mechanisms as OpenMP or Pthreads. Sometimes this leads to better on-node performance and better exploitation of the shared memory architecture within the node. LSF is one of many such resource manager and scheduling systems that provide queuing functionality for Linux clusters. Others include: SLURM, Moab/Torque, and PBSPro. 