如何使用任务集为具有参数的程序的多个实例分配cpu内核

问题描述

我试图在6核心机器上运行7models_test实例。 为此,我正在使用以下脚本。 任务编号7在计算方面是最苛刻的。

 #!/bin/bash ./models_test tfidf.db output/ input/ 1 10 & ./models_test tfidf.db output/ input/ 11 20 & ./models_test tfidf.db output/ input/ 21 30 & ./models_test tfidf.db output/ input/ 31 40 & ./models_test tfidf.db output/ input/ 41 50 & ./models_test tfidf.db output/ input/ 51 60 & ./models_test tfidf.db output/ input/ 61 70 

./models_test需要5个参数:

  1. 数据库
  2. 输出path
  3. inputpath
  4. ID 1
  5. ID 2

包括taskset

我想通过使用taskset命令来运行相同的7个实例,如下所示:

 #!/bin/bash # Cpus are identified by `{0, 1, 2, 3, 4, 5}` taskset -c 0 ./models_test tfidf.db output/ input/ 1 10 & taskset -c 1 ./models_test tfidf.db output/ input/ 11 20 & taskset -c 2 ./models_test tfidf.db output/ input/ 21 30 & taskset -c 3 ./models_test tfidf.db output/ input/ 31 40 & taskset -c 3 ./models_test tfidf.db output/ input/ 41 50 & taskset -c 4 ./models_test tfidf.db output/ input/ 51 60 & taskset -c 5 ./models_test tfidf.db output/ input/ 61 70 

问题

  • 我是否在taskset正确地完成taskset工作,将6个任务分成6个核心?
  • 第一个脚本会在6个内核上自动分配7个任务吗?

我经常遇到类似的问题。 而不是使用taskset我使用nice:

 parallel --nice 11 ./models_test tfidf.db output/ input/ {} '{= $_+=9 =}' ::: {1..60..10} & ./models_test tfidf.db output/ input/ 61 70 wait