diff --git a/eddy/runEddy b/eddy/runEddy
index 6ec20d526eb1f728af1cf2c88170747302f5d564..a99042d7b58a91420df8c3d961243e9ed1e82612 100755
--- a/eddy/runEddy
+++ b/eddy/runEddy
@@ -10,12 +10,16 @@
 # output as the final line of output. Thne script returns
 # an exit code of non-0 if something goes wrong.
 #
+# The eddy_cpu executable is executed twice - once with
+# --nthr=1, and again with --nthr=8.
+#
 # Outputs of each eddy_<variant> executable is saved with
 # prefix ${outdir}/eddyOutput_<variant>. For example, the
 # output of eddy_cuda9.2 will be saved with prefix
 # ${outdir}/eddyOutput_cuda9.2, and the output of
-# eddy_openmp will be saved with prefix
-# ${outdir}/eddyOutput_openmp.
+# eddy_cpu --nthr=1 will be saved with prefix
+# ${outdir}/eddyOutput_cpu_nthr_1.
+#
 
 set -e
 
@@ -37,13 +41,15 @@ do
   fi
 done
 
-# Find all eddy_cpu/eddy_openmp executables
+# Find all eddy_cpu executables. We run
+# eddy_cpu twice - here, we add
+# "eddy_cpu_nthr_X" to the list of
+# executables to run. The name is unpacked
+# in the loop below.
 cpu_exes=""
-if [ -x "${exedir}/eddy_openmp" ]; then
-  cpu_exes="${exedir}/eddy_openmp"
-fi
 if [ -x "${exedir}/eddy_cpu" ]; then
-  cpu_exes="${cpu_exes} ${exedir}/eddy_cpu"
+  cpu_exes="${cpu_exes} ${exedir}/eddy_cpu_nthr_1"
+  cpu_exes="${cpu_exes} ${exedir}/eddy_cpu_nthr_8"
 fi
 
 if [ "${cuda_exes}" == "" ] && [ "${cpu_exes}" == "" ]; then
@@ -57,28 +63,35 @@ fi
 cuda_jids=""
 cpu_jids=""
 submitted=""
-for exe in ${cuda_exes} ${cpu_exes};
+for exe_name in ${cuda_exes} ${cpu_exes};
 do
-  variant=`basename ${exe}`
+  variant=`basename ${exe_name}`
   variant=`echo ${variant} | sed 's/eddy_//'`
 
-  if [[ "${exe}" == *"cuda"* ]]; then
+  if [[ "${exe_name}" == *"cuda"* ]]; then
     fsl_sub="fsl_sub -l ${outdir} --coprocessor=cuda"
+    exe="${exe_name}"
+    extra_args=""
+
   else
     fsl_sub="fsl_sub -l ${outdir} -q long.q -s openmp,6"
+    # unpack eddy_cpu_nthr_N
+    # into eddy_cpu --nthr=N
+    exe="${exe_name%_nthr*}"
+    extra_ars="--nthr=${exe_name#eddy_cpu_nthr_}"
   fi
 
   # fsl_sub will return an error (and not
   # output a job id) if we try to run a
   # cuda exe on a non-cuda-capable machine
   # or queue. So we allow it to fail.
-  jid=$(${fsl_sub} ${exe} --out=${outdir}/eddyOutput_${variant} ${eddy_args} || true)
+  jid=$(${fsl_sub} ${exe} --out=${outdir}/eddyOutput_${variant} ${extra_args} ${eddy_args} || true)
   if [ "${jid}" == "" ]; then
-    echo "Error submitting ${exe} - skipping"
+    echo "Error submitting ${exe_name} - skipping"
     continue
   fi
 
-  submitted="${submitted} ${exe}"
+  submitted="${submitted} ${exe_name}"
 
   if [[ "${exe}" == *"cuda"* ]]; then
     cuda_jids="${cuda_jids} ${jid}"