parent
d7b5a136ca
commit
025e7f9cb6
@ -0,0 +1,78 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"flag"
|
||||||
|
"net"
|
||||||
|
"net/http"
|
||||||
|
"net/rpc"
|
||||||
|
"os"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/PaddlePaddle/Paddle/paddle/go/master"
|
||||||
|
"github.com/wangkuiyi/recordio"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
taskTimeoutDur = 20 * time.Minute
|
||||||
|
taskTimeoutMax = 3
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
port := flag.Int("p", 0, "port of the master server")
|
||||||
|
dataset := flag.String("d", "", "dataset: comma separated path to RecordIO files")
|
||||||
|
faultTolerant := flag.Bool("fault-tolerance", false, "enable fault tolerance (requires etcd).")
|
||||||
|
flag.Parse()
|
||||||
|
|
||||||
|
if *dataset == "" {
|
||||||
|
panic("no dataset specified.")
|
||||||
|
}
|
||||||
|
|
||||||
|
if *faultTolerant {
|
||||||
|
panic("fault tolernat not implemented.")
|
||||||
|
}
|
||||||
|
|
||||||
|
var chunks []master.Chunk
|
||||||
|
paths := strings.Split(*dataset, ",")
|
||||||
|
idx := 0
|
||||||
|
for _, path := range paths {
|
||||||
|
f, err := os.Open(path)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
index, err := recordio.LoadIndex(f)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
f.Close()
|
||||||
|
|
||||||
|
count := index.NumChunks()
|
||||||
|
for i := 0; i < count; i++ {
|
||||||
|
chunk := master.Chunk{
|
||||||
|
Idx: idx,
|
||||||
|
Path: path,
|
||||||
|
Index: *index.ChunkIndex(i),
|
||||||
|
}
|
||||||
|
chunks = append(chunks, chunk)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
s := master.NewService(chunks, taskTimeoutDur, taskTimeoutMax)
|
||||||
|
err := rpc.Register(s)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
rpc.HandleHTTP()
|
||||||
|
l, err := net.Listen("tcp", ":"+strconv.Itoa(*port))
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = http.Serve(l, nil)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in new issue