Immediately after running runRDV or mpiboot i get something like:
C:\Documents and Settings\cjj>Exception in thread "main" java.lang.UnsupportedClassVersionError: p2pmpi/rdv/RDV (Unsupported major.minor version 49.0)
at java.lang.ClassLoader.defineClass0(Native Method)
Version 49 means that P2P-MPI is compiled with a 1.5 JDK while The JVM you are using is unable to interpret this code.
We recommend that you upgrade to a JDK 1.5 (also called JDK 5.0).
Note that it is possible to generate code compatible with older JVM by using the -target option in java
However, we use the JDK 1.5 format for sake of performances.
I have several network cards and P2P-MPI does not use the one i wish.
P2P-MPI lists the available network interfaces on your computers that have a suitable IP and select arbitrarily
one of them.
You can set IFACE= in the configuration file to say which one you prefer.
You will typically use IFACE=eth0 or IFACE=eth1 (linux),
IFACE=en0 or IFACE=en1 (MacOSX), but on Windows, you will need the whole
interface description as returned by the command ipconfig, e.g IFACE=Broadcom Ethernet Card.
My program starts on my local host, the other peers have accepted their job but it seems they cannot run it.
This situation may currently happen because P2P-MPI does not check the "java" settings of peers.
So when a peer accepts a job, it may have a , e.g., java 1.5 installed while the class files you send
are produced by a JDK 1.6 (version 50 class files), and the remote peer might be unable to run it.
Remember that a remote peer just issue "java classname" upon receipt of transfered files.
Actually, mismatch between 1.5 and 1.6 is currently the only potential problematic case,
since a JDK >= 1.5 is required to run P2P-MPI.
We plan in a near future, to advertize the java settings of peers to avoid such mismatches.
After running mpiboot my Linux box always seems to bind to the address 127.0.0.1.
Is there a way to force mpiboot to use a particular IP address ?
This happens with some Linux distributions that set the /etc/hosts file so that you can read something like:
127.0.0.1 localhost mymachinename
In that case, the getLocalHost() will return 127.0.0.1.
To avoid this,
you should set your /etc/hosts file so that it reads the sole loopback address:
which is perfectly correct.
The computer name should be retrieved either from a DNS or from another line in the /etc/hosts
My computer has a private IP (and i have a router doing NAT). Can i participate in a P2P-MPI group with computers having normal IPs ?
Yes. You have to set EXTERNAL_IP in P2P-MPI.conf to the public IP of your router doing NAT and take care to configure your router to do appropriate port forwarding (i.e. when packets are sent to your router on ports used by P2P-MPI, it should redirect it to the private IP).
Can i limit the number of jobs that my computer can run simultaneously ?
Yes, from version 0.17.0, you can specify in your configuration file NUMTASK_SIMULTANEOUS=x,
where x is the maximum number of jobs run simultaneously on your computer (if x > 0).
x=0 means you do not limit the number of jobs, and is the default.
Can i deny access to my machine to some visitors ?
Yes, from version 0.17.0, you can specify in your configuration file HOST_DENY=x1,x2,...
where x1, x2 are network IP or first digits of IPs of hosts you want to deny access.
Valid examples are
Can I tell P2P-MPI to use a specific configuration file (other than $P2PMPI_HOME/P2P-MPI.conf) ?
Yes, from version 0.27.0, you can set the environment variable P2PMPI_CONF_FILE.
By setting this variable to a filename (absolute pathname) you override the default $P2PMPI_HOME/P2P-MPI.conf.
This can be handy if you share your p2pmpi installation over NFS, and you want specific settings for the various
hosts. You can setup for example two different configuration files cluster-node-type1.conf and cluster-node-type2.conf
and assign P2PMPI_CONF_FILE (e.g. in .bashrc) with the correct config name based on the cluster name (e.g. hostname).