OpenBLAS Windows and dgemv - Debug build not loading symbols

Hi all,
I am using OpenBLAS on Windows with several other libraries on C++ (project is linked to numerical integration). BLAS appears to be couple well with the rest but I noticed some numerical instabilities coming from dgemv output. My feeling is that my inputs to dgemv are not in the right data type which results in loss of precision. I am using VS debugger and my intention was to check what dgemv does those inputs runtime.
I created a Debug build of OpenBLAS by 1) following xianyi's approach for x64 and 2) changed the build config with Debug flags:
cmake .. -G "Ninja" -DCMAKE_CXX_COMPILER=clang-cl -DCMAKE_C_COMPILER=clang-cl -DCMAKE_Fortran_COMPILER=flang -DCMAKE_MT=mt -DBUILD_WITHOUT_LAPACK=no -DBUILD_SHARED_LIBS=ON -DNOFORTRAN=0 -DDYNAMIC_ARCH=ON -DCMAKE_BUILD_TYPE=Debug
cmake --build . --config Debug
When built, openblas.pdb is produced. Attaching the Visual Studio debugger to my process however cannot load any symbols for dgemv.c or dgemv.f if I try to add a breakpoint in them in the source code. In debug, I reach to the point where the .cxx source calls dgemv and cannot force VS to load symbols for any OpenBLAS src code.
Are you guys aware if there is a way to build OpenBLAS with all routines having pdbs to allow this or the way to access the routines runtime in debug is different? Looking at the static library openblas.lib post build, it appears that all routines are compiled as individual dlls and lumped in openblas.lib : example 2730.openblas.dll    __imp_cblas_dgemv  2730.openblas.dll    cblas_dgemv
Maybe my approach to tapping in the brain of dgemv routine is wrong.
Thanks for the help!

You need to load PDB file into VS GUI. Certainly a thing you just built locally is not present on default microsoft PDB server.
Probably you need cblas_dgemv via cblas.h header in target install directory. Fortran calling convention is that all parameters are pointers , including to single character and integer args.

The symbols are loaded for openblas.dll into Debug -> Windows -> Modules. See screenshot. A breakpoint incblas_dgemv.c is not shown as being hit. Sharing an overview of the project src code below; I have given extern "C" for the cblas functions.
In math.h (part of my project), I define
// BLAS/lapack defs
extern "C" {
  void dgetrf_(const int & m, const int & n, double* A, const int & lda, int* ipiv, int & info);
  void dgetri_(const int & n, double* A, const int & lda, int* ipiv, double* work, const int & lwork, int & info);
  void dgesv_(const int & n, const int & nrhs, double * A, const int & lda, int * ipiv, double * b, const int & ldb, int & info);
  void dgemv_(const char * trans, const int & m, const int & n, const double & alpha, const double * A, const int & lda, const double * x, const int & incx, const double & beta, double * y, const int & incy);
  void dgemm_(const char * transa, const char * transb, const int & m, const int & n, const int & k, const double & alpha, const double * A, const int & lda, const double * B, const int & ldb, const double & beta, double * C, const int & ldc);
  void dger_(const int & m, const int & n, const double & alpha, const double * x, const int & incx, const double * y, const int & incy, double * A, const int & lda);
  void dgecon_(const char * norm, const int & n, double * A, const int & lda, const double & anrom, double & rcond, double * work, int * lwork, int & info);
  void dgttrf_(const int & N, double * DL, double * D, double * DU, double * DU2, int * IPIV, int & INFO);
  void dgttrs_(const char * TRANS, const int & N, const int & NRHS, double * DL, double * D, double * DU, double * DU2, int * IPIV, double * B, const int & LDB, int & info);
  void dsyev_(const char * JOBZ, const char * UPLO, const int & N, double * A, const int & LDA, double * W, double * WORK, const int & LWORK, const int & INFO);
}

In math.cxx, the function
int mat_vec(const double * const A, int m, const double * const b, int n, double * const c)
calls dgemv_ as
int mat_vec(const double * const A, int m, const double * const b, int n,
            double * const c)
{
  dgemv_("T", n, m, 1.0, A, n, b, 1, 0.0, c, 1);

  return 0;
}

The source code for my project including math.cxx and .h are located in C:\Projects\Project_1\src while project_1.dll including .lib, .pdb are in C:\Projects\Project_1\lib .
On the other hand, OpenBLAS is built in C:\Projects\OpenBLAS with libs in \build. The install is in C:\Projects\OpenBLAS\opt (the cblas.h in \opt\include is there).
Env variables on PATH are pointing to both C:\Projects\Project_1\lib and C:\Projects\OpenBLAS\opt and \OpenBLAS\lib.
Do you think I am missing anything? Could it be that I missed adding #include 'cblas.h' in my math.h? I would be surprised because math.cxx does not complain finding dgemv and producing some output during execution of project_1.dll.
thanks

Can't really help with the pdb files, but perhaps try adding a printf to interface/gemv.c to see if your build of the OpenBLAS dll gets called at all ?

Thanks for the tip. You mean add printf to gemv.c, rebuild OpenBLAS and see if it prints, right? I think it does get called - as I said calling this function dgemv actually returns an output for a given inputs but it is not the correct output.

Yup, debugger should recognize function signature that comes from crt runtime.
Just guesses around:
The dialog actually shows that PDB symbols are loaded. Try calling cblas_dgemv (w different arg prototypes) - i suspect your flang is gfortran wrapper, because (old) flang never worked on windows/
What more you could try:
x64dbg - just load symbols, maybe your visual studio needs updates and patches
Generate PDB from mingw build

Thanks for the feedback guys. I am more inclined to write up the several matrix operation functions I need as standalone functions in my code rather than using a library; in my case the less dependencies the better. I am closing this issue but happy to support in future if other user open a similar one.


