You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@spark.apache.org by "Peng Meng (JIRA)" <ji...@apache.org> on 2017/07/04 15:40:00 UTC
[jira] [Comment Edited] (SPARK-21305) The BKM (best known methods)
of using native BLAS to improvement ML/MLLIB performance
[ https://issues.apache.org/jira/browse/SPARK-21305?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16073801#comment-16073801 ]
Peng Meng edited comment on SPARK-21305 at 7/4/17 3:39 PM:
-----------------------------------------------------------
yes, I will do that.
Because different blas, the method to disable multi-thread is also different.
I have not found a good way to disable it in spark code.
was (Author: peng.meng@intel.com):
yes, I will do that.
Because different blas, the method to disable multi-thread is also different.
I have not found a good way be disable it in spark code.
> The BKM (best known methods) of using native BLAS to improvement ML/MLLIB performance
> -------------------------------------------------------------------------------------
>
> Key: SPARK-21305
> URL: https://issues.apache.org/jira/browse/SPARK-21305
> Project: Spark
> Issue Type: Umbrella
> Components: ML, MLlib
> Affects Versions: 2.3.0
> Reporter: Peng Meng
> Priority: Critical
> Original Estimate: 504h
> Remaining Estimate: 504h
>
> Many ML/MLLIB algorithms use native BLAS (like Intel MKL, ATLAS, OpenBLAS) to improvement the performance.
> The methods to use native BLAS is important for the performance, sometimes (high opportunity) native BLAS even causes worse performance.
> For example, for the ALS recommendForAll method before SPARK 2.2 which uses BLAS gemm for matrix multiplication.
> If you only test the matrix multiplication performance of native BLAS gemm (like Intel MKL, and OpenBLAS) and netlib-java F2j BLAS gemm , the native BLAS is about 10X performance improvement. But if you test the Spark Job end-to-end performance, F2j is much faster than native BLAS, very interesting.
> I spend much time for this problem, and find we should not use native BLAS (like OpenBLAS and Intel MKL) which support multi-thread with no any setting. By default, this native BLAS will enable multi-thread, which will conflict with Spark executor. You can use multi-thread native BLAS, but it is better to disable multi-thread first.
> https://github.com/xianyi/OpenBLAS/wiki/faq#multi-threaded
> https://software.intel.com/en-us/articles/recommended-settings-for-calling-intel-mkl-routines-from-multi-threaded-applications
> I think we should add some comments in docs/ml-guilde.md for this first.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@spark.apache.org
For additional commands, e-mail: issues-help@spark.apache.org