Hi Everyone, I got some some undesired results when running some benchmarks with SystemML, and I really hope to get some helps from you guys.
Say, I want to read a large matrix in csv and retrieve the first cell with script # simple_read.dml data = read($RS) print("One Cell data[1,1]: " + toString(data[1,1])) and run it with the configuration such as spark-submit \ --driver-memory 20G \ --executor-memory 100G \ --executor-cores 20 \ --num-executors 1 \ --conf spark.driver.maxResultSize=0 \ --conf spark.rpc.message.maxSize=128 \ $SYSTEMML_HOME/target/SystemML.jar \ -f simple_read.dml \ -stats \ -explain \ -nvargs RS=/oasis/scratch/comet/hyoung/temp_project/scatter_data/TR20_FR4.00/RS_join.csv When the input matrix is 2x10^7 by 103 (around 20GB), things worked fine, as sp_rangeReIndex took 19.725s and sp_csvrblk took 11.330s. But when the input matrix is reduced to 10^7 by 103 (around 10GB), interesting things happened, as rangeReIndex took 92.024s and sp_csvrblk took 7.774s. These results were obtained with SystemML v0.13.0 on Spark 2.1.0 in standalone mode with 128GB memory and 24 cores. >From the log, it seems that for the latter case, the control program in the driver took the main job and led to lots of disk I/O, thus the whole program had been slowed down. I understand that assigning the control program some tasks is a key component in SystemML. But this feature really brings in some chaos to the benchmarks in my case. Any suggestion about how to choose a better configuration or make some detours so I can obtain fair benchmarks on a wide range of data dimensions? If needed, I can attach the logs. I really appreciate your help! Regards, Mingyang Wang Graduate Student in UCSD CSE Dept.