Closed mikeversteeg closed 3 years ago
Hello! I have some questions:
1) When I perform alpha blending operation I use intermediate 16-bit integer values. Has premultiplied alpha image 16-bit channels?
2) Has premultiplied alpha image interlived channels? Or has it plane channels?
3) Excact phormula of backward transformation.
So it would better if you give me example (scalar implementation) of required algorithm in order to avoid possible ambiguity. I will make its vectorization.
Hi Ihar!
Rp = R * A / 255
Gp = G * A / 255
Bp = B * A / 255
Ap = A
Note you can avoid the math for A=0 and for A=255.
Unpremultiplication, i.e. convert premultiplied back to straight, is:
R = Rp / A * 255
G = Gp / A * 255
B = Bp / A * 255
A = Ap
Note for A=0 you must make an exception and make the resulting color 0. For A=255 you can avoid the math. And yes, converting back & forth is lossy due to the rounding to 8 bit values stored in the bitmap.
Let me know if you have further questions. Thanks!
Ок. I will implement it when has free time.
Wonderful! Looking forward to try it out.
I added function AlphaPremutiply.
Thank you! Looking forward to testing it once released (and a rare visit to my office where I have pc with msvc installed).
I added function AlphaUnpremutiply.
Saw you released the new functions, thank you! Unfortunately I have not been able to test it yet: I do not use MSVC so last year I had to build a dedicated PC just to compile your library and I currently do not have access to this PC. As soon as I can build your library I will let you know of the test results.
I also use Simd mainly for Linux. MSVS projects are used to test Windows compatibility.
So I finally made it to my office but I am unable to make a build: I get 118 errors when trying to build vs2017w. It is the same setup as I used for previous builds. I will be here for another hour, after that it will probably be another few weeks. Here are the errors:
Severity Code Description Project File Line Suppression State
Error C2660 'Simd::Base::SynetPreluLayerForward': function does not take 2 arguments Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 88
Error C2664 'void Simd::Base::SynetAddBias(const float ,size_t,size_t,float ,SimdTensorFormatType)': cannot convert argument 5 from 'SimdBool' to 'SimdTensorFormatType' Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 38
Error C3861 'NeuralRelu': identifier not found Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 66
Error C2660 'Simd::Base::SynetPreluLayerForward': function does not take 2 arguments Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 79
Error C3861 'NeuralRelu': identifier not found Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 94
Error C3861 'SynetRestrictRange': identifier not found Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 122
Error C2660 'Simd::Base::SynetPreluLayerForward': function does not take 2 arguments Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 133
Error C2660 'Simd::Base::SynetPreluLayerForward': function does not take 2 arguments Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 142
Error C2664 'void Simd::Base::SynetPreluLayerForward(const float ,const float ,size_t,size_t,float ,SimdTensorFormatType)': cannot convert argument 6 from 'SimdBool' to 'SimdTensorFormatType' Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 148
Error C2661 'Simd::Runtime<Simd::GemmFunc,Simd::GemmArgs>::Init': no overloaded function takes 4 arguments Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 185
Error C2660 'Simd::Runtime<Simd::GemmFunc,Simd::GemmArgs>::Run': function does not take 11 arguments Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 224
Error C2660 'Simd::Runtime<Simd::GemmFunc,Simd::GemmArgs>::Run': function does not take 11 arguments Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 248
Error C2660 'Simd::Runtime<Simd::GemmFunc,Simd::GemmArgs>::Run': function does not take 11 arguments Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 251
Error C2039 'Winograd2x3SetFilter': is not a member of 'Simd::Base' Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 551
Error C2065 'Winograd2x3SetFilter': undeclared identifier Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 551
Error C2039 'Winograd2x3SetInput': is not a member of 'Simd::Base' Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 552
Error C2065 'Winograd2x3SetInput': undeclared identifier Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 552
Error C2039 'Winograd2x3SetOutput': is not a member of 'Simd::Base' Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 553
Error C2065 'Winograd2x3SetOutput': undeclared identifier Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 553
Error C2039 'Winograd4x3SetFilter': is not a member of 'Simd::Base' Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 556
Error C2065 'Winograd4x3SetFilter': undeclared identifier Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 556
Error C2039 'Winograd4x3SetInput': is not a member of 'Simd::Base' Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 557
Error C2065 'Winograd4x3SetInput': undeclared identifier Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 557
Error C2039 'Winograd4x3SetOutput': is not a member of 'Simd::Base' Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 558
Error C2065 'Winograd4x3SetOutput': undeclared identifier Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 558
Error C2661 'Simd::Runtime<Simd::GemmFunc,Simd::GemmArgs>::Init': no overloaded function takes 4 arguments Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 563
Error C2660 'Simd::Runtime<Simd::GemmFunc,Simd::GemmArgs>::Run': function does not take 11 arguments Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 606
Error C2660 'Simd::Runtime<Simd::GemmFunc,Simd::GemmArgs>::Run': function does not take 11 arguments Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 626
Error C2660 'Simd::Runtime<Simd::GemmFunc,Simd::GemmArgs>::Run': function does not take 11 arguments Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 632
Error C2976 'Simd::GemmNNcb': too few template arguments Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 36
Error C2079 'Simd::Sse::CreateNhwcGemm' uses undefined class 'Simd::GemmNNcb' Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 39
Error C2955 'Simd::GemmNNcb': use of class template requires template argument list Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 43
Error C2955 'Simd::GemmNNcb': use of class template requires template argument list Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 44
Error C2440 '=': cannot convert from 'void (__cdecl )(size_t,float,const float ,size_t,const float ,size_t,size_t,float ,size_t,size_t)' to 'void (__cdecl )(size_t,T,const T ,size_t,const T ,size_t,size_t,T ,size_t,TM)' Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 52
Error C2440 '=': cannot convert from 'void (__cdecl )(size_t,float,const float ,size_t,const float ,size_t,size_t,float ,size_t,size_t)' to 'void (__cdecl )(size_t,T,const T ,size_t,const T ,size_t,size_t,T ,size_t,TM)' Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 53
Error C2440 '=': cannot convert from 'void (__cdecl )(size_t,size_t,float,const float ,size_t,const float ,size_t,size_t,float ,size_t,size_t)' to 'void (__cdecl )(size_t,size_t,T,const T ,size_t,const T ,size_t,size_t,T ,size_t,TM)' Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 54
Error C2440 '=': cannot convert from 'void (__cdecl )(size_t,size_t,float,const float ,size_t,const float ,size_t,size_t,float ,size_t,size_t)' to 'void (__cdecl )(size_t,size_t,T,const T ,size_t,const T ,size_t,size_t,T ,size_t,TM)' Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 55
Error C2440 '=': cannot convert from 'void (__cdecl )(size_t,float,const float ,size_t,const float ,size_t,size_t,float ,size_t,size_t)' to 'void (__cdecl )(size_t,T,const T ,size_t,const T ,size_t,size_t,T ,size_t,TM)' Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 62
Error C2440 '=': cannot convert from 'void (__cdecl )(size_t,float,const float ,size_t,const float ,size_t,size_t,float ,size_t,size_t)' to 'void (__cdecl )(size_t,T,const T ,size_t,const T ,size_t,size_t,T ,size_t,TM)' Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 63
Error C2440 '=': cannot convert from 'void (__cdecl )(size_t,size_t,float,const float ,size_t,const float ,size_t,size_t,float ,size_t,size_t)' to 'void (__cdecl )(size_t,size_t,T,const T ,size_t,const T ,size_t,size_t,T ,size_t,TM)' Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 64
Error C2440 '=': cannot convert from 'void (__cdecl )(size_t,size_t,float,const float ,size_t,const float ,size_t,size_t,float ,size_t,size_t)' to 'void (__cdecl )(size_t,size_t,T,const T ,size_t,const T ,size_t,size_t,T ,size_t,TM)' Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 65
Error C2440 '
Error C2514 'Simd::GemmNNcb': class has no constructors Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 80
Error C2663 'Simd::GemmNNcb<T,F,TM>::Run': 2 overloads have no legal conversion for 'this' pointer Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 81
Error C2514 'Simd::GemmNNcb': class has no constructors Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 86
Error C2662 'void Simd::GemmNNcb<T,F,TM>::ReorderB(const T
Error C2664 'void Simd::Sse::SynetAddBias(const float ,size_t,size_t,float ,SimdTensorFormatType)': cannot convert argument 5 from 'SimdBool' to 'SimdTensorFormatType' Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 96
Error C3861 'NeuralRelu': identifier not found Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 139
Error C2660 'Simd::Sse::SynetPreluLayerForward': function does not take 2 arguments Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 156
Error C2660 '_mm_storeu_ps': function does not take 1 arguments Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 156
Error C2660 'Simd::Base::SynetPreluLayerForward': function does not take 2 arguments Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 159
Error C2660 'Simd::Sse::SynetPreluLayerForward': function does not take 2 arguments Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 172
Error C2660 '_mm_storeu_ps': function does not take 1 arguments Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 172
Error C2660 'Simd::Base::SynetPreluLayerForward': function does not take 2 arguments Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 175
Error C3861 'NeuralRelu': identifier not found Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 181
Error C3861 'SynetRestrictRange': identifier not found Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 224
Error C2660 'Simd::Sse::SynetPreluLayerForward': function does not take 2 arguments Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 238
Error C2660 '_mm_storeu_ps': function does not take 1 arguments Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 238
Error C2660 'Simd::Base::SynetPreluLayerForward': function does not take 2 arguments Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 241
Error C2660 'Simd::Sse::SynetPreluLayerForward': function does not take 2 arguments Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 255
Error C2660 '_mm_storeu_ps': function does not take 1 arguments Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 255
Error C2660 'Simd::Base::SynetPreluLayerForward': function does not take 2 arguments Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 258
Error C2664 'void Simd::Sse::SynetPreluLayerForward(const float ,const float ,size_t,size_t,float ,SimdTensorFormatType)': cannot convert argument 6 from 'SimdBool' to 'SimdTensorFormatType' Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 264
Error C2661 'Simd::Runtime<Simd::GemmFunc,Simd::GemmArgs>::Init': no overloaded function takes 4 arguments Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 273
Error C2514 'Simd::GemmNNcb': class has no constructors Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 276
Error C2662 'size_t Simd::GemmNNcb<T,F,TM>::BufferSize(void) const': cannot convert 'this' pointer from 'Simd::Sse::NhwcGemm' to 'const Simd::GemmNNcb<T,F,TM> &' Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 277
Error C2039 'Winograd2x3SetFilter': is not a member of 'Simd::Sse' Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 292
Error C2065 'Winograd2x3SetFilter': undeclared identifier Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 292
Error C2039 'Winograd2x3SetInput': is not a member of 'Simd::Sse' Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 293
Error C2065 'Winograd2x3SetInput': undeclared identifier Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 293
Error C2039 'Winograd2x3SetOutput': is not a member of 'Simd::Sse' Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 294
Error C2065 'Winograd2x3SetOutput': undeclared identifier Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 294
Error C2039 'Winograd4x3SetFilter': is not a member of 'Simd::Sse' Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 297
Error C2065 'Winograd4x3SetFilter': undeclared identifier Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 297
Error C2039 'Winograd4x3SetInput': is not a member of 'Simd::Sse' Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 298
Error C2065 'Winograd4x3SetInput': undeclared identifier Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 298
Error C2039 'Winograd4x3SetOutput': is not a member of 'Simd::Sse' Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 299
Error C2065 'Winograd4x3SetOutput': undeclared identifier Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 299
Error C2661 'Simd::Runtime<Simd::GemmFunc,Simd::GemmArgs>::Init': no overloaded function takes 4 arguments Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 304
Error C2514 'Simd::GemmNNcb': class has no constructors Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 307
Error C2662 'size_t Simd::GemmNNcb<T,F,TM>::BufferSize(void) const': cannot convert 'this' pointer from 'Simd::Sse::NhwcGemm' to 'const Simd::GemmNNcb<T,F,TM> &' Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 308
Error LNK1181 cannot open input file 'E:\My Documents\SimdLib\bin\v141\x64\Release\Alg.lib' Simd E:\My Documents\SimdLib\prj\vs2017w\LINK 1
Error C2039 'SimdConvolutionExternalBufferSize': is not a member of 'global namespace'' Test e:\my documents\simdlib\src\test\testconvolution.cpp 115 Error C3861 'SimdConvolutionExternalBufferSize': identifier not found Test e:\my documents\simdlib\src\test\testconvolution.cpp 115 Error C2039 'SimdConvolutionSetParams': is not a member of '
global namespace'' Test e:\my documents\simdlib\src\test\testconvolution.cpp 116
Error C3861 'SimdConvolutionSetParams': identifier not found Test e:\my documents\simdlib\src\test\testconvolution.cpp 116
Error C2039 'SimdConvolutionForward': is not a member of 'global namespace'' Test e:\my documents\simdlib\src\test\testconvolution.cpp 119 Error C3861 'SimdConvolutionForward': identifier not found Test e:\my documents\simdlib\src\test\testconvolution.cpp 119 Error C2065 'SimdConvolutionInit': undeclared identifier Test e:\my documents\simdlib\src\test\testconvolution.cpp 493 Error C2661 'Test::ConvolutionForwardAutoTest': no overloaded function takes 2 arguments Test e:\my documents\simdlib\src\test\testconvolution.cpp 493 Error C2065 'SimdConvolutionInit': undeclared identifier Test e:\my documents\simdlib\src\test\testconvolution.cpp 497 Error C2661 'Test::ConvolutionForwardAutoTest': no overloaded function takes 2 arguments Test e:\my documents\simdlib\src\test\testconvolution.cpp 497 Error C2065 'SimdConvolutionInit': undeclared identifier Test e:\my documents\simdlib\src\test\testconvolution.cpp 502 Error C2661 'Test::ConvolutionForwardAutoTest': no overloaded function takes 2 arguments Test e:\my documents\simdlib\src\test\testconvolution.cpp 502 Error C2065 'SimdConvolutionInit': undeclared identifier Test e:\my documents\simdlib\src\test\testconvolution.cpp 507 Error C2661 'Test::ConvolutionForwardAutoTest': no overloaded function takes 2 arguments Test e:\my documents\simdlib\src\test\testconvolution.cpp 507 Error C2065 'SimdConvolutionInit': undeclared identifier Test e:\my documents\simdlib\src\test\testconvolution.cpp 512 Error C2661 'Test::ConvolutionForwardAutoTest': no overloaded function takes 2 arguments Test e:\my documents\simdlib\src\test\testconvolution.cpp 512 Error C2065 'SimdConvolutionInit': undeclared identifier Test e:\my documents\simdlib\src\test\testconvolution.cpp 517 Error C2661 'Test::ConvolutionForwardAutoTest': no overloaded function takes 2 arguments Test e:\my documents\simdlib\src\test\testconvolution.cpp 517 Error C2039 'SimdMergedConvolutionExternalBufferSize': is not a member of '
global namespace'' Test e:\my documents\simdlib\src\test\testmergedconvolution.cpp 131
Error C3861 'SimdMergedConvolutionExternalBufferSize': identifier not found Test e:\my documents\simdlib\src\test\testmergedconvolution.cpp 131
Error C2039 'SimdMergedConvolutionSetParams': is not a member of 'global namespace'' Test e:\my documents\simdlib\src\test\testmergedconvolution.cpp 132 Error C3861 'SimdMergedConvolutionSetParams': identifier not found Test e:\my documents\simdlib\src\test\testmergedconvolution.cpp 132 Error C2039 'SimdMergedConvolutionForward': is not a member of '
global namespace'' Test e:\my documents\simdlib\src\test\testmergedconvolution.cpp 140
Error C3861 'SimdMergedConvolutionForward': identifier not found Test e:\my documents\simdlib\src\test\testmergedconvolution.cpp 140
Error C2664 'Test::Tensor
Thank you for bug report. The errors were fixed.
I'm afraid there are still errors. Here are the ones for just Simd:
Severity Code Description Project File Line Suppression State
Error C2514 'Simd::GemmNNcb': class has no constructors Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 307
Error C2664 'void Simd::Base::SynetAddBias(const float ,size_t,size_t,float ,SimdTensorFormatType)': cannot convert argument 5 from 'SimdBool' to 'SimdTensorFormatType' Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 38
Error C3861 'NeuralRelu': identifier not found Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 66
Error C2660 'Simd::Base::SynetPreluLayerForward': function does not take 2 arguments Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 79
Error C2660 'Simd::Base::SynetPreluLayerForward': function does not take 2 arguments Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 88
Error C3861 'NeuralRelu': identifier not found Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 94
Error C3861 'SynetRestrictRange': identifier not found Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 122
Error C2660 'Simd::Base::SynetPreluLayerForward': function does not take 2 arguments Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 133
Error C2660 'Simd::Base::SynetPreluLayerForward': function does not take 2 arguments Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 142
Error C2664 'void Simd::Base::SynetPreluLayerForward(const float ,const float ,size_t,size_t,float ,SimdTensorFormatType)': cannot convert argument 6 from 'SimdBool' to 'SimdTensorFormatType' Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 148
Error C2661 'Simd::Runtime<Simd::GemmFunc,Simd::GemmArgs>::Init': no overloaded function takes 4 arguments Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 185
Error C2660 'Simd::Runtime<Simd::GemmFunc,Simd::GemmArgs>::Run': function does not take 11 arguments Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 224
Error C2660 'Simd::Runtime<Simd::GemmFunc,Simd::GemmArgs>::Run': function does not take 11 arguments Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 248
Error C2660 'Simd::Runtime<Simd::GemmFunc,Simd::GemmArgs>::Run': function does not take 11 arguments Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 251
Error C2039 'Winograd2x3SetFilter': is not a member of 'Simd::Base' Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 551
Error C2065 'Winograd2x3SetFilter': undeclared identifier Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 551
Error C2039 'Winograd2x3SetInput': is not a member of 'Simd::Base' Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 552
Error C2065 'Winograd2x3SetInput': undeclared identifier Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 552
Error C2039 'Winograd2x3SetOutput': is not a member of 'Simd::Base' Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 553
Error C2065 'Winograd2x3SetOutput': undeclared identifier Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 553
Error C2039 'Winograd4x3SetFilter': is not a member of 'Simd::Base' Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 556
Error C2065 'Winograd4x3SetFilter': undeclared identifier Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 556
Error C2039 'Winograd4x3SetInput': is not a member of 'Simd::Base' Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 557
Error C2065 'Winograd4x3SetInput': undeclared identifier Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 557
Error C2039 'Winograd4x3SetOutput': is not a member of 'Simd::Base' Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 558
Error C2065 'Winograd4x3SetOutput': undeclared identifier Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 558
Error C2661 'Simd::Runtime<Simd::GemmFunc,Simd::GemmArgs>::Init': no overloaded function takes 4 arguments Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 563
Error C2660 'Simd::Runtime<Simd::GemmFunc,Simd::GemmArgs>::Run': function does not take 11 arguments Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 606
Error C2660 'Simd::Runtime<Simd::GemmFunc,Simd::GemmArgs>::Run': function does not take 11 arguments Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 626
Error C2660 'Simd::Runtime<Simd::GemmFunc,Simd::GemmArgs>::Run': function does not take 11 arguments Alg e:\my documents\simdlib\src\simd\simdbaseconvolution.cpp 632
Error C2976 'Simd::GemmNNcb': too few template arguments Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 36
Error C2079 'Simd::Sse::CreateNhwcGemm' uses undefined class 'Simd::GemmNNcb' Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 39
Error C2955 'Simd::GemmNNcb': use of class template requires template argument list Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 43
Error C2955 'Simd::GemmNNcb': use of class template requires template argument list Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 44
Error C2440 '=': cannot convert from 'void (__cdecl )(size_t,float,const float ,size_t,const float ,size_t,size_t,float ,size_t,size_t)' to 'void (__cdecl )(size_t,T,const T ,size_t,const T ,size_t,size_t,T ,size_t,TM)' Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 52
Error C2440 '=': cannot convert from 'void (__cdecl )(size_t,float,const float ,size_t,const float ,size_t,size_t,float ,size_t,size_t)' to 'void (__cdecl )(size_t,T,const T ,size_t,const T ,size_t,size_t,T ,size_t,TM)' Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 53
Error C2440 '=': cannot convert from 'void (__cdecl )(size_t,size_t,float,const float ,size_t,const float ,size_t,size_t,float ,size_t,size_t)' to 'void (__cdecl )(size_t,size_t,T,const T ,size_t,const T ,size_t,size_t,T ,size_t,TM)' Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 54
Error C2440 '=': cannot convert from 'void (__cdecl )(size_t,size_t,float,const float ,size_t,const float ,size_t,size_t,float ,size_t,size_t)' to 'void (__cdecl )(size_t,size_t,T,const T ,size_t,const T ,size_t,size_t,T ,size_t,TM)' Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 55
Error C2440 '=': cannot convert from 'void (__cdecl )(size_t,float,const float ,size_t,const float ,size_t,size_t,float ,size_t,size_t)' to 'void (__cdecl )(size_t,T,const T ,size_t,const T ,size_t,size_t,T ,size_t,TM)' Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 62
Error C2440 '=': cannot convert from 'void (__cdecl )(size_t,float,const float ,size_t,const float ,size_t,size_t,float ,size_t,size_t)' to 'void (__cdecl )(size_t,T,const T ,size_t,const T ,size_t,size_t,T ,size_t,TM)' Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 63
Error C2440 '=': cannot convert from 'void (__cdecl )(size_t,size_t,float,const float ,size_t,const float ,size_t,size_t,float ,size_t,size_t)' to 'void (__cdecl )(size_t,size_t,T,const T ,size_t,const T ,size_t,size_t,T ,size_t,TM)' Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 64
Error C2440 '=': cannot convert from 'void (__cdecl )(size_t,size_t,float,const float ,size_t,const float ,size_t,size_t,float ,size_t,size_t)' to 'void (__cdecl )(size_t,size_t,T,const T ,size_t,const T ,size_t,size_t,T ,size_t,TM)' Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 65
Error C2440 '
Error C2514 'Simd::GemmNNcb': class has no constructors Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 80
Error C2663 'Simd::GemmNNcb<T,F,TM>::Run': 2 overloads have no legal conversion for 'this' pointer Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 81
Error C2514 'Simd::GemmNNcb': class has no constructors Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 86
Error C2662 'void Simd::GemmNNcb<T,F,TM>::ReorderB(const T
Error C2664 'void Simd::Sse::SynetAddBias(const float ,size_t,size_t,float ,SimdTensorFormatType)': cannot convert argument 5 from 'SimdBool' to 'SimdTensorFormatType' Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 96
Error C3861 'NeuralRelu': identifier not found Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 139
Error C2660 'Simd::Sse::SynetPreluLayerForward': function does not take 2 arguments Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 156
Error C2660 '_mm_storeu_ps': function does not take 1 arguments Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 156
Error C2660 'Simd::Base::SynetPreluLayerForward': function does not take 2 arguments Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 159
Error C2660 'Simd::Sse::SynetPreluLayerForward': function does not take 2 arguments Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 172
Error C2660 '_mm_storeu_ps': function does not take 1 arguments Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 172
Error C2660 'Simd::Base::SynetPreluLayerForward': function does not take 2 arguments Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 175
Error C3861 'NeuralRelu': identifier not found Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 181
Error C3861 'SynetRestrictRange': identifier not found Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 224
Error C2660 'Simd::Sse::SynetPreluLayerForward': function does not take 2 arguments Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 238
Error C2660 '_mm_storeu_ps': function does not take 1 arguments Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 238
Error C2660 'Simd::Base::SynetPreluLayerForward': function does not take 2 arguments Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 241
Error C2660 'Simd::Sse::SynetPreluLayerForward': function does not take 2 arguments Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 255
Error C2660 '_mm_storeu_ps': function does not take 1 arguments Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 255
Error C2660 'Simd::Base::SynetPreluLayerForward': function does not take 2 arguments Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 258
Error C2664 'void Simd::Sse::SynetPreluLayerForward(const float ,const float ,size_t,size_t,float ,SimdTensorFormatType)': cannot convert argument 6 from 'SimdBool' to 'SimdTensorFormatType' Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 264
Error C2661 'Simd::Runtime<Simd::GemmFunc,Simd::GemmArgs>::Init': no overloaded function takes 4 arguments Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 273
Error C2514 'Simd::GemmNNcb': class has no constructors Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 276
Error C2662 'size_t Simd::GemmNNcb<T,F,TM>::BufferSize(void) const': cannot convert 'this' pointer from 'Simd::Sse::NhwcGemm' to 'const Simd::GemmNNcb<T,F,TM> &' Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 277
Error C2039 'Winograd2x3SetFilter': is not a member of 'Simd::Sse' Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 292
Error C2065 'Winograd2x3SetFilter': undeclared identifier Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 292
Error C2039 'Winograd2x3SetInput': is not a member of 'Simd::Sse' Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 293
Error C2065 'Winograd2x3SetInput': undeclared identifier Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 293
Error C2039 'Winograd2x3SetOutput': is not a member of 'Simd::Sse' Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 294
Error C2065 'Winograd2x3SetOutput': undeclared identifier Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 294
Error C2039 'Winograd4x3SetFilter': is not a member of 'Simd::Sse' Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 297
Error C2065 'Winograd4x3SetFilter': undeclared identifier Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 297
Error C2039 'Winograd4x3SetInput': is not a member of 'Simd::Sse' Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 298
Error C2065 'Winograd4x3SetInput': undeclared identifier Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 298
Error C2039 'Winograd4x3SetOutput': is not a member of 'Simd::Sse' Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 299
Error C2065 'Winograd4x3SetOutput': undeclared identifier Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 299
Error C2661 'Simd::Runtime<Simd::GemmFunc,Simd::GemmArgs>::Init': no overloaded function takes 4 arguments Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 304
Error C2662 'size_t Simd::GemmNNcb<T,F,TM>::BufferSize(void) const': cannot convert 'this' pointer from 'Simd::Sse::NhwcGemm' to 'const Simd::GemmNNcb<T,F,TM> &' Alg e:\my documents\simdlib\src\simd\simdsse1convolution.cpp 308
Error LNK1181 cannot open input file 'E:\My Documents\SimdLib\bin\v141\x64\Release\Alg.lib' Simd E:\My Documents\SimdLib\prj\vs2017w\LINK 1
Hello.
The current version of Simd does not contain file 'simdsse1convolution.cpp'. So I think that you did not update Simd sources properly.
I always unpack the zip and overwrite the old version. Then build vs2017w.
You have to delete old files before copying.
Oh? I've never had to do that before.. Will try that next time I'm in the office, probably in a month or so.
Very happy with the added alpha support, your code is much faster than my "SIMD" attempts :)
I would very much like a function to convert a BGRA bitmap to premultiplied and vice versa. This would complete the alpha support in Simd.
PS: To convert a straight alpha color value bitmap to premultiplied format, multiply its R, G, and B values by A. To convert premultiplied to straight, divide R, G, and B by A. Keep in mind alpha can be 0, and values can never exceed 255.