C# 如何安排作业在FPU/AVX上运行?
.NET线程池使用映射到逻辑核心的线程。反过来,在具有HT的机器上,这意味着为每个处理器核心调度两个HTs 是否有一个线程池,其中的线程是通过与物理内核的关联而不是HTs创建的C# 如何安排作业在FPU/AVX上运行?,c#,.net,f#,threadpool,windows-server-2008-r2,C#,.net,F#,Threadpool,Windows Server 2008 R2,.NET线程池使用映射到逻辑核心的线程。反过来,在具有HT的机器上,这意味着为每个处理器核心调度两个HTs 是否有一个线程池,其中的线程是通过与物理内核的关联而不是HTs创建的 这是为了避免在CPU上运行的浮点型应用程序中出现额外的争用。开发人员只需使用自定义调度程序,就可以运行任务,每个FPU/AVX单元运行一个任务。如果这确实是一个问题,为什么不在bios中禁用HT?因为工作负载会发生变化。有时,它是整数密集型的,HT带来的速度几乎是它的两倍。(另一个评论可能是使用GPU。)我的下一个问题是
这是为了避免在CPU上运行的浮点型应用程序中出现额外的争用。开发人员只需使用自定义调度程序,就可以运行任务,每个FPU/AVX单元运行一个任务。如果这确实是一个问题,为什么不在bios中禁用HT?因为工作负载会发生变化。有时,它是整数密集型的,HT带来的速度几乎是它的两倍。(另一个评论可能是使用GPU。)我的下一个问题是:如果你禁用HT,它能在多大程度上改进你的应用程序。2倍是理论上的,还是你直接用你的代码来衡量的?我在这里为最后10%而奋斗。这并不是一个惊人的进步,但确实有一点帮助。另一件事是,如果你的应用程序是FP重的,不要用C。您应该使用C或C++和英特尔编译器来获得更好的性能。