日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

GPU自动调度卷积层

發布時間:2023/11/28 生活经验 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 GPU自动调度卷积层 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

GPU自動調度卷積層
本文對GPU使用自動調度程序。
與依靠手動模板定義搜索空間的基于模板的autotvm不同,自動調度程序不需要任何模板。用戶只需要編寫計算聲明,無需任何調度命令或模板。自動調度程序可以自動生成一個較大的搜索空間,在該空間中找到良好的調度。
本文以卷積層為例。
本文無法在Windows或最新版本的macOS上運行。要使其運行,需要將本文的內容包裝在一個if name == “main”:塊中。
import os

import numpy as np
import tvm
from tvm import te, auto_scheduler, topi
from tvm.topi.testing import conv2d_nchw_python
定義計算
首先,定義卷積層的計算。該函數應返回輸入/輸出張量的列表。通過這些張量,自動調度器可以獲得整個計算圖。
@auto_scheduler.register_workload
def conv2d_layer(N, H, W, CO, CI, KH, KW, stride, padding):
data = te.placeholder((N, CI, H, W), name=“data”)
kernel = te.placeholder((CO, CI, KH, KW), name=“kernel”)
bias = te.placeholder((1, CO, 1, 1), name=“bias”)
conv = topi.nn.conv2d_nchw(data, kernel, stride, padding, dilation=1, out_dtype=“float32”)
out = topi.nn.relu(conv + bias)
return [data, kernel, bias, out]
創建搜索任務
然后,為resnet中的最后一個卷積層創建搜索任務。
target = tvm.target.Target(“cuda”)

Use the last layer in ResNet-50

N, H, W, CO, CI, KH, KW, strides, padding = 1, 7, 7, 512, 512, 3, 3, (1, 1), (1, 1)
task = auto_scheduler.SearchTask(
func=conv2d_layer, args=(N, H, W, CO, CI, KH, KW, strides, padding), target=target
)

Inspect the computational graph

print(“Computational DAG:”)
print(task.compute_dag)
輸出:
Computational DAG:
data = PLACEHOLDER [1, 512, 7, 7]
pad_temp(i0, i1, i2, i3) = tir.if_then_else(((((i2 >= 1) && (i2 < 8)) && (i3 >= 1)) && (i3 < 8)), data[i0, i1, (i2 - 1), (i3 - 1)], 0f)
kernel = PLACEHOLDER [512, 512, 3, 3]
compute(nn, ff, yy, xx) += (pad_temp[nn, rc, (yy + ry), (xx + rx)]*kernel[ff, rc, ry, rx])
bias = PLACEHOLDER [1, 512, 1, 1]
T_add(ax0, ax1, ax2, ax3) = (compute[ax0, ax1, ax2, ax3] + bias[ax0, ax1, 0, 0])
compute(i0, i1, i2, i3) = max(T_add[i0, i1, i2, i3], 0f)
接下來,為自動調度程序設置參數。這些參數主要指定在搜索過程中如何進行測量。
? measure_ctx啟動不同的測量過程以提供隔離。保護主進程免受測量期間GPU崩潰的影響,避免其它運行時沖突。
? min_repeat_ms定義每次測量中一次“重復”的最小持續時間。這樣可以預熱GPU,對于獲得準確的測量結果是必不可少的。通常,建議值> = 300毫秒。
? num_measure_trials是在搜索過程中可以使用的測量試驗的數量。為了快速演示,在本文中僅進行了10次試用。在實踐中,1000是使搜索收斂的一個好值??梢愿鶕约旱臅r間預算進行更多試驗。
? 此外,還用RecordToFile將測量記錄轉儲到文件conv2d.json中。測量記錄可用于最好地查詢歷史記錄,恢復搜索以及以后進行更多分析。
? 有關更多參數auto_scheduler.TuningOptions, 請參見auto_scheduler.LocalRPCMeasureContext。
log_file = “conv2d.json”
measure_ctx = auto_scheduler.LocalRPCMeasureContext(min_repeat_ms=300)
tune_option = auto_scheduler.TuningOptions(
num_measure_trials=10, # change this to 1000 to achieve the best performance
runner=measure_ctx.runner,
measure_callbacks=[auto_scheduler.RecordToFile(log_file)],
verbose=2,
)
輸出:
Get devices for measurement successfully!
運行搜索
現在準備好所有輸入。開始搜索,讓自動調度程序發揮作用。經過一些測量試驗之后,可以從日志文件中加載最佳調度并應用它。

Run auto-tuning (search)

task.tune(tune_option)

Apply the best schedule

sch, args = task.apply_best(log_file)

Kill the measurement process

