- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I have an existing R script that performs various operations, and I'm looking to create a C sub function to optimize a specific part of it. My goal is to integrate this C sub function within R Desktop for improved performance and efficiency.
For example, let's assume that I want to sum the elements obtained by multiplying the vector x and y. In R, I can achieve this with the following code:
# R code
x <- c(1, 2, 3)
y <- c(4, 5, 6)
z <- sum(x * y)
The same operation using oneMKL can be performed like this:
#include <stdio.h>
#include <mkl.h>
int main() {
double x[] = {1.0, 2.0, 3.0};
double y[] = {4.0, 5.0, 6.0};
double z;
// Perform vector multiplication and summation using Intel MKL
z = cblas_ddot(3, x, 1, y, 1);
printf("Result: %lf\n", z);
return 0;
}
After compiling the .c function using CMD, I get:
C:\Program Files (x86)\Intel\oneAPI>cd C:/Users/Administrator/Desktop
C:\Users\Administrator\Desktop>icx -o example example.c /Qmkl /MD
Intel(R) oneAPI DPC++/C++ Compiler for applications running on Intel(R) 64, Version 2023.1.0 Build 20230320
Copyright (C) 1985-2023 Intel Corporation. All rights reserved.
C:\Users\Administrator\Desktop>example.exe
Result: 32.000000
What I want to do is replace the 4th line of the Rscript code with a .c function. I'm facing two problems:
1) Convert the C Function for General Inputs:
I don't know if I have defined the function correctly.
#include <stdio.h>
#include <mkl.h>
void multiplyAndSum(double *x, double *y, int length, double *result) {
*result = cblas_ddot(length, x, 1, y, 1);
}
2) Calling the C Function in R:
I don't know how to call the .c function in step 1 within R. Is there a way to compile the function and run it explicitly within R Desktop, without using the command prompt (cmd)
Please, I understand that my question may be quite basic, but my knowledge is limited. I would greatly appreciate a step-by-step answer, ideally.
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
Thanks for posting in Intel communities.
Please refer to the below links for compiling R code with MKL, extended support, and other linking-related details.
Linking Intel MKL to R:
Building R with the Intel® Math Kernel Library (Intel® MKL) BLAS and LAPACK to improve the performance of those parts of R that rely on matrix computations.
https://www.intel.com/content/www/us/en/developer/articles/technical/extending-r-with-intel-mkl.html
How to use the BLAS and LAPACK libraries within Intel® oneAPI Math Kernel Library (oneMKL) to improve the performance of R.
https://www.intel.com/content/www/us/en/developer/articles/technical/using-onemkl-with-r.html
Regards,
Jilani
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank you very much for the help and the links.
If I'm not mistaken, the first and third links provide instructions for Linux, while the second one is for Windows. However, I'm sincerely sorry, but I'm having trouble understanding what I need to do. I apologize deeply, but so far, I've been working with MATLAB and Intel Parallel Studio, and compiling with them was easier for me. I've invested a lot of time into this, but I'm still struggling. Could you please provide more detailed instructions? I would greatly appreciate it.
My environment variables are displayed in the image below. Perhaps this information could be helpful for you to assist me.
Thank you very much.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
Thanks for sharing your requirement details. We are looking into your issue internally. We will get back to you soon with an update.
Regards,
Jilani
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Fio,
Apologies for delay in the response.
We regret to say that we will not be able to support you on these R related queries, since we aren’t “R” experts. We’d only be able to support issues only related to Intel products.
If you have any query on Intel products, then please raise a new thread in the appropriate forum and we’d be happy to support you. Thank you.
Regards,
Jilani
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Fio,
This thread will no longer be monitored by Intel. If you need further assistance, please post a new thread. We are going ahead and closing this thread.
Regards,
Jilani
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page