Hello!
Currently, I am testing to compare the performance of direct conv2d and winograd conv2d using TOPI. However, as a result of experiments, conv2d using winograd algorithm is too much worse than direct. The code below is the code I experimented with. ## data shape data_shape = (1,3,224,224) w_shape = (64,3,3,3) ## Data sample_data = np.random.uniform(-1,1, size=data_shape ).astype("float32") sample_p1 = np.random.uniform(-1,1, size=w_shape ).astype("float32") ## placeholder input_data = tvm.te.placeholder( shape = data_shape, dtype = "float32", name="Input" ) p1 = tvm.te.placeholder( shape = w_shape, dtype="float32", name="p1" ) ## Winograd conv2d with tvm.target.create('cuda'): conv = topi.cuda.conv2d_nchw_winograd(input_data ,p1 ,(1,1) ,(0,0) ,(1,1) ,"float32" ) sch = topi.cuda.schedule_conv2d_nchw_winograd([conv]) winoMod = tvm.build( sch, [ input_data,p1,conv] , target, name='wino') ## Direct conv2d with tvm.target.create('cuda'): conv = topi.cuda.conv2d_nchw( input_data ,p1 ,[1,1] ,[0,0] ,[1,1] ) sch = topi.cuda.schedule_conv2d_nchw([conv]) simpleMod = tvm.build(sch, [input_data,p1], target, name='direct' ) ## Real data tvm_input = tvm.nd.array( sample_data , ctx ) tvm_p1 = tvm.nd.array( sample_p1, ctx ) ## Performance Testing ev_wino = winoMod.time_evaluator(winoMod.entry_name, ctx, number=1,repeat=100 ) ev_conv = simpleMod.time_evaluator(simpleMod.entry_name, ctx, number=1,repeat=100 ) timer = ev_conv( tvm_input, tvm_p1).mean*1e3 print("Conv with Direct algo -> ",timer) timer = ev_wino( tvm_input, tvm_p1).mean*1e3 print("Conv with Winograd Strassen algo -> ",timer ) The execution result is as follows. Conv with Direct algo -> 0.11522044 Conv with Winograd Strassen algo -> 4.70840109 The performance gap is too big. According to the [Fast Algorithms for Convolutional Neural Networks paper](https://arxiv.org/abs/1509.09308), I think performance is higher or similar than direct conv2d. Is there something I misunderstood? --- [Visit Topic](https://discuss.tvm.ai/t/topi-winograd-convolution-performance-is-too-slow/6161/1) to respond. You are receiving this because you enabled mailing list mode. To unsubscribe from these emails, [click here](https://discuss.tvm.ai/email/unsubscribe/89a1a4bd70f6ab8207a7ba366d2beb7929ccd1ba5069e5aec67802cfe4ef4dc4).