จะให้งาน xgsubmit อื่น ๆ แชร์ cpus กับงานสร้าง Visual Studio ได้อย่างไร

ฉันสามารถใช้ Incredibuild เป็นแพ็คเกจส่วนขยาย Visual Studio เพื่อสร้างโค้ดของฉันโดยใช้ CPU จำนวนมาก

นอกจากนี้ฉันสามารถใช้คำสั่ง xgconsole msbuild ... ได้

แต่ถ้าฉันต้องการเพิ่มงานอื่นพร้อมกับ vc build ในเวลาเดียวกัน ดังนั้นฉันจึงลองด้วยวิธีบางอย่าง:

  1. ใช้แบตช์ config.bat:

    xgSubmit /command task1
    xgSubmit /command task2
    msbuild  ***.sln /t:rebuild
    

จากนั้นใช้คำสั่ง

xgConsole /command="config.bat" /profile=pro.xml

pro.xml ของฉันเป็นดังนี้:

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<Profile FormatVersion="1">
<Tools>
    <Tool Filename="MSBuild" AllowIntercept="true" />
    <Tool Filename="Tracker" AllowIntercept="true" />
    <Tool Filename="CL" AllowIntercept="true" />
    <Tool Filename="Tracker" AllowRemote="true" />
    <Tool Filename="CL" AllowRemote="false" />
</Tools>
</Profile>

แต่ปัญหาคือ กระบวนการติดตามสร้างกระบวนการ cl จากนั้นกระบวนการ cl ก็สร้างกระบวนการ cl อื่นๆ มากมาย ดังนั้นฉันจึงตั้งค่า cl เป็น AllowIntercept และ AllowRemote ในไฟล์กำหนดค่า xml แต่ด้วยการกำหนดค่า xml นี้ xgconsole ไม่สามารถส่งกระบวนการ cl ไปยังซีพียูอื่นได้ เพียงแค่รายงานข้อผิดพลาด

  1. ดังนั้นฉันจึงลองวิธีอื่น: ฉันเปลี่ยนชื่อ Visual Studio cl.exe เป็น clChild.exe และสำรองข้อมูลอีกอันหนึ่งโดยตั้งชื่อว่า clorigin.exe

จากนั้นฉันก็ออกแบบ cl.exe ของตัวเอง ใน cl.exe ของฉันเอง ฉันตรวจสอบว่าหากกระบวนการหลักคือ tracker.exe จากนั้นฉันจะเริ่ม clorigin.exe และโอนคำสั่ง para ไปที่กระบวนการนั้น จากนั้นรอให้ clorigin.exe สิ้นสุด หากกระบวนการหลักคือ cl.exe ฉันจะเริ่ม clchild.exe

แต่วิธีนี้ก็ไม่มีประโยชน์เช่นกัน พูดง่ายๆ ก็คือคุณสามารถคิดว่ามันไม่มีประโยชน์

ดังนั้นฉันคิดว่าบางทีฉันไม่ควรเริ่ม clorigin.exe โดย StartProcess API ซึ่งเพิ่งเริ่มกระบวนการอื่น บางทีฉันควรทำเป็น execute api ในยูนิกซ์ เมื่อเริ่มกระบวนการลูก ในตัวจัดการงาน มันสามารถเห็นกระบวนการหลัก ซึ่งหมายความว่าเพียงกระบวนการหลักเท่านั้นที่จะเสร็จสิ้นงานของ exe อื่น แต่ไม่ได้สร้างรหัสกระบวนการใหม่ ?

บางทีสิ่งที่ฉันคิดว่าอาจเป็นไปในทางที่ผิด แต่จะปล่อยให้งานอื่นแบ่งปันและส่งไปยัง cpus จำนวนมากด้วยงานคอมไพล์ Visual Studio ในเวลาเดียวกันได้อย่างไร




คำตอบ (1)


การใช้ปลั๊กอิน IncrediBuild Visual Studio (หรือคำสั่ง BuildConsole) เป็นวิธีที่ง่ายที่สุดและปรับให้เหมาะสมที่สุด (ประสิทธิภาพที่ชาญฉลาด) ในการรันโซลูชันของคุณโดยใช้ IncrediBuild หากคุณต้องการดำเนินการบิลด์ของคุณโดยใช้โปรไฟล์ที่คุณกำหนดเอง profile.xml ของคุณควรมีลักษณะดังนี้ (โปรดทราบว่าไม่ควรกล่าวถึง Tracker ในโปรไฟล์):

<?xml version="1.0" encoding="UTF-8" standalone="no" ?> <Profile FormatVersion="1"> <Tools> <Tool Filename="MSBuild" AllowIntercept="true" /> <Tool Filename="cl" AllowRemote="True" DeriveCaptionFrom="lastparam" VCCompiler="True" VCCompilerUnbatch="True" /> <Tool Filename="link" AllowRemote="false" DeriveCaptionFrom="firstparam" VCLinker="True" MonitorFileChanges="true" />

</Tools> </Profile>

(ผู้เขียนทำงานใน IncrediBuild)

person Dori    schedule 05.04.2015