del measure_ctx
輸出:
可以降低調度以在自動調度后查看IR。自動調度程序可以正確執行優化,包括多層平鋪,協作提取,展開和算子融合。
print(“Lowered TIR:”)
print(tvm.lower(sch, args, simple_mode=True))
輸出:
Lowered TIR:
primfn(data_1: handle, kernel_1: handle, bias_1: handle, compute_1: handle) -> ()
attr = {“global_symbol”: “main”, “tir.noalias”: True}
buffers = {compute: Buffer(compute_2: Pointer(float32), float32, [1, 512, 7, 7], []),
kernel: Buffer(kernel_2: Pointer(float32), float32, [512, 512, 3, 3], []),
bias: Buffer(bias_2: Pointer(float32), float32, [1, 512, 1, 1], []),
data: Buffer(data_2: Pointer(float32), float32, [1, 512, 7, 7], [])}
buffer_map = {data_1: data, kernel_1: kernel, bias_1: bias, compute_1: compute} {
attr [IterVar(blockIdx.x: int32, (nullptr), “ThreadIndex”, “blockIdx.x”)] “thread_extent” = 16;
attr [compute_3: Pointer(float32)] “storage_scope” = “local”;
allocate(compute_3, float32, [14]);
attr [pad_temp.shared: Pointer(float32)] “storage_scope” = “shared”;
allocate(pad_temp.shared, float32, [1296]);
attr [kernel.shared: Pointer(float32)] “storage_scope” = “shared”;
allocate(kernel.shared, float32, [4608]);
attr [IterVar(threadIdx.x: int32, (nullptr), “ThreadIndex”, “threadIdx.x”)] “thread_extent” = 112 {
compute_3[0] = 0f32
compute_3[7] = 0f32
compute_3[1] = 0f32
compute_3[8] = 0f32
compute_3[2] = 0f32
compute_3[9] = 0f32
compute_3[3] = 0f32
compute_3[10] = 0f32
compute_3[4] = 0f32
compute_3[11] = 0f32
compute_3[5] = 0f32
compute_3[12] = 0f32
compute_3[6] = 0f32
compute_3[13] = 0f32
for (rc.outer.outer: int32, 0, 32) {
attr [IterVar(threadIdx.x_1: int32, (nullptr), “ThreadIndex”, “threadIdx.x”)] “thread_extent” = 112;
pad_temp.shared[threadIdx.x_1] = @tir.if_then_else(((((9 <= floormod(threadIdx.x_1, 81)) && (floormod(threadIdx.x_1, 81) < 72)) && (1 <= floormod(threadIdx.x_1, 9))) && (floormod(threadIdx.x_1, 9) < 8)), (float32*)data_2[(((((rc.outer.outer784) + (floordiv(threadIdx.x_1, 81)49)) + (floordiv(floormod(threadIdx.x_1, 81), 9)7)) + floormod(threadIdx.x_1, 9)) - 8)], 0f32, dtype=float32)
attr [IterVar(threadIdx.x_1, (nullptr), “ThreadIndex”, “threadIdx.x”)] “thread_extent” = 112;
pad_temp.shared[(threadIdx.x_1 + 112)] = @tir.if_then_else(((((9 <= floormod((threadIdx.x_1 + 31), 81)) && (floormod((threadIdx.x_1 + 31), 81) < 72)) && (1 <= floormod((threadIdx.x_1 + 4), 9))) && (floormod((threadIdx.x_1 + 4), 9) < 8)), (float32
)data_2[(((((rc.outer.outer
784) + (floordiv((threadIdx.x_1 + 112), 81)49)) + (floordiv(floormod((threadIdx.x_1 + 31), 81), 9)7)) + floormod((threadIdx.x_1 + 4), 9)) - 8)], 0f32, dtype=float32)
attr [IterVar(threadIdx.x_1, (nullptr), “ThreadIndex”, “threadIdx.x”)] “thread_extent” = 112;
pad_temp.shared[(threadIdx.x_1 + 224)] = @tir.if_then_else(((((9 <= floormod((threadIdx.x_1 + 62), 81)) && (floormod((threadIdx.x_1 + 62), 81) < 72)) && (1 <= floormod((threadIdx.x_1 + 8), 9))) && (floormod((threadIdx.x_1 + 8), 9) < 8)), (float32
)data_2[(((((rc.outer.outer
784) + (floordiv((threadIdx.x_1 + 224), 81)49)) + (floordiv(floormod((threadIdx.x_1 + 62), 81), 9)7)) + floormod((threadIdx.x_1 + 8), 9)) - 8)], 0f32, dtype=float32)
attr [IterVar(threadIdx.x_1, (nullptr), “ThreadIndex”, “threadIdx.x”)] “thread_extent” = 112;
pad_temp.shared[(threadIdx.x_1 + 336)] = @tir.if_then_else(((((9 <= floormod((threadIdx.x_1 + 12), 81)) && (floormod((threadIdx.x_1 + 12), 81) < 72)) && (1 <= floormod((threadIdx.x_1 + 3), 9))) && (floormod((threadIdx.x_1 + 3), 9) < 8)), (float32
)data_2[(((((rc.outer.outer
784) + (floordiv((threadIdx.x_1 + 336), 81)49)) + (floordiv(floormod((threadIdx.x_1 + 12), 81), 9)7)) + floormod((threadIdx.x_1 + 3), 9)) - 8)], 0f32, dtype=float32)
attr [IterVar(threadIdx.x_1, (nullptr), “ThreadIndex”, “threadIdx.x”)] “thread_extent” = 112;
pad_temp.shared[(threadIdx.x_1 + 448)] = @tir.if_then_else(((((9 <= floormod((threadIdx.x_1 + 43), 81)) && (floormod((threadIdx.x_1 + 43), 81) < 72)) && (1 <= floormod((threadIdx.x_1 + 7), 9))) && (floormod((threadIdx.x_1 + 7), 9) < 8)), (float32
)data_2[(((((rc.outer.outer
784) + (floordiv((threadIdx.x_1 + 448), 81)49)) + (floordiv(floormod((threadIdx.x_1 + 43), 81), 9)7)) + floormod((threadIdx.x_1 + 7), 9)) - 8)], 0f32, dtype=float32)
attr [IterVar(threadIdx.x_1, (nullptr), “ThreadIndex”, “threadIdx.x”)] “thread_extent” = 112;
pad_temp.shared[(threadIdx.x_1 + 560)] = @tir.if_then_else(((((9 <= floormod((threadIdx.x_1 + 74), 81)) && (floormod((threadIdx.x_1 + 74), 81) < 72)) && (1 <= floormod((threadIdx.x_1 + 2), 9))) && (floormod((threadIdx.x_1 + 2), 9) < 8)), (float32
)data_2[(((((rc.outer.outer
784) + (floordiv((threadIdx.x_1 + 560), 81)49)) + (floordiv(floormod((threadIdx.x_1 + 74), 81), 9)7)) + floormod((threadIdx.x_1 + 2), 9)) - 8)], 0f32, dtype=float32)
attr [IterVar(threadIdx.x_1, (nullptr), “ThreadIndex”, “threadIdx.x”)] “thread_extent” = 112;
pad_temp.shared[(threadIdx.x_1 + 672)] = @tir.if_then_else(((((9 <= floormod((threadIdx.x_1 + 24), 81)) && (floormod((threadIdx.x_1 + 24), 81) < 72)) && (1 <= floormod((threadIdx.x_1 + 6), 9))) && (floormod((threadIdx.x_1 + 6), 9) < 8)), (float32
)data_2[(((((rc.outer.outer
784) + (floordiv((threadIdx.x_1 + 672), 81)49)) + (floordiv(floormod((threadIdx.x_1 + 24), 81), 9)7)) + floormod((threadIdx.x_1 + 6), 9)) - 8)], 0f32, dtype=float32)
attr [IterVar(threadIdx.x_1, (nullptr), “ThreadIndex”, “threadIdx.x”)] “thread_extent” = 112;
pad_temp.shared[(threadIdx.x_1 + 784)] = @tir.if_then_else(((((9 <= floormod((threadIdx.x_1 + 55), 81)) && (floormod((threadIdx.x_1 + 55), 81) < 72)) && (1 <= floormod((threadIdx.x_1 + 1), 9))) && (floormod((threadIdx.x_1 + 1), 9) < 8)), (float32
)data_2[(((((rc.outer.outer
784) + (floordiv((threadIdx.x_1 + 784), 81)49)) + (floordiv(floormod((threadIdx.x_1 + 55), 81), 9)7)) + floormod((threadIdx.x_1 + 1), 9)) - 8)], 0f32, dtype=float32)
attr [IterVar(threadIdx.x_1, (nullptr), “ThreadIndex”, “threadIdx.x”)] “thread_extent” = 112;
pad_temp.shared[(threadIdx.x_1 + 896)] = @tir.if_then_else(((((9 <= floormod((threadIdx.x_1 + 5), 81)) && (floormod((threadIdx.x_1 + 5), 81) < 72)) && (1 <= floormod((threadIdx.x_1 + 5), 9))) && (floormod((threadIdx.x_1 + 5), 9) < 8)), (float32
)data_2[(((((rc.outer.outer
784) + (floordiv((threadIdx.x_1 + 896), 81)49)) + (floordiv(floormod((threadIdx.x_1 + 5), 81), 9)7)) + floormod((threadIdx.x_1 + 5), 9)) - 8)], 0f32, dtype=float32)
attr [IterVar(threadIdx.x_1, (nullptr), “ThreadIndex”, “threadIdx.x”)] “thread_extent” = 112;
pad_temp.shared[(threadIdx.x_1 + 1008)] = @tir.if_then_else(((((9 <= floormod((threadIdx.x_1 + 36), 81)) && (floormod((threadIdx.x_1 + 36), 81) < 72)) && (1 <= floormod(threadIdx.x_1, 9))) && (floormod(threadIdx.x_1, 9) < 8)), (float32
)data_2[(((((rc.outer.outer
784) + (floordiv((threadIdx.x_1 + 1008), 81)49)) + (floordiv(floormod((threadIdx.x_1 + 36), 81), 9)7)) + floormod(threadIdx.x_1, 9)) - 8)], 0f32, dtype=float32)
attr [IterVar(threadIdx.x_1, (nullptr), “ThreadIndex”, “threadIdx.x”)] “thread_extent” = 112;
pad_temp.shared[(threadIdx.x_1 + 1120)] = @tir.if_then_else(((((9 <= floormod((threadIdx.x_1 + 67), 81)) && (floormod((threadIdx.x_1 + 67), 81) < 72)) && (1 <= floormod((threadIdx.x_1 + 4), 9))) && (floormod((threadIdx.x_1 + 4), 9) < 8)), (float32
)data_2[(((((rc.outer.outer
784) + (floordiv((threadIdx.x_1 + 1120), 81)49)) + (floordiv(floormod((threadIdx.x_1 + 67), 81), 9)7)) + floormod((threadIdx.x_1 + 4), 9)) - 8)], 0f32, dtype=float32)
attr [IterVar(threadIdx.x_1, (nullptr), “ThreadIndex”, “threadIdx.x”)] “thread_extent” = 112;
if @tir.likely((threadIdx.x_1 < 64), dtype=bool) {
pad_temp.shared[(threadIdx.x_1 + 1232)] = @tir.if_then_else((((floormod((threadIdx.x_1 + 17), 81) < 72) && (1 <= floormod((threadIdx.x_1 + 8), 9))) && (floormod((threadIdx.x_1 + 8), 9) < 8)), (float32
)data_2[(((((rc.outer.outer
784) + (floordiv((threadIdx.x_1 + 1232), 81)49)) + (floordiv(floormod((threadIdx.x_1 + 17), 81), 9)7)) + floormod((threadIdx.x_1 + 8), 9)) - 8)], 0f32, dtype=float32)
}
attr [IterVar(threadIdx.x_2: int32, (nullptr), “ThreadIndex”, “threadIdx.x”)] “thread_extent” = 112 {
kernel.shared[(threadIdx.x_2
4)] = (float32
)kernel_2[((((blockIdx.x
147456) + (floordiv(threadIdx.x_2, 36)4608)) + (rc.outer.outer144)) + (floormod(threadIdx.x_2, 36)4))]
kernel.shared[((threadIdx.x_2
4) + 1)] = (float32*)kernel_2[((((blockIdx.x147456) + (floordiv(((threadIdx.x_24) + 1), 144)4608)) + (rc.outer.outer144)) + floormod(((threadIdx.x_24) + 1), 144))]
kernel.shared[((threadIdx.x_2
4) + 2)] = (float32*)kernel_2[((((blockIdx.x147456) + (floordiv(((threadIdx.x_24) + 2), 144)4608)) + (rc.outer.outer144)) + floormod(((threadIdx.x_24) + 2), 144))]
kernel.shared[((threadIdx.x_2
4) + 3)] = (float32*)kernel_2[((((blockIdx.x147456) + (floordiv(((threadIdx.x_24) + 3), 144)4608)) + (rc.outer.outer144)) + floormod(((threadIdx.x_24) + 3), 144))]
}
attr [IterVar(threadIdx.x_2, (nullptr), “ThreadIndex”, “threadIdx.x”)] “thread_extent” = 112 {
kernel.shared[((threadIdx.x_2
4) + 448)] = (float32*)kernel_2[((((blockIdx.x147456) + (floordiv(((threadIdx.x_24) + 448), 144)4608)) + (rc.outer.outer144)) + floormod(((threadIdx.x_24) + 16), 144))]
kernel.shared[((threadIdx.x_2
4) + 449)] = (float32*)kernel_2[((((blockIdx.x147456) + (floordiv(((threadIdx.x_24) + 449), 144)4608)) + (rc.outer.outer144)) + floormod(((threadIdx.x_24) + 17), 144))]
kernel.shared[((threadIdx.x_2
4) + 450)] = (float32*)kernel_2[((((blockIdx.x147456) + (floordiv(((threadIdx.x_24) + 450), 144)4608)) + (rc.outer.outer144)) + floormod(((threadIdx.x_24) + 18), 144))]
kernel.shared[((threadIdx.x_2
4) + 451)] = (float32*)kernel_2[((((blockIdx.x147456) + (floordiv(((threadIdx.x_24) + 451), 144)4608)) + (rc.outer.outer144)) + floormod(((threadIdx.x_24) + 19), 144))]
}
attr [IterVar(threadIdx.x_2, (nullptr), “ThreadIndex”, “threadIdx.x”)] “thread_extent” = 112 {
kernel.shared[((threadIdx.x_2
4) + 896)] = (float32*)kernel_2[((((blockIdx.x147456) + (floordiv(((threadIdx.x_24) + 896), 144)4608)) + (rc.outer.outer144)) + floormod(((threadIdx.x_24) + 32), 144))]
kernel.shared[((threadIdx.x_2
4) + 897)] = (float32*)kernel_2[((((blockIdx.x147456) + (floordiv(((threadIdx.x_24) + 897), 144)4608)) + (rc.outer.outer144)) + floormod(((threadIdx.x_24) + 33), 144))]
kernel.shared[((threadIdx.x_2
4) + 898)] = (float32*)kernel_2[((((blockIdx.x147456) + (floordiv(((threadIdx.x_24) + 898), 144)4608)) + (rc.outer.outer144)) + floormod(((threadIdx.x_24) + 34), 144))]
kernel.shared[((threadIdx.x_2
4) + 899)] = (float32*)kernel_2[((((blockIdx.x147456) + (floordiv(((threadIdx.x_24) + 899), 144)4608)) + (rc.outer.outer144)) + floormod(((threadIdx.x_24) + 35), 144))]
}
attr [IterVar(threadIdx.x_2, (nullptr), “ThreadIndex”, “threadIdx.x”)] “thread_extent” = 112 {
kernel.shared[((threadIdx.x_2
4) + 1344)] = (float32*)kernel_2[((((blockIdx.x147456) + (floordiv(((threadIdx.x_24) + 1344), 144)4608)) + (rc.outer.outer144)) + floormod(((threadIdx.x_24) + 48), 144))]
kernel.shared[((threadIdx.x_2
4) + 1345)] = (float32*)kernel_2[((((blockIdx.x147456) + (floordiv(((threadIdx.x_24) + 1345), 144)4608)) + (rc.outer.outer144)) + floormod(((threadIdx.x_24) + 49), 144))]
kernel.shared[((threadIdx.x_2
4) + 1346)] = (float32*)kernel_2[((((blockIdx.x147456) + (floordiv(((threadIdx.x_24) + 1346), 144)4608)) + (rc.outer.outer144)) + floormod(((threadIdx.x_24) + 50), 144))]
kernel.shared[((threadIdx.x_2
4) + 1347)] = (float32*)kernel_2[((((blockIdx.x147456) + (floordiv(((threadIdx.x_24) + 1347), 144)4608)) + (rc.outer.outer144)) + floormod(((threadIdx.x_24) + 51), 144))]
}
attr [IterVar(threadIdx.x_2, (nullptr), “ThreadIndex”, “threadIdx.x”)] “thread_extent” = 112 {
kernel.shared[((threadIdx.x_2
4) + 1792)] = (float32*)kernel_2[((((blockIdx.x147456) + (floordiv(((threadIdx.x_24) + 1792), 144)4608)) + (rc.outer.outer144)) + floormod(((threadIdx.x_24) + 64), 144))]
kernel.shared[((threadIdx.x_2
4) + 1793)] = (float32*)kernel_2[((((blockIdx.x147456) + (floordiv(((threadIdx.x_24) + 1793), 144)4608)) + (rc.outer.outer144)) + floormod(((threadIdx.x_24) + 65), 144))]
kernel.shared[((threadIdx.x_2
4) + 1794)] = (float32*)kernel_2[((((blockIdx.x147456) + (floordiv(((threadIdx.x_24) + 1794), 144)4608)) + (rc.outer.outer144)) + floormod(((threadIdx.x_24) + 66), 144))]
kernel.shared[((threadIdx.x_2
4) + 1795)] = (float32*)kernel_2[((((blockIdx.x147456) + (floordiv(((threadIdx.x_24) + 1795), 144)4608)) + (rc.outer.outer144)) + floormod(((threadIdx.x_24) + 67), 144))]
}
attr [IterVar(threadIdx.x_2, (nullptr), “ThreadIndex”, “threadIdx.x”)] “thread_extent” = 112 {
kernel.shared[((threadIdx.x_2
4) + 2240)] = (float32*)kernel_2[((((blockIdx.x147456) + (floordiv(((threadIdx.x_24) + 2240), 144)4608)) + (rc.outer.outer144)) + floormod(((threadIdx.x_24) + 80), 144))]
kernel.shared[((threadIdx.x_2
4) + 2241)] = (float32*)kernel_2[((((blockIdx.x147456) + (floordiv(((threadIdx.x_24) + 2241), 144)4608)) + (rc.outer.outer144)) + floormod(((threadIdx.x_24) + 81), 144))]
kernel.shared[((threadIdx.x_2
4) + 2242)] = (float32*)kernel_2[((((blockIdx.x147456) + (floordiv(((threadIdx.x_24) + 2242), 144)4608)) + (rc.outer.outer144)) + floormod(((threadIdx.x_24) + 82), 144))]
kernel.shared[((threadIdx.x_2
4) + 2243)] = (float32*)kernel_2[((((blockIdx.x147456) + (floordiv(((threadIdx.x_24) + 2243), 144)4608)) + (rc.outer.outer144)) + floormod(((threadIdx.x_24) + 83), 144))]
}
attr [IterVar(threadIdx.x_2, (nullptr), “ThreadIndex”, “threadIdx.x”)] “thread_extent” = 112 {
kernel.shared[((threadIdx.x_2
4) + 2688)] = (float32*)kernel_2[((((blockIdx.x147456) + (floordiv(((threadIdx.x_24) + 2688), 144)4608)) + (rc.outer.outer144)) + floormod(((threadIdx.x_24) + 96), 144))]
kernel.shared[((threadIdx.x_2
4) + 2689)] = (float32*)kernel_2[((((blockIdx.x147456) + (floordiv(((threadIdx.x_24) + 2689), 144)4608)) + (rc.outer.outer144)) + floormod(((threadIdx.x_24) + 97), 144))]
kernel.shared[((threadIdx.x_2
4) + 2690)] = (float32*)kernel_2[((((blockIdx.x147456) + (floordiv(((threadIdx.x_24) + 2690), 144)4608)) + (rc.outer.outer144)) + floormod(((threadIdx.x_24) + 98), 144))]
kernel.shared[((threadIdx.x_2
4) + 2691)] = (float32*)kernel_2[((((blockIdx.x147456) + (floordiv(((threadIdx.x_24) + 2691), 144)4608)) + (rc.outer.outer144)) + floormod(((threadIdx.x_24) + 99), 144))]
}
attr [IterVar(threadIdx.x_2, (nullptr), “ThreadIndex”, “threadIdx.x”)] “thread_extent” = 112 {
kernel.shared[((threadIdx.x_2
4) + 3136)] = (float32*)kernel_2[((((blockIdx.x147456) + (floordiv(((threadIdx.x_24) + 3136), 144)4608)) + (rc.outer.outer144)) + floormod(((threadIdx.x_24) + 112), 144))]
kernel.shared[((threadIdx.x_2
4) + 3137)] = (float32*)kernel_2[((((blockIdx.x147456) + (floordiv(((threadIdx.x_24) + 3137), 144)4608)) + (rc.outer.outer144)) + floormod(((threadIdx.x_24) + 113), 144))]
kernel.shared[((threadIdx.x_2
4) + 3138)] = (float32*)kernel_2[((((blockIdx.x147456) + (floordiv(((threadIdx.x_24) + 3138), 144)4608)) + (rc.outer.outer144)) + floormod(((threadIdx.x_24) + 114), 144))]
kernel.shared[((threadIdx.x_2
4) + 3139)] = (float32*)kernel_2[((((blockIdx.x147456) + (floordiv(((threadIdx.x_24) + 3139), 144)4608)) + (rc.outer.outer144)) + floormod(((threadIdx.x_24) + 115), 144))]
}
attr [IterVar(threadIdx.x_2, (nullptr), “ThreadIndex”, “threadIdx.x”)] “thread_extent” = 112 {
kernel.shared[((threadIdx.x_2
4) + 3584)] = (float32*)kernel_2[((((blockIdx.x147456) + (floordiv(((threadIdx.x_24) + 3584), 144)4608)) + (rc.outer.outer144)) + floormod(((threadIdx.x_24) + 128), 144))]
kernel.shared[((threadIdx.x_2
4) + 3585)] = (float32*)kernel_2[((((blockIdx.x147456) + (floordiv(((threadIdx.x_24) + 3585), 144)4608)) + (rc.outer.outer144)) + floormod(((threadIdx.x_24) + 129), 144))]
kernel.shared[((threadIdx.x_2
4) + 3586)] = (float32*)kernel_2[((((blockIdx.x147456) + (floordiv(((threadIdx.x_24) + 3586), 144)4608)) + (rc.outer.outer144)) + floormod(((threadIdx.x_24) + 130), 144))]
kernel.shared[((threadIdx.x_2
4) + 3587)] = (float32*)kernel_2[((((blockIdx.x147456) + (floordiv(((threadIdx.x_24) + 3587), 144)4608)) + (rc.outer.outer144)) + floormod(((threadIdx.x_24) + 131), 144))]
}
attr [IterVar(threadIdx.x_2, (nullptr), “ThreadIndex”, “threadIdx.x”)] “thread_extent” = 112 {
kernel.shared[((threadIdx.x_2
4) + 4032)] = (float32*)kernel_2[(((((blockIdx.x147456) + (floordiv((threadIdx.x_24), 144)4608)) + (rc.outer.outer144)) + (floormod(threadIdx.x_2, 36)4)) + 129024)]
kernel.shared[((threadIdx.x_2
4) + 4033)] = (float32*)kernel_2[((((blockIdx.x147456) + (floordiv(((threadIdx.x_24) + 4033), 144)4608)) + (rc.outer.outer144)) + floormod(((threadIdx.x_24) + 1), 144))]
kernel.shared[((threadIdx.x_2
4) + 4034)] = (float32*)kernel_2[((((blockIdx.x147456) + (floordiv(((threadIdx.x_24) + 4034), 144)4608)) + (rc.outer.outer144)) + floormod(((threadIdx.x_24) + 2), 144))]
kernel.shared[((threadIdx.x_2
4) + 4035)] = (float32*)kernel_2[((((blockIdx.x147456) + (floordiv(((threadIdx.x_24) + 4035), 144)4608)) + (rc.outer.outer144)) + floormod(((threadIdx.x_24) + 3), 144))]
}
attr [IterVar(threadIdx.x_2, (nullptr), “ThreadIndex”, “threadIdx.x”)] “thread_extent” = 112 {
if @tir.likely((threadIdx.x_2 < 32), dtype=bool) {
kernel.shared[((threadIdx.x_2
4) + 4480)] = (float32*)kernel_2[((((blockIdx.x147456) + (floordiv(((threadIdx.x_24) + 4480), 144)4608)) + (rc.outer.outer144)) + floormod(((threadIdx.x_24) + 16), 144))]
}
if @tir.likely(((threadIdx.x_2
4) < 127), dtype=bool) {
if @tir.likely((threadIdx.x_2 < 32), dtype=bool) {
kernel.shared[((threadIdx.x_24) + 4481)] = (float32)kernel_2[((((blockIdx.x147456) + (floordiv(((threadIdx.x_24) + 4481), 144)4608)) + (rc.outer.outer144)) + floormod(((threadIdx.x_24) + 17), 144))]
}
}
if @tir.likely(((threadIdx.x_2
4) < 126), dtype=bool) {
if @tir.likely((threadIdx.x_2 < 32), dtype=bool) {
kernel.shared[((threadIdx.x_24) + 4482)] = (float32)kernel_2[((((blockIdx.x147456) + (floordiv(((threadIdx.x_24) + 4482), 144)4608)) + (rc.outer.outer144)) + floormod(((threadIdx.x_24) + 18), 144))]
}
}
if @tir.likely(((threadIdx.x_2
4) < 125), dtype=bool) {
if @tir.likely((threadIdx.x_2 < 32), dtype=bool) {
kernel.shared[((threadIdx.x_24) + 4483)] = (float32)kernel_2[((((blockIdx.x147456) + (floordiv(((threadIdx.x_24) + 4483), 144)4608)) + (rc.outer.outer144)) + floormod(((threadIdx.x_24) + 19), 144))]
}
}
}
for (rc.outer.inner: int32, 0, 4) {
compute_3[0] = ((float32
)compute_3[0] + ((float32*)pad_temp.shared[((rc.outer.inner324) + (floormod(threadIdx.x, 7)9))](float32)kernel.shared[((floordiv(threadIdx.x, 7)144) + (rc.outer.inner36))]))
compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[((rc.outer.inner324) + (floormod(threadIdx.x, 7)9))](float32)kernel.shared[(((floordiv(threadIdx.x, 7)144) + (rc.outer.inner36)) + 2304)]))
compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(((rc.outer.inner324) + (floormod(threadIdx.x, 7)9)) + 1)](float32)kernel.shared[((floordiv(threadIdx.x, 7)144) + (rc.outer.inner36))]))
compute_3[8] = ((float32*)compute_3[8] + ((float32*)pad_temp.shared[(((rc.outer.inner324) + (floormod(threadIdx.x, 7)9)) + 1)](float32)kernel.shared[(((floordiv(threadIdx.x, 7)144) + (rc.outer.inner36)) + 2304)]))
compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(((rc.outer.inner324) + (floormod(threadIdx.x, 7)9)) + 2)](float32)kernel.shared[((floordiv(threadIdx.x, 7)144) + (rc.outer.inner36))]))
compute_3[9] = ((float32*)compute_3[9] + ((float32*)pad_temp.shared[(((rc.outer.inner324) + (floormod(threadIdx.x, 7)9)) + 2)](float32)kernel.shared[(((floordiv(threadIdx.x, 7)144) + (rc.outer.inner36)) + 2304)]))
compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(((rc.outer.inner324) + (floormod(threadIdx.x, 7)9)) + 3)](float32)kernel.shared[((floordiv(threadIdx.x, 7)144) + (rc.outer.inner36))]))
compute_3[10] = ((float32*)compute_3[10] + ((float32*)pad_temp.shared[(((rc.outer.inner324) + (floormod(threadIdx.x, 7)9)) + 3)](float32)kernel.shared[(((floordiv(threadIdx.x, 7)144) + (rc.outer.inner36)) + 2304)]))
compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(((rc.outer.inner324) + (floormod(threadIdx.x, 7)9)) + 4)](float32)kernel.shared[((floordiv(threadIdx.x, 7)144) + (rc.outer.inner36))]))

    compute_3[9] = ((float32*)compute_3[9] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 22)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2312)]))compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 23)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 8)]))compute_3[10] = ((float32*)compute_3[10] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 23)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2312)]))compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 24)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 8)]))compute_3[11] = ((float32*)compute_3[11] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 24)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2312)]))compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 25)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 8)]))compute_3[12] = ((float32*)compute_3[12] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 25)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2312)]))compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 26)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 8)]))compute_3[13] = ((float32*)compute_3[13] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 26)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2312)]))compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 99)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 15)]))compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 99)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2319)]))compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 100)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 15)]))compute_3[8] = ((float32*)compute_3[8] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 100)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2319)]))compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 101)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 15)]))compute_3[9] = ((float32*)compute_3[9] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 101)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2319)]))compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 102)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 15)]))compute_3[10] = ((float32*)compute_3[10] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 102)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2319)]))compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 103)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 15)]))compute_3[11] = ((float32*)compute_3[11] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 103)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2319)]))compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 104)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 15)]))compute_3[12] = ((float32*)compute_3[12] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 104)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2319)]))compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 105)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 15)]))compute_3[13] = ((float32*)compute_3[13] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 105)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2319)]))compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 100)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 16)]))compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 100)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2320)]))compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 101)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 16)]))compute_3[8] = ((float32*)compute_3[8] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 101)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2320)]))compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 102)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 16)]))compute_3[9] = ((float32*)compute_3[9] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 102)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2320)]))compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 103)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 16)]))compute_3[10] = ((float32*)compute_3[10] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 103)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2320)]))compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 104)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 16)]))compute_3[11] = ((float32*)compute_3[11] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 104)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2320)]))compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 105)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 16)]))compute_3[12] = ((float32*)compute_3[12] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 105)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2320)]))compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 106)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 16)]))compute_3[13] = ((float32*)compute_3[13] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 106)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2320)]))compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 101)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 17)]))compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 101)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2321)]))compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 102)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 17)]))compute_3[8] = ((float32*)compute_3[8] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 102)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2321)]))compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 103)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 17)]))compute_3[9] = ((float32*)compute_3[9] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 103)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2321)]))compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 104)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 17)]))compute_3[10] = ((float32*)compute_3[10] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 104)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2321)]))compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 105)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 17)]))compute_3[11] = ((float32*)compute_3[11] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 105)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2321)]))compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 106)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 17)]))compute_3[12] = ((float32*)compute_3[12] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 106)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2321)]))compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 107)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 17)]))compute_3[13] = ((float32*)compute_3[13] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 107)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2321)]))compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 180)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 24)]))compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 180)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2328)]))compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 181)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 24)]))compute_3[8] = ((float32*)compute_3[8] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 181)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2328)]))compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 182)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 24)]))compute_3[9] = ((float32*)compute_3[9] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 182)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2328)]))compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 183)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 24)]))compute_3[10] = ((float32*)compute_3[10] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 183)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2328)]))compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 184)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 24)]))compute_3[11] = ((float32*)compute_3[11] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 184)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2328)]))compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 185)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 24)]))compute_3[12] = ((float32*)compute_3[12] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 185)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2328)]))compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 186)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 24)]))compute_3[13] = ((float32*)compute_3[13] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 186)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2328)]))compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 181)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 25)]))compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 181)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2329)]))compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 182)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 25)]))compute_3[8] = ((float32*)compute_3[8] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 182)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2329)]))compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 183)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 25)]))compute_3[9] = ((float32*)compute_3[9] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 183)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2329)]))compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 184)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 25)]))compute_3[10] = ((float32*)compute_3[10] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 184)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2329)]))compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 185)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 25)]))compute_3[11] = ((float32*)compute_3[11] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 185)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2329)]))compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 186)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 25)]))compute_3[12] = ((float32*)compute_3[12] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 186)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2329)]))compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 187)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 25)]))compute_3[13] = ((float32*)compute_3[13] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 187)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2329)]))compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 182)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 26)]))compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 182)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2330)]))compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 183)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 26)]))compute_3[8] = ((float32*)compute_3[8] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 183)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2330)]))compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 184)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 26)]))compute_3[9] = ((float32*)compute_3[9] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 184)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2330)]))compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 185)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 26)]))compute_3[10] = ((float32*)compute_3[10] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 185)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2330)]))compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 186)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 26)]))compute_3[11] = ((float32*)compute_3[11] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 186)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2330)]))compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 187)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 26)]))compute_3[12] = ((float32*)compute_3[12] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 187)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2330)]))compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 188)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 26)]))compute_3[13] = ((float32*)compute_3[13] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 188)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2330)]))compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 261)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 33)]))compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 261)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2337)]))compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 262)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 33)]))compute_3[8] = ((float32*)compute_3[8] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 262)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2337)]))compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 263)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 33)]))compute_3[9] = ((float32*)compute_3[9] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 263)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2337)]))compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 264)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 33)]))compute_3[10] = ((float32*)compute_3[10] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 264)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2337)]))compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 265)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 33)]))compute_3[11] = ((float32*)compute_3[11] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 265)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2337)]))compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 266)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 33)]))compute_3[12] = ((float32*)compute_3[12] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 266)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2337)]))compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 267)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 33)]))compute_3[13] = ((float32*)compute_3[13] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 267)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2337)]))compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 262)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 34)]))compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 262)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2338)]))compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 263)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 34)]))compute_3[8] = ((float32*)compute_3[8] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 263)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2338)]))compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 264)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 34)]))compute_3[9] = ((float32*)compute_3[9] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 264)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2338)]))compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 265)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 34)]))compute_3[10] = ((float32*)compute_3[10] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 265)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2338)]))compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 266)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 34)]))compute_3[11] = ((float32*)compute_3[11] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 266)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2338)]))compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 267)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 34)]))compute_3[12] = ((float32*)compute_3[12] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 267)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2338)]))compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 268)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 34)]))compute_3[13] = ((float32*)compute_3[13] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 268)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2338)]))compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 263)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 35)]))compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 263)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2339)]))compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 264)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 35)]))compute_3[8] = ((float32*)compute_3[8] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 264)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2339)]))compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 265)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 35)]))compute_3[9] = ((float32*)compute_3[9] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 265)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2339)]))compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 266)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 35)]))compute_3[10] = ((float32*)compute_3[10] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 266)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2339)]))compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 267)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 35)]))compute_3[11] = ((float32*)compute_3[11] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 267)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2339)]))compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 268)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 35)]))compute_3[12] = ((float32*)compute_3[12] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 268)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2339)]))compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 269)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 35)]))compute_3[13] = ((float32*)compute_3[13] + ((float32*)pad_temp.shared[(((rc.outer.inner*324) + (floormod(threadIdx.x, 7)*9)) + 269)]*(float32*)kernel.shared[(((floordiv(threadIdx.x, 7)*144) + (rc.outer.inner*36)) + 2339)]))}
}
for (i3.inner: int32, 0, 7) {compute_2[(((blockIdx.x*1568) + (threadIdx.x*7)) + i3.inner)] = max(((float32*)compute_3[i3.inner] + (float32*)bias_2[((blockIdx.x*32) + floordiv(threadIdx.x, 7))]), 0f32)compute_2[((((blockIdx.x*1568) + (threadIdx.x*7)) + i3.inner) + 784)] = max(((float32*)compute_3[(i3.inner + 7)] + (float32*)bias_2[(((blockIdx.x*32) + floordiv(threadIdx.x, 7)) + 16)]), 0f32)
}

}
}
檢查正確性并評估性能
構建二進制文件并檢查其正確性和性能。
func = tvm.build(sch, args, target)

