Thursday 20 July 2017

เฉลี่ยเคลื่อนที่ Cuda


สำหรับวิธีการอื่นคุณสามารถตัดทอนหน้าต่างเฉลี่ยที่ชี้แจงได้และคำนวณสัญญาณที่กรองแล้วโดยทำการสลับระหว่างสัญญาณกับเลขชี้กำลังของหน้าต่างการ convolution สามารถคำนวณได้โดยใช้ CFD cuFFT ฟรีของ CUDA เนื่องจากคุณอาจทราบ convolution สามารถแสดงเป็นตัวคูณจุดสองของสัญญาณในโดเมน Fourier นี่คือชื่อทฤษฎีสังวัตนาที่เหมาะเจาะซึ่งทำงานด้วยความซับซ้อนของ O n log n วิธีการนี้จะลดรหัสเคอร์เนล CUDA ของคุณและรันอย่างมาก เร็ว ๆ นี้แม้ใน GeForce 570 โดยเฉพาะดังนั้นหากคุณสามารถคำนวณทั้งหมดของคุณในความแม่นยำ float เดียวตอบเมษายน 30 14 ที่ 17 04 ฉันจะเสนอเพื่อจัดการกับสมการความแตกต่างดังที่ระบุไว้ด้านล่างและจากนั้นใช้ CUDA แรงดึงดูด Distinguished การควบคุมการใช้ข้อมูล - รูปแบบที่แตกต่างของความแตกต่างของสมการโดยพีชคณิตง่ายๆคุณสามารถหาข้อมูลต่อไปนี้ได้โดยรูปแบบที่ชัดเจนมีดังต่อไปนี้ CUDA THRUST IMPLEM ENTATION คุณสามารถใช้แบบฟอร์มที่ชัดเจนข้างต้นได้โดยทำตามขั้นตอนต่อไปนี้เริ่มต้นลำดับการป้อนข้อมูล dinput ไปยังอัลฟายกเว้น dinput 0 1. กำหนดเวกเตอร์ d1overbetatothen เท่ากับ 1, 1 beta, 1 beta 2, 1 beta 3. ใส่ elementwise dinput โดย d1overbetatothen. Perform รวม inclusivescan เพื่อให้ได้ลำดับของ yn beta n. Divide ลำดับข้างต้นโดย 1, 1 เบต้า, 1 เบต้า 2, 1 เบต้า 3.The วิธีการข้างต้นสามารถแนะนำสำหรับระบบ Linear Time-Varying LTV สำหรับ Linear Time - Invariant LTI ระบบวิธีการ FFT โดย Paul สามารถแนะนำ I m ให้ตัวอย่างของวิธีการดังกล่าวโดยใช้ CUDA แรงขับและ cuFFT ในคำตอบของฉันเพื่อกรอง FIR ใน CUDA. I m ไม่โปรแกรมเมอร์ที่มีความสามารถใด ๆ เพียงแค่มีคนอยากรู้เกี่ยวกับ CUDA และ ดังนั้นฉันทำอ่านเล็กน้อยฉันวิ่งข้ามตัวอย่างของการใช้แรงขับเพื่อทำเฉลี่ย average. The เช่นทำงานวิ่งและส่วนใหญ่ทำงานได้อย่างถูกต้อง แต่ก็เป็นเรื่องเล็กน้อยในความรู้สึกว่าเพียงหนึ่งดำเนินการเฉลี่ยเคลื่อนไหว ฉันจะทำอย่างไรพูด 352 ของ se เคลื่อนไหวการดำเนินงานโดยเฉลี่ยในแบบคู่ขนานการดำเนินงานทั้งหมดในกระแสข้อมูลเดียวกันในใจของฉันการไหลของโปรแกรมอาจเป็นสร้างข้อมูลส่งไปยังแกน CUDA หนึ่งเดียวกับรหัสที่มีอยู่ แต่คิดว่าความยาวของ 1000 หรือ 10000 แทน 30.Copy จาก แกน CUDA ให้กับแกน CUDA อื่น ๆ ทั้งหมด 351 ตัวใน GTX 465 ของฉันแต่ละแกน CUDA จำนวนรายการข้อมูลเฉลี่ยกว่า 4 5 6 352 353 354. ให้อุปกรณ์ทำงานโดยเฉลี่ยในแต่ละแกนหลักใน parallel. Read กลับผลจากแต่ละ core. I รับที่ code. makes นี้เกิดขึ้นทั้งหมด แต่ฉันจะได้รับแรงผลักดันให้ทำหลายเหล่านี้ใน parallel. My ดอกเบี้ยที่นี่เป็นเรื่องบางอย่างเช่นข้อมูลหุ้นถ้าฉัน m มองไปที่ GOOG ราคาฉัน d ใส่ที่ใน GPU ใช้แกนทั้งหมดและปล่อยให้มีฉัน d แล้วมีอิสระในการทำจำนวนมากประมวลผลโดยไม่ต้องโหลดข้อมูลอีกต่อไปและเพียงแค่อ่านผลกลับจากแต่ละ core หมายเหตุฉันอาจไม่ต้องการใช้ GOOG ในแกนทั้งหมดบาง แกนอาจเป็น GOOG และอื่น ๆ ที่มีสัญลักษณ์อื่น ๆ แต่ฉันจะไปที่นั่นหลังจากนั้นฉันก็แค่นึกถึง g ฉัน don t ต้องการข้อมูลหุ้นในหน่วยความจำระดับโลกถ้ามีห้องเพียงพอในแต่ละ core. I สมมตินี้สวยตรงไปตรงมาสำหรับ CUDA Thrust. asked กันยายน 12 12 ที่ 19 39.My เข้าใจว่าคุณสนใจในสองสถานการณ์ต่อไปนี้ คุณมีลำดับรายการยาวและคุณต้องการคำนวณค่าเฉลี่ยจำนวนหนึ่งโดยคำนวณค่าเฉลี่ยของจำนวนรายการต่าง ๆ เช่นการใช้ความยาวที่แตกต่างกันสำหรับหน้าต่างเฉลี่ยที่เคลื่อนที่นี่คือสิ่งที่ฉันเข้าใจจากคำถามเดิมคุณมีชุดข้อมูล ของลำดับที่เก็บไว้อย่างต่อเนื่องในหน่วยความจำและคุณต้องการเฉลี่ยพวกเขาควบคู่ไปกับหน้าต่างเฉลี่ยค่าคงที่ของขนาด 2 RADIUS 1 นี่คือสิ่งที่รหัส ArrayFire เสนอโดย asm ไม่ - คุณยอมรับมันแทนการใช้ CUDA แรงขับฉันคิดว่า มันจะง่ายต่อการเขียนเคอร์เนล CUDA ของคุณเองเพื่อทำการดำเนินการด้านล่างนี้เป็นตัวอย่างทำงานได้อย่างสมบูรณ์แบบที่ดำเนินการเช่นเดียวกับรหัส ArrayFire ที่เสนอโดย asm ดังนั้นจึงครอบคลุมกรณีที่ 2 การแก้ไขเพื่อให้ครอบคลุมกรณีที่ 1 จะเป็นแบบ straightfo เมื่อคำนวณค่าเฉลี่ยเคลื่อนที่ที่ใช้โดยเฉลี่ยแล้วค่าเฉลี่ยในช่วงเวลากลางจะมีความสมเหตุสมผลในตัวอย่างก่อนหน้านี้เราคำนวณค่าเฉลี่ย 3 ครั้งแรก ระยะเวลาและวางไว้ข้างๆงวดที่ 3 เราสามารถวางค่าเฉลี่ยในช่วงกลางของช่วงเวลาสามช่วงคือถัดจากช่วงเวลา 2 นี่ทำงานได้ดีกับช่วงเวลาคี่ แต่ไม่ค่อยดีเท่าช่วงเวลาที่แน่นอน เราจะให้ค่าเฉลี่ยเคลื่อนที่เป็นอันดับแรกเมื่อ M 4. ทางเทคนิคค่า Moving Average จะลดลงที่ t 2 5, 3 5. เพื่อหลีกเลี่ยงปัญหานี้เราจะทำให้ MAs เรียบขึ้นโดยใช้ M 2 ดังนั้นเราจึงทำให้ค่าเรียบขึ้น จำนวนคำที่เราต้องเรียบค่าเรียบตารางต่อไปนี้แสดงผลการใช้ M 4

No comments:

Post a Comment