{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/cumf_sgd-fast-and-scalable-matrix","title":"CuMF_SGD: Fast and Scalable Matrix Factorization","arxiv_id":"1610.05838","date":"2016-10-19","proceeding":null,"authors":["Xiaolong Xie","Wei Tan","Liana L. Fong","Yun Liang"],"abstract":"Matrix factorization (MF) has been widely used in e.g., recommender systems,\ntopic modeling and word embedding. Stochastic gradient descent (SGD) is popular\nin solving MF problems because it can deal with large data sets and is easy to\ndo incremental learning. We observed that SGD for MF is memory bound.\nMeanwhile, single-node CPU systems with caching performs well only for small\ndata sets; distributed systems have higher aggregated memory bandwidth but\nsuffer from relatively slow network connection. This observation inspires us to\naccelerate MF by utilizing GPUs's high memory bandwidth and fast intra-node\nconnection. We present cuMF_SGD, a CUDA-based SGD solution for large-scale MF\nproblems. On a single CPU, we design two workload schedule schemes, i.e.,\nbatch-Hogwild! and wavefront-update that fully exploit the massive amount of\ncores. Especially, batch-Hogwild! as a vectorized version of Hogwild! overcomes\nthe issue of memory discontinuity. We also develop highly-optimized kernels for\nSGD update, leveraging cache, warp-shuffle instructions and half-precision\nfloats. We also design a partition scheme to utilize multiple GPUs while\naddressing the well-known convergence issue when parallelizing SGD. On three\ndata sets with only one Maxwell or Pascal GPU, cuMF_SGD runs 3.1X-28.2X as fast\ncompared with state-of-art CPU solutions on 1-64 CPU nodes. Evaluations also\nshow that cuMF_SGD scales well on multiple GPUs in large data sets.","url_abs":"http://arxiv.org/abs/1610.05838v3","url_pdf":"http://arxiv.org/pdf/1610.05838v3.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"cumf_sgd-fast-and-scalable-matrix","repo_url":"https://github.com/cumf/cumf_sgd","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"none","reach":null},{"paper_slug":"cumf_sgd-fast-and-scalable-matrix","repo_url":"https://github.com/MehdiChelh/CuMF_SGD","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":null}],"tasks":[{"task_slug":null,"task_name":"CPU"},{"task_slug":null,"task_name":"GPU"},{"task_slug":"incremental-learning","task_name":"Incremental Learning"},{"task_slug":"recommendation-systems","task_name":"Recommendation Systems"},{"task_slug":"small-data","task_name":"Small Data Image Classification"}],"methods":[{"method_slug":"sgd","method_name":"SGD"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":null,"atlas_url":null,"mcp":null,"developers":"https://syntology.ai/developers"},"arxiv_metadata":null,"syntology_extracted_results":null}