Check correctness

data_np = np.random.uniform(size=(N, CI, H, W)).astype(np.float32)
weight_np = np.random.uniform(size=(CO, CI, KH, KW)).astype(np.float32)
bias_np = np.random.uniform(size=(1, CO, 1, 1)).astype(np.float32)
conv_np = conv2d_nchw_python(data_np, weight_np, strides, padding)
out_np = np.maximum(conv_np + bias_np, 0.0)

ctx = tvm.gpu()
data_tvm = tvm.nd.array(data_np, ctx=ctx)
weight_tvm = tvm.nd.array(weight_np, ctx=ctx)
bias_tvm = tvm.nd.array(bias_np, ctx=ctx)
out_tvm = tvm.nd.empty(out_np.shape, ctx=ctx)
func(data_tvm, weight_tvm, bias_tvm, out_tvm)

Check results

np.testing.assert_allclose(out_np, out_tvm.asnumpy(), rtol=1e-3)

Evaluate execution time

evaluator = func.time_evaluator(func.entry_name, ctx, min_repeat_ms=500)
print(
“Execution time of this operator: %.3f ms”
% (np.median(evaluator(data_tvm, weight_tvm, bias_tvm, out_tvm).results) * 1000)
)
輸出:
Execution time of this operator: 0.184 ms
使用記錄文件
搜索期間,所有測量記錄都將轉儲到記錄文件“ conv2d.json”中。測量記錄可用于重新應用搜索結果,繼續搜索以及執行其它分析。
這是一個示例,其中從文件加載最佳調度,打印等效的python調度API和CUDA源代碼。它們可用于調試和學習自動調度程序的行為。
print(“Equivalent python schedule:”)
print(task.print_best(log_file, print_mode=“schedule”))

