คำแนะนำสำหรับการสร้างรหัส R ใช้หลายโปรเซสเซอร์หรือไม่


28

ฉันมีสคริปต์ R สำหรับอ่านข้อมูล csv จำนวนมากจากไฟล์ต่าง ๆ จากนั้นทำงานการเรียนรู้ของเครื่องเช่น svm สำหรับการจัดหมวดหมู่
มีห้องสมุดใดที่ใช้ประโยชน์หลายคอร์บนเซิร์ฟเวอร์สำหรับอาร์
หรือ
วิธีที่เหมาะสมที่สุดในการบรรลุนั้นคืออะไร?


ฉันไม่เห็นว่าการนำเข้าข้อมูลและการเรียกใช้ SVM มีความเกี่ยวข้องกับคำถามอย่างไร นั่นเป็นเหตุผลที่ฉันคิดว่ามันเป็นคำถาม SO มากกว่า แต่ฉันจะได้เห็น Xrefs ว่าเป็นทางออกที่ดีในระยะยาวเพราะมันเป็น R ...
เชน

3
ฉันไม่มีปัญหากับการตอบคำถามประเภทนี้ที่นี่ R ไม่ใช่ภาษากระแสหลัก (เช่น Python หรือ Java) ที่ควอนตัมจะพูดอย่างเป็นธรรมชาติว่า "โอ้นี่เป็นคำถามทั่วไปของการเขียนโปรแกรมดังนั้นฉันควรไปที่ StackOverflow หรือคล้ายกันและถามสิ่งนี้หรือมองหาวิธีแก้ปัญหา" จริงๆแล้วมันเป็นคำถามเพิ่มเติมสำหรับรายการส่งเมล R หรือไซต์กลุ่ม เพื่อรับใช้นักวิเคราะห์รุ่นที่ต้องการเรียนรู้ R เรายินดีที่จะได้รับคำตอบที่นี่เช่นกัน
พอล

2
ลงคะแนนให้เปิดอยู่ มีความเกี่ยวข้องมากกับนักสถิติเพราะวิธีการที่ปัญหาของเราสามารถหรือไม่สามารถแยกย่อยเป็นกระแสคู่ขนานนั้นมีความเกี่ยวข้องกับคำถามที่ถูกถาม
russellpierce

@chl: ขอบคุณสำหรับการชนกัน ในความเป็นจริงฉันตรวจสอบการอ้างอิงทั้งหมดที่ไม่ใช่เชิงพาณิชย์จากเธรดนี้หลังจากที่ปรากฏ แต่ไม่พบสิ่งใดที่ใช้งานได้บน Win 7 x64
whuber

1
วิธีการแก้ปัญหาที่ฉันนำเสนอทำงานร่วมกับ win 7 และไม่ใช่เชิงพาณิชย์ (อ่านโพสต์ที่ฉันเชื่อมโยงเพื่อดูรายละเอียด) มันมาพร้อมกับสภาพแวดล้อมเชิงพาณิชย์ แต่มันสามารถแยกออกจากมัน (เป็นโพสต์ของฉันแสดงให้เห็นว่า) และรหัสที่ตัวเองเป็น GPL ...
Tal Galili

คำตอบ:


16

ถ้ามันอยู่ในลินุกซ์แล้วส่วนใหญ่ตรงไปข้างหน้าเป็นแบบมัลติคอร์ นอกเหนือจากนั้นฉันขอแนะนำให้ดูMPI (โดยเฉพาะกับแพ็คเกจหิมะ )

โดยทั่วไปแล้วดูที่:

  1. ประสิทธิภาพสูงคอมพิวเตอร์มุมมองใน CRAN
  2. "สุดยอดแห่งศิลปะในการคำนวณแบบขนานพร้อม R"

สุดท้ายนี้ฉันขอแนะนำให้ใช้แพ็คเกจforeachเพื่อสรุปแบ็กเอนด์แบบขนานในโค้ดของคุณ ที่จะทำให้มีประโยชน์มากขึ้นในระยะยาว


ฉันใช้มัลติคอร์เป็นหลักฉันยังคงชอบหิมะมากกว่าหิมะและ Rmpi ​​สำหรับความทนทานต่อข้อบกพร่องและอินเทอร์เฟซที่สะอาด

@mbq +1 สำหรับ snowfall- บทคัดย่อหิมะยิ่งขึ้นและทำให้การคำนวณแบบขนานกับ R ค่อนข้างง่าย
Sharpie

6

หากคุณใช้ GNU / Linux คำตอบก่อนหน้านี้โดย Shane และ Dirk นั้นยอดเยี่ยม

หากคุณต้องการวิธีแก้ปัญหาสำหรับ windows มีหนึ่งในบทความนี้:

การประมวลผลแบบมัลติคอร์แบบขนานพร้อม R (บน Windows)

แม้ว่าแพคเกจยังไม่ได้อยู่ใน CRAN สามารถดาวน์โหลดได้จากลิงค์นั้น


5

เชนถูกต้อง ทั้งมัลติคอร์และRmpiเป็นผู้ชนะ

คุ้มครองเล็กน้อยกว้างของหัวข้อที่อยู่ในCRAN งานดูบนประสิทธิภาพสูงคอมพิวเตอร์ สิ่งนี้ยังเชื่อมโยงไปยังบทความการสำรวจล่าสุดเกี่ยวกับParallel Computing กับ Rจาก JSS

