- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello!
Any help will be highly appriciated)
Strange thing occures when i try to build a custom dll.
the make command i use looks like this: nmake ia32 buf_lib= export=func_list name=mkl_1
while func list contains only one function
DGEMM
And everything works perfect.
Then i add one more function to func_list so it looks like this:
DGEMM
DGEMV
, make another dll:
nmake ia32 buf_lib= export=func_list name=mkl_2
Matrix-Matrix product still works
but the dgemv function seems not working
Matrix A is 10x10 matrix, containing 1 on each position.
B is a 10-dimension vector containing 1 on each position.
C is a 10-dimention vector containing 1 on each position.
This call of dgemv
CBLAS.dgemv(CBLAS.TRANSPOSE.NoTrans, 10, 10, 25.0, A, 10, B, 10, 11.0, C, 10); (C := 25*A*B+11*C)
is successful and shows no link errors. That means that a new entry point arised.
BUT! This call should change the C vector an make 36 on each position, but it doesn't! It leaves C unchanged.
Moreover, the strange thing i found, that the mkl_1.dll is about 995 Kb, and the mkl_2.dll is smth like 996 Kb. Is it possible that additional function dgemv adds only 1Kb to the output dll?
I also tried another styles in func_list file, like cblas_dgemm and cblas_dgemv, but it doesn't change a thing.
looks like my blas library is not full. What can i do?
May be i should change some Object File Library files in /%MKL_ROOT%/lib/ia32/ ?
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Добрый день)
Я так понял, что можно в списке экспортируемых функций писать или cblas_dgemv или DGEMV. То есть функция та же, только "стиль" вызова другой. У меня в папке либ все указанные файлы есть. Но от этого не легче. Все равно с двумя функциями dgemm и dgemv dll-ка занимает 996 кб, то есть всего лишь на 1 кб больше, чем только с одной dgemm.
Может быть тупо представить вектор как матрицу 1хN и вставлять в dgemm и получать результат как произведение матрицы на матрицу?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Certainly Sergey reads Russian, and those of us who read a little can use practice, but there is a separate Russian language forum. Here, all who read English should be permitted to get the benefit of the discussions.
By default, you would be linking against MKL dll library, so the bulk of dgemm and dgemv would not be present in your .dll.
If you use appropriate include files, the compiler will check that you have correct reference and value specifications for your MKL functions. Without the include files, you could link without those matching.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
If dgemm had a dgemv dependency (not impossible) then the difference between adding dgemv and not adding it would indeed be slight since most of it would need to be present in the DGEMM-only DLL.
A testcase would be useful.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
If you want to run cblas_dgemm and cblas_dgemv MKL functions then these names are to be in your func_list.
Also please check that in your application namely cblas_dgemm and cblas_dgemv are called correctly.
However, in your example there is: CBLAS.dgemv. Is it C# testcase?
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page