print(“CUDA source code:”)
print(task.print_best(log_file, print_mode=“cuda”))
輸出:
Equivalent python schedule:
pad_temp_i0, pad_temp_i1, pad_temp_i2, pad_temp_i3 = tuple(pad_temp.op.axis) + tuple(pad_temp.op.reduce_axis)
compute_nn, compute_ff, compute_yy, compute_xx, compute_rc, compute_ry, compute_rx = tuple(compute.op.axis) + tuple(compute.op.reduce_axis)
T_add_ax0, T_add_ax1, T_add_ax2, T_add_ax3 = tuple(T_add.op.axis) + tuple(T_add.op.reduce_axis)
compute_i0, compute_i1, compute_i2, compute_i3 = tuple(compute.op.axis) + tuple(compute.op.reduce_axis)
s[T_add].compute_inline()
compute_nn_o_i, compute_nn_i = s[compute].split(compute_nn, factor=1)
compute_nn_o_o_i, compute_nn_o_i = s[compute].split(compute_nn_o_i, factor=1)
compute_nn_o_o_o_i, compute_nn_o_o_i = s[compute].split(compute_nn_o_o_i, factor=1)
compute_nn_o_o_o_o, compute_nn_o_o_o_i = s[compute].split(compute_nn_o_o_o_i, factor=1)
compute_ff_o_i, compute_ff_i = s[compute].split(compute_ff, factor=1)
compute_ff_o_o_i, compute_ff_o_i = s[compute].split(compute_ff_o_i, factor=1)
compute_ff_o_o_o_i, compute_ff_o_o_i = s[compute].split(compute_ff_o_o_i, factor=16)
compute_ff_o_o_o_o, compute_ff_o_o_o_i = s[compute].split(compute_ff_o_o_o_i, factor=2)
compute_yy_o_i, compute_yy_i = s[compute].split(compute_yy, factor=1)
compute_yy_o_o_i, compute_yy_o_i = s[compute].split(compute_yy_o_i, factor=1)
compute_yy_o_o_o_i, compute_yy_o_o_i = s[compute].split(compute_yy_o_o_i, factor=7)
compute_yy_o_o_o_o, compute_yy_o_o_o_i = s[compute].split(compute_yy_o_o_o_i, factor=1)
compute_xx_o_i, compute_xx_i = s[compute].split(compute_xx, factor=7)
compute_xx_o_o_i, compute_xx_o_i = s[compute].split(compute_xx_o_i, factor=1)
compute_xx_o_o_o_i, compute_xx_o_o_i = s[compute].split(compute_xx_o_o_i, factor=1)
compute_xx_o_o_o_o, compute_xx_o_o_o_i = s[compute].split(compute_xx_o_o_o_i, factor=1)
compute_rc_o_i, compute_rc_i = s[compute].split(compute_rc, factor=4)
compute_rc_o_o, compute_rc_o_i = s[compute].split(compute_rc_o_i, factor=4)
compute_ry_o_i, compute_ry_i = s[compute].split(compute_ry, factor=1)
compute_ry_o_o, compute_ry_o_i = s[compute].split(compute_ry_o_i, factor=3)
compute_rx_o_i, compute_rx_i = s[compute].split(compute_rx, factor=3)
compute_rx_o_o, compute_rx_o_i = s[compute].split(compute_rx_o_i, factor=1)
s[compute].reorder(compute_nn_o_o_o_o, compute_ff_o_o_o_o, compute_yy_o_o_o_o, compute_xx_o_o_o_o, compute_nn_o_o_o_i, compute_ff_o_o_o_i, compute_yy_o_o_o_i, compute_xx_o_o_o_i, compute_nn_o_o_i, compute_ff_o_o_i, compute_yy_o_o_i, compute_xx_o_o_i, compute_rc_o_o, compute_ry_o_o, compute_rx_o_o, compute_rc_o_i, compute_ry_o_i, compute_rx_o_i, compute_nn_o_i, compute_ff_o_i, compute_yy_o_i, compute_xx_o_i, compute_rc_i, compute_ry_i, compute_rx_i, compute_nn_i, compute_ff_i, compute_yy_i, compute_xx_i)
compute_i0_o_i, compute_i0_i = s[compute].split(compute_i0, factor=1)
compute_i0_o_o_i, compute_i0_o_i = s[compute].split(compute_i0_o_i, factor=1)
compute_i0_o_o_o, compute_i0_o_o_i = s[compute].split(compute_i0_o_o_i, factor=1)
compute_i1_o_i, compute_i1_i = s[compute].split(compute_i1, factor=1)
compute_i1_o_o_i, compute_i1_o_i = s[compute].split(compute_i1_o_i, factor=16)
compute_i1_o_o_o, compute_i1_o_o_i = s[compute].split(compute_i1_o_o_i, factor=2)
compute_i2_o_i, compute_i2_i = s[compute].split(compute_i2, factor=1)
compute_i2_o_o_i, compute_i2_o_i = s[compute].split(compute_i2_o_i, factor=7)
compute_i2_o_o_o, compute_i2_o_o_i = s[compute].split(compute_i2_o_o_i, factor=1)
compute_i3_o_i, compute_i3_i = s[compute].split(compute_i3, factor=7)
compute_i3_o_o_i, compute_i3_o_i = s[compute].split(compute_i3_o_i, factor=1)
compute_i3_o_o_o, compute_i3_o_o_i = s[compute].split(compute_i3_o_o_i, factor=1)
s[compute].reorder(compute_i0_o_o_o, compute_i1_o_o_o, compute_i2_o_o_o, compute_i3_o_o_o, compute_i0_o_o_i, compute_i1_o_o_i, compute_i2_o_o_i, compute_i3_o_o_i, compute_i0_o_i, compute_i1_o_i, compute_i2_o_i, compute_i3_o_i, compute_i0_i, compute_i1_i, compute_i2_i, compute_i3_i)
s[compute].compute_at(s[compute], compute_i3_o_i)
kernel_shared = s.cache_read(kernel, “shared”, [compute])
kernel_shared_ax0, kernel_shared_ax1, kernel_shared_ax2, kernel_shared_ax3 = tuple(kernel_shared.op.axis)
s[kernel_shared].compute_at(s[compute], compute_rx_o_o)
pad_temp_shared = s.cache_read(pad_temp, “shared”, [compute])
pad_temp_shared_ax0, pad_temp_shared_ax1, pad_temp_shared_ax2, pad_temp_shared_ax3 = tuple(pad_temp_shared.op.axis)
s[pad_temp_shared].compute_at(s[compute], compute_rx_o_o)
s[pad_temp].compute_inline()
compute_i0_o_o_o_i1_o_o_o_fused_i2_o_o_o_fused_i3_o_o_o_fused = s[compute].fuse(compute_i0_o_o_o, compute_i1_o_o_o, compute_i2_o_o_o, compute_i3_o_o_o)
s[compute].bind(compute_i0_o_o_o_i1_o_o_o_fused_i2_o_o_o_fused_i3_o_o_o_fused, te.thread_axis(“blockIdx.x”))
compute_i0_o_o_i_i1_o_o_i_fused_i2_o_o_i_fused_i3_o_o_i_fused = s[compute].fuse(compute_i0_o_o_i, compute_i1_o_o_i, compute_i2_o_o_i, compute_i3_o_o_i)
s[compute].bind(compute_i0_o_o_i_i1_o_o_i_fused_i2_o_o_i_fused_i3_o_o_i_fused, te.thread_axis(“vthread”))
compute_i0_o_i_i1_o_i_fused_i2_o_i_fused_i3_o_i_fused = s[compute].fuse(compute_i0_o_i, compute_i1_o_i, compute_i2_o_i, compute_i3_o_i)
s[compute].bind(compute_i0_o_i_i1_o_i_fused_i2_o_i_fused_i3_o_i_fused, te.thread_axis(“threadIdx.x”))
kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused = s[kernel_shared].fuse(kernel_shared_ax0, kernel_shared_ax1, kernel_shared_ax2, kernel_shared_ax3)
kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o, kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_i = s[kernel_shared].split(kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused, factor=4)
s[kernel_shared].vectorize(kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_i)
kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_o, kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_i = s[kernel_shared].split(kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o, factor=112)
s[kernel_shared].bind(kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_i, te.thread_axis(“threadIdx.x”))
pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused = s[pad_temp_shared].fuse(pad_temp_shared_ax0, pad_temp_shared_ax1, pad_temp_shared_ax2, pad_temp_shared_ax3)
pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o, pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_i = s[pad_temp_shared].split(pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused, factor=1)
s[pad_temp_shared].vectorize(pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_i)
pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_o, pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_i = s[pad_temp_shared].split(pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o, factor=112)
s[pad_temp_shared].bind(pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_i, te.thread_axis(“threadIdx.x”))
s[compute].pragma(compute_nn_o_o_o_o, “auto_unroll_max_step”, 1024)
s[compute].pragma(compute_nn_o_o_o_o, “unroll_explicit”, True)

