Пригодность C # для кластерных приложений с большими объемами вычислений? - PullRequest
2 голосов
/ 22 июня 2010

Я готовлюсь написать пакет фотонного моделирования, который будет работать на 128-узловом кластере Linux и Windows, с клиентом на базе Windows для разработки заданий (подобных CAD) и отправки их в кластер. *

В большинстве случаев это хорошо проработано, но мне любопытно, как C # укладывается в C ++ с точки зрения реальной способности к сокращению чисел. Мне очень комфортно с обоими языками, но я считаю превосходную объектную модель и поддержку фреймворка C # с .NET или Mono невероятно заманчивыми. Тем не менее, я не могу, с этим приложением, пожертвовать слишком большой вычислительной мощностью ради предпочтений разработчика.

У кого-нибудь есть опыт в этой области? Существуют ли какие-либо жесткие ориентиры? Я бы предположил, что окончательный машинный код будет оптимизирован с использованием тех же методов, независимо от того, исходит ли он из источника C # или C ++, тем более что это обычно происходит на уровне pcode / IL.

Ответы [ 3 ]

2 голосов
/ 22 июня 2010

Методы оптимизации, используемые C # и нативным C ++, сильно различаются. Компиляторы C # испускают IL, который лишь незначительно оптимизируется, а затем JIT-кодируется в двоичный код, когда он собирается выполнить в первый раз. Большая часть работы по оптимизации происходит внутри JIT-компилятора.

Это имеет свои плюсы и минусы. У JIT есть временные бюджеты, которые ограничивают то, сколько усилий он может потратить на оптимизацию. Но у него также есть глубокие знания об оборудовании, на котором он фактически работает, поэтому он (теоретически) может прозрачно использовать новые коды операций ЦП и детально знать данные о производительности, такие как база данных об опасностях конвейера.

На практике я не знаю, насколько значительным является последнее. Я знаю, что, по крайней мере, Mono автоматически распараллелит некоторые циклы, если обнаружит, что работает на ЦП с SSE (возможно, SSE2), что может иметь большое значение для вашего сценария.

1 голос
1 голос
/ 22 июня 2010

Я сделал быстрый поиск и нашел это:

http://www.drdobbs.com/184401976;jsessionid=232QX0GU3C3KXQE1GHOSKH4ATMY32JVN

Редактировать: Помните (при прочтении статьи), что это было сделано 5 лет назад, поэтому производительность, скорее всего, будетбудь лучше со всех сторон!

...