คำถามติดแท็ก rcpp

9
เร่งความเร็วการวนรอบใน R
ฉันมีปัญหาประสิทธิภาพการทำงานขนาดใหญ่ในอาร์ฉันเขียนฟังก์ชันที่วนซ้ำdata.frameวัตถุ มันเพิ่มคอลัมน์ใหม่ลงใน a data.frameและสะสมบางอย่าง (ใช้งานง่าย) data.frameมีประมาณ 850K แถว พีซีของฉันยังคงใช้งานได้ (ประมาณ 10 ชั่วโมง) และฉันไม่รู้ว่ารันไทม์ dayloop2 <- function(temp){ for (i in 1:nrow(temp)){ temp[i,10] <- i if (i > 1) { if ((temp[i,6] == temp[i-1,6]) & (temp[i,3] == temp[i-1,3])) { temp[i,10] <- temp[i,9] + temp[i-1,10] } else { temp[i,10] <- temp[i,9] } } …
193 performance  r  loops  rcpp  r-faq 

4
ฉันจะเรียนรู้วิธีเขียนโค้ด C เพื่อเร่งความเร็วฟังก์ชัน R ช้าได้ที่ไหน [ปิด]
ปิด. คำถามนี้ไม่เป็นไปตามหลักเกณฑ์กองมากเกิน ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน3 ปีที่ผ่านมา ปรับปรุงคำถามนี้ แหล่งข้อมูลที่ดีที่สุดสำหรับการเรียนรู้วิธีเขียนโค้ด C เพื่อใช้กับ R คืออะไร ฉันรู้เกี่ยวกับระบบและส่วนต่อประสานภาษาต่างประเทศของส่วนขยาย R แต่ฉันพบว่ามันค่อนข้างยาก แหล่งข้อมูลที่ดี (ทั้งออนไลน์และออฟไลน์) สำหรับการเขียนโค้ด C เพื่อใช้กับ R คืออะไร? เพื่อชี้แจงฉันไม่ต้องการเรียนรู้วิธีการเขียนโค้ด C ฉันต้องการเรียนรู้วิธีรวม R และ C ให้ดีขึ้นตัวอย่างเช่นฉันจะแปลงจากเวกเตอร์จำนวนเต็ม C เป็นเวกเตอร์จำนวนเต็ม R ได้อย่างไร (หรือในทางกลับกัน) หรือจากสเกลาร์ C เป็นเวกเตอร์ R?
115 r  rcpp 

3
การปรับฟังก์ชั่นวัตถุประสงค์ R ให้เหมาะสมกับ Rcpp ช้าลงทำไม?
ขณะนี้ฉันกำลังทำงานกับวิธีแบบเบย์ที่ต้องการหลายขั้นตอนของการเพิ่มประสิทธิภาพของแบบจำลองการบันทึกหลายส่วนต่อการวนซ้ำ ฉันใช้ optim () เพื่อดำเนินการ optimisations เหล่านั้นและฟังก์ชั่นวัตถุประสงค์ที่เขียนใน R การทำโปรไฟล์เปิดเผยว่า optim () เป็นคอขวดหลัก หลังจากขุดไปรอบ ๆ ฉันพบคำถามนี้ซึ่งพวกเขาแนะนำว่าการบันทึกฟังก์ชันวัตถุประสงค์ด้วยRcppสามารถทำให้กระบวนการเร็วขึ้น ฉันทำตามข้อเสนอแนะและบันทึกฟังก์ชั่นวัตถุประสงค์ของฉันRcppใหม่ แต่มันก็ช้าลง (ช้าลงประมาณสองเท่า!) นี่เป็นครั้งแรกของฉันที่มีRcpp(หรืออะไรก็ตามที่เกี่ยวข้องกับ C ++) และฉันไม่สามารถหาวิธีการเขียนโค้ดเวกเตอร์ได้ มีความคิดอย่างไรที่จะทำให้เร็วขึ้น? Tl; dr: การใช้งานฟังก์ชั่นปัจจุบันใน Rcpp ไม่เร็วเท่ากับ vectorised R; จะทำให้เร็วขึ้นได้อย่างไร? ตัวอย่างที่ทำซ้ำได้ : 1) กำหนดฟังก์ชั่นวัตถุประสงค์ในRและRcpp: ความน่าจะเป็นของการสกัดกั้นแบบจำลองแบบมัลติโนเมียลเท่านั้น library(Rcpp) library(microbenchmark) llmnl_int <- function(beta, Obs, n_cat) { n_Obs <- length(Obs) Xint <- matrix(c(0, …
16 c++  r  optimization  rcpp 

1
ตัวอย่างของ RcppArmadillo () คลุมเครือหลังจากอัพเดต R
ฉันมักจะทำงานกับฟังก์ชั่น Rcpp สั้น ๆ ที่ใช้เป็นเมทริกซ์อินพุทที่แต่ละแถวมีความน่าจะเป็น K ซึ่งรวมถึง 1 จากนั้นฟังก์ชั่นสุ่มตัวอย่างสำหรับแต่ละแถวเป็นจำนวนเต็มระหว่าง 1 ถึง K ที่สอดคล้องกับความน่าจะเป็น นี่คือฟังก์ชั่น: // [[Rcpp::depends(RcppArmadillo)]] #include <RcppArmadilloExtensions/sample.h> using namespace Rcpp; // [[Rcpp::export]] IntegerVector sample_matrix(NumericMatrix x, IntegerVector choice_set) { int n = x.nrow(); IntegerVector result(n); for ( int i = 0; i < n; ++i ) { result[i] = RcppArmadillo::sample(choice_set, …
9 r  rcpp  rcpparmadillo 

1
วิธีที่เหมาะสมในการคืนพอยน์เตอร์ไปยังวัตถุ“ ใหม่” จากฟังก์ชั่น Rcpp
ลองพิจารณา 1) คลาสที่กำหนดเองที่มีการพิมพ์หน่วยความจำขนาดใหญ่และ 2) ฟังก์ชั่นระดับสูงสุดที่ดำเนินการประมวลผลล่วงหน้าจากนั้นสร้างและส่งคืนออบเจ็กต์ใหม่ของคลาสที่กำหนดเองของเรา เพื่อหลีกเลี่ยงการคัดลอกโดยไม่จำเป็นค่าฟังก์ชั่นจัดสรรวัตถุและส่งกลับตัวชี้ไปที่มันแทน อยู่บนพื้นฐานของการอภิปรายก่อนหน้านี้Rcpp::XPtr<>ดูเหมือนว่าวิธีการที่เหมาะสมที่จะกลับตัวชี้ไปยังวัตถุที่สร้างขึ้นใหม่คือการห่อมันด้วย อย่างไรก็ตามจากนั้น R ก็เห็นว่าเป็นไปอย่างมีประสิทธิภาพexternalptrและฉันพยายามดิ้นรนเพื่อหาวิธีที่เหมาะสมในการคัดเลือกด้วยวิธีการที่ทันสมัยRCPP_EXPOSED_CLASSและRCPP_MODULEวิธีการทำสิ่งต่างๆ ทางเลือกคือการส่งคืนตัวชี้ดิบ แต่ฉันไม่แน่ใจ 100% ว่าหน่วยความจำวัตถุได้รับการล้างอย่างถูกต้อง ฉันวิ่งvalgrindไปทดสอบการรั่วไหลของหน่วยความจำ แต่ก็ไม่พบอะไรเลย อย่างไรก็ตามใครทำความสะอาด? R? test.cpp #include <Rcpp.h> // Custom class class Double { public: Double( double v ) : value(v) {} double square() {return value*value;} private: double value; }; // Make the class visible RCPP_EXPOSED_CLASS(Double) // …
9 c++  r  rcpp 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.