質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

2回答

1213閲覧

[C言語]CPUの別のコアを明示的に使う方法

HoriemonHack

総合スコア54

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

1グッド

1クリップ

投稿2022/06/05 07:00

ARMのCPUで

A57コア×複数枚
A53コア×複数枚

が搭載されている場合、

A53のみを使用するように、C言語のプログラムを実行したい場合、どのような準備や手続きが必要でしょうか?

(もしかして、C言語のソースだけじゃだめですか?)

マルチスレッドのプログラムを動かして、CPUリソースを測定しましたが、どうもA57しか使っていないように見受けられます。

そもそもコアをどうやって指定するのか、など全く検討がつかないため、手順をご教授いただければ幸いです。

int32_t👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

melian

2022/06/05 07:21

ARM 版 Linux で提供されているかどうか判りませんが、taskset というコマンドがあって、これを利用して特定の論理CPUにプロセスを割り当てることができます。
thkana

2022/06/05 08:03

> もしかして、C言語のソースだけじゃだめですか? だめです。C言語の範囲には、マルチスレッド/マルチプロセッサの制御は含まれません。 OS等で用意されているソレ用のライブラリを適切に制御する、という話になりますから、例えばOSの仕様やAPI仕様を調べることになります。Aという環境とBという環境では手順が違うということにもなりますから、当然、他人に聞くならあなたの環境をちゃんと説明する必要があります。
guest

回答2

0

プロセスやスレッドをどのCPUで動かすかの指定をafiinityと言いますので、そのキーワードで調べてください。
(そういうコードを書いたこと無いので、具体的なアドバイスは出来ません)
各論理CPUに1bit割り当てられています。例えば afiinity maskが3だと、ビット0とビット1がオンなので、論理CPU0と論理CPU1でだけ動きます。論理CPU2や論理CPU3が存在してもそこにスケジュールされることは無いです。
デフォルトは当然、論理CPUの数だけ1が並んだ数(全論理CPUにスケジュール可能)です。

このあたりの関数やコマンドを使うはず。

text

1$ man -k affinity 2pthread_attr_getaffinity_np (3) - set/get CPU affinity attribute in thread at... 3pthread_attr_setaffinity_np (3) - set/get CPU affinity attribute in thread at... 4pthread_getaffinity_np (3) - set/get CPU affinity of a thread 5pthread_setaffinity_np (3) - set/get CPU affinity of a thread 6sched_getaffinity (2) - set and get a thread's CPU affinity mask 7sched_setaffinity (2) - set and get a thread's CPU affinity mask 8taskset (1) - set or retrieve a process's CPU affinity

投稿2022/06/05 07:36

otn

総合スコア84491

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

プロセスがどの CPU に割り当てられるかは OS によるスケジューリング次第であり、それに干渉する方法は各 OS の機能によります。

たとえば Linux であれば taskset コマンドを用いてプロセスと CPU の対応付けを指定することができ、ご自分のプログラムで同等のことをやりたい場合には sched_setaffinity などのシステムコールを用いることになるでしょう。

Windows であればタスクマネージャから指定することが出来て、プログラムから指示する場合は SetThreadAffinityMask API で可能なようです。

投稿2022/06/05 07:18

SaitoAtsushi

総合スコア5444

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問