2015-01-02 2 views
6

私は熱と電流の発生の最も極端な条件のために組み込みコンピュータをテストしなければなりません。そうするためには、できるだけ多くのCPUリソースをコアCPU(コアあたり1つのスレッド)。 非常に CPUが空いていることを示唆することはできますか?最大のCPU負荷をシミュレートする最も簡単な方法は?

ARMv7のLinuxではこれを行う必要があります。その言語はCまたはC++です。私が見つけた他の例は、Windowsの場合とC/C++の場合のいずれかです。

(i7のクアッドコアコアあたり2スレッドである)私は私のWindowsコンピュータ上でこのような何かをしようとしていますし、それが総CPUパワーの12%を取るようどうやらそれが働いている:

float x = 1.5f; 
while (1) 
{ 
    x *= sin(x)/atan(x) * tanh(x) * sqrt(x); 
} 

Iドンそれをマルチスレッドにする方法は分かっていません。

+0

cとC++タグを混用しないでください。それらの1つを選んでください。 –

+1

Linuxでは、このようなプロセスのいくつかをforkすることができます。おそらくあなたのシェルのバックグラウンドで起動するように。しかし、多くのLinuxディストリビューションは 'cpuburn'を持っています。 –

答えて

4

コードはシリアルです。使用可能なスレッドは8つあります(コアあたり4コア* 2スレッド= 8スレッド)。現在のコードでは、CPUの1 thread/8 available = 12.5%に現在のコードが使用されています。あなた自身のコードを書く必要がある場合(他の人が既に提案しているような既存の集中コードは使用しないでください)、をwhileループの上に置き、-fopenmpフラグでコンパイルすることをお勧めします(そうでない場合、MinGWを使用していると仮定します)。 、正確なオプションは異なる可能性があります)ので、代わりに使用可能なスレッドをすべて使用してください。

+1

うわー!なぜ私はOpenMPを考えなかったのですか?MSVC2013で/ openmpを使ってこのコードをコンパイルしたとき、即座に私のi7の100%を使用しました。私はこれがLinuxでもうまくいくと思います...今すぐ試してみましょう。 –

+0

@MarkMiles:環境変数 'OMP_MAX_NUM_THREADS'をマシン上で利用可能なスレッドの最大数よりも少なく変更していない限り、実際にはLinuxでもうまくいくはずです。 – wolfPack88

+1

実際には動作します。ありがとう! –

0

あなた自身のプログラムでなければならないのですか? raytracerやBitcoinのような多くのサイクルを燃やしている既存のコードを取って、それらのいくつかを実行することができます。

+0

私は「最も簡単な」方法を探していました。複雑な数学関数はこのトリックを行うべきですが、マルチコアCPUのすべての利用可能なコアで実行することが重要です。 –

+0

新しいコードを書くより簡単に既存のコードサウンドを使用する方が簡単です。 4つのプロセスを実行することは、すべての4つのコアに仕事を与えることが私が考えることができる最も簡単なことです。 –

2

"最大CPU負荷"という意味に少し依存します。

CPU使用率に関しては、基本的に何かが効きます。 CPUにコアがあるものと同じ数のスレッド(または実行可能ファイルのインスタンス)が必要になることを覚えておいてください。

ただし、CPU使用量はSoCの電力使用の完全ではなく、最終的なものではないことに留意する必要があります。あなたが念頭に置いておく必要がある他の側面は以下を含みます:

  • メモリアクセス。現在使用しているアプリケーションはメモリに全く触れていません。などフラッシュ・コントローラ、SPI/I2C/UARTドライバ、など

  • 他のオンダイの周辺機器、

  • GPU、あなたのSoCは1が含まれている場合。 (これは私がこれまで述べてきた他のすべての電力使用を容易にはしません!)

  • オフダイ周辺機器:フラッシュ、メモリ、ディスプレイ、バッテリーチャージャー

+0

これは間違いありませんが、このSoCの最終的なアプリケーションは主にCPUを使用し、残りのすべてを使用するわけではないため、CPUだけを述べました。 OSがGUIレスであるため、GPUはまったく動作しません。ディスクは起動時にのみ使用されます。メモリおよび他のコントローラにはマイナーな使い方があります。最終的なアプリケーションは、プログラムが主に数学演算を行い、その結果をUSBシリアルデバイスに書き込むので、CPUの多くを使用します。 –

関連する問題