AcademySoftwareFoundation / Imath

Imath is a C++ and python library of 2D and 3D vector, matrix, and math operations for computer graphics

Home Page:https://imath.readthedocs.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

IMATH_HOSTDEVICE for hsv2rgb() ?

AlexeySmolenchuk opened this issue · comments

I've just tried to use Imath as a vector library for CUDA. I'm not sure if it's supposed to work like this, but I saw some promising comments in the source, so I've tried.

All hsv2rgb() in ImathColorAlgo.h are marked as IMATH_HOSTDEVICE but rely on hsv2rgb_d() which is a host-only function.
Please correct me if I'm wrong.

If it's some porting is currently ongoing, it would be very helpful to see which parts of the library are already supported by CUDA.

Thank you,
Alexey

That would be an oversight on my part. Right now I am determining why hsv2rgb_d() was not marked IMATH_HOSTDEVICE in the first place. Depending on what reason I discover I can either implement an alternative that can support CUDA or make sure hsv2rgb() is not marked IMATH_HOSTDEVICE.

why hsv2rgb_d() was not marked IMATH_HOSTDEVICE in the first place

Because it's implemented in separate cpp I guess.
Another candidate would be ImathMatrixAlgo.cpp

I see this old investigation task about the header-only version started #13 unfortunately without any outcome.

ImathMatrixAlgo.cpp only really needs to have the explicit instantiations (

template IMATH_EXPORT void jacobiEigenSolver (
) defined in it; it could be moved to a header which might resolve the header only goal. I think it's in fact the case that we don't need the instantiations any more, either. They were originally implemented like that to solve for limitations of VS2005, which have long since been resolved, to my knowledge.

It would be harmless to move ColorAlgo to a header at this point as well.

#13's outcome was in fact that the majority of Imath did become header only; there's just a few outliers left to tackle.