Accel.js
Team members: Leiyu Zhao(leiyuz), Hailiang Xu(hailianx)
Completed Work
All the APIs specified in README have been accomplished. To specify, it includes remote functions that will be transferred to another process for running; broadcast scope to synchronize variables and make them accessible easily in remote code; homogeneous dependency to allow developer import a package just as local. Currently, all remote functions are dispensed to workers in FIFO, pull-based manner, or developer can explicitly assign the task to some worker, or issue an urgent task.
Besides, one thing under developing (but yet to release on document) is channel, like MPI. It works similar way to Golang’s channel and can be used to synchronize among workers.
As for the communication between worker and server, we did some experiments and it turns out socket is a great solution. Also, distributed workers can also adopt this method. We can easily migrate with less effort.
Future Schedule
-
4.26 - 5.2
- Refine API, (optionally implement distributed list)
- Implement distributed part, let Accel.js work for a cluster
-
5.3 - 5.9
- Conduct experiments to evaluate our package
- Write final report
Expectation
Up to now, we successfully complete our work before the first checkpoint. We will continue to finish the distributed worker part. As for the optional goal, it depends on the progress for the following week. If all goes well, we will try to embed C++ code to our package.
Presentation
Since our work is a package of node.js, we plan to show a demo to give a quick usage of our package. After that, we will show some charts of performance comparison for classic applications with computational intensive tasks using our package or not.
Concerns
- Messaging passing have huge overheads compared to shared memory model, whether Accel.js can bring significant boost to traditional applications requires evaluation.