ParallelNOW Binary Virtuoso(tm) Packaging Assistant
1. Download the PackagingAssistant
Our first supported platform is Linux/x86, so you should follow this tutorial through on a computer of this type. To download the PackagingAssiastant, either left-click here and save the file, or open a terminal and type:
% wget http://processing.binaryvirtuoso.com:8080/ParallelNowProcessing/resources/PackagingAssistant
2. Run the PackagingAssistant
The PackagingAssistant should be located in the same directory as the one from which you usually run your application binary. NOTE CORRECTION (STARTING WITH "sed ...") TO SCRIPT BELOW. YOU NEED ONLY RUN THIS CORRECTIVE COMMAND ONCE.
Run the PackagingAssistant:
% sed 's#"time#"/usr/bin/time#' < PackagingAssistant > /tmp/x; mv /tmp/x PackagingAssistant
% perl PackagingAssistant
################################################################################
#### ParallelNOW Binary Virtuoso(tm) Packaging Assistant, Version 1.0b1 ####
################################################################################
This tool assists you to isolate your binary code from its environment and makes
it runnable anywhere. Among other things, it will execute your code to preeempt
any issues which may otherwise arise during our optimization process.
We will calibrate your application run to verify and collect the following:
1) Verify that it is a dynamically linked, x86 debug-build executable
2) Verify that it uses no threading, process, network or ipc activity
3) Verify that application runtime is within reasonable limits
4) Verify that data files are accessed with relative path names
5) References to shared libraries other than libc and libm
6) References to environment variables
7) References to input and output data files
We will use the process tracing tool ltrace for tracing system- & library-calls.
[Compatibility: This tool is known to work with Perl v5.10.0 and ltrace 0.5.1.]
Our calibration process will induce a slowdown of around one order of magnitude,
so please be patient.
Please enter a program name and arguments to calibrate:
Note that the PackagingAssistant requires perl and ltrace to be installed. It has been tested with perl v5.10.0 and ltrace 0.5.1 but other versions may work as well.
3. Enter the application name and arguments
Here you enter the application name and arguments, just as you would in a normal run. For best results, choose an application run which is neither too long nor too short. Around 1 minute is best.
4. The application is calibrated and system dependences are collected
The PackagingAssistant checks for certain error conditions, such as unexpected system calls, and also notes each use of an environment variable or a data file or shared library.
The run will take considerably longer than usual, but at the end, a tarred and gzipped package will be created containing both the application binary and all associated dependences. The filename used is a combination of the date, user name and machine name.
5. Upload the packaged binary code
That's it! Now simply upload the package into the work queue at ParallelNOW Binary Virtuoso(tm) and leave the heavy lifting to us!
6. Error conditions
If things haven't gone smoothly, here we'll try to explain why.
Assuming reasonably up-to-date versions of perl and ltrace have been found, there are then three possible error conditions which may cause the PackagingAssistant to fail:
- Program is of the wrong type, because:
-
- The program is not compiled for the x86 - this is currently the only suppoorted architecture.
- The program is not dynamically linked - we requre this to limit the scope of our analysis.
- The program has no debug symbols - we require the presence of debug symbols to aid our analysis.
- Unexpected system calls were found
-
- This could mean that your program performs network operations or threading. Right now we're focusing on parallelizing compute-intensive applications.
- Data files use absolute pathnames
-
- This could make it difficult for us (or anyone else) to run your application on a different machine. By updating your application to use relative file paths, you'll make this world a friendlier place for everyone.
7. More information
And you can always contact the friendly folks at ParallelNOW if you need more help...
ParallelNOW Binary Virtuoso(tm) Packaging Assistant
1. Download the PackagingAssistant
Our first supported platform is Linux/x86, so you should follow this tutorial through on a computer of this type. To download the PackagingAssiastant, either left-click here and save the file, or open a terminal and type:
% wget http://processing.binaryvirtuoso.com:8080/ParallelNowProcessing/resources/PackagingAssistant
2. Run the PackagingAssistant
The PackagingAssistant should be located in the same directory as the one from which you usually run your application binary. NOTE CORRECTION (STARTING WITH "sed ...") TO SCRIPT BELOW. YOU NEED ONLY RUN THIS CORRECTIVE COMMAND ONCE.
Run the PackagingAssistant:
% sed 's#"time#"/usr/bin/time#' < PackagingAssistant > /tmp/x; mv /tmp/x PackagingAssistant
% perl PackagingAssistant
################################################################################
#### ParallelNOW Binary Virtuoso(tm) Packaging Assistant, Version 1.0b1 ####
################################################################################
This tool assists you to isolate your binary code from its environment and makes
it runnable anywhere. Among other things, it will execute your code to preeempt
any issues which may otherwise arise during our optimization process.
We will calibrate your application run to verify and collect the following:
1) Verify that it is a dynamically linked, x86 debug-build executable
2) Verify that it uses no threading, process, network or ipc activity
3) Verify that application runtime is within reasonable limits
4) Verify that data files are accessed with relative path names
5) References to shared libraries other than libc and libm
6) References to environment variables
7) References to input and output data files
We will use the process tracing tool ltrace for tracing system- & library-calls.
[Compatibility: This tool is known to work with Perl v5.10.0 and ltrace 0.5.1.]
Our calibration process will induce a slowdown of around one order of magnitude,
so please be patient.
Please enter a program name and arguments to calibrate:
Note that the PackagingAssistant requires perl and ltrace to be installed. It has been tested with perl v5.10.0 and ltrace 0.5.1 but other versions may work as well.
3. Enter the application name and arguments
Here you enter the application name and arguments, just as you would in a normal run. For best results, choose an application run which is neither too long nor too short. Around 1 minute is best.
4. The application is calibrated and system dependences are collected
The PackagingAssistant checks for certain error conditions, such as unexpected system calls, and also notes each use of an environment variable or a data file or shared library.
The run will take considerably longer than usual, but at the end, a tarred and gzipped package will be created containing both the application binary and all associated dependences. The filename used is a combination of the date, user name and machine name.
5. Upload the packaged binary code
That's it! Now simply upload the package into the work queue at ParallelNOW Binary Virtuoso(tm) and leave the heavy lifting to us!
6. Error conditions
If things haven't gone smoothly, here we'll try to explain why.
Assuming reasonably up-to-date versions of perl and ltrace have been found, there are then three possible error conditions which may cause the PackagingAssistant to fail:
- Program is of the wrong type, because:
-
- The program is not compiled for the x86 - this is currently the only suppoorted architecture.
- The program is not dynamically linked - we requre this to limit the scope of our analysis.
- The program has no debug symbols - we require the presence of debug symbols to aid our analysis.
- Unexpected system calls were found
-
- This could mean that your program performs network operations or threading. Right now we're focusing on parallelizing compute-intensive applications.
- Data files use absolute pathnames
-
- This could make it difficult for us (or anyone else) to run your application on a different machine. By updating your application to use relative file paths, you'll make this world a friendlier place for everyone.
7. More information
And you can always contact the friendly folks at ParallelNOW if you need more help...