PARALLEL.RU

Дискуссионный клуб по параллельным вычислениям
Текущее время: 12 дек 18 3:21

Часовой пояс: UTC + 4 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: СЛАУ для VisualStudio 2005
СообщениеДобавлено: 20 июн 06 19:16 
Не в сети

Зарегистрирован: 27 апр 03 18:47
Сообщения: 41
Откуда: НЦ ПЭ, Петербург
Коллеги!

Столкнулся с такой проблемой: пишется кроссплатформенное приложение на C++ для расчетов в электродинамике. Необходимо решать СЛАУ с комплексными коэффициентами. Для Linux библиотеки есть, все нормально. Для использования с MSVS2005 к удивлению подходящего компонента не нашлось.

Прошу подсказки: куда можно посмотреть...

ЗЫ: Нужны библиотеки с интерфейсом на C/C++


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 21 июн 06 6:07 
Не в сети

Зарегистрирован: 12 янв 06 11:26
Сообщения: 98
Откуда: Хабаровск, ВЦ ДВО РАН
Например, библиотеки mtl (http://www.osl.iu.edu/research/mtl/) или boost(http://www.boost.org/). Библиотек расчета СЛАУ очень много (параллельных тоже хватает) и они не зависят от используемого типа, если для него определены основные операции. Т.о. подключаешь заголовочный файл <complex.h> и вперед.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 21 июн 06 15:14 
Не в сети

Зарегистрирован: 27 апр 03 18:47
Сообщения: 41
Откуда: НЦ ПЭ, Петербург
Очень даже зависят, поскольку все оптимизированные библиотеки имеют частичную специализацию шаблонов. И специализация от complex<> есть далеко не везде.

MTL работает через cygwin. Собственно как и практически все другие библиотеки.

boost не имеет библиотек для решения матриц любого вида. Там есть только собственная вариация на тему BLAS, а он может решать только треугольные матрицы.

Согласен, библиотек огромное число, и в Linux я имею проблему выбора из множества вариантов (кстати, остановился на реализации ACML 3.1, к ней же идет родной быстрый ScaLAPACK). Но, как мы все знаем, Microsoft - отдельный мир, там все вроде и так, а вроде и не совсем.

А хочется найти именно готовую библиотеку, где люди уже решили проблемы производительности. В общем-то не проблема и самому запрограммировать, но очень не хочется повторять многократно пройденный другими путь.

Поиски продолжаются...
:( :cry:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 22 июн 06 13:00 
Не в сети

Зарегистрирован: 28 май 05 21:12
Сообщения: 217
Откуда: Москва
Vladimir Krivenko писал(а):
MTL работает через cygwin. Собственно как и практически все другие библиотеки.


MTL is written in ANSI C++ and can be compiled and used on any target platform with an ANSI C++ compiler. Currently, compilers known to work are KAI's C++ on various platforms, MIPSp ro 7.3 on SGI, Visual C++ 6.0 and Metrowerks CodeWarrior Pro 5 on NT, egcs-2.91.60 and gcc 2.95.x on various platforms. See FAQ for more information.

Я использую MTL уже около 5ти лет. В win (vc6, vc7, icc8) и в lin (RH9, FC3,4, RHEL3,4): gcc 3.2, 3.4, 4, icc8, icc9. Программы компилируются отлично и там и там. Cygwin тут совершенно ни причем.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 22 июн 06 15:13 
Не в сети

Зарегистрирован: 27 апр 03 18:47
Сообщения: 41
Откуда: НЦ ПЭ, Петербург
Я использова MTL под Линуксом - все замечательно работало.

Буквально вчера попробовал еще раз использовать в среде VS2005. Версия библиотеки последняя доступная для win с сайта проекта:

Код:
/* Name of package */
#define PACKAGE "mtl"

/* Version number of package */
#define VERSION "2.1.2-21"


Привожу последовательность действий и рассуждений.

1. Пишем содержимое каталога mtl/* в доступное место, прописываем пути, переносим пример из examples/lu_solve.cc. Предпринимаем попытку компилировать.

2. Получаем ошибку (первую среди многих)
Код:
Error   1   error C2977: 'std::reverse_iterator' : too many template arguments   d:\testzone\equationssolvers\libs\mtl-2.1.2-21\mtl\reverse_iter.h   44



3. Смотрим в этот файл:
Код:
#if STD_REVERSE_ITER
template <class Iter>
class reverse_iter : public std::reverse_iterator<Iter> {
   typedef std::reverse_iterator<Iter> super;
#else
template <class Iter>
class reverse_iter : public std::reverse_iterator<Iter,typename Iter::value_type,
                             typename Iter::reference, typename Iter::pointer> {
  typedef std::reverse_iterator<Iter, typename Iter::value_type,
     typename Iter::reference, typename Iter::pointer> super;
#endif

Очевидно, что выбор происходит в зависимости от параметра STD_REVERSE_ITER.

4. Он определен в файле mtl_config.h. Смотрим туда.

Код:
#if defined(_MSC_VER) && !defined(__MWERKS__)
#   if   ( _MSC_VER < 1300 )
#      define _MSVCPP_ _MSC_VER
#   else
#      define _MSVCPP7_ _MSC_VER
#   endif
#endif

/* Assuming that configure is not run for Visual C++ and
   Metrowerks Codewarrior, so the above macros are not
   yet defined.
  */


#if !defined ( _MSVCPP_ )
#define STD_REVERSE_ITER 1
#else
#define STD_REVERSE_ITER 0
#endif


_MSC_VER в VS2005 равно 1400. Поэтому _MSVCPP_ не определено и вроде бы STD_REVERSE_ITER должно быть равно 1.

Однако все идет не так :(
Проверяем:
Код:
#include <iostream>
#include "mtl/mtl_config.h"

void main(void)
{
std::cout   <<   "_MSC_VER="   <<   _MSC_VER   <<   std::endl;
std::cout   <<   "_MSVCPP_="   <<   _MSVCPP_   <<   std::endl;
std::cout   <<   "_MSVCPP7_="   <<   _MSVCPP7_   <<   std::endl;
std::cout   <<   "STD_REVERSE_ITER="   <<   STD_REVERSE_ITER   <<   std::endl;
};


Имеем результат:
Код:
_MSC_VER=1400
_MSVCPP_=1
_MSVCPP7_=1400
STD_REVERSE_ITER=0


То есть _MSVCPP все равно где-то определено, STD_REVERSE_ITER принимает совсем не то значение, на которое рассчитывают разработчики. И начинаются пляски в п.3.

VS - это совсем не то же самое, что и
Цитата:
any target platform with an ANSI C++ compiler


ЗЫ: А не отписать ли мне bug report...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: СЛАУ для VisualStudio 2005
СообщениеДобавлено: 8 ноя 14 15:57 
Не в сети

Зарегистрирован: 8 ноя 14 15:33
Сообщения: 1
Библиотека ScaLAPACK. Входит в Intel MKL. Можно взять фортрановские тексты на www.netlib.org и
скомпилировать ее.

_________________
www.solitairechamp.info


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: СЛАУ для VisualStudio 2005
СообщениеДобавлено: 11 авг 18 12:12 
Не в сети

Зарегистрирован: 11 авг 18 12:11
Сообщения: 1
Согласен, библиотек огромное число, и в Linux я имею проблему выбора из множества вариантов (кстати, остановился на реализации ACML 3.1, к ней же идет родной быстрый ScaLAPACK). Но, как мы все знаем, Microsoft - отдельный мир, там все вроде и так, а вроде и не совсем. ???

_________________
cover maker


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 4 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB