Yes, to a certain extent,
any application intended for use in a high-performance computing cluster must be designed with the architecture of clustering firmly in mind. (And, as usual, the documentation doesn't say too much about that, because the people who use such things the most are
steeped in that mode of thinking, and with that kind of problems.)
The task, itself, must be such that it can meaningfully be distributed among a large number of high-performance computers connected by a relatively slower network infrastructure, such that adding more computing hardware to the problem
does enable the overall problem to be solved more quickly; to "scale up" without fundamentally changing the software itself.
One quintessential example of this is weather forecasting. Many forecast models subdivide the sky into regions, performing identical calculations in each region, and rolling-up the data from smaller regions into larger ones, such that the essential nature of the work
is both that each compute-node is able to operate independently
and the overall process "scales up" naturally. Of course, this is because the forecast-modeling algorithm was
designed for clustering.
Other examples include
##CLASSIFIED##,
##CLASSIFIED##, and of course
(let us surely not forget ...), ##CLASSIFIED##.
The controller for a compute-node is, of course, designed to make maximum possible computational use of the computing resources ("cores") available on that particular node,
and to insulate the compute-node applications from dependencies as to just exactly what this-or-that node physically looks like. The workload dispatcher must dispatch a unit of work to a cluster-node that it knows is capable of supporting it; otherwise, the node "blooms where it is planted."
The node itself must also be sure that the necessary
data is available where it needs to be, and that results are correctly retrieved and correctly handled,
and that no compute-node is ever starved (or drowned) by data. This, too, is an application design issue that must be considered from the ground up.
If the application is
not designed for clustering, then yes, you might be able to run it on a cluster, but the cluster would not really be a cluster to you. It would be nothing more than a batch-job runner.