воскресенье, 26 июля 2009 г.

Tycoon && parallel programming

Я такой глупый, что все время думаю. ДР. К текущему моменту все мои параллельные программы можно перечитать по пальцам одной руки среднестатистического человеке (не более 4.99). Причем в примерное в двух практически никакой синхронизации (тупо в несколько потоков, ждем результат). А в одной была 2 критические секции, но там тоже тупо lock на чтение/запись из одной структуры. Если коротко, то в параллельном программировании, я - O(1) (не то что бы абсолютный нуль, но около). А еще есть такая игрушка как TTD (Transport Tycoon Deluxe), экономическая, строительная, транспортная логистика. Для авто-, авиа-, и морского транспорта там все тривиально. А вот для ж/д все намного интереснее. Есть у меня станция с 11 поездами, реально 7 из них идут по одному общему направлению (остальные 2 + 2 с этими пересекаются только в стоке). Нормально пустить 7 поездов у меня не хватает мозга. Локи все равно случаются (не критический, там поезда так устроены, что после долгого ожидания он разворачивается). Такое ощущение, что сложность TTD и сложность параллельного программирования одного порядка. Закон Амдала тоже выполняется :) . Распараллелить можно, но доказать корректность ну очень сложно. Интуитивно эффективно распараллелить то же сложно. Критические секции, локи, семафоры, ... даже сложно сказать к чему это относится. В ПП некоторые вещи можно пустить на произвольное число потоков, в TTD же добавить еще один поток бывает невозможно (есть еще подзадача визуализации графа), пустить еще маршрут бывает просто негде. Так что TTD может и сложнее ПП. Последовательные задачи становятся скушными и тривиальными, когда придет параллелизм пока не понятно. И придет ли он вообще? Разговаривал как-то с людьми, которые занимаются ПП. Правда они больше математики, чем cs-ники (с вытекающими пробелами в теории сложности). Они показывали результаты, в которых для задачи с последовательным и очевидным алгоритмом за O(n^3) они придумали параллельный с четвертой степенью. В чем фишка я не понял (ну и что, что он параллельный?)

Комментариев нет: