본문 바로가기
반응형

R Programming/Rcpp4

Rcpp에서 R내장 함수를 불러와서 써도 빠를까? 속도 문제르 R코드를 Rcpp로 옮기면서 가장 많이 했던 고민은 이거다. R에서 이미 구현되어 있는 내장함수를 Cpp로 새로 구현하였을 때, 그 함수가 이미 구현되어 있는 R함수보다 안정적이게 작성하기란 어렵다.... (특히, Optimize 함수 같은 거..) Rcpp에선 R의 특정 패키지에 구현되어 있는 함수를 불러와서 쓸 수 있는 기능이 있어 그 기능을 애용하게 되었다. R내장함수 Rcpp에서 불러오기: Optimize 예시 2023.09.17 - [R Programming/Rcpp] - [Rcpp] Rcpp에서 R함수 사용하기 (Optimize 함수 예시) [Rcpp] Rcpp에서 R함수 사용하기 (Optimize 함수 예시) (현재 코드는 RcppArmadillo & Rcpp 을 사용하였다.) .. 2024. 1. 8.
[Rcpp] building shared library 문제 해결: 환경변수 추가 Rcpp 코드를 사용하고, 이를 여러 코어에 할당하여 병렬처리로 분석할 때, 사용하는 PC 환경에 따라 글의 제목과 같은 에러가 발생할 수 있다. 일반적으로 병렬처리가 아닌, 그냥 Rcpp코드를 불러올 때 해당 문제가 발생하지 않는다. 본 게시글은 해당 문제의 원인을 알아보고 해결하는 방법에 대해 알아본다. 본 게시글은 Rtools40 기준으로 작성되었다. 원인 Rtools 설치는 제대로 하였으나, Rtools의 정보들이 시스템 환경변수로 설정되지 않아서 발생하는 문제이다. 환경변수란, OS에서 기본적으로 필요로 하는 환경설정과 관련된 정보를 담고 있다. 메인 세션에서는 굳이 따로 설정하지 않아도 이를 인식하므로 문제가 발생하지 않았던 것 같다. 병렬처리를 위한 서브세션에서 Rtools를 인식하지 못하기.. 2023. 10. 26.
Parallel 연산에서 Rcpp::function 호출하기 R에서의 연산속도를 향상시키기 위해, Parallel 연산과 Rcpp를 고려하게 될 것이다. 이 포스팅에선 Rcpp::function은 이미 다 짠 상태인데 Parallel 연산 안에서 어떻게 Rcpp를 다룰지에 대해 이야기하겠다. 여기서 이야기하는 R에서의 Parallel 연산이란, Parallel 연산을 도와주는 패키지를 사용하여 main session 이 아닌 추가적인 session 을 생성하고 각 session 에서 작동시킨 결과를 다시 main session 에서 통합시켜서 계산하는 방법을 의미한다. 이 때 한 명이 4개의 일을 처리하는게 아닌, 4명이 일을 1개씩 처리하기 때문에 계산속도가 빨라진다. (단, 일을 전달하고 각 일의 결과를 받는 과정 또한 시간이 걸릴 수 있음) 문제는 각각의 S.. 2023. 10. 6.
[Rcpp] Rcpp에서 R함수 사용하기 (Optimize 함수 예시) (현재 코드는 RcppArmadillo & Rcpp 을 사용하였다.) Rcpp은 R의 계산속도 향상을 위해 사용하지만, C++ 내부에 당연히 R의 패키지들은 다 구현되어 있지 않다... R을 사용하다 속도 문제로 R코드를 C++로 수정하는 일이 종종 생기는데, 이 때 기존의 R에서 사용하던 함수를 직접 구현해야 하나 싶은 상황이 된다. 기존의 R 코드를 C++로 구현하는 건 매우 어려운 일인데, R과 달리, C++은 Vector 단위의 객체끼리의 Row-wise 계산을 지원해주지 않아서 for()를 사용해 모든 element를 불러와서 계산한 후에 다시 그 값을 vector로 만들어야 한다. 결론적으로 내가 대가님이 몇 십년씩 조금씩 수정하여 만들어낸 몇몇 패키지 함수보다 더 안정적이고 효율적으로 짧은 .. 2023. 9. 17.
반응형