Beschreibung | Wie bei V_initMT beschrieben, ist es auf Rechnern mit vielen Prozessor-Kernen (etwa ab 8 oder 16) u.U. sinnvoll, die Zahl der von jeder einzelnen OptiVec-Funktion beanspruchbaren Threads zu begrenzen. Dies gilt vor allem, wenn eine Anwendung selbst mehrere Arbeits-Threads generiert und aus allen oder mehreren von ihnen OptiVec-Funktionen aufgerufen werden. Im Interesse einer optimalen Ausnutzung der Prozessor-Kapazitäten sollte in einer solchen Situation durch Aufruf von V_limitThreadsPerFunc die Zahl der Threads festgelegt werden, die jeder Aufruf einer OptiVec-Funktion maximal für sich beanspruchen darf. Es empfiehlt sich allerdings, relativ großzügig zu sein. Bei 16 Kernen und vier Anwendungs-Threads etwa sollte man den OptiVec-Funktionen nicht nur 16/4=4, sondern lieber 8 Threads erlauben. Das Betriebssystem wird sich dann um das optimale Scheduling aller Threads kümmern.
V_limitThreadsPerFunc sollte unmittelbar nach V_initMT aufgerufen werden. Der so eingestellte Wert gilt für sämtliche Aufrufe von OptiVec-Funktionen aus allen Threads der Anwendung. Er kann zwar prinzipiell durch erneuten Aufruf von V_limitThreadsPerFunc modifiziert werden. Da V_limitThreadsPerFunc aber nicht fiber-sicher ist, wäre es jeweils dem Zufall überlassen, für welchen Funktionsaufruf bereits der "neue" und für welchen noch der "alte" Wert Anwendung findet.
|