diff --git a/modelling/pymod/_pipeline.py b/modelling/pymod/_pipeline.py
index f7c3e2ec89a16ae3784e5b51297089db42d1cd87..9871d1a58fcb24bdd251465ab7523b36ba71690c 100644
--- a/modelling/pymod/_pipeline.py
+++ b/modelling/pymod/_pipeline.py
@@ -121,23 +121,22 @@ def _SetupMmSimulation(model, force_fields):
     if lig_ent.residue_count > 0:
         _AddLigands(ent, top, lig_ent, settings, force_fields)
 
-    # finally set up the simulation
-    try:
-        # use fast CPU platform by default
-        # NOTE: settings.platform only relevant for mm.Simulation!
-        settings.platform = mm.Platform.CPU
+    # use fast CPU platform by default
+    # NOTE: settings.platform only relevant for mm.Simulation!
+    settings.platform = mm.Platform.CPU
+    if mm.Simulation.IsPlatformAvailable(settings):
         num_cpu_threads = os.getenv('PM3_OPENMM_CPU_THREADS')
         if num_cpu_threads is None:
             settings.cpu_properties["CpuThreads"] = "1"
         else:
             settings.cpu_properties["CpuThreads"] = num_cpu_threads
-        sim = mm.Simulation(top, ent, settings)
-    except RuntimeError as ex:
-        ost.LogWarning("OpenMM failed to initialize with error: %s" % str(ex))
+    else:
         # switch to "mm.Platform.Reference" as fallback
         settings.platform = mm.Platform.Reference
-        sim = mm.Simulation(top, ent, settings)
         ost.LogWarning("Switched to slower reference platform of OpenMM!")
+    # finally set up the simulation
+    sim = mm.Simulation(top, ent, settings)
+        
     return sim
 
 def _GetSimEntity(sim):