I got that you wanted to use distributed computing on your cluster. I usually use something like 20 nodes at 8 cores a pop.
The solution that Shaun had used should work the way you want (I have actually seen it in a number of other topics, now that I am looking at it), but I have not used it this way (I should probably figure out how).
I think your problem is that you are invoking the abyss-pe makefile with mpirun. You don't want to do this. You should be able to give abyss-pe the np parameter (not mpi like you have here). You will also want to give abyss-pe the hostfile. This will work assuming you compiled abyss with MPI enabled.
Try something like this:
abyss-pe np=50 mpirun='mpirun -hostfile hostfile' k=31 lib='lib1 lib2' lib1='LIBSG311_R1_ada_ambi_quality_none.fastq LIBSG311_R2_ada_ambi_quality_none.fastq' lib2='LIBSG312_R1_ada_ambi_quality_none.fastq LIBSG312_R2_ada_ambi_quality_none.fastq' name=IC1_IC2
Here is how I do things (this has been made much easier with the abyss-pe makefile solution, but for the sake of it I'll post this, also it allows you to customize the pipeline a bit more, use --recon to see what abyss-pe does), I posted it initially, but I deleted it because I found that other topic link.
I usually do not use the abyss-pe makefile (I probably should be), but instead invoke ABYSS-P directly with MPI.
My launcher does:
qsub -N ${name1} ${scripath}/run-abyss-se.bash ${kmer} ${datadir}
run-abyss-se.bash, use -pe orte here, put it in the Shebang in your
shell:
#! /bin/bash
#$ -S /bin/bash
#$ -m e
#$ -pe orte 160
#$ -cwd
<lots of exporting and environment checking stuff>
mpirun \
--prefix ${openmpihome} \
-v \
-np $NSLOTS \
--hostfile hosts.dat \
${abysshome}/bin/ABYSS-P \
--out=abyssrun-1.fa \
--kmer=${kmer} \
--graph=se-graph.dot \
--snp=popped-bubbles.fa \
--coverage-hist=k-mer_coverage.hist \
--coverage=5 \
--verbose \
${datadir}/*/*/*.fastq \
I would try to get the abyss-pe makefile working before trying to directly invoke ABYSS-P with MPI unless you really want to.
There is one advantage to using the strategy above as opposed to the makefile strategy and that is the ability to use only the parts of the pipeline that you want. For instance, if you just want the unitigs, you can run ABYSS-P then run AdjList, abyss-filtergraph, PopBubbles, and MergeContigs yourself.
If you are ever curious about what programs ABySS is actually running when you invoke the abyss-pe makefile, just add a --recon to the end of your command. This will tell make to output the command that it would run, but not actually execute anything.
Happy Assembling,
Connor Cameron