Skip to main content
Solved

なぜ最適化中のCPU使用率がシングルスレッドしか使っていないように見えるのか。

  • July 27, 2021
  • 1 reply
  • 346 views

Takashi Matsumoto
Fully Spectral
Forum|alt.badge.img+1

OpticStudio では、最適化プロセスにおいてもマルチスレッドを利用することになっているとのことですが、最適化がシングルスレッドプロセスとして実行されているように見えます。なぜですか。また、設定を変更してマルチスレッドを利用するようにできませんか。

Best answer by Takashi Matsumoto

Zemax OpticStudio は、ユーザーのコンピューターのすべてのCPUを活用するように設計されており、ユーザーが設定を変更することはできません。

最適化中も含め、特定の計算で起動するスレッドの最適な数が自動的に決定するという、システムを可能な限り効率的に設計および最適化できるようにするための仕様です。

 

同様に、OpticStudio は最適化中にマルチスレッドをサポートしますが、これは、コンピューター上のすべてのコアが最適化プロセス中に常に使用されることを意味するわけではありません。

減衰最小二乗アルゴリズムを使用した最適化中に、各システム変数の変化に対する光学システムの応答を評価するときには、すべてのスレッドが使用されます。

この応答関数は、解空間での評価関数の勾配を評価するために使用され、OpticStudioが最適化の「次のステップ」を実行できるようにします。

ただし、「次のステップ」を決定する重要な部分には、行列式の計算が含まれ、この計算をスレッド化することはできません。

システムの複雑さと定義された変数の数によっては、このシングルスレッド計算に無視できない時間がかかる場合があります。

 

さらに多くの場合、システムの最適化におけるより重要な効果は光学システムを更新する必要があり、その「次のステップ」が実行された後に評価関数を評価する必要があることです。

評価関数の任意の1つのオペランドに対しては、複数の CPU を使用して計算できますが、評価関数の各オペランドは現在のところ順番に評価されます。

つまり、評価関数の評価を並行して(または「スレッド化」して)行うことはできません。1つの CPU を使用してオペランド n を評価し、別の CPU が同時にオペランド n +1 を評価することはありません。

一部の評価関数オペランド (OPGT、OPLTなど) やユーザー評価関数オペランドには、ほかのオペランドの依存関係が存在する可能性があるためです。

これが、最適化中に CPU 使用率が断続的に100% ではなくシングルスレッドしか使わないように見える理由です。
 

View original
Did this topic help you find an answer to your question?

1 reply

Takashi Matsumoto
Fully Spectral
Forum|alt.badge.img+1

Zemax OpticStudio は、ユーザーのコンピューターのすべてのCPUを活用するように設計されており、ユーザーが設定を変更することはできません。

最適化中も含め、特定の計算で起動するスレッドの最適な数が自動的に決定するという、システムを可能な限り効率的に設計および最適化できるようにするための仕様です。

 

同様に、OpticStudio は最適化中にマルチスレッドをサポートしますが、これは、コンピューター上のすべてのコアが最適化プロセス中に常に使用されることを意味するわけではありません。

減衰最小二乗アルゴリズムを使用した最適化中に、各システム変数の変化に対する光学システムの応答を評価するときには、すべてのスレッドが使用されます。

この応答関数は、解空間での評価関数の勾配を評価するために使用され、OpticStudioが最適化の「次のステップ」を実行できるようにします。

ただし、「次のステップ」を決定する重要な部分には、行列式の計算が含まれ、この計算をスレッド化することはできません。

システムの複雑さと定義された変数の数によっては、このシングルスレッド計算に無視できない時間がかかる場合があります。

 

さらに多くの場合、システムの最適化におけるより重要な効果は光学システムを更新する必要があり、その「次のステップ」が実行された後に評価関数を評価する必要があることです。

評価関数の任意の1つのオペランドに対しては、複数の CPU を使用して計算できますが、評価関数の各オペランドは現在のところ順番に評価されます。

つまり、評価関数の評価を並行して(または「スレッド化」して)行うことはできません。1つの CPU を使用してオペランド n を評価し、別の CPU が同時にオペランド n +1 を評価することはありません。

一部の評価関数オペランド (OPGT、OPLTなど) やユーザー評価関数オペランドには、ほかのオペランドの依存関係が存在する可能性があるためです。

これが、最適化中に CPU 使用率が断続的に100% ではなくシングルスレッドしか使わないように見える理由です。
 


Reply


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings