[Kwiver-users] MapTK issues on Windows

Michael Rosen michael.rosen at gmail.com
Tue Oct 6 15:38:53 EDT 2015


Thanks for this.  It compiles and the assert is gone.

To be clear, here's what I did:

git clone https://github.com/Kitware/maptk.git
cd .\maptk
git fetch origin pull/88/head:dev/camera-pass-by-reference
git checkout dev/camera-pass-by-reference
cmake -G "NMake Makefiles" -DBOOST_ROOT=C:\dev\fletch\install
-DEIGEN3_INCLUDE_DIR="C:\Program Files (x86)\Eigen\include\eigen3"
nmake
nmake install

Is there a simple workflow you can pass that will demonstrate use of some
of the utilities.  For example, suppose I have a collection of overlapping
images, what can I do with them?

msr

On Tue, Oct 6, 2015 at 10:36 AM, Matthew Leotta <matt.leotta at kitware.com>
wrote:

> Michael,
>
> Thank you for reporting this issue.  I’ll be upfront and warn you that I’m
> not a Windows developer and MAP-Tk is currently better tested on Linux and
> Mac.  That said, we are working toward getting things better running on
> Windows more reliably.
>
> In this case, the issues are related to Eigen byte-alignment issues as
> explained on the Eigen website linked from your error message:
>
> http://eigen.tuxfamily.org/dox-devel/group__TopicUnalignedArrayAssert.html
>
> I have read this page before, and expected I would need to make changes at
> some point to work around these issues, but until now I had not come across
> a compiler that exhibited these symptoms.  We should probably try to get a
> VisualStudio 2012 build up on our dashboard so I can work through those
> issues properly.  I expect that will take some time.  A shorter term
> solution is to try to disable alignment in your build.  Can you try the
> solutions described at the bottom of the page at the above URL?  In the "I
> don't care about vectorization, how do I get rid of that stuff?” section it
> suggests defining some macros to disable alignment.  Let me know if that
> works.
>
> In the meantime, I can at least work around that pass-by-value build
> issue.  That function is pass-by-value because we intentionally want to
> make a local copy of the camera object to modify.  However, I can
> explicitly make that copy inside the function instead.  I’ve done this on
> the release branch of MAP-Tk and made a pull request (
> https://github.com/Kitware/maptk/pull/88).  Can you try to build this
> branch and verify that it at least builds for you?
>
> git fetch origin pull/88/head:dev/camera-pass-by-reference
> git checkout dev/camera-pass-by-reference
>
> If that works, I’ll merge this change into the release and master
> branches.  Also let me know if the solution on the Eigen page helps.
>
> —Matt
>
>
> On Oct 5, 2015, at 1:24 PM, Michael Rosen <michael.rosen at gmail.com> wrote:
>
> Hello Kwiver-folk,
>
> I'm building MapTK on Windows 7/64 using VStudio 12 and having two
> immediate difficulties:  a compilation problem and a runtime assert.
>
> MapTK is version 0.6.0, Eigen is 3.2.6
>
> I've worked through getting Boost and Eigen built.  When I compile maptk,
> the first problem is this:
>
>    [ 98%] Building CXX object
> tools/CMakeFiles/maptk_pos2krtd.dir/pos2krtd.cxx.obj
>
>   pos2krtd.cxx
>
>   C:\dev\maptk\tools\pos2krtd.cxx(220) : error C2719: 'base_camera':
> formal parameter with __declspec(align('16')) won't
>
>   be aligned
>
>   C:\dev\maptk\tools\pos2krtd.cxx(238) : error C2719: 'base_camera':
> formal parameter with __declspec(align('16')) won't
>
>>
>
> I fixed these compilation errors by changing the signature of the
> offending function from pass-by-value to pass-by-reference:
>
>
>     /// Convert a POS file to a KRTD file
>
>     bool convert_pos2krtd(const maptk::path_t& pos_filename,
>
>                       const maptk::path_t& krtd_filename,
>
>                       maptk::local_geo_cs& cs,
>
>                       maptk::camera_d& base_camera, // msr.  was
> pass-by-value
>
>                       maptk::rotation_d const& ins_rot_offset =
> maptk::rotation_d())
>
>
>
> That allows everything to compile and link.  The next problem was that I
> got an Eigen Assert when I run any of the executables:
>
>
> C:\Program Files (x86)\MAPTK\bin>maptk_analyze_tracks.exe
>
> ...
>
> Assertion failed: (reinterpret_cast<size_t>(array) & 0xf) == 0 && "this
> assertion is explained here: " "http://eigen.tuxfamily.org/d
>
> ox-devel/group__TopicUnalignedArrayAssert.html" " **** READ THIS WEB PAGE
> !!! ****", file c:\program files (x86)\eigen\include\eigen
>
> 3\eigen\src/Core/DenseStorage.h, line 86
>
>
> The web page says that classes which contain certain Eigen data structures
> as members need to use the
>
>      EIGEN_MAKE_ALIGNED_OPERATOR_NEW macro to override the "new" operator
> so that those members will be 16-byte aligned. I've done that but am still
> seeing the assert.
>
>
> Can anyone offer insight into any of this?
>
>
> msr
>
>
> _______________________________________________
> Kwiver-users mailing list
> Kwiver-users at public.kitware.com
> http://public.kitware.com/mailman/listinfo/kwiver-users
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/kwiver-users/attachments/20151006/794c27b6/attachment-0001.html>


More information about the Kwiver-users mailing list