รวมตัวกรองเป็นเคอร์เนลเดียว
ลดการเปิดใช้และการรับส่งข้อมูลทั่วโลก
รวมตัวกรองเป็นเคอร์เนลเดียว เป็นบทเรียน CUDA Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน CUDA Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส CUDA Academy มีบทเรียนทั้งหมด 4 บทเรียน
เหตุใดจึงต้องรวมเคอร์เนล
การเรียกใช้เคอร์เนลห้าตัวหมายถึงการเรียกใช้ห้าครั้งและเดินทางไปกลับหน่วยความจำส่วนกลางห้าครั้ง การรวมตัวกรองไว้ในเคอร์เนลเดียวช่วยลดทั้งสองอย่างได้ และมักทำให้ทำงานเร็วขึ้นมาก 🚀
ต้นทุนการเรียกใช้สะสมขึ้นเรื่อย ๆ
การเรียกใช้เคอร์เนลแต่ละครั้งมีต้นทุนไม่กี่ไมโครวินาที สำหรับภาพขนาดเล็ก ต้นทุนการเรียกใช้คงที่นี้อาจมากกว่างานจริงหลายเท่า ดังนั้นการเรียกใช้น้อยครั้งลงจึงทำให้มีเวลาสำหรับงานที่เป็นประโยชน์มากขึ้น
การรับส่งข้อมูลส่วนกลางคือศัตรู
ขั้นตอนที่แยกจากกันจะเขียนพิกเซลลงหน่วยความจำส่วนกลาง แล้วอ่านกลับมาในทันที การรวมขั้นตอนไว้ด้วยกันทำให้ค่าดังกล่าวอยู่ในรีจิสเตอร์ จึงตัดการเดินทางไปกลับที่สูญเปล่าออกได้ทั้งหมด
โหลดหนึ่งครั้งต่อหนึ่งเธรด
ในเคอร์เนลที่รวมขั้นตอนแล้ว แต่ละเธรดจะอ่านพิกเซลของตนเพียงครั้งเดียว การโหลดครั้งนั้นจะป้อนข้อมูลให้ตัวกรองทุกตัวตามลำดับโดยไม่ต้องแตะหน่วยความจำส่วนกลางอีก
float v = input[idx];เชื่อมการดำเนินการในรีจิสเตอร์
ใช้ตัวกรองแต่ละตัวกับค่าที่มีอยู่แล้ว พิกเซลจะไหลผ่านการปรับความสว่าง แกมมา และคอนทราสต์ในรูปการคำนวณคณิตศาสตร์ธรรมดา โดยเก็บทั้งหมดไว้ในรีจิสเตอร์ความเร็วสูง
v = v * brightness;
v = powf(v, gamma);
v = (v - 0.5f) * contrast + 0.5f;เขียนเพียงครั้งเดียวเมื่อสิ้นสุด
หลังจากดำเนินการครบทั้งลำดับแล้ว ให้จัดเก็บผลลัพธ์สุดท้าย การจัดเก็บเพียงครั้งเดียวจะแทนที่การเขียนหลายครั้งที่เคอร์เนลแยกกันต้องทำ
output[idx] = v;รวมตัวกรองแบบจุดได้อย่างราบรื่น
ตัวกรองที่แตะต้องเพียงพิกเซลเดียวเรียกว่าแบบจุด และสามารถรวมได้โดยแทบไม่มีความยุ่งยาก การปรับความสว่าง แกมมา และสีเป็นการปรับที่รวมกันได้ง่ายที่สุด
ตัวกรองบริเวณข้างเคียงทำได้ยากกว่า
การเบลอจะอ่านพิกเซลใกล้เคียง ดังนั้นการรวมจึงต้องใช้ไทล์ในหน่วยความจำร่วม ไม่ใช่เพียงรีจิสเตอร์เท่านั้น รวมขั้นตอนแบบจุดได้อย่างอิสระ แต่ให้ดูแลสเตนซิลเป็นพิเศษ
ระวังความกดดันของรีจิสเตอร์
เคอร์เนลขนาดใหญ่ที่รวมหลายขั้นตอนใช้รีจิสเตอร์ต่อเธรดมากขึ้น หากใช้มากเกินไป ความหนาแน่นการทำงานจะลดลงหรือค่าจะถูกย้ายออกไปเก็บ ดังนั้นให้รวมอย่างเต็มที่แต่คอยดูต้นทุนไว้
ตรวจสอบหลังการรวม
การรวมจะจัดลำดับงานใหม่ ดังนั้นให้เปรียบเทียบผลลัพธ์ที่รวมแล้วกับเวอร์ชันที่แบ่งเป็นขั้นตอนเสมอ การหาความแตกต่างอย่างรวดเร็วจะยืนยันได้ว่าการคำนวณยังตรงกันก่อนที่คุณจะฉลอง
เคอร์เนลเดียว ตัวกรองหลายตัว
ผลลัพธ์คุ้มค่าอย่างแท้จริง: การเรียกใช้เพียงครั้งเดียวจะอ่าน แปลง และเขียนแต่ละพิกเซลเพียงครั้งเดียว นี่คือหัวใจของเคอร์เนลภาพแบบรวมที่ปรับแต่งมาเป็นอย่างดี
ตรวจสอบอย่างรวดเร็ว
คุณรวมตัวกรองแบบจุดสามตัวไว้ในเคอร์เนลเดียว ประโยชน์ด้านประสิทธิภาพหลักคืออะไร
สรุปทบทวน
คุณได้เรียนรู้การรวมตัวกรอง: โหลดครั้งเดียว เชื่อมการคำนวณแบบจุดในรีจิสเตอร์ และเขียนครั้งเดียว วิธีนี้ลดการเรียกใช้และการรับส่งข้อมูลส่วนกลาง แต่ต้องระวังความกดดันของรีจิสเตอร์และตรวจสอบผลลัพธ์ ✅
คำถามที่พบบ่อย
บทเรียน “รวมตัวกรองเป็นเคอร์เนลเดียว” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “รวมตัวกรองเป็นเคอร์เนลเดียว” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส CUDA Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส CUDA Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “รวมตัวกรองเป็นเคอร์เนลเดียว”
ลดการเปิดใช้และการรับส่งข้อมูลทั่วโลก คุณปฏิบัติ CUDA Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน CUDA Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน CUDA Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “รวมตัวกรองเป็นเคอร์เนลเดียว” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน CUDA Academy นี้ได้ไหม
ได้ บทเรียน CUDA Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ออกแบบไปป์ไลน์การประมวลผล
- รวมตัวกรองเป็นเคอร์เนลเดียว
- สตรีมไทล์สำหรับภาพขนาดใหญ่
- วิเคราะห์ ปรับให้เหมาะสม ส่งมอบ