ท้ายสุดตัวอย่างและเคล็ดลับบางอย่างนั้นอยู่ในIntro to HPC พร้อมกับการสอนR ซึ่งผมให้ในบางครั้ง - ดูหน้าการนำเสนอของฉันสำหรับสำเนาล่าสุดจากสัปดาห์ที่แล้วที่ useR


ก็จำเป็นต้องมี mutex เมื่อฉันแสดงความคิดเห็นในคำตอบของคุณฉันเห็นเฉพาะรุ่นแรก (ดิบ) และคิดได้ดีฉันอาจขยายตัวใน mc และ Rmpi จากนั้นคุณก็ทำและฉันก็ดูเหมือนเลียนแบบ นั่นคือชีวิต.
Dirk Eddelbuettel

ในทางกลับกันคำตอบของฉันมาจากการอ่านรายงาน / งานนำเสนอของคุณในอดีต ดังนั้นฉันเดาว่าฉันจะคัดลอกคุณเช่นกัน
เชน

5

ฉันสังเกตเห็นว่าคำตอบก่อนหน้านี้ขาดการพิจารณาทั่วไปของ HPC
ก่อนอื่นแพ็คเกจเหล่านั้นไม่สามารถให้คุณเรียกใช้SVM หนึ่งแบบขนาน ดังนั้นสิ่งที่คุณสามารถเพิ่มความเร็วได้คือการปรับพารามิเตอร์หรือการตรวจสอบข้ามคุณยังต้องเขียนฟังก์ชันของคุณเองสำหรับสิ่งนั้น หรือแน่นอนคุณอาจเรียกใช้งานสำหรับชุดข้อมูลที่แตกต่างกันในแบบคู่ขนานถ้าเป็นกรณี
ปัญหาที่สองคือหน่วยความจำ หากคุณต้องการกระจายการคำนวณบนคอมพิวเตอร์จริง ๆ สองเครื่องไม่มีอาหารกลางวันฟรีและคุณต้องคัดลอกข้อมูล - ที่นี่คุณต้องพิจารณาว่าเหมาะสมหรือไม่ที่จะแจกจ่ายสำเนาข้อมูลในคอมพิวเตอร์เพื่อบันทึกการสื่อสารบางอย่าง ในทางกลับกันถ้าคุณต้องการใช้หลายคอร์ในคอมพิวเตอร์เครื่องเดียวกว่ามัลติคอร์ที่เหมาะสมอย่างยิ่งเพราะมันช่วยให้กระบวนการลูกทั้งหมดเข้าถึงหน่วยความจำของกระบวนการหลักดังนั้นคุณสามารถประหยัดเวลาและพื้นที่หน่วยความจำจำนวนมาก


1
+1 จุดที่ดีเกี่ยวกับวิธีที่สิ่งนี้ไม่ได้เกี่ยวข้องกับการแยกการตรวจสอบความถูกต้องข้าม
เชน

บังเอิญมีงานล่าสุด (2013) ในการเปิดใช้งาน HPC สำหรับแต่ละ SVM โดย dCSE ( hector.ac.uk/cse/distributedcse/reports/sprint03/… ) มีแพ็กเกจsprintสำหรับ R ที่มีฟังก์ชั่นpsvmแต่ทว่าเป็นเรื่องเล็กน้อยในการติดตามการเปลี่ยนแปลง R 3.0 และแนวทางการส่ง CRAN ใหม่ดังนั้นการดาวน์โหลดปัจจุบันจึงไม่สามารถใช้ได้บน CRAN หรือเข้ากันได้กับ R 3.0 อย่างสมบูรณ์ ไมล์สะสมของคุณอาจแตกต่างกันไป
bright-star

3

ทั้งการตอบสนองของเชนและเดิร์คนั้นเป็นจุดเริ่มต้น

อย่างไรก็ตามคุณอาจต้องการดูรุ่น R เชิงพาณิชย์ที่เรียกว่าRevolution Rซึ่งสร้างขึ้นเพื่อจัดการกับชุดข้อมูลขนาดใหญ่และทำงานในหลายคอร์ ซอฟต์แวร์นี้ฟรีสำหรับนักวิชาการ (ซึ่งอาจเป็นกรณีของคุณฉันไม่รู้)


5
ฉันไม่เห็นด้วยบ้าง การปฏิวัติเป็นงานขายที่ยอดเยี่ยมในการรับ mindshare (ดังที่เห็นได้จากการโพสต์ของคุณ) แต่ ณ ตอนนี้มีผลิตภัณฑ์น้อยมากที่คุณจะไม่ได้รับจาก R ปกติ (อย่างน้อยบน Linux) Intel MKL แน่นอน แต่คุณสามารถรับ Goto Blas ได้ บน Windows พวกเขาเสนอ doSMP ซึ่งช่วยให้ไม่สามารถสร้างมัลติคอร์ได้
Dirk Eddelbuettel

2
แต่แน่นอน doSMP เป็นสิ่งที่ OP ต้องการอย่างแท้จริงหากพวกเขาทำงานในสภาพแวดล้อม Windows
russellpierce
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.