12
OCEAN Distributed Processing Commands
The Open Command Environment for Analysis (OCEAN) distributed processing commands let you run OCEAN jobs across a collection of computer systems.
This chapter contains information on the following commands:
- deleteJob
- digitalHostMode
- digitalHostName
- hostMode
- hostName
- killJob
- monitor
- remoteDir
- resumeJob
- suspendJob
- wait
This chapter also provides sample OCEAN scripts that optimally use these commands. See the section Sample Scripts.
For detailed information on distributed processing, refer to
deleteJob
deleteJob(t_jobName[t_jobName2 t_jobName3…t_jobNameN] ) => t / nil
Description
Removes a job or series of jobs from the text-based job monitor.
Deleted jobs are no longer listed in the job monitor. The deleteJob command applies only to ended jobs.
Arguments
Value Returned
Examples
deleteJob( 'myckt)
=> t
digitalHostMode
digitalHostMode(
{ 'local | 'remote }
)
=> t / nil
Description
,Specifies whether the digital simulator will run locally or on a remote host for mixed-signal simulation.
Arguments
|
Sets the simulation to run on a remote host. If you use this argument, you must specify the host name by using the |
Value Returned
Examples
Sets the digital simulator to run locally on the user’s host.
digitalHostMode( 'local )
=> t
digitalHostName
digitalHostName(
t_name
)
=> t / nil
Description
Specifies the name of the remote host for the digital simulator, for mixed-signal simulations.
When you use the digitalHostMode('remote) command, use this command to specify the name of the remote host.
Arguments
Value Returned
Examples
Indicates that the digital simulator runs on the host called digitalhost.
digitalHostName( "digitalhost" )
=> t
hostMode
hostMode(
{ 'local | 'remote | 'distributed }
)
=> t / nil
Description
Sets the simulation host mode.
The default value for hostMode is specified in the asimenv.startup file with the hostMode environment variable.
Arguments
|
Sets the simulation to run on a remote host queue. For this release, the remote host is specified in the |
|
|
Sets the simulation to run using the distributed processing software. |
Value Returned
Examples
Enables distributed processing on the current host.
hostMode( 'distributed )
=> t
hostName
hostName(
t_name
)
=> t / nil
Description
Specifies the name of the remote host.
When you use the hostMode('remote) command, use this command to specify the name of the remote host.
Arguments
Value Returned
Examples
Specifies that the host called remotehost is to be used for remote simulation.
hostName( "remotehost" )
=> t
killJob
killJob(t_jobName[t_jobName2t_jobName3…t_jobNameN] ) => t / nil
Description
Stops processing of a job or a series of jobs.
The job might still show up in the job monitor, but it cannot be restarted. Use the deleteJob command to remove the job name from the job server and job monitor.
Arguments
Value Returned
|
The processing of teh specified job or the series of job is stopped. |
|
Examples
Stops the job called myckt. If the job is in the queue and has not started running yet, it is deleted from the queue.
killJob( 'myckt )
=> t
monitor
monitor( [?taskModes_taskMode] ) => t / nil
Description
Monitors the jobs submitted to the distributed system.
Arguments
|
When not |
Value Returned
Examples
Displays the name, host, and queue for all pending tasks sorted on a queue name.
monitor( ?taskMode t )
=> t
remoteDir
remoteDir(
t_path
)
=> t / nil
Description
Specifies the project directory on the remote host to be used for remote simulation.
When you use the hostMode('remote) command, use this command to specify the project directory on the remote host.
Arguments
|
Specifies the path to the project directory on the remote host to be used for remote simulation. |
Value Returned
|
The specified project directory is used for remote simulation. |
|
Examples
Specifies that the project directory is ~/simulation.
remoteDir( "~/simulation" )
=> t
resumeJob
resumeJob(t_jobName[t_jobName2t_jobName3…t_jobNameN] ) => t / nil
Description
Resumes the processing of a previously suspended job or series of jobs. The resumeJob command applies only to jobs that are suspended.
Arguments
Value Returned
|
The processing of a previously suspended job or series of jobs is resumed. |
|
Examples
Resumes the myckt job that was halted with the suspendJob command.
resumeJob( 'myckt )
=> t
suspendJob
suspendJob(t_jobName[t_jobName2t_jobName3…t_jobNameN] ) => t / nil
Description
Suspends the processing of a job or series of jobs. The suspendJob command applies only to jobs that are pending or running.
Arguments
Value Returned
Examples
Suspends the job called myckt.
suspendJob( 'myckt )
=> t
wait
wait( [?queuet_queueName]jobName[jobName2 jobName3…jobNameN] ) => t / nil
Description
Postpones processing of a script until the specified jobs are completed. This command is ignored if distributed processing is not available.
The wait command is highly useful when you use the non-blocking mode of distributed processing and you want to do some post-processing, such as selecting and viewing results after a job is completed. The wait command is not required when you use the blocking mode of distributed processing.
Arguments
|
The name of queue on which job launched by |
|
|
Name used to identify the job. The job name is user defined or system generated, depending on how the user submitted the job. |
|
Value Returned
|
Processing of a script is postponed until the specified jobs are completed. |
|
Examples
Postpones execution of all subsequent OCEAN commands until the job myckt1 completes.
wait( 'myckt1 )
=> t
Job launched by wait is submitted on lnx64 queue that postpones the execution of all subsequent OCEAN commands until the job job0 completes.
wait( ?queue "lnx64" 'job0 )
=> t
Sample Scripts
This section provides sample scripts for the following:
- To submit multiple jobs and show the use of the dependentOn argument in one job
- To set up and run a simple analysis in blocking mode and select results
- To set up and run a parametric analysis in blocking mode and select results
- To submit multiple jobs without using wait or selecting results
- To submit multiple jobs using wait and selection of results
To submit multiple jobs and show the use of the dependentOn argument in one job
This script can be used to submit multiple jobs while using the dependentOn argument in one of these jobs.
; set up the environment for the jobs
simulator( 'spectre )
hostMode( 'distributed )
design( "/home/simulation/test2/spectre/schematic/netlist/netlist")
resultsDir( "/home/simulation/test2/spectre/schematic" )
analysis('tran ?stop "5u" )
temp( 27 )
jobList = nil
; starting first job
jobList = append1( jobList run( ?queue "test" ?host "menaka" ) )
analysis('tran ?stop "50u")
; starting second job
jobList = append1( jobList run(?jobName "job_2" ?queue "test" ?host "menaka"))
analysis('tran ?stop "10u")
; starting third job, which is dependent on job_2
jobList= append1(jobList run(?jobName "disable" ?queue "test" ?dependentOn
symbolToString(car(last(jobList)))))
; wait for all the jobs to complete
wait((append1 last(jobList) nil))
; open and plot the results of the jobs
openResults( car(last(jobList)))
selectResult( 'tran )
newWindow()
plot(getData("/net61") )
openResults( nth(1 jobList))
selectResult('tran)
newWindow()
plot(getData("/net61") )
To set up and run a simple analysis in blocking mode and select results
; set up the environment for Simple Analysis
simulator( 'spectre )
hostMode( 'distributed )
design(
"/home/amit/Artist446/simulation/ampTest/spectre/schematic/netlist/netlist" )
resultsDir( "/home/Artist446/simulation/ampTest/spectre/schematic" )
modelFile(
'("/home/Artist446/Models/myModels.scs" "")
)
analysis( 'tran ?stop "3u" )
desVar( "CAP" 0.8p )
temp( 27 )
; submit the job in blocking mode, to the queue test and machine menaka
run(?queue "test" ?host "menaka" ?block t)
; select and plot the results
selectResult( 'tran )
plot(getData("/out"))
To set up and run a parametric analysis in blocking mode and select results
; set up the environment for parametric analysis.
simulator( 'spectre )
hostMode( 'distributed )
design(
"/home/amit/Artist446/simulation/ampTest/spectre/schematic/netlist/netlist")
resultsDir( "/home/amit/Artist446/simulation/ampTest/spectre/schematic"
)
modelFile(
'("/home/amit/Artist446/Models/myModels.scs" "")
)
analysis('tran ?stop "3u" )
desVar( "CAP" 0.8p )
temp( 27 )
paramAnalysis("CAP" ?values ’(1e-13 2.5e-13 4e-13 ))
; submit the job in blocking mode, to the queue test and machine menaka
paramRun(?queue "fast" ?host "menaka" ?block t)
; select and plot the results
selectResult( 'tran )
plot(getData("/out") )
To submit multiple jobs without using wait or selecting results
; set up the environment for the jobs
simulator( 'spectre )
hostMode( 'distributed )
design(
"/home/Artist446/simulation/ampTest/spectre/schematic/netlist/netlist")
resultsDir( "/home/Artist446/simulation/ampTest/spectre/schematic" )
modelFile(
'("/home/Artist446/Models/myModels.scs" "")
)
; setup and submit first job
analysis('tran ?stop "3u" )
desVar( "CAP" 0.8p )
temp( 27 )
run(?queue "SUN5_5032" ?host "menaka")
; setup and submit second job
analysis('ac ?start "1M" ?stop "2M" )
analysis('tran ?stop "3u" )
desVar( "CAP" 0.8p )
temp( 27 )
run(?queue "SUN5_5032" ?host "menaka")
To submit multiple jobs using wait and selection of results
; set up the environment for the jobs
simulator( 'spectre )
hostMode( 'distributed )
design(
"/home/Artist446/simulation/ampTest/spectre/schematic/netlist/netlist")
resultsDir( "/home/Artist446/simulation/ampTest/spectre/schematic" )
modelFile(
'("/home/Artist446/Models/myModels.scs" "")
)
; initialize jobList to nil
jobList = nil
; setup and submit first job
analysis('tran ?stop "3u" )
desVar( "CAP" 0.8p )
temp( 27 )
jobList = append1( jobList run(?queue "SUN5_5032" ?host "menaka") )
; setup and submit second job
analysis(’ac ?start "1M" ?stop "2M" )
analysis(’tran ?stop "3u" )
desVar( "CAP" 0.8p )
temp( 27 )
jobList = append1( jobList run(?queue "SUN5_5032" ?host "menaka"))
; wait for both the jobs to finish
wait( (append1 jobList nil) )
; open and plot the result of first job
openResults( (car jobList))
selectResult( 'tran )
plot(getData("/out") )
; open and plot the result of second job
openResults( (cadr jobList))
selectResult( 'tran )
plot(getData("/out") )
selectResult( ’ac )
plot(getData("/out") )
; delete the jobs
foreach( x jobList deleteJob( x ) )
Return to top