Support additional FormField types, add id support.

Add support for FormChoice fields

On read, read all possible choices from field and return to user in choices array
On write, write freeform text if field is editable, or select provided field from possible choices, if present

Relax FormButton subtype checks

I was able to set radio fields by removing the CheckBox only check

Add id support

On read, return id of every field alongside type
On write, if field id matches the name of a param, write that param's value to the PDF.

Great, thank you!


Add AsyncLazy(Func<Task> factory, LazyThreadSafetyMode mode) const…

Added two new constructors to make it possible to specify the LazyThreadSafetyMode of the Lazy class.
This is particularly useful when the initialization Func can throw an exception and the desired behavior is to retry the next time the Func is called (i.e. not to cache exceptions). To achieve this, one can pass the LazyThreadSafetyMode.PublicationOnly mode to the added constructors.
Note: I added corresponding tests that are currently failing because the exception is being cached even with LazyThreadSafetyMode.PublicationOnly. Maybe @StephenCleary can tell me why? :smile:

Oh I know why the tests are failing.. Well because this doesn't work :smile: .. the Lazy.Value is successfully returning a Task and the Lazy object doesn't know that the Task is eventually throwing an exception. As a result, it's caching the call because it thinks that it was successful.

While this specific pull request does have problems (because the LazyThreadSafetyMode doesn't translate well to the async world), the idea behind the request (not caching exceptions) is quite useful. We will probably just have to define our own options.
Opened an issue for this to ensure I don't forget. :)

:+1:


BC Fossil Sample - edits and mandatory attributes to mark

--can you enter several fossil types using the “add”?

[x] make Fossil ID and Site ID hidden – not entering – or eliminate if not interfering with historical data - BF: Made readonly.

BC Fossil Identification

[x] Fossil Common Name – mark as mandatory
[x] Rule: If “Common Name Uncertain” is checked, the following four fields before “Fossil Size Category” are hidden. BF - this is blocked by #470. Added separate issue #473
[x] Fossil Size Category – mark as mandatory
[x] Significance Ranking Details – add “select all applicable details”. Currently no ability to add widget subtitle (addressed in #465).
[x] Significant – move down under Ranking Details and make for FMO use only. BF: Moved. Field visibility needs to be addressed after MVP
[ ] Other Fossil Part – “If term not in the list above, enter fossil part name or detail here” Currently no ability to add widget subtitle (addressed in #465).
[ ] Other Trace Fossil - “If term not in the list above, enter type of trace fossil here” Currently no ability to add widget subtitle (addressed in #465).

[x] Fossil Abundance – mark as mandatory

Fossil Sample Significant page –

[x] Significant – move down under Ranking Details and make for FMO use only. BF: Moved. Visibility to be addressed after MVP

Geological Age

[ ] Rule: If “Age undetermined is checked, other field on page are not visible to inputter” No ability to chain widgets (#470)
[ ] Historical Value – if stays visible, state “for FMO use only” BF: No ability to chain widgets (#470). Visibility to be handled post-MVP
[ ] Stratigraphy – when in menu for Group, you can pick anything – can we make all visible but just Group pickable? Same for Formations BF: No ability to chain widgets (#470).

Repository Information page -

[ ] Repository or Institution Number –
Rule : If “Sample left in situ” is checked, other field on page are not visible to inputter” BF: No ability to chain widgets (#470).

@LeannePyle - Many of these are blocked by current framework limitations. Please create a separate issue that can be addressed later.


bug: No Backdrop Shades In Modals Anymore

Type: bug
Platform: all
I can't really understand, why this change was made:
https://github.com/driftyco/ionic/commit/5de1c1266d734d9fd904401d2509853a4a762101
My 1080p device won't show the backdrop, even in a landscape orientation!

Greetings @vladipus!
My sensors indicate that you need to update your issue through our custom issue form. We are now requiring all issues to be submitted this way, to ensure that we have all of the information necessary to fix them as quickly as possible.
Click Here To Update Your Issue
I will have no choice but to close this issue if it is not resubmitted through the form. Please fill out the rest of the form, so that I may use my friendly robot powers to assist you.
Thank you!

I know understand why this happened. On small, non-tablet displays the dialog just occupies the whole space. However, I'm more interested in this to work correctly (with the backdrop): http://codepen.io/anandvj/pen/KwmMGY
If you minify the viewport during the image view, the backdrop is just gone.

I suggest adding an option to add specific class to the backdrop, something like backdropClass
For now, I'm adding a specific class like this:
$ionicModal.fromTemplateUrl('template.html', {
    scope: $scope,
    animation: 'slide-in-up',
    // I suggest this: backdropClass: 'showcase'
}).then(function(imageModal) {
    $scope.imageModal = imageModal;
    // For now doing this:
    angular.element($scope.imageModal.el).addClass('showcase');
});

Greetings @vladipus!
I've closed this issue because my sensors indicated it was old and inactive, and may have already been fixed in recent versions of Ionic. However, if you are still experiencing this issue, please feel free to reopen this issue by creating a new one, and include any examples and other necessary information, so that we can look into it further.
Thank you for allowing me to assist you.


[C++][Parquet] Upgrade thirdparty Arrow to 0.4.0

Reporter: Wes McKinney / @wesm
Assignee: Wes McKinney](https://issues.apache.org/jira/secure/ViewProfile.jspa?name=wesm) / @wesm
Note: This issue was originally created as PARQUET-1016. Please see the migration documentation for further details.

Wes McKinney / @wesm:
PR: https://github.com/apache/parquet-cpp/pull/348

Uwe Korn / @xhochy:
Issue resolved by pull request 348
https://github.com/apache/parquet-cpp/pull/348