Hi Guillaume,
In principle, mycrossprod function does not need to PROTECT "ans",
because it does not call any allocating function after allocating "ans"
("dgemm" in particular should not allocate from the R heap). So it is
surprising that PROTECTion makes a difference in your case. I agree
there is no harm protecting defensively. R itself calls dgemm with the R
object for the result protected when calculating matrix products, but
there it is needed because there is further allocation when setting up
attributes for the result.
Best
Tomas
On 01/08/2018 02:41 PM, Guillaume Collange wrote:
Dear all,
I would like to submit an issue that we are facing.
Indeed, in our environment, we are optimizing the R code to speed up some
mathematical calculations as matrix products using the INTEL libraries (
MKL) ( https://software.intel.com/en-us/mkl )
With the last version of the MKL libraries Intel 2018, we are facing to
issue with *all INTERNAL command* that are executing in R. The R console
freezing executing a process at 100% and never stop!!! It?s really an
for us.
As example, we can reproduce the error with *crossprod. Crossprod *which
a wrapper of BLAS GEMM (optimized with MKL libraries), in this function
seems that variables are not protected ( PROTECT(); UNPROTECT() ), see
screenshot below, which is a recommendation for external commands:
Picture1
*RECOMMANDATION*
*Picture2*
*Code of CROSSPROD*
Picture 3
If we are recoding the CROSSPROD function with PROTECTT
No more issues?
Do you have any idea to solve this bug? Any recommendations?
Thank you by advance for your help.
Best regards,
Guillaume Collange