Добрый день.
Возникла необходимость использовать Blitz++ в Windows. Под *nix всё замечательно, configure — make и libblitz у нас в кармане Теперь потребовалось подключить в /трепетно/ Виндовс!
Для реализации этой идейки добыл Dev-Cpp, но как с его помощью запустить ./configure — не представляю. Есть у Blitz++ еще решение для VS, но под 2008-й оно не компилится
Отсюда вопрос: как скомпилить Blitz++ по Windows или где взять готовую либу под нее же( запрос "libblitz под winows" ничего путного не дал)?
Здравствуйте, Shamrik, Вы писали:
S>Добрый день. S>Возникла необходимость использовать Blitz++ в Windows. Под *nix всё замечательно, configure — make и libblitz у нас в кармане Теперь потребовалось подключить в /трепетно/ Виндовс! S>Для реализации этой идейки добыл Dev-Cpp, но как с его помощью запустить ./configure — не представляю. Есть у Blitz++ еще решение для VS, но под 2008-й оно не компилится S>Отсюда вопрос: как скомпилить Blitz++ по Windows или где взять готовую либу под нее же( запрос "libblitz под winows" ничего путного не дал)?
1) Что в либе требует компиляции? Вроде там 90% всего и 100% нужно в хедерах
2) Cmake натравил на нее уже?
Здравствуйте, denisko, Вы писали:
D>1) Что в либе требует компиляции? Вроде там 90% всего и 100% нужно в хедерах D>2) Cmake натравил на нее уже?
Спасибо за ответ!
1) Пробовал скомпилить "как есть", сразу пошла ругань на ...blitz/apple/bzconfig.h: No such file or directory. В принципе, ожидаемо, ибо configure не запускался( я всё ещё не представляю, как )
2) Cmake ждет увидеть CMakeLists.txt, а оного нет в дистрибутиве. Или я что-то не так понял?
Здравствуйте, Shamrik, Вы писали:
S>Добрый день. S>Возникла необходимость использовать Blitz++ в Windows. Под *nix всё замечательно, configure — make и libblitz у нас в кармане Теперь потребовалось подключить в /трепетно/ Виндовс! S>Для реализации этой идейки добыл Dev-Cpp, но как с его помощью запустить ./configure — не представляю. Есть у Blitz++ еще решение для VS, но под 2008-й оно не компилится S>Отсюда вопрос: как скомпилить Blitz++ по Windows или где взять готовую либу под нее же( запрос "libblitz под winows" ничего путного не дал)?
На VS 2005 у меня проходила компиляция полностью, с ворингами, но без ошибок
Здравствуйте, minorlogic, Вы писали:
M>Лучшее что могу посоветовать это выкинуть Blitz и использовать boost::numeric::ublas. M>Но если много кода уже есть под Blitz тогда все должно компилиться с хидеров. поправить ручками инклюды.
Спасибо за ответ.
Нет, кода на Blitz пока нет, просто у него очень хорошая поддержка работы с N-мерными массивами, в частности, операция A(1,2,all,4) плюс неплохая шустрая арифметика. Спасибо за предложение, внимательнейшим образом выясню, что умеет boost. И надо будет сравнить быстродействие boost и Blitz в работе с матрицами.
Здравствуйте, Shamrik, Вы писали:
S>Здравствуйте, minorlogic, Вы писали:
M>>Лучшее что могу посоветовать это выкинуть Blitz и использовать boost::numeric::ublas. M>>Но если много кода уже есть под Blitz тогда все должно компилиться с хидеров. поправить ручками инклюды.
S>Спасибо за ответ. S>Нет, кода на Blitz пока нет, просто у него очень хорошая поддержка работы с N-мерными массивами, в частности, операция A(1,2,all,4) плюс неплохая шустрая арифметика. Спасибо за предложение, внимательнейшим образом выясню, что умеет boost. И надо будет сравнить быстродействие boost и Blitz в работе с матрицами.
К сожалению бустовый не умеет работать с N-мерными массивами. НО по любому лучше поискать альтернативу Blitz.
быстродействие boost может быть выше Blitz на порядок в работе с матрицами.
M>К сожалению бустовый не умеет работать с N-мерными массивами. НО по любому лучше поискать альтернативу Blitz.
M>быстродействие boost может быть выше Blitz на порядок в работе с матрицами.
за счет чего буст будет быстрее? "потому что буст"?
M>>К сожалению бустовый не умеет работать с N-мерными массивами. НО по любому лучше поискать альтернативу Blitz.
M>>быстродействие boost может быть выше Blitz на порядок в работе с матрицами.
uhh>за счет чего буст будет быстрее? "потому что буст"?
Здравствуйте, Shamrik, Вы писали:
S>Для реализации этой идейки добыл Dev-Cpp, но как с его помощью запустить ./configure — не представляю. Есть у Blitz++ еще решение для VS, но под 2008-й оно не компилится
Большое спасибо всем за ответы и советы! Компиляция под MSYS и CygWin проходит нормально, примеры компилятся и запускаются. Полное ощущение, что работает в нормальном Линуксе
Компиляция под VS — исключительно мой косяк: архив Blitz-VS.NET.zip был развернут не в папку Blitz, из-за чего (как это ни парадоксально ) не находились исходники. После нормального экстракта всё компилится — линкуется — дебажится (после правки св-в проекта) под VS.
Т.о. свою проблемку я решил, но остался один вопрос: быстродействие Blitz и Boost. Например, ежели кто переведет такой код из Blitz (из примеров array.cpp, код ниже) в boost, был бы простенький тестик .
/*****************************************************************************
* array.cpp Blitz++ Array stencilling example
*****************************************************************************/#include <blitz/array.h>
BZ_USING_NAMESPACE(blitz)
int main()
{
int N = 64;
// Create three-dimensional arrays of float
Array<float,3> A(N,N,N), B(N,N,N);
// Set up initial conditions: +30 C over an interior block,
// and +22 C elsewhere
A = 22.0;
Range interior(N/4,3*N/4);
A(interior,interior,interior) = 30.0;
int numIters = 301;
Range I(1,N-2), J(1,N-2), K(1,N-2);
#ifdef BZ_HAVE_STD
#ifdef BZ_ARRAY_SPACE_FILLING_TRAVERSAL
generateFastTraversalOrder(TinyVector<int,2>(N-2,N-2));
#endif
#endif
for (int i=0; i < numIters; ++i)
{
double c = 1/6.5;
B(I,J,K) = c * (.5 * A(I,J,K) + A(I+1,J,K) + A(I-1,J,K)
+ A(I,J+1,K) + A(I,J-1,K) + A(I,J,K+1) + A(I,J,K-1));
A(I,J,K) = c * (.5 * B(I,J,K) + B(I+1,J,K) + B(I-1,J,K)
+ B(I,J+1,K) + B(I,J-1,K) + B(I,J,K+1) + B(I,J,K-1));
// Output the result along a line through the centrefor (int j=0; j < 8; ++j)
cout << setprecision(2) << A(N/2,N/2,j*N/8) << " ";
cout << endl;
cout.flush();
}
return 0;
}
Здравствуйте, uhh, Вы писали:
uhh>Здравствуйте, minorlogic, Вы писали:
M>>Быстрее потому что грамотнее дизайн и реализация.
uhh>ну, прогнозируемый ответ. буст в наше время заменяет многим религию.
Вам заменяет религию? Это технический форум, подразумевает технические аргументы.
uhh>hint: Blitz++ весьма хорошо оптимизирована внутри.
Какой хинт? Вы бенчмарки корректные делали?
Какая оптимизация изнутри? Оптимизации нет в ublas?
blitz::Array изначально работает черер сплайся на уровне реализации , он теоретически не может быть быстрее плоских реализаций ublas.
У меня сладывается впечатление что вы имеете смутное представление о предмете разговора.
Здравствуйте, Shamrik, Вы писали:
S>Т.о. свою проблемку я решил, но остался один вопрос: быстродействие Blitz и Boost.
Где — то видел бенчмарки по блицу, бусту и прочем мат. библиотекам для C++, по ним блиц показывал наихудшую производительность. Находил гуглом, может тебе тоже стоит попробовать погуглить?
Здравствуйте, dandy, Вы писали:
D>Здравствуйте, Shamrik, Вы писали:
S>>Т.о. свою проблемку я решил, но остался один вопрос: быстродействие Blitz и Boost.
D>Где — то видел бенчмарки по блицу, бусту и прочем мат. библиотекам для C++, по ним блиц показывал наихудшую производительность. Находил гуглом, может тебе тоже стоит попробовать погуглить?
Вот оно -- http://eigen.tuxfamily.org/index.php?title=Benchmark-August2008, но там херь. По многим позициям блитц не тестировался, хотя их реализация есть. Прелесть блитца в том, что он весьма органично сочетается с лапаком и мклем. Т.е. блитцовые структуры используются только как контейнеры + я еще активно юзаю Tiny семейство. В убласе ковырялсо давно, многих вещей там просто нет -- типа нахождения СВ\СЧ не через LU разложение и.т.д.
Здравствуйте, minorlogic, Вы писали:
M>Здравствуйте, denisko, Вы писали:
D>>Вот оно -- http://eigen.tuxfamily.org/index.php?title=Benchmark-August2008,
M>Боюсь что при перекомпиляции под IntelCC результаты сильно изменяться.
Хз, это уже гипотеза или фобия. В мкле многие вещи руками написаны под соответствующие SIMDы, IntelCC сам векторизует довольно хреново (информация полугодовой давности).