Clock Frequency มีผลอย่างมากกับประสิทธิภาพของการประมวลผล ยิ่งความถี่สูงก็ยิ่งทำให้ Processor สามารถ Execute คำสั่งได้เร็วขึ้น ใน CPU เราอาจจะทำคุ้นเคยกับการทำ Overclock เพื่อเพิ่ม Clock Frequency แต่ใน GPU ก็สามารถทำได้เช่นเดียวกัน ด้วยวิธีการดังต่อไปนี้
ตัวอย่างเครื่องที่ผมใช้จะเป็น K40 ทั้งหมด 2 ตัวนะครับ
ก่อนอื่นตรวจสอบดูก่อนว่าการ์ดของเรารองรับความถี่เท่าไหร่บ้าง เราสามารถปรับความถี่ได้แค่ที่มีอยู่ในรายการเท่านั้นนะครับ วิธีการเช็คความถี่ที่รองรับคือใช้คำสั่ง
nvidia-smi -q -d SUPPORTED_CLOCKS
เมื่อสั่งแล้วความถี่ที่สนับสนุนทั้งหมดจะขึ้นมาประมาณนี้
==============NVSMI LOG============== Timestamp : Wed Oct 31 10:07:38 2018 Driver Version : 410.57 Attached GPUs : 2 GPU 00000000:03:00.0 Supported Clocks Memory : 3004 MHz Graphics : 875 MHz Graphics : 810 MHz Graphics : 745 MHz Graphics : 666 MHz Memory : 324 MHz Graphics : 324 MHz GPU 00000000:83:00.0 Supported Clocks Memory : 3004 MHz Graphics : 875 MHz Graphics : 810 MHz Graphics : 745 MHz Graphics : 666 MHz Memory : 324 MHz Graphics : 324 MHz
ในที่นี้ผมมี GPU 2 ตัวก็จะขึ้นมาทั้งสองตัวเลย ที่นี่ Clock Frequency ของ GPU จะมีทั้งหมด 2 ค่า คือ Memory Clock กับ GPU Clock จากผลลัพท์ที่ได้ ก็หมายความว่าถ้าเราตั้ง Memory Clock เป็น 324 MHz จะสามารถตั้ง GPU Clock ได้เป็น 324 MHz เท่านั้น แต่ถ้าตั้ง Memory Clock เป็น 3004 MHz จะสามารถ กำหนด GPU Clock ได้เป็น 875, 810, 745 และ 666 MHz
หลังจากนี้เราจะมาดูว่า Clock ของการ์ดเราตอนนี้เป็นเท่าไหร่ ด้วยคำสั่ง
nvidia-smi -q -d CLOCK
ซึ่งจะแสดงผลลัพท์มาแบบนี้ (ผมตัดส่วนของการ์ดใบที่สองออกนะครับ เพราะมันยาว แถมยังเหมือนอันแรก)
==============NVSMI LOG============== Timestamp : Wed Oct 31 10:11:44 2018 Driver Version : 410.57 Attached GPUs : 2 GPU 00000000:03:00.0 Clocks Graphics : 324 MHz SM : 324 MHz Memory : 324 MHz Video : 405 MHz Applications Clocks Graphics : 745 MHz Memory : 3004 MHz Default Applications Clocks Graphics : 745 MHz Memory : 3004 MHz Max Clocks Graphics : 875 MHz SM : 875 MHz Memory : 3004 MHz Video : 540 MHz Max Customer Boost Clocks Graphics : N/A SM Clock Samples Duration : 1116.44 sec Number of Samples : 100 Max : 875 MHz Min : 324 MHz Avg : 340 MHz Memory Clock Samples Duration : 1116.45 sec Number of Samples : 100 Max : 3004 MHz Min : 324 MHz Avg : 416 MHz Clock Policy Auto Boost : N/A Auto Boost Default : N/A ...
ในส่วนของ Application Clocks จะบอกว่าตอนนี้การ์ดของเราตั้ง Clock ไว้ที่เท่าไหร่ ซึ่งก็คือ 745 MHz สำหรับ GPU และ 3004 MHz สำหรับ Memory ในส่วนของ Default Application Clocks จะบอกว่าค่าพื้นฐานของการ์ดนี้คือเท่าไหร่ ซึ่งเป็นค่าที่ควรจะเป็น เอาไว้อ้างอิงเวลาที่เราปรับไปปรับมาจนลืม Clock เริ่มต้นได้ครับ
ทีนี้เวลาที่เราจะตั้งค่า Clock Frequency ใหม่ก็ง่ายมาก เพียงแค่ใช้คำสั่ง
nvidia-smi -ac 3004,810
ตัวแรกตัวแรกคือ Memory Clock และตัวที่สองคือ GPU Clock เลขนี้จะต้องเป็นเลขที่ปรากฎตอนที่เราสั่งดู Supported Clock เท่านั้น ถ้าเอาเลขอื่นมามันจะไม่ยอมให้ตั้งนะครับ ถ้าสั่งแล้วเวิร์คมันจะขึ้นประมาณนี้ครับ
Applications clocks set to "(MEM 3004, SM 810)" for GPU 00000000:03:00.0 Applications clocks set to "(MEM 3004, SM 810)" for GPU 00000000:83:00.0 All done.
ทีนี้เราก็ใช้ได้อย่างสบายใจเหมือนเดิม โดยมี Clock Frequency ที่เพิ่มขึ้น แต่ข้อควรระวังคือการเพิ่ม Clock คือการเพิ่ม Heat และ Power เพราะงั้นมันจะกินไฟมากขึ้นและร้อนกว่าเดิม ซึ่งบางครั้งถ้ามันร้อนเกินไป หรือกินไฟเกิน GPU จะปรับค่ากลับมาที่ Based Clock เวลารันครับ
ทีนี้เรียนผูกก็ต้องเรียนแก้ วิธีปรับให้กลับมาเป็น Based Clock เหมือนเดิมก็สามารถใช้คำสั่ง
nvidia-smi -rac
ได้เลยครับ ไม่ต้องไปจำ Clock เดิมให้ยุ่งยาก
หมายเหตุ คำสั่ง nvidia-smi ทุกคำสั่งที่ผ่านมา ถ้าเราไม่ได้กำหนดอะไรเป็นพิเศษจะหมายถึงทำงานกับการ์ดทั้งหมดในเครื่อง เช่น Query จะโชว์ข้อมูลทั้งสองเครื่อง หรือคำสั่งปรับ Clock ก็จะแก้ Clock ทั้งสองเครื่องเลย ถ้าเราต้องการทำงานกับการ์ดใบใดใบหนึ่งก็เพิ่ม flag -i <card_id> เข้าไปได้เลยครับ (เลขรันตั้งแต่ 0 ถึง จำนวนการ์ด -1)
เช่น ถ้าจะเช็ค Clock ของการ์ดใบแรกก็ใช้เป็น
nvidia-smi -q -i 0 -d CLOCK
หรือถ้าจะปรับ Clock เฉพาะการ์ดใบแรกก็เป็น
nvidia-smi -i 0 -ac 3004,810
Taxonomy upgrade extras:
- remixman's blog
- Log in to post comments