This is the experiment code for the paper: 
"Parallel Dual Coordinate Descent Method for Large-scale Linear Classification in Multi-core Environments"

This code will generate the experimental result figures in the paper.
However, the result may be slightly different due to the CPU frequency
and the work load of your computer.

This code has been tested under a 64-bit Linux environment.

To run this experiment code, there are some requirement:

System Requirement
==================
This experiment should be running under 64-bit Linux environments
The following commands or tools are suggested:
- UNIX utilities (cp, mkdir)
- gcc 4.4.3 or newer version with OpenMP support
- Python 2.6 or Python 2.7
- matplotlib 1.5.1
- make
- unzip

Asynchronous CD method
======================
We download the asynchronous CD implementation at https://www.cs.utexas.edu/~rofuyu/exp-codes/passcode-icml15-exp/

Experiment Data
===============
Experiment Data used in this paper are available at
http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/

Run the Experiment
==================
1. To run the experiment code, go into the directories (liblr, liblinear-eps5, passcode-exp-0.1) and make.

2. Edit ./script/runexp.py
	Enter which experimental code you want to test in line 5.
	Then specify how many cores should be used in line 6.
    The regularization parameter C is indicated in line 7. 
    The stopping condition epsilon is indicated in line 8. 
	Dataset that should be tested would be in line 10.
    In line 12~16, put where you want to put the model and log file, also the directory where you put your dataset in. (For default setting, you should create directory 'exp_code/log' and 'exp_code/model')
    In line 18, specify the loss (3 for l1-loss, 1 for l2-loss).

3. After running the experiment, you could use ./script/plot.py to plot out the result.
	The usage is :
	python plot.py [LOGPATH] [C] [eps] [loss]

Directories
===========
liblr            - The original LIBLINEAR
liblinear-eps5   - Our proposed method
passcode-exp-0.1 - Asynchronous CD method
