snowfall
You forgot to load the required packages on the client nodes by sfLibrary(fCalendar) sfLibrary(fractalrock) and you really should not tryCatch without evaluating the errors for yourself. Best wishes, Uwe Ligges
On 12.01.2011 09:47, Santosh Srinivas wrote:
Hello,
Just wondering why I am unable to run this in parallel.
A dput of my dataset is attached at the end. Please use to create my data
object.
I want to run this function in parallel (not sure if this is an efficient
implementation):
#Function to calculate the time to maturity for the option
require(fCalendar,quietly=TRUE) #Trying to calculate the trading days
require(fractalrock,quietly=TRUE) #Just to calculate the trading days
myFinCenter="Asia/Singapore"
getTimeToMaturity<- function(x){
tryCatch({
toDt<- as.Date(as.character(x['EXPIRY_DT']), "%Y-%m-%d")
#Expiry Date
fromDt<- as.Date(as.character(x['TIMESTAMP']), "%Y-%m-%d")
#Trade Timestamp
NoOfDays<- NROW(getTradingDates(toDt,fromDt))
return(NoOfDays/252)
},
error = function (ex){
#print (paste("Error in",toDt,fromDt))
NoOfDays<- 0
return(NoOfDays/252)
}
)
}
Question: The following two lines work but the third and parallel one
doesn't ... why?
1)> apply(dNiftyOpt,1,getTimeToMaturity) #Works
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20
0.02380952 0.01984127 0.07936508 0.02380952 0.01984127 0.01190476 0.02777778
0.02380952 0.01984127 0.01190476 0.02380952 0.01984127 0.02380952 0.02380952
0.01984127 0.02380952 0.01984127 0.02380952 0.02380952 0.02777778
library(snowfall)
2)> sfInit()
snowfall 1.84 initialized: sequential execution, one CPU.
sfApply(dNiftyOpt,1,getTimeToMaturity) #Works
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 0.02380952 0.01984127 0.07936508 0.02380952 0.01984127 0.01190476 0.02777778 0.02380952 0.01984127 0.01190476 0.02380952 0.01984127 0.02380952 0.02380952 0.01984127 0.02380952 0.01984127 0.02380952 0.02380952 0.02777778
sfStop()
DOESN'T WORK: 3)
sfInit( parallel=TRUE, cpus=4 ); sfApply(dNiftyOpt,1,getTimeToMaturity) #Added the time to maturity.
DOESN'T WORK? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
sfStop();
My dataset:
dput(dNiftyOpt)
structure(list(INSTRUMENT = c("OPTIDX", "OPTIDX", "OPTIDX", "OPTIDX",
"OPTIDX", "OPTIDX", "OPTIDX", "OPTIDX", "OPTIDX", "OPTIDX", "OPTIDX",
"OPTIDX", "OPTIDX", "OPTIDX", "OPTIDX", "OPTIDX", "OPTIDX", "OPTIDX",
"OPTIDX", "OPTIDX"), SYMBOL = c("NIFTY", "NIFTY", "NIFTY", "NIFTY",
"NIFTY", "NIFTY", "NIFTY", "NIFTY", "NIFTY", "NIFTY", "NIFTY",
"NIFTY", "NIFTY", "NIFTY", "NIFTY", "NIFTY", "NIFTY", "NIFTY",
"NIFTY", "NIFTY"), EXPIRY_DT = c("2004-01-29", "2004-01-29",
"2004-01-29", "2004-01-29", "2004-01-29", "2004-01-29", "2004-01-29",
"2004-01-29", "2004-01-29", "2004-01-29", "2004-01-29", "2004-01-29",
"2004-01-29", "2004-01-29", "2004-01-29", "2004-01-29", "2004-01-29",
"2004-01-29", "2004-01-29", "2004-01-29"), STRIKE_PR = c(1780,
1780, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1820, 1820,
1820, 1830, 1830, 1830, 1830, 1840, 1840, 1850), OPTION_TYP = c("PE",
"PE", "CE", "CE", "CE", "CE", "PE", "PE", "PE", "PE", "CE", "CE",
"PE", "CE", "CE", "PE", "PE", "CE", "PE", "CE"), SETTLE_PR = c(27.4,
5.7, 152.95, 28.6, 70.45, 111.35, 14.75, 39.2, 8.6, 2.35, 20.4,
54.2, 50.15, 18.35, 47.25, 51.75, 15.5, 14.95, 57.95, 26.3),
TIMESTAMP = c("2004-01-22", "2004-01-23", "2004-01-02", "2004-01-22",
"2004-01-23", "2004-01-27", "2004-01-21", "2004-01-22", "2004-01-23",
"2004-01-27", "2004-01-22", "2004-01-23", "2004-01-22", "2004-01-22",
"2004-01-23", "2004-01-22", "2004-01-23", "2004-01-22", "2004-01-22",
"2004-01-21"), Underlying = c(1770.5, 1847.55, 1946.05, 1770.5,
1847.55, 1904.7, 1824.6, 1770.5, 1847.55, 1904.7, 1770.5,
1847.55, 1770.5, 1770.5, 1847.55, 1770.5, 1847.55, 1770.5,
1770.5, 1824.6), UnderlyingVol = c(0.293906144944403, 0.331877179605752,
0.129552369208600, 0.293906144944403, 0.331877179605752,
0.348918971622834, 0.276334860399362, 0.293906144944403,
0.331877179605752, 0.348918971622834, 0.293906144944403,
0.331877179605752, 0.293906144944403, 0.293906144944403,
0.331877179605752, 0.293906144944403, 0.331877179605752,
0.293906144944403, 0.293906144944403, 0.276334860399362)), .Names =
c("INSTRUMENT",
"SYMBOL", "EXPIRY_DT", "STRIKE_PR", "OPTION_TYP", "SETTLE_PR",
"TIMESTAMP", "Underlying", "UnderlyingVol"), row.names = c("1",
"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13",
"14", "15", "16", "17", "18", "19", "20"), class = "data.frame")
______________________________________________ R-help at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.