CUDA source code:

#ifdef _WIN32
using uint = unsigned int;
using uchar = unsigned char;
using ushort = unsigned short;
using int64_t = long long;
using uint64_t = unsigned long long;
#else
#define uint unsigned int
#define uchar unsigned char
#define ushort unsigned short
#define int64_t long
#define uint64_t ulong
#endif
extern “C” global void default_function_kernel0(float* restrict data, float* restrict kernel, float* restrict compute, float* restrict bias) {
float compute1[14];
shared float pad_temp_shared[1296];
shared float kernel_shared[4608];
compute1[(0)] = 0.000000e+00f;
compute1[(7)] = 0.000000e+00f;
compute1[(1)] = 0.000000e+00f;
compute1[(8)] = 0.000000e+00f;
compute1[(2)] = 0.000000e+00f;
compute1[(9)] = 0.000000e+00f;
compute1[(3)] = 0.000000e+00f;
compute1[(10)] = 0.000000e+00f;
compute1[(4)] = 0.000000e+00f;
compute1[(11)] = 0.000000e+00f;
compute1[(5)] = 0.000000e+00f;
compute1[(12)] = 0.000000e+00f;
compute1[(6)] = 0.000000e+00f;
compute1[(13)] = 0.000000e+00f;
for (int rc_outer_outer = 0; rc_outer_outer < 32; ++rc_outer_outer) {
__syncthreads();
pad_temp_shared[(((int)threadIdx.x))] = (((((9 <= (((int)threadIdx.x) % 81)) && ((((int)threadIdx.x) % 81) < 72)) && (1 <= (((int)threadIdx.x) % 9))) && ((((int)threadIdx.x) % 9) < 8)) ? data[((((((rc_outer_outer * 784) + ((((int)threadIdx.x) / 81) * 49)) + (((((int)threadIdx.x) % 81) / 9) * 7)) + (((int)threadIdx.x) % 9)) - 8))] : 0.000000e+00f);
pad_temp_shared[((((int)threadIdx.x) + 112))] = (((((9 <= ((((int)threadIdx.x) + 31) % 81)) && (((((int)threadIdx.x) + 31) % 81) < 72)) && (1 <= ((((int)threadIdx.x) + 4) % 9))) && (((((int)threadIdx.x) + 4) % 9) < 8)) ? data[((((((rc_outer_outer * 784) + (((((int)threadIdx.x) + 112) / 81) * 49)) + ((((((int)threadIdx.x) + 31) % 81) / 9) * 7)) + ((((int)threadIdx.x) + 4) % 9)) - 8))] : 0.000000e+00f);
pad_temp_shared[((((int)threadIdx.x) + 224))] = (((((9 <= ((((int)threadIdx.x) + 62) % 81)) && (((((int)threadIdx.x) + 62) % 81) < 72)) && (1 <= ((((int)threadIdx.x) + 8) % 9))) && (((((int)threadIdx.x) + 8) % 9) < 8)) ? data[((((((rc_outer_outer * 784) + (((((int)threadIdx.x) + 224) / 81) * 49)) + ((((((int)threadIdx.x) + 62) % 81) / 9) * 7)) + ((((int)threadIdx.x) + 8) % 9)) - 8))] : 0.000000e+00f);
pad_temp_shared[((((int)threadIdx.x) + 336))] = (((((9 <= ((((int)threadIdx.x) + 12) % 81)) && (((((int)threadIdx.x) + 12) % 81) < 72)) && (1 <= ((((int)threadIdx.x) + 3) % 9))) && (((((int)threadIdx.x) + 3) % 9) < 8)) ? data[((((((rc_outer_outer * 784) + (((((int)threadIdx.x) + 336) / 81) * 49)) + ((((((int)threadIdx.x) + 12) % 81) / 9) * 7)) + ((((int)threadIdx.x) + 3) % 9)) - 8))] : 0.000000e+00f);
pad_temp_shared[((((int)threadIdx.x) + 448))] = (((((9 <= ((((int)threadIdx.x) + 43) % 81)) && (((((int)threadIdx.x) + 43) % 81) < 72)) && (1 <= ((((int)threadIdx.x) + 7) % 9))) && (((((int)threadIdx.x) + 7) % 9) < 8)) ? data[((((((rc_outer_outer * 784) + (((((int)threadIdx.x) + 448) / 81) * 49)) + ((((((int)threadIdx.x) + 43) % 81) / 9) * 7)) + ((((int)threadIdx.x) + 7) % 9)) - 8))] : 0.000000e+00f);
pad_temp_shared[((((int)threadIdx.x) + 560))] = (((((9 <= ((((int)threadIdx.x) + 74) % 81)) && (((((int)threadIdx.x) + 74) % 81) < 72)) && (1 <= ((((int)threadIdx.x) + 2) % 9))) && (((((int)threadIdx.x) + 2) % 9) < 8)) ? data[((((((rc_outer_outer * 784) + (((((int)threadIdx.x) + 560) / 81) * 49)) + ((((((int)threadIdx.x) + 74) % 81) / 9) * 7)) + ((((int)threadIdx.x) + 2) % 9)) - 8))] : 0.000000e+00f);
compute1[(2)] = (compute1[(2)] + (pad_temp_shared[((((rc_outer_inner * 324) + ((((int)threadIdx.x) % 7) * 9)) + 103))] * kernel_shared[(((((((int)threadIdx.x) / 7) * 144) + (rc_outer_inner * 36)) + 17))]));
compute1[(9)] = (compute1[(9)] + (pad_temp_shared[((((rc_outer_inner * 324) + ((((int)threadIdx.x) % 7) * 9)) + 103))] * kernel_shared[(((((((int)threadIdx.x) / 7) * 144) + (rc_outer_inner * 36)) + 2321))]));
compute1[(3)] = (compute1[(3)] + (pad_temp_shared[((((rc_outer_inner *

總結

以上是生活随笔為你收集整理的GPU自动调度卷积层的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

欧洲精品亚洲精品 | 永久免费毛片在线观看 | 免费99视频| 在线观看国产www | 免费成人在线观看视频 | 日韩精品久久久久久久电影99爱 | 中文字幕日韩一区二区三区不卡 | 国产精品成人一区二区 | 99精品视频免费观看 | 婷婷色狠狠 | 国产九九热视频 | 久久久免费精品国产一区二区 | 六月丁香婷 | 成年人国产精品 | www国产在线 | 免费看成人av | 看av免费网站 | av高清一区二区三区 | 在线精品在线 | 国产成人精品一区二区三区网站观看 | 91人人射| 日韩精品在线观看av | 中文免费 | 亚洲精品字幕 | 99精品国产成人一区二区 | 日韩成人免费在线 | 911国产 | 久草在线精品观看 | 国产一级二级在线 | 欧美色图亚洲图片 | 国产精品久久久久永久免费看 | av电影在线观看 | 婷婷伊人五月 | 99精品在线免费观看 | 亚洲欧美国产精品久久久久 | 久久99热这里只有精品 | 天天射天天爽 | 99视频一区二区 | 精品视频亚洲 | 亚洲视频第一页 | 亚洲精品国偷自产在线99热 | av中文字幕在线播放 | 久久久久久国产精品美女 | 久久久国产精华液 | 日韩av电影中文字幕 | 亚洲高清视频在线播放 | 一区二区三区在线观看免费 | 亚一亚二国产专区 | 日韩精品一区二区三区高清免费 | 欧美性猛片, | 人人插人人 | 中文字幕4 | 国产中文在线播放 | 日韩精品免费一区二区在线观看 | 在线精品视频在线观看高清 | 99久久精品国产一区二区三区 | 日韩色av色资源 | 天天色中文 | 大胆欧美gogo免费视频一二区 | 伊人色综合久久天天网 | 亚洲人成在线观看 | 西西44人体做爰大胆视频 | 久久亚洲在线 | 成人在线黄色电影 | 国产成人av福利 | 久久精品国产第一区二区三区 | 日韩电影在线观看一区 | 亚洲视频在线观看免费 | 日本久久免费视频 | 黄色性av | 国产精品毛片一区视频播不卡 | 久久狠狠婷婷 | 国产精品久久久久久久久久久杏吧 | 中文字幕久久精品亚洲乱码 | 免费看国产黄色 | av资源在线观看 | 深爱综合网| 国产高清久久 | 成人在线观看免费视频 | 国产欧美在线一区二区三区 | 91av在线视频免费观看 | 欧美日韩高清在线一区 | 国产午夜小视频 | 日日天天狠狠 | 久久污视频 | 国产高清视频免费在线观看 | 国产在线观看中文字幕 | 日日碰狠狠添天天爽超碰97久久 | 国产一级二级av | 久草精品在线 | 日韩三级视频在线观看 | 蜜臀av夜夜澡人人爽人人 | 亚洲精品国产日韩 | 国产99在线播放 | 不卡中文字幕在线 | 欧美日韩国产在线精品 | 麻豆免费观看视频 | 国产精品女人久久久久久 | 国产精品久久一卡二卡 | 91在线观看高清 | 精品国产视频在线 | 美女网站在线看 | 天天爽夜夜爽精品视频婷婷 | 91最新中文字幕 | 91中文在线 | 久久电影网站中文字幕 | 国产日韩精品视频 | 99在线热播精品免费 | 国产精品久久久久免费a∨ 欧美一级性生活片 | 青草视频免费观看 | 麻豆久久一区二区 | 黄色国产在线 | 粉嫩av一区二区三区四区 | a成人v在线 | 啪啪资源 | 国产在线更新 | 欧美一级片在线免费观看 | 在线观看不卡的av | 欧美一级日韩免费不卡 | www成人精品| 91成人在线视频 | www..com毛片| 天天天射 | 久草视频观看 | 久久视频在线观看免费 | 久久久久草 | 91经典在线 | 午夜精品一二三区 | 国产欧美三级 | 国产中文字幕一区 | 久久国产精品99久久久久久进口 | 最近日韩中文字幕中文 | 成 人 黄 色 视频免费播放 | 国产在线中文 | 日韩一区视频在线 | 91男人影院 | 国产亚洲在 | 一区二区三区精品在线视频 | 99视频精品全部免费 在线 | 五月综合激情 | 日韩一二区在线 | 天天艹天天爽 | 国产中年夫妇高潮精品视频 | 久草在线资源网 | 精品一区二区免费 | 成人黄色一级视频 | 全久久久久久久久久久电影 | 国产三级午夜理伦三级 | 国产精品区在线观看 | 国产黄色播放 | 久久公开视频 | 色亚洲激情 | 久久综合狠狠综合久久狠狠色综合 | 美女在线观看av | 91自拍91 | 欧美日在线观看 | 国产精品视频免费看 | 久久99热久久99精品 | 久久99国产精品自在自在app | 国产在线视频一区 | 成 人 黄 色 视频播放1 | 六月色丁香 | 91麻豆精品国产91久久久久 | 亚洲欧美激情精品一区二区 | 亚洲在线精品 | 黄色一级大片在线免费看产 | 国产亚洲视频在线免费观看 | 欧美 日韩 国产 成人 在线 | 香蕉在线视频播放网站 | 久久精品精品电影网 | 国产呻吟在线 | 国产 一区二区三区 在线 | 99精品国产成人一区二区 | 亚洲精品综合在线观看 | av在线中文 | 精品影院一区二区久久久 | 久久久精品网站 | 久久国产精品99久久久久久丝袜 | 在线观看国产福利片 | 中国黄色一级大片 | 亚洲日日日| 国产麻豆电影 | 国产成人精品久久久久蜜臀 | 日韩在线视频线视频免费网站 | 91私密保健 | 蜜桃视频日本 | 日韩欧美一区二区在线播放 | 99精品久久久久 | 中文字幕第一页在线vr | 免费a级毛片在线看 | 超碰人人av | 伊人永久在线 | 精品视频在线观看 | 天天干,天天插 | 久久久久亚洲精品中文字幕 | 免费日韩av电影 | 超碰在线资源 | 日韩中文字幕在线看 | 亚洲少妇久久 | 久久久精品小视频 | 成年人国产在线观看 | 国产免费又爽又刺激在线观看 | 欧美黄网站| a在线观看国产 | 国产二区av | 国产在线精品一区二区三区 | 狠狠狠色狠狠色综合 | 国产综合激情 | 不卡av在线免费观看 | 一二三久久久 | 国产99在线 | 在线观看亚洲视频 | 久久精品一区二区三区国产主播 | 精品视频国产 | 91视频高清| 在线播放视频一区 | 欧美日韩国产一区二区三区在线观看 | 国产中文字幕视频在线观看 | 久久久受www免费人成 | 视频一区久久 | 国产高清无av久久 | 91精品国产成人www | www久| 国产一区二区免费看 | 成年人免费av网站 | 精品国产自在精品国产精野外直播 | 国产精品久久99精品毛片三a | 爱av在线网| 欧美日韩不卡在线观看 | 天堂av官网| 精品久久久久一区二区国产 | 99久久网站 | 操老逼免费视频 | 久久久久久美女 | 国产精品乱码久久久久久1区2区 | 91精品国产欧美一区二区成人 | a在线播放 | 91大神一区二区三区 | 激情久久久 | 日本爱爱免费视频 | 国产精品18久久久久vr手机版特色 | 国产在线视频在线观看 | 中文在线中文资源 | 丁香综合av | 婷婷色网| 三级动态视频在线观看 | www成人精品 | 国内成人精品视频 | 三级午夜片 | 久久九九久久 | 日韩在线视频二区 | 夜夜躁狠狠燥 | 久久香蕉电影 | 欧美一区二区视频97 | 久久精品综合一区 | 在线免费视 | 在线成人免费电影 | 亚洲电影在线看 | 亚洲成av人片 | 国产视频二区三区 | 亚洲国产精品免费 | 欧美日韩亚洲第一页 | av免费电影在线观看 | 久热超碰 | www.久热| 国产精品毛片久久久 | 午夜av在线 | 日韩精品一区电影 | 麻花传媒mv免费观看 | 日本在线观看视频一区 | 97超碰国产精品女人人人爽 | 最新色视频| 色婷婷www| 天天做夜夜做 | 四虎最新入口 | 色综合色综合久久综合频道88 | 国产91av视频在线观看 | 国产精品久久久久久久午夜 | 日日草天天草 | 国产精品夜夜夜一区二区三区尤 | 天天色天天操天天爽 | 国产精品久久久久久一二三四五 | 中文字幕在线观看网 | 欧美日本不卡视频 | 国产成人久久精品亚洲 | 天堂黄色片 | 天天射日 | 国产免费又爽又刺激在线观看 | 三级在线国产 | 91精品国产九九九久久久亚洲 | 91九色视频国产 | 91高清完整版在线观看 | 国产精品免费在线播放 | 在线天堂中文在线资源网 | 欧美日韩亚洲在线 | 亚洲精品av中文字幕在线在线 | 91福利视频久久久久 | 国内成人综合 | 99精品在线播放 | 97夜夜澡人人双人人人喊 | 美女视频a美女大全免费下载蜜臀 | 国产v欧美 | 色婷婷久久久综合中文字幕 | 一级欧美日韩 | 中文字幕在线观看一区 | 亚洲成人网av | 99婷婷 | 奇米网777| 日韩字幕 | 99精品国产99久久久久久福利 | 色综合久久88色综合天天6 | 国产成人福利在线 | 国产91精品欧美 | 国产成人性色生活片 | 免费精品视频在线观看 | 亚洲一级二级 | 亚洲综合色av | 免费成人av网站 | 中文字幕在线一区观看 | 亚洲综合在线视频 | 中文在线a√在线 | 最近免费观看的电影完整版 | 日韩在线精品一区 | 亚洲一级黄色片 | 国产精品久久久久一区二区 | 人人爱人人舔 | 涩涩伊人| 久久激情日本aⅴ | 96看片| 久久久免费国产 | 日韩在线观看小视频 | 日韩精品免费一区二区三区 | 国内揄拍国内精品 | 开心激情综合网 | 成人午夜精品久久久久久久3d | 精品久久久久久亚洲综合网站 | 亚洲精品男女 | 久久久久久片 | 中文字幕综合在线 | 欧美激情第一页xxx 午夜性福利 | 揉bbb玩bbb少妇bbb | 激情xxxx| 丁香婷婷色综合亚洲电影 | 97视频在线 | 亚洲欧美激情精品一区二区 | 久久精品99北条麻妃 | 免费看一级特黄a大片 | 日韩精品视频在线免费观看 | 久久久久亚洲精品成人网小说 | 欧美精品久久久久久久 | 久草在线看片 | 午夜视频黄 | 久久九九久久九九 | 高清av网站 | 欧美日韩中字 | 日韩三级免费 | 久久久 激情 | 九九热在线视频免费观看 | 免费观看一级成人毛片 | 超碰日韩 | 亚洲年轻女教师毛茸茸 | 国产精品av免费在线观看 | 国产一区二区精品91 | 久久久久久久久久久久久久免费看 | a级国产毛片 | 国产精品短视频 | 欧亚日韩精品一区二区在线 | 国产69精品久久久久久 | 草久视频在线 | 亚洲国产精品va在线看 | 九月婷婷人人澡人人添人人爽 | 亚洲欧洲一区二区在线观看 | 亚洲色图av | 一级黄色大片 | 超碰大片| 成人免费在线播放 | 久久爱影视i | 欧美一级高清片 | 色综合久久久久综合体 | 精品国产视频在线 | 国产精品一区二区在线免费观看 | 日韩三级免费观看 | 久久久久久久久影视 | 成年人免费看的视频 | 中文字幕高清在线 | 精品91久久久久 | 色久综合 | 性色xxxxhd | 国产中文字幕在线视频 | 免费成人av电影 | 丁香六月国产 | 成人中文字幕+乱码+中文字幕 | www夜夜操| 伊香蕉大综综综合久久啪 | 精品国产乱码久久久久久三级人 | 97超碰成人 | 国产精品一区二区三区四 | 少妇bbw搡bbbb搡bbbb | 日韩日韩日韩日韩 | 日本一区二区不卡高清 | 97超碰网| 国产日韩精品视频 | 精品99久久 | 国产区高清在线 | 中文字幕在线免费播放 | 色综合天天色 | 色综合天天天天做夜夜夜夜做 | 91中文字幕视频 | 五月天婷亚洲天综合网鲁鲁鲁 | 在线一二三四区 | 久草在线中文视频 | 在线导航av | 一区二区三区在线观看免费视频 | 日本一区二区免费在线观看 | 国产亚洲午夜高清国产拍精品 | 亚洲精品天天 | 黄色免费网站大全 | 精品国产三级 | 狠狠色狠狠色综合日日小说 | av在线播放中文字幕 | 天天干,天天操,天天射 | 特级aaa毛片 | 欧美视频一区二 | 丁香婷婷色 | 成人性生交大片免费观看网站 | 99久高清在线观看视频99精品热在线观看视频 | 日韩高清精品一区二区 | 黄色.com| 日本一区二区免费在线观看 | 日本久久成人 | 中文字幕av在线电影 | 狠狠色丁香婷婷综合最新地址 | 欧美成a人片在线观看久 | 免费福利小视频 | 日韩福利在线观看 | 九九久久久久99精品 | 免费看片成年人 | 69国产成人综合久久精品欧美 | 国产精品免费视频网站 | 久久黄色成人 | 精品视频免费看 | 99亚洲精品在线 | 99精品在线播放 | 欧美在一区| 国产伦精品一区二区三区四区视频 | 天天操天天射天天舔 | 日韩精品免费 | 国产精品久久久一区二区三区网站 | 亚洲经典视频在线观看 | 欧美精品乱码久久久久久按摩 | 六月丁香婷婷网 | 日韩av不卡在线观看 | 日韩免费观看一区二区 | 五月婷婷视频在线 | 日韩av中文字幕在线免费观看 | 天天操天天干天天玩 | 久久人人添人人爽添人人88v | 国产免费观看高清完整版 | 欧美日韩精品国产 | 九九九热 | 国产色爽| 天天综合天天做天天综合 | 亚洲一级片在线观看 | 日韩小视频网站 | 中文字幕精品一区二区三区电影 | 香蕉在线观看视频 | 精品自拍av | 中文在线字幕免 | 国产蜜臀av | 午夜国产福利在线观看 | 国产亚洲精品久久久网站好莱 | 日韩美在线观看 | 丰满少妇对白在线偷拍 | 色诱亚洲精品久久久久久 | 日韩大片在线免费观看 | 国产一区二区三区在线 | 毛片网在线播放 | 精品亚洲欧美一区 | 国产高清免费观看 | 国产99久久久国产精品免费看 | 超碰个人在线 | 视频在线观看一区 | 欧美日韩在线播放 | 国产精品白浆视频 | 国产精品99在线播放 | 日韩电影中文字幕在线观看 | 黄色三级av | 国产成人亚洲在线观看 | 亚洲天堂社区 | 日日干视频 | 黄色一级动作片 | 国产手机在线视频 | 日韩av在线一区二区 | 国产又粗又猛又黄又爽视频 | 天天拍天天爽 | 2018好看的中文在线观看 | 五月天婷亚洲天综合网精品偷 | 色99在线 | 超碰激情在线 | 在线黄色国产电影 | 狠狠操狠狠操 | 国产首页 | 九九免费精品视频 | 欧美精品视 | 最新国产在线观看 | 欧美巨乳波霸 | 色就干| 成年免费在线视频 | 国产一级二级av | 国产精品18久久久久vr手机版特色 | 狠狠干狠狠艹 | 中文伊人| 欧美一区二区三区在线 | 国产一区视频在线观看免费 | 日韩激情综合 | 成人免费视频网 | 日韩激情中文字幕 | 亚洲精品自拍 | 亚洲综合射 | 成人久久电影 | av在线播放观看 | 成人亚洲精品久久久久 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 人人爽人人射 | 国产精品免费久久久久久 | 波多野结衣在线观看视频 | 少妇搡bbb| 免费视频色 | 中文乱幕日产无线码1区 | 欧美日韩午夜 | 日韩在线视频线视频免费网站 | 国产裸体永久免费视频网站 | 中文字幕精| 天天看天天干 | 国产高清精品在线 | 一区三区在线欧 | 中文av字幕在线观看 | 欧美日韩一区三区 | 午夜精品久久久久久中宇69 | 午夜精品久久久久久99热明星 | 狠狠网| 中文在线最新版天堂 | 久久精品欧美日韩精品 | 天天激情综合网 | 在线播放第一页 | av电影免费在线播放 | www五月天婷婷 | 最新在线你懂的 | 亚洲高清视频在线观看免费 | 黄色一级免费电影 | 亚洲专区欧美专区 | 91精品国产99久久久久久红楼 | 亚洲一二三在线 | 国产精品高清在线 | 色综合久久久久综合 | 精品国产99 | 国产日韩精品在线观看 | 正在播放国产精品 | 日本久久久久久科技有限公司 | 午夜在线免费视频 | 国产日产高清dvd碟片 | 91精品在线播放 | 国产国产人免费人成免费视频 | 国产成人精品aaa | 精品专区| 亚洲视频h | 亚洲专区 国产精品 | 在线观看韩日电影免费 | 97超碰在线人人 | 国产成人免费观看久久久 | 日日日日干 | 亚洲成人欧美 | 手机看片1042 | 日韩欧美精品免费 | 三级在线视频播放 | 成人在线黄色 | 福利视频一二区 | 国产免码va在线观看免费 | 国产精品久久久av久久久 | 中文字幕资源网 | 97精品国产一二三产区 | 黄色三级在线 | 国产亚洲成人精品 | 91大神免费视频 | 午夜av免费 | 国产在线专区 | 国产中文字幕在线免费观看 | 手机色站 | 久久视频精品在线 | 国产超碰97 | 久青草视频在线观看 | 天天射天天操天天色 | 免费看黄色小说的网站 | 午夜美女视频 | 午夜在线免费观看视频 | 日韩高清不卡在线 | 成人国产精品免费观看 | 日韩欧美综合视频 | 麻豆久久精品 | 狠狠的操| 日韩精品最新在线观看 | 99热精品在线观看 | .国产精品成人自产拍在线观看6 | 免费在线观看成人小视频 | 亚州欧美精品 | 91在线免费观看国产 | 91热精品| 在线观看免费国产小视频 | 婷婷六月综合网 | 综合五月婷婷 | 亚洲最大成人网4388xx | 欧美日韩视频一区二区三区 | 精品亚洲视频在线 | 欧美性生活小视频 | 国产韩国日本高清视频 | 伊人狠狠干| 欧美日韩一区二区三区在线免费观看 | 久久久久亚洲精品成人网小说 | 深夜免费福利 | 操操综合 | 狠狠色丁香九九婷婷综合五月 | 日日躁你夜夜躁你av蜜 | 2022久久国产露脸精品国产 | 草在线| 国产精品video爽爽爽爽 | 久久香蕉国产精品麻豆粉嫩av | 精品在线视频观看 | 婷婷六月天在线 | 免费又黄又爽的视频 | av成人资源 | 999视频在线播放 | 九九热久久免费视频 | 国内精品福利视频 | www.亚洲精品视频 | 国产剧情一区二区 | 91精品国产一区二区在线观看 | 操操综合 | 国产 视频 久久 | 欧美做受高潮电影o | 欧美一级片在线播放 | 欧美久久久一区二区三区 | 成人毛片一区 | 国产精品片 | 国产手机视频 | 九九精品视频在线观看 | 国产不卡视频在线 | 97人人模人人爽人人喊网 | 天天在线操 | 天天操天天操天天操天天操天天操 | 在线观看国产永久免费视频 | 乱子伦av | 96看片 | 久久一区精品 | 亚洲五月婷婷 | 日韩精品视频在线免费观看 | 国产九色在线播放九色 | 亚洲国产精品va在线看黑人 | 精品久久久久久电影 | 国产精品美女免费看 | 国产精品一区专区欧美日韩 | 99热99| 欧美一级艳片视频免费观看 | 久久人人爽人人片 | 99久久精品国产网站 | 成人网页在线免费观看 | 91亚洲精品国偷拍自产在线观看 | 日本在线观看中文字幕 | 亚洲国产剧情av | 丁香花在线观看免费完整版视频 | 国产特级毛片 | 欧美精品视| 伊人影院得得 | 天天做日日做天天爽视频免费 | 欧美日韩综合在线 | 日韩二区在线 | 日韩一区二区三区视频在线 | 天天操夜夜干 | 日韩美女高潮 | 麻豆成人精品 | 久久久久伊人 | 亚洲视频1| 欧美色久 | 999ZYZ玖玖资源站永久 | 国产xx在线 | 91视频91色| 91九色最新 | 操久| 91精品在线免费观看 | 爱情影院aqdy鲁丝片二区 | 免费av在线播放 | 日批在线看 | 天天干夜夜爱 | 天天干天天干天天 | 欧洲精品码一区二区三区免费看 | 99精品亚洲 | www夜夜操 | 狠狠色丁香婷婷 | 91在线麻豆 | 国产剧情一区在线 | 在线观看精品视频 | 天天弄天天操 | 2024国产精品视频 | 久久男人免费视频 | 99在线观看精品 | 日韩三级在线 | 精品一区二区在线播放 | 欧美在线你懂的 | 亚洲综合在线观看视频 | 日韩手机视频 | 蜜臀久久99精品久久久酒店新书 | 国产成人精品一区二区三区免费 | 欧美一区二区在线免费观看 | 久热免费在线观看 | 久久免费99 | 久久精品国产久精国产 | 久久久www免费电影网 | 99国产精品视频免费观看一公开 | 精品视频网站 | 精品自拍网 | 国产精品毛片久久久久久久 | 天天色天天骑天天射 | 国产精品99在线播放 | 丁香五香天综合情 | 中文字幕在线观看免费高清电影 | 久久久久久久免费观看 | 成人在线一区二区三区 | 天天色天天综合 | 国产一区二区在线免费播放 | 欧洲精品一区二区 | 黄色一级大片在线观看 | 色九九视频| 激情五月亚洲 | 热久久国产精品 | 久久精品99国产精品亚洲最刺激 | 激情开心站 | 久久电影中文字幕视频 | 伊人婷婷色 | 免费黄色在线 | 黄色动态图xx | 国产精品毛片一区视频播不卡 | 蜜桃视频成人在线观看 | 欧美日韩一区二区视频在线观看 | 久草在线电影网 | av免费在线播放 | 婷婷色站| 国产在线观看91 | 欧美另类亚洲 | 亚洲精品色婷婷 | 国产亚洲精品久久久久久电影 | 色九九视频 | 成人国产精品久久久春色 | 国产在线国产 | 成人av在线直播 | av电影在线不卡 | 玖玖爱国产在线 | 久久亚洲影视 | 性色av香蕉一区二区 | 中文字幕视频网站 | 久久国内视频 | 亚洲激情在线 | 天天天干 | 美女很黄免费网站 | 亚洲免费av片 | 午夜美女福利直播 | 一区二区三区日韩视频在线观看 | 四虎国产精品永久在线国在线 | 激情校园亚洲 | 欧美日韩性生活 | 色五月情| 粉嫩一区二区三区粉嫩91 | 亚洲色五月 | 国偷自产视频一区二区久 | 日韩免费高清在线观看 | 欧美午夜精品久久久久 | 国产精品久久久久久久99 | 视频91| 国产一区二区在线精品 | 99久久综合狠狠综合久久 | 日韩高清免费在线 | 欧美aaa一级 | 成人国产电影在线观看 | 在线免费观看黄 | 一本大道久久精品懂色aⅴ 五月婷社区 | 亚洲四虎在线 | 国产一级二级av | 91av观看| 在线www色 | 欧美黑人性爽 | 五月综合 | 国产中文字幕在线看 | 国产精品日韩欧美一区二区 | av电影免费看 | www.色婷婷.com | 亚洲视频在线免费观看 | 日本丰满少妇免费一区 | 国产一区二区在线免费播放 | 国产精品ssss在线亚洲 | 国产不卡一 | 国产亚洲成av片在线观看 | 奇米影音四色 | 91手机在线看片 | 久久久综合香蕉尹人综合网 | 久久免费视频精品 | 丁香花五月 | 久久久视频在线 | 探花视频网站 | 在线播放亚洲 | 深夜免费福利在线 | 色婷婷激情电影 | 91精品久久久久久综合乱菊 | 国产免费观看视频 | 国产伦理久久精品久久久久_ | 日本久久久久久科技有限公司 | 一区二区三区免费在线观看 | 狠狠躁18三区二区一区ai明星 | 九色91在线视频 | 超碰999| 97在线观看免费 | 国产中文在线播放 | 国产视频精选在线 | 国产精品自拍在线 | 在线观看色视频 | 天堂av在线7 | 免费国产亚洲视频 | 91视频在线免费 | 亚洲精品一区二区三区在线观看 | av在线观| 色噜噜噜| 国产香蕉久久精品综合网 | 日韩美在线 | 欧美肥妇free | 成 人 黄 色视频免费播放 | 欧美在线18| 99国产在线 | 丁香花五月 | 久草电影网 | 伊人色综合久久天天网 | 色婷婷综合在线 | 久久最新视频 | 精品久久久久国产免费第一页 | 在线观看免费黄视频 | 久艹在线观看视频 | 欧美久久久久 | 丁香婷婷激情国产高清秒播 | 国产一区二区视频在线播放 | 久久久久亚洲国产 | 久久久国产精品一区二区三区 | 色狠狠操| 国产一区二区高清不卡 | 在线影视 一区 二区 三区 | 伊人午夜视频 | 亚洲综合成人专区片 | 国产精成人品免费观看 | 亚洲 综合 激情 | 91黄色小视频 | 久热免费| 99久久久久久久久久 | 久久综合久久综合九色 | 992tv人人草| 久久伊人91 | 高清一区二区 | 国产精品理论片在线观看 | 色久av| 国产精品爽爽久久久久久蜜臀 | 日韩成人精品一区二区三区 | 婷婷色五 | 久久人人爽人人爽 | 日本一区二区三区视频在线播放 | 久久久久久久久久毛片 | 婷婷色综 | 91在线超碰 | 国产精品成人久久久久 | 午夜色婷婷 | 久久 亚洲视频 | 97在线公开视频 | 欧美成人精品三级在线观看播放 | 欧美激情另类文学 | 高清精品在线 | 日韩乱理| 国产黄影院色大全免费 | 最近中文字幕大全 | 日本91在线 | 97视频在线观看成人 | 在线观看一级视频 | 视频福利在线 | 免费黄色小网站 | 国产一区二三区好的 | 波多野结衣日韩 | 91av中文字幕 | 日韩精品高清不卡 | 国产色a在线观看 | 国产成人精品av在线 | 国产中文字幕在线播放 | 91久久精品日日躁夜夜躁国产 | 深爱婷婷 | 免费色av | 中文字幕在线观看视频一区二区三区 | 99视频在线看 | 国产精品视频免费在线观看 | 天天干天天色2020 | 在线成人免费电影 | 国产精品亚洲视频 | 国产免费亚洲高清 | 2024国产精品视频 | 欧美性极品xxxx做受 | 亚洲精品免费观看视频 | 激情综合一区 | 亚洲一级黄色大片 | 久草视频99 | 久久视频在线观看中文字幕 | 日韩18p| 色香蕉视频 | 久久久久久久免费看 | 蜜臀av性久久久久蜜臀aⅴ四虎 | av看片在线 | 六月色 | 亚洲精品视频www | 最近字幕在线观看第一季 | 天天操天天谢 | 欧美精品小视频 | 国产成人精品一区二区三区在线观看 | 69国产盗摄一区二区三区五区 | 999久久a精品合区久久久 | 亚洲国产成人久久综合 | 国产一级高清视频 | 视频一区久久 | 国产精品美女久久久久久久久 | 成人三级网站在线观看 | 久久久三级视频 | 永久av免费在线观看 | 成人 国产 在线 | 成人国产精品电影 | 91精品一区二区三区久久久久久 | 中文字幕在线不卡国产视频 | 久久永久免费视频 | 亚洲精品在线观看视频 | 丝袜+亚洲+另类+欧美+变态 | 婷婷五月在线视频 | 国产一二三在线视频 | 国产精品久久久一区二区 | bbb搡bbb爽爽爽| 日韩av影视在线观看 | 97成人啪啪网 | 国产在线日本 | 中文在线免费视频 | 免费看wwwwwwwwwww的视频 久久久久久99精品 91中文字幕视频 | 不卡电影一区二区三区 | 婷婷久久综合网 | 五月天久久综合网 | 日韩欧美精品免费 | 综合激情 | 经典三级一区 | 天堂av在线 | 国产欧美精品一区aⅴ影院 99视频国产精品免费观看 | 在线直播av | 国产一级性生活 | 91天天操| av.com在线| 欧美激情视频一区二区三区免费 | 五月色丁香 | 天天干天天干天天干天天干天天干天天干 | 色香蕉视频 | 在线国产日本 | 国产在线观看网站 | 日韩免费看片 | 国产97免费 | avhd高清在线谜片 | 久久高清国产 | 国产精品嫩草55av | 亚洲精品久久久久久国 | 久久久久久久精 | 久久精品一二三区白丝高潮 | 91在线影视| 精品免费观看视频 | av片在线观看 | 手机成人av | 国产电影黄色av | 国产亚洲久一区二区 | 亚洲视频播放 | 成人黄色在线视频 | 92av视频| 日韩欧美电影网 | 久久久国产日韩 | 亚洲精品免费观看 | 国产成人久久精品亚洲 | 亚洲精品免费在线视频 | 91伊人久久大香线蕉蜜芽人口 | 免费看一及片 | 日韩av网站在线播放 | 久久精品男人的天堂 | 午夜影院日本 | 日韩精品一区二区免费视频 | 美女网站黄在线观看 | www.夜夜草| 久久久久国产一区二区三区四区 | 亚洲激情在线观看 | 国产中文字幕网 | 91人人澡 |