Я студент аэрокосмического машиностроения, и я работаю над старшим проектом capstone. Одна из математических моделей, которые я разрабатываю, требует астрономического количества генерируемых данных от XFOIL, популярного аэрокосмического инструмента, используемого для определения коэффициентов подъема и сопротивления на аэродинамических профилях. (Но я отвлекаюсь.)
Вырезать преследование: у меня есть Perl script, который много раз вызывает XFOIL с разными входными параметрами для генерации необходимых мне данных. Мне нужно, чтобы XFOIL запускался 5600 раз, и, поскольку он стоит прямо сейчас, он занимает около 100 секунд в среднем за каждый ход. Выполняя математику, это означает, что потребуется около 6,5 дней.
Теперь у меня есть четырехъядерная машина, но мой опыт как программиста ограничен, и я действительно знаю только, как использовать базовый Perl. Я хотел бы запускать 4 экземпляра XFOIL за раз, все на своем собственном ядре. Что-то вроде этого:
while (1){
for (i = 1..4){
if (! exists XFOIL_instance(i)){
start_new_XFOIL_instance(i, input_parameter_list);
}
}
}
Итак, программа проверяет (или предпочитает спать до тех пор, пока экземпляр XFOIL не пробудит ее, чтобы запустить новый экземпляр), если в каждом ядре работает XFOIL. Если нет, предыдущий экземпляр вышел, и мы можем запустить новый экземпляр с новым списком входных параметров.
Если кто-нибудь знает, как это может быть достигнуто, пожалуйста, дайте мне знать. Это значительно ускорит время, необходимое мне для создания данных, и позволит мне работать над самим аэрокосмическим проектом.
Спасибо за помощь!