@@ -256,9 +256,9 @@ int main(int argc, char **argv)
256
256
int16_t * inout_s1 = NULL , * inout_s2 = NULL ;
257
257
int32_t * inout_i1 = NULL , * inout_i2 = NULL , * inout_iref = NULL ;
258
258
int len = atoi (argv [1 ]);
259
- int ret ;
260
259
261
260
#ifndef USE_MALLOC
261
+ int ret ;
262
262
ret = posix_memalign ((void * * ) & inout , atoi (argv [2 ]), 2 * len * sizeof (float ));
263
263
if (inout == NULL ) {
264
264
printf ("ret = posix_memalign inout failed\n" );
@@ -1583,7 +1583,7 @@ printf("\n");
1583
1583
printf ("mean128f %d %lf\n" , len , elapsed );
1584
1584
1585
1585
printf ("mean %f ref %f\n" , mean , mean_ref );
1586
-
1586
+
1587
1587
clock_gettime (CLOCK_REALTIME , & start );
1588
1588
meankahan128f (inout , & mean , len );
1589
1589
clock_gettime (CLOCK_REALTIME , & stop );
@@ -2042,7 +2042,7 @@ printf("\n");
2042
2042
elapsed = ((stop .tv_sec - start .tv_sec ) * 1e6 + (stop .tv_nsec - start .tv_nsec ) * 1e-3 ) / (double ) loop ;
2043
2043
printf ("cplxconjvecmul128f %d %lf %0.3lf GFlops/s\n" , len , elapsed , flops / (elapsed * 1e3 ));
2044
2044
2045
- l2_err (inout_ref , inout2_ref , len );
2045
+ l2_err (inout_ref , inout2_ref , 2 * len );
2046
2046
#endif
2047
2047
2048
2048
#ifdef AVX
@@ -2059,7 +2059,7 @@ printf("\n");
2059
2059
elapsed = ((stop .tv_sec - start .tv_sec ) * 1e6 + (stop .tv_nsec - start .tv_nsec ) * 1e-3 ) / (double ) loop ;
2060
2060
printf ("cplxconjvecmul256f %d %lf %0.3lf GFlops/s\n" , len , elapsed , flops / (elapsed * 1e3 ));
2061
2061
2062
- l2_err (inout_ref , inout2_ref , len );
2062
+ l2_err (inout_ref , inout2_ref , 2 * len );
2063
2063
#endif
2064
2064
2065
2065
#ifdef AVX512
@@ -2076,7 +2076,7 @@ printf("\n");
2076
2076
elapsed = ((stop .tv_sec - start .tv_sec ) * 1e6 + (stop .tv_nsec - start .tv_nsec ) * 1e-3 ) / (double ) loop ;
2077
2077
printf ("cplxconjvecmul512f %d %lf %0.3lf GFlops/s\n" , len , elapsed , flops / (elapsed * 1e3 ));
2078
2078
2079
- l2_err (inout_ref , inout2_ref , len );
2079
+ l2_err (inout_ref , inout2_ref , 2 * len );
2080
2080
#endif
2081
2081
printf ("\n" );
2082
2082
@@ -3150,6 +3150,77 @@ printf("\n");
3150
3150
#endif
3151
3151
3152
3152
3153
+ printf ("\n" );
3154
+ /////////////////////////////////////////////////////////// LOG2 //////////////////////////////////////////////////////////////////////////////
3155
+ printf ("LOG2\n" );
3156
+
3157
+ for (int i = 0 ; i < len ; i ++ ) {
3158
+ inout [i ] = (float ) (1.0f * i + 0.000001f ) / 1.82f ;
3159
+ inout_ref [i ] = inout [i ];
3160
+ }
3161
+
3162
+ clock_gettime (CLOCK_REALTIME , & start );
3163
+ log2f_C (inout , inout2_ref , len );
3164
+ clock_gettime (CLOCK_REALTIME , & stop );
3165
+ elapsed = (stop .tv_sec - start .tv_sec ) * 1e6 + (stop .tv_nsec - start .tv_nsec ) * 1e-3 ;
3166
+ printf ("log2f_C %d %lf\n" , len , elapsed );
3167
+
3168
+ clock_gettime (CLOCK_REALTIME , & start );
3169
+ for (l = 0 ; l < loop ; l ++ )
3170
+ log2f_C (inout , inout2_ref , len );
3171
+ clock_gettime (CLOCK_REALTIME , & stop );
3172
+ elapsed = ((stop .tv_sec - start .tv_sec ) * 1e6 + (stop .tv_nsec - start .tv_nsec ) * 1e-3 ) / (double ) loop ;
3173
+ printf ("log2f_C %d %lf\n" , len , elapsed );
3174
+
3175
+ #ifdef SSE
3176
+ clock_gettime (CLOCK_REALTIME , & start );
3177
+ log2_128f (inout , inout2 , len );
3178
+ clock_gettime (CLOCK_REALTIME , & stop );
3179
+ elapsed = (stop .tv_sec - start .tv_sec ) * 1e6 + (stop .tv_nsec - start .tv_nsec ) * 1e-3 ;
3180
+ printf ("log2_128f %d %lf\n" , len , elapsed );
3181
+
3182
+ clock_gettime (CLOCK_REALTIME , & start );
3183
+ for (l = 0 ; l < loop ; l ++ )
3184
+ log2_128f (inout , inout2 , len );
3185
+ clock_gettime (CLOCK_REALTIME , & stop );
3186
+ elapsed = ((stop .tv_sec - start .tv_sec ) * 1e6 + (stop .tv_nsec - start .tv_nsec ) * 1e-3 ) / (double ) loop ;
3187
+ printf ("log2_128f %d %lf\n" , len , elapsed );
3188
+ l2_err (inout2_ref , inout2 , len );
3189
+ #endif
3190
+
3191
+ #ifdef AVX
3192
+ clock_gettime (CLOCK_REALTIME , & start );
3193
+ log2_256f (inout , inout2 , len );
3194
+ clock_gettime (CLOCK_REALTIME , & stop );
3195
+ elapsed = (stop .tv_sec - start .tv_sec ) * 1e6 + (stop .tv_nsec - start .tv_nsec ) * 1e-3 ;
3196
+ printf ("log2_256f %d %lf\n" , len , elapsed );
3197
+
3198
+ clock_gettime (CLOCK_REALTIME , & start );
3199
+ for (l = 0 ; l < loop ; l ++ )
3200
+ log2_256f (inout , inout2 , len );
3201
+ clock_gettime (CLOCK_REALTIME , & stop );
3202
+ elapsed = ((stop .tv_sec - start .tv_sec ) * 1e6 + (stop .tv_nsec - start .tv_nsec ) * 1e-3 ) / (double ) loop ;
3203
+ printf ("log2_256f %d %lf\n" , len , elapsed );
3204
+ l2_err (inout2_ref , inout2 , len );
3205
+ #endif
3206
+
3207
+ #ifdef AVX512
3208
+ clock_gettime (CLOCK_REALTIME , & start );
3209
+ log2_512f (inout , inout2 , len );
3210
+ clock_gettime (CLOCK_REALTIME , & stop );
3211
+ elapsed = (stop .tv_sec - start .tv_sec ) * 1e6 + (stop .tv_nsec - start .tv_nsec ) * 1e-3 ;
3212
+ printf ("log2_512f %d %lf\n" , len , elapsed );
3213
+
3214
+ clock_gettime (CLOCK_REALTIME , & start );
3215
+ for (l = 0 ; l < loop ; l ++ )
3216
+ log2_512f (inout , inout2 , len );
3217
+ clock_gettime (CLOCK_REALTIME , & stop );
3218
+ elapsed = ((stop .tv_sec - start .tv_sec ) * 1e6 + (stop .tv_nsec - start .tv_nsec ) * 1e-3 ) / (double ) loop ;
3219
+ printf ("log2_512f %d %lf\n" , len , elapsed );
3220
+ l2_err (inout2_ref , inout2 , len );
3221
+ #endif
3222
+
3223
+
3153
3224
printf ("\n" );
3154
3225
/////////////////////////////////////////////////////////// EXP //////////////////////////////////////////////////////////////////////////////
3155
3226
printf ("EXP\n" );
0 commit comments