• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    gScan: A Parallel Graham Scan Algorithm for Calculating Two-dimensional Convex Hulls onGraphic Processing Units

    2020-12-31 01:16:02-,
    湖南師范大學自然科學學報 2020年6期

    -,

    (School of Engineering and Technology, China University of Geosciences (Beijing), Beijing 100083, China)

    Abstract This paper presents a parallel Graham scan algorithm for calculating two-dimentional (2D) convex hulls of scattered points on Graphic Processing Units (GPUs). The proposed parallel algorithm consists of two stages: (1) two rounds of preprocessing performed on the GPU and (2) the finalization of finding the convex hull on the CPU. We first discard those interior points locating inside a quadrilateral formed by four extreme points, sort the remaining points according to the angles, and divide them into the left and the right regions. For each region, we perform a second round of filtering using the proposed preprocessing approach to further discard interior points. We finally obtain the desired convex hull by calculating the convex hull of the remaining points. We strongly exploit the parallel sorting, reduction, and partitioning provided by the library Thrust for better efficiency and simplicity. Comparative results indicate that our parallel algorithm can calculate the convex hull of 20 M scattered points in less than 0.5 second on personal computers, and achieve a speedup of 6x~7x over the state-of-the-art baseline algorithm (i.e., the famous QuickHull algorithm). Although our algorithm cannot be much faster than the QuickHull algorithm, it is very simple and easy to implement when compared to some related work. It could be an alternative in practice.

    Key words convex hull; Graham scan; divide-and-conquer; parallel algorithm; GPU

    In geometric modeling, the calculation of the two-dimensional convex hull of a set of planar pointsSis to find the smallest polygon that contains all the points inS. Calculating convex hulls is one of the essential issues in many fields, including computer science, robotics, GIS, and etc. Several classic convex hull algorithms have been proposed[1-7]; most of them run inO(nlog n) time. Among them, the Graham scan algorithm[1]is the first practical convex hull algorithm, while the QuickHull algorithm[7]is the most efficient and popular one in practice.

    Recently, due to the fact that the computational capability of Graphic Processing Units (GPUs) has surpassed that of the Central Processing Units (CPUs), GPUs are being widely used in various applications. There are also some research work focusing on accelerating the calculation of convex hulls by utilizing the GPU. For example, Srikanth, et al.[8]used NVIDIA GPU and Cell BE hardware to accelerate the calculation of 2D convex hulls based on the QuickHull approach[7]. Similarly, Srungarapu, et al.[9]and Jurkiewicz, et al.[10]developed the parallel QuickHull algorithm to accelerate the calculation of 2D convexhulls. Moreover, Mei, et al.[11]developed a parallel CudaChain algorithm for finding 2D convex hulls on the GPU.

    Also by adopting the QuickHull, Stein, et al.[12]put forward a new parallel algorithm for figuring out the convex hull of a range of points in 3D. Tang, et al.[13]presented a CPU-GPU hybrid algorithm to figure out the convex hull of points in multidimensional spaces. Tzeng and Owens[14]developed a framework to accelerate the computing power of convex hull in the Divide-and-Conquer fashion through using QuickHull. Based on the Chan's 3D convex hullalgorithm[15], a pure GPU-accelerated Divide-and-Conquer parallel algorithm was developed by White and Wortman[16]to compute 3D convex hulls. Furthermore, Gao, et al.[17]introduced a two-phase 3D convex hull algorithm by utilizing the Voronoi diagram. Moreover, Gao, et al.[18]developed the algorithm ffHull, which allows to insert vertices before flipping edges.

    In this paper, we develop a parallel version of the classic Graham scan algorithm for calculating two-dimensional (2D) convex hulls of scattered points on the GPU. There are typically two stages in the Graham scan algorithm: the first stage is to sort points according to their angles; and the second is to loop over all the sorted points in sequence to determine extreme points. As we can see, it is the number of the sorted points that determine the efficiency bottleneck of the Graham scan. If we can discard the interior points that need to be sorted more, the computational efficiency will be more effective. The most straightforward case in 2D is to create a convex quadrilateral using four extreme points that have min or maxxorycoordinates, and then check each point to determine whether it locates inside the quadrilateral[4]. Several recent efforts for efficiently discarding interior points were introduced in[19-26].

    We employ the above straightforward strategy[4]to improve the efficiency of our algorithm. In addition to the simple preprocessing procedure introduced in[4], we also propose a novel preprocessing approach that is well suitable to be used in the Graham scan. In our algorithm, we perform the following two efforts: (1) we apply two effective preprocessing procedures by discarding interior points to filter the points with no need for sorting; and (2) we sort the remaining points extremely fast using the efficient parallel sorting algorithm.

    Similar to the traditional Graham scan, our GPU-accelerated parallel Graham scan algorithm is also composed of two stages. The first stage mainly includes two rounds of preprocessing procedures and a fast sorting of points, which is performed on the GPU. The second stage carried out on the CPU is finalizing the convexhull. Our algorithm is worked more efficient and simply by highly making use of the libraryThrust[24].

    The rest organization of this paper is as follows. First, Section 1 introduces the outline and several basic ideas of ouralgorithm. Then, Section 2 provides some implementation details. Section 3 shows the experimental results which was then discussed in Section 4.

    1 Developed Parallel Graham Scan Algorithm

    1.1 Outline of the Developed Parallel Algorithm

    The GPU-accelerated parallel convex hull algorithm is designed on the basis of the conventional Graham scan. There are typically two stages in the conventional Graham scan algorithm: the first stage is to sort points according to their angles; and the second is to loop over all the sorted points in sequence to determine extreme points. The efficiency bottleneck of the Graham scan is the sorting of points according to their angles.

    It is quite time-consuming to search for the convex hull of a large set of points; and thus the overall procedure of finding the convex hull could be very slow. To handle the above problem and improve the efficiency, we perform the following two efforts on the GPU to speed up the calculating in the first stage: (1) we apply effective preprocessing procedures by discarding interior points to filter the points with no need for sorting; and (2) we sort the remaining points extremely fast using the efficient GPU-based parallel sorting algorithm.

    Similar to the conventional Graham scan, our algorithm is also composed of two stages. The first stage is conducted on the GPU which consists of two preprocessing procedures and a fast sorting of points. The second stage is the finalization of calculating the convex hull, which is conducted on the CPU. More specifically, the process of the developed algorithm is presented as follows:

    ① Search for the four extreme points owning the max or minxorycoordinates utilizing parallel reduction, define them asPminx,Pmaxx,PminyandPmaxy.

    ② Determine the distribution of all points in parallel and discard the points locating inside the convex quadrilateral formed byPminx,Pminy,Pmaxx, andPmaxyusing parallel partitioning.

    ③ Calculate the distance and angle concerning the lowest point, i.e.,Pminx, for each of the rest points.

    ④ Sort all points in the ascending order of angles using parallel sorting.

    ⑤ Find the point that has the longest distance, denote it asPlongestusing parallel reduction.

    ⑥ Divide the list of sorted points into the left and the right region using the pointPlongest, see Figure 1(a).

    ⑦ Perform the proposed preprocessing approach for both the right and the left regions to discard the interior points further.

    ⑧ Search the convex hull from the points left.

    Fig. 1 The preprocessing procedure for checking and discarding interior points

    First, the interior points of quadrilateral are preprocessed in the first round (i.e., the Step 1 and Step 2); then the sorting of the remaining points is performed after calculating the distance and angle of each point (Step 3 and Step 4). In Steps 5~7, the inner points of thepresorted points are further removed through the second round of preprocessing. These 7 steps are fully conducted on the GPU. The Step 8 is to find the convex hull among the left points, which is performed on the CPU. This step is the familiar with the finding of the convex hull of a series of pre-sorted points in sequential Graham scan.

    1.2 The Proposed Second Round of Preprocessing

    1.2.1 Our Essential Ideas behind This Round of Preprocessing

    Fig. 2 The pseudo-code of the proposed preprocessing approach

    This section presents a novel preprocessing method for further discarding the points inside the convex hull. The essential idea behind this approach is to take advantage of the order of sorted points for checking whether a point locate inside a triangle. Typically, when checking whether or not a point locates in a triangle, it needs to judge whether or not the point is on the left side of each edge of the triangle.

    For example, in Figure 1(b), there are totally 15 points; and 14 points have been sorted according to their angles. Taking the pointP4for an example, it generally needs to decide whetherP4is on the left side of the directed lineP0P3,P3P8, andP8P0. However, because the points are sorted in ascending order by angle, the angle ofP4is greater than that of the pointP3and less than that of the pointP8. Therefore, it is obviously thatP4is on the left side of the directed lineP0P3, and on the right side of the directed lineP0P8. Hence, it only remain the case that whether or notP4is on the left side of the directed lineP3P8for determining whetherP4locates in the triangleP0P4P8.

    In short, it is needed to check the pointP4whether it is located on the left side of the directed lineP3P8for determining whether it is an interior point.

    Similarly, for the pointP11, it is only needed to verify whether it is located on the right side of the directed lineP12P8. By exploiting the advantage of the order of the sorted points, the computational cost can be reduced.

    The pseudo-code for this method is listed in Figure 2.

    1.2.2 Correctness of the Preprocessing Approach

    It is clear that: when searching for the convex hull, if a point is located in a triangular or quadrilateral convex polygon formed by other points, it must be an interior point and can be discarded directly. In Section 1.2.1, we have explained that it only needs to judge whether a point locates on the left or right side of a directed line for determining whether or not it is an interior point. In the proposed preprocessing approach we only remove those points that are obviously identified as interior ones. We do not discard any potential extreme points. Hence, the correctness of proposed preprocessing approach can be guaranteed.

    In the proposed preprocessing approach (see Figure 2), data dependencies exist in the discarding of interior points for that the pointPtempneeds to be dynamically determined. For example, after checking the pointP2, the pointPtempis assigned toP2for checking the pointP3. When checking the pointP4, the pointPtempis exactly the pointP3; however, after checking the pointP4, the pointPtempis still the pointP3. The pointPtempcannot be independently determined when checking each point.

    Due to the data dependency issues existing in the proposed preprocessing approach, it is well suited to be implemented in the sequential programming pattern. To implement this approach in the parallel programming pattern, an effective solution is to firstseparate the large series of pre-sorted points from some smaller subsets of points, and then check the internal points of all the subsets in parallel. For an individual subset of points, the checking of interior points is still performed in sequential programming pattern. This solution is in the Divide-and-Conquer fashion.

    2 Implementation Details of the Developed Parallel Graham Scan Algorithm

    2.1 The First Round of Discarding

    The basic idea behind this round of discarding is straightforward. Four extreme points withmin or maxxorycoordinates can be easily located and then used to form a convex quadrilateral; any interior points can be directly discarded. This round of discarding is easily implemented in sequential.

    The checking of each point to judge whether it falls in the convex quadrilateral does not have any data dependencies. In other words, It's well to check all points in parallel. We design a simple CUDA kernel to parallelize this checking. Each thread is in charge of determining whether a point locates inside the convex quadrilateral. An arrayintpos[n] is allocated on the GPU to store the indicator values of all points. If a point is in the quadrilateral, then its indicator value will be assigned to 0; otherwise, 1.

    2.2 The Calculating of Distances and Angles

    The calculating of the distance and angle for each point is straightforward. We also design a kernel to compute the distances and angles in parallel. Each thread within the thread grid is invoked for calculating the distance and angle for each point. Results are stored in two arrays,dist[n] andangle[n]. The angles will be used to sort points; and the distances will be employed to perform the second round of discarding.

    2.3 The Sorting of Points

    To speed up the sorting of all the remaining points according to their angles, we use the efficient function provided by Thrust, i.e.,thrust:sort_by_keys(). The keys that are used for sorting is the angles of points. Several usefulzip_iteratorsare created to combine the coordinates, angle, and distance of all points into a virtual array of structures. This sorting based on 32-byte keys is extremely fast and thus can improve the efficiency of the entire implementation.

    2.4 The Second Round of Discarding

    We specifically design a CUDA kernel for each region to further filter the interior points utilizing the proposed preprocessing approach. More details about this preprocessing approach are introduced in Section 3.1.

    3 Results

    We have tested our implementation against the Qhull library[28]using three groups of test data on two different platforms (see Table1.). The Qhull library[28]is the fastest implementation of the state-of-the-art baseline algorithm, i.e., the QuickHull algorithm[7]. More details about the platforms are listed in Table 1. Moreover, three groups of datasets are generated for testing.

    (1) The first group of test datasets is composed of 5 sets of points randomly located in a unit square that are generated using therboxcomponent provided by Qhull.

    (2) The second group of test datasets consists of 5 sets of randomly located points in a circle.

    (3) The third group of test datasets includes 5 point sets that are derived from 3D mesh models bymapping vertices of each 3D mesh model onto thex-yplane. The mesh models are directly obtained from the Stanford 3D Scanning Repository(1)http://www.graphics.stanford.edu/data/3Dscanrep/and the GIT Large Geometry Models Archive(2)http://www.cc.gatech.edu/projects/large_models/.

    3.1 Comparison of the Computational Efficiency

    3.1.1 Comparative Experimental Results for the Point Sets Locating in a Square

    The running time on the GTX 660M for the first group of five datasets is listed in Table 2. To analyze the computational cost between the GPU CPU sides, we specifically record the execution time separately for the two sides.

    Experimental results show that the speedups of the proposed parallel algorithm over the Qhull increase with the increase of data volume. However, the increasing of the speedup is not significant. And the speedup is approximately 3x~4x on average. The workload percentage of the CPU side is much less than that on the GPU side; and it sustainable decreases with the increasing of test data size. In addition, the workload percentage of the CPU side is usually less than 10%.

    Tab. 1 The platforms used for testing

    3.1.2 Comparative Experimental Results for the Point Sets Locating in a Circle

    For the second group of test data, the running time is listed in Table 2 The speedup is approximately 5x~6x on average and 6x~7x in the best cases.

    Tab. 2 Comparison of running time for the point sets locating in squares on GTX 660M

    3.1.3 Comparative Experimental Results for the Point Sets Derived from Mesh Models

    A shown in Table 3 below, the speedup of gScan over Qhull is approximately 5x~6x on average and 6x~7x in the best condition, which is greater than that for the points locating in squares but less than that for the points locating in circles.

    Tab. 3 Comparison of running time the point sets locating in circles on GTX 660M

    3.2 Effectiveness and Efficiency of Two Rounds of Discarding

    There are two rounds of discarding in the proposed parallel algorithm. The first round ofdiscarding is based on four extreme points with min or maxxorycoordinates. We propose an angle-based preprocessing approach for the second round of discarding. To evaluate the effectiveness of the proposed preprocessing approach, we count the remaining points after each round of discarding, then calculate the corresponding percentages of remaining points, and finally compare the effectiveness of two rounds of discarding. The results show that our preprocessing approach can dramatically reduce the number of remaining points, and therefore improve the overall efficiency of gScan. In addition, the effectiveness of the second pass of discarding becomes better with the increasing of the data size. Comparing the results generated for those three groups of test data, the results for the group of sets of points in circles are the best.

    Tab. 4 Comparison of running time the point sets derived from models on GTX 660M unit:ms

    4 Discussion

    4.1 Comparative Analysis

    According to the performance gains that were reported in existing related work[8,9,14], our implementation cannot achieve higher efficiency than that of them. In[8], it was reported that the speedup of their GPU implementation over the Qhull library is about 10x~15x for randomly distributed points. In[9], the parallel QuickHull implementation on the GPU achieved a speedup of 11x~12x for the uniformly distributed input points. In[14], the GPU-accelerated QuickHull implementation achieved an order of magnitude acceleration on the Qhull library for both randomly and uniformly distributed points.

    We think that the probable main cause that why our implementation cannot obtain high efficiency is that: the adopted underlying convex hull algorithm for parallelization is Graham scan rather than QuickHull. In sequential programming pattern, the QuickHull algorithm is much more efficient than Graham scan since QuickHull by nature can remove non-extreme points very fast. When parallelizing QuickHull on the GPU, this feature of fast removing non-extreme points can also be exploited and benefited; and therefore relatively higher efficiency can be obtained.

    Although our implementation cannot achieve high efficiency, it has an obvious advantage. Compared with some of the GPU-accelerated convex hull algorithms such as those were designed on the basis of QuickHull[8,9,14], the main advantage of our algorithm is that it is very easy to implement, which is mainly due to (1) the use of the library Thrust and (2) relatively fewer data dependencies.

    4.2 Limitations and Future Work

    The first weakness of gScan is that: the efficiency of the second round of preprocessing by invoking only one thread blockmay not be the highest.

    Another obvious shortcoming of our algorithm is that it cannot be applied in the case if all the input points are extreme points. In this case, the two rounds of discarding are therefore computationally wasteful; and the entire algorithm is inefficient. Therefore, the gift wrapping algorithm could be employed.

    We expect to reach a significant promotion in the efficiency of our implementation by replacing the primitives provided by Thrust with those corresponding primitives given by CUB. Future work could be done that implementing our algorithm using CUB and evaluating the efficiency of its performance.

    5 Conclusions

    In this paper, we presented a parallel Graham scan algorithm for calculating 2D convex hulls on the GPU. The proposed parallel Graham scan algorithm is mainly composed of two stages: the first stage includes two rounds of preprocess procedures executed on the GPU; and the second stage where the calculating of the convex hull for the remaining points is finalized on the CPU. Our parallel algorithm is implemented by heavily exploiting the library Thrust. Several efficient data-parallel primitives such as parallel sorting, reduction, and partitioning provide by Thrust are used to make our implementation convenient to implement and easy to utilize. We have compared our implementation to the library Qhull using three groups of test data on two different platforms. We have also observed that: our algorithm gScan can achieve the speedups of 5x~6x on average and 6x~7x in the best cases over the library Qhull, and can calculate the convex hull of 20M scattered points in less than 0.5 second. Although our algorithm cannot be much faster than the Qhull, it is very simple and easy to implement when compared with some related work. It could be an alternative in practice.

    免费人成在线观看视频色| 精品一区二区三区视频在线| 亚洲成人手机| av在线播放精品| 最近手机中文字幕大全| 黄色视频在线播放观看不卡| 一级毛片电影观看| 黄色日韩在线| 国产精品国产av在线观看| 午夜激情久久久久久久| 免费播放大片免费观看视频在线观看| 男女下面进入的视频免费午夜| 亚洲欧洲国产日韩| av在线观看视频网站免费| 免费看光身美女| 国产男女内射视频| 国产高潮美女av| 看免费成人av毛片| 精品酒店卫生间| 嘟嘟电影网在线观看| 啦啦啦中文免费视频观看日本| 毛片一级片免费看久久久久| 亚洲精品日本国产第一区| 少妇 在线观看| 在线亚洲精品国产二区图片欧美 | 欧美亚洲 丝袜 人妻 在线| 久久久久精品久久久久真实原创| 中文精品一卡2卡3卡4更新| 伦理电影免费视频| 久久久久久久国产电影| 午夜日本视频在线| 99久久精品热视频| 久久久久久伊人网av| 国产精品一区二区三区四区免费观看| 国产成人aa在线观看| 18禁动态无遮挡网站| 成人美女网站在线观看视频| 国产大屁股一区二区在线视频| 观看免费一级毛片| 午夜免费观看性视频| 免费人成在线观看视频色| 乱码一卡2卡4卡精品| 午夜免费观看性视频| 精品酒店卫生间| 亚洲精品aⅴ在线观看| 婷婷色综合大香蕉| 国产精品免费大片| 亚洲精品aⅴ在线观看| 国产乱人偷精品视频| 久久这里有精品视频免费| 免费看光身美女| 日本-黄色视频高清免费观看| 欧美亚洲 丝袜 人妻 在线| 国产精品一及| 午夜老司机福利剧场| 尤物成人国产欧美一区二区三区| 色综合色国产| 爱豆传媒免费全集在线观看| 老师上课跳d突然被开到最大视频| 免费大片黄手机在线观看| 五月伊人婷婷丁香| 精品久久久久久久末码| 免费少妇av软件| 大话2 男鬼变身卡| 欧美精品国产亚洲| 国产视频内射| 一个人看的www免费观看视频| 国产伦精品一区二区三区视频9| 欧美高清性xxxxhd video| 国产一级毛片在线| 亚洲美女黄色视频免费看| 免费播放大片免费观看视频在线观看| 九九在线视频观看精品| 国产一区二区三区综合在线观看 | 国产69精品久久久久777片| 韩国高清视频一区二区三区| 又爽又黄a免费视频| 午夜免费观看性视频| 看免费成人av毛片| 久久热精品热| 免费观看av网站的网址| 日本免费在线观看一区| 日本色播在线视频| 自拍欧美九色日韩亚洲蝌蚪91 | 欧美zozozo另类| 亚洲国产精品成人久久小说| 亚洲精品一区蜜桃| 亚洲人成网站在线观看播放| 亚洲精品日韩av片在线观看| 18禁裸乳无遮挡免费网站照片| 国产亚洲av片在线观看秒播厂| 免费观看在线日韩| 久久久久人妻精品一区果冻| 91精品国产九色| 美女内射精品一级片tv| 亚洲国产毛片av蜜桃av| 成人毛片a级毛片在线播放| 国产男女内射视频| 亚洲四区av| 久久精品熟女亚洲av麻豆精品| 1000部很黄的大片| 激情 狠狠 欧美| 免费看av在线观看网站| 夫妻性生交免费视频一级片| 国产男女内射视频| 天堂俺去俺来也www色官网| 99re6热这里在线精品视频| 看非洲黑人一级黄片| 国产精品久久久久久av不卡| 免费人成在线观看视频色| 成人特级av手机在线观看| 久久久久性生活片| 成人免费观看视频高清| 在线观看三级黄色| 美女高潮的动态| 国产在线免费精品| 亚洲精品乱久久久久久| 最近2019中文字幕mv第一页| 在线精品无人区一区二区三 | 亚洲美女搞黄在线观看| 两个人的视频大全免费| 精品少妇久久久久久888优播| 精品99又大又爽又粗少妇毛片| 欧美日韩综合久久久久久| av又黄又爽大尺度在线免费看| 久久久久精品性色| 久久精品国产亚洲av涩爱| 又大又黄又爽视频免费| 乱系列少妇在线播放| 久久av网站| 日韩伦理黄色片| 国产在视频线精品| 国产伦精品一区二区三区四那| 久久精品久久久久久噜噜老黄| 王馨瑶露胸无遮挡在线观看| 免费人成在线观看视频色| 亚洲精品亚洲一区二区| 啦啦啦中文免费视频观看日本| 亚洲av在线观看美女高潮| 天堂中文最新版在线下载| 国国产精品蜜臀av免费| 干丝袜人妻中文字幕| 性高湖久久久久久久久免费观看| av免费在线看不卡| 久久99热6这里只有精品| 丰满人妻一区二区三区视频av| 国产在视频线精品| 亚洲在久久综合| 亚洲美女视频黄频| 中文乱码字字幕精品一区二区三区| 小蜜桃在线观看免费完整版高清| 国产 一区精品| 成人无遮挡网站| 国产日韩欧美在线精品| 精品人妻视频免费看| 国产免费一区二区三区四区乱码| 一级毛片aaaaaa免费看小| 国产午夜精品久久久久久一区二区三区| 毛片一级片免费看久久久久| 另类亚洲欧美激情| 久久精品久久久久久噜噜老黄| 我要看黄色一级片免费的| 小蜜桃在线观看免费完整版高清| 又大又黄又爽视频免费| 男人爽女人下面视频在线观看| 国产美女午夜福利| 天天躁夜夜躁狠狠久久av| 成人影院久久| 久久久久久人妻| 两个人的视频大全免费| 毛片一级片免费看久久久久| 97超碰精品成人国产| 成人国产麻豆网| 亚洲国产精品成人久久小说| 波野结衣二区三区在线| 欧美性感艳星| 联通29元200g的流量卡| 青春草国产在线视频| 少妇人妻精品综合一区二区| 国产成人a∨麻豆精品| 91久久精品国产一区二区成人| 日本av手机在线免费观看| 看十八女毛片水多多多| 日产精品乱码卡一卡2卡三| 搡老乐熟女国产| 国产老妇伦熟女老妇高清| 在线观看人妻少妇| 九九在线视频观看精品| 久久精品久久久久久噜噜老黄| 最近最新中文字幕免费大全7| 久久青草综合色| 乱系列少妇在线播放| 伊人久久国产一区二区| 内射极品少妇av片p| freevideosex欧美| 亚洲内射少妇av| 99久国产av精品国产电影| 国产在线一区二区三区精| 欧美极品一区二区三区四区| 欧美丝袜亚洲另类| 少妇精品久久久久久久| 免费av不卡在线播放| 国产一区二区在线观看日韩| 美女xxoo啪啪120秒动态图| 国产精品国产三级国产专区5o| 久久国产精品男人的天堂亚洲 | 精品人妻熟女av久视频| 久久久久久久久久人人人人人人| 韩国高清视频一区二区三区| 免费av不卡在线播放| 有码 亚洲区| 国产欧美日韩一区二区三区在线 | 波野结衣二区三区在线| 精品少妇久久久久久888优播| 亚洲av成人精品一区久久| 日韩成人av中文字幕在线观看| 成人18禁高潮啪啪吃奶动态图 | 国产精品秋霞免费鲁丝片| 波野结衣二区三区在线| 边亲边吃奶的免费视频| 少妇被粗大猛烈的视频| 欧美97在线视频| 内射极品少妇av片p| 欧美日韩在线观看h| 丰满迷人的少妇在线观看| 午夜激情福利司机影院| 国产日韩欧美在线精品| 1000部很黄的大片| 啦啦啦在线观看免费高清www| 日韩亚洲欧美综合| 精品一区二区三卡| 中文天堂在线官网| 午夜福利影视在线免费观看| 免费看日本二区| 亚洲av二区三区四区| 97超视频在线观看视频| 久久久色成人| 久久婷婷青草| 成人亚洲精品一区在线观看 | 如何舔出高潮| 波野结衣二区三区在线| 一级毛片 在线播放| 美女cb高潮喷水在线观看| 亚洲av不卡在线观看| 成人高潮视频无遮挡免费网站| 国产精品福利在线免费观看| 久久久久人妻精品一区果冻| 亚洲人与动物交配视频| 高清在线视频一区二区三区| 亚洲最大成人中文| 国产真实伦视频高清在线观看| 精品一区在线观看国产| 妹子高潮喷水视频| 亚洲精品日韩在线中文字幕| 国语对白做爰xxxⅹ性视频网站| 国产成人一区二区在线| 日韩强制内射视频| 久久久精品免费免费高清| 久久久久久伊人网av| 热re99久久精品国产66热6| 男女免费视频国产| 久久国内精品自在自线图片| 人体艺术视频欧美日本| 国产大屁股一区二区在线视频| 欧美精品一区二区大全| 久久午夜福利片| 在线精品无人区一区二区三 | 国产深夜福利视频在线观看| 久久99蜜桃精品久久| 男人爽女人下面视频在线观看| 国产白丝娇喘喷水9色精品| 男男h啪啪无遮挡| 欧美精品亚洲一区二区| 伦精品一区二区三区| 亚洲精品日韩av片在线观看| 自拍偷自拍亚洲精品老妇| 你懂的网址亚洲精品在线观看| 日韩精品有码人妻一区| 日韩欧美精品免费久久| 国产免费又黄又爽又色| 寂寞人妻少妇视频99o| 97超视频在线观看视频| 欧美另类一区| 国产色婷婷99| 一级毛片黄色毛片免费观看视频| 99热国产这里只有精品6| 毛片一级片免费看久久久久| 国产精品伦人一区二区| 亚洲色图av天堂| 亚洲国产av新网站| 女人十人毛片免费观看3o分钟| 精品亚洲成a人片在线观看 | 成人18禁高潮啪啪吃奶动态图 | 国产黄色免费在线视频| 欧美日韩视频高清一区二区三区二| 久久久久久人妻| 中文欧美无线码| 狂野欧美白嫩少妇大欣赏| 国产免费福利视频在线观看| 高清欧美精品videossex| 成人免费观看视频高清| 午夜福利视频精品| 一个人看的www免费观看视频| 午夜免费鲁丝| 免费看光身美女| 青春草亚洲视频在线观看| 在线观看免费视频网站a站| 中国三级夫妇交换| 少妇精品久久久久久久| 国产一区亚洲一区在线观看| 在线观看一区二区三区激情| 国产一区亚洲一区在线观看| 亚洲第一av免费看| 一本—道久久a久久精品蜜桃钙片| 精品国产乱码久久久久久小说| 国产精品一区二区三区四区免费观看| 街头女战士在线观看网站| 亚洲av电影在线观看一区二区三区| 最近中文字幕高清免费大全6| 大片电影免费在线观看免费| 建设人人有责人人尽责人人享有的 | 免费播放大片免费观看视频在线观看| 久久午夜福利片| 国产成人freesex在线| 少妇丰满av| 国产免费一区二区三区四区乱码| 夜夜爽夜夜爽视频| 久久久午夜欧美精品| 高清不卡的av网站| 久久久久久久亚洲中文字幕| 日韩一本色道免费dvd| 久久久久久伊人网av| 中文字幕精品免费在线观看视频 | 欧美xxⅹ黑人| av一本久久久久| 中文字幕制服av| 亚洲熟女精品中文字幕| 极品教师在线视频| 国内揄拍国产精品人妻在线| 直男gayav资源| 免费播放大片免费观看视频在线观看| 国产久久久一区二区三区| 久久精品久久久久久噜噜老黄| 91精品国产九色| 欧美精品一区二区免费开放| 蜜桃亚洲精品一区二区三区| 久久精品国产自在天天线| 国产v大片淫在线免费观看| 国产一区二区三区av在线| 亚洲人与动物交配视频| 日韩视频在线欧美| 国产精品久久久久久久电影| 一级片'在线观看视频| 中文字幕精品免费在线观看视频 | 久久久精品94久久精品| 亚洲四区av| 亚洲三级黄色毛片| 国产精品国产三级专区第一集| 狂野欧美激情性xxxx在线观看| 99热这里只有精品一区| 高清黄色对白视频在线免费看 | 亚洲国产最新在线播放| av专区在线播放| 久久久久精品久久久久真实原创| 日韩三级伦理在线观看| 国产人妻一区二区三区在| 久久久久国产网址| 丰满人妻一区二区三区视频av| 久久精品国产亚洲网站| 人人妻人人澡人人爽人人夜夜| 自拍欧美九色日韩亚洲蝌蚪91 | 九九爱精品视频在线观看| 深夜a级毛片| 91精品国产九色| 欧美日韩精品成人综合77777| 国产精品久久久久久久久免| 亚洲美女视频黄频| 国产 一区 欧美 日韩| 一本—道久久a久久精品蜜桃钙片| tube8黄色片| 自拍欧美九色日韩亚洲蝌蚪91 | 日韩av不卡免费在线播放| 国产 精品1| 亚洲精品自拍成人| 色视频www国产| 国产精品福利在线免费观看| 超碰97精品在线观看| 国产午夜精品久久久久久一区二区三区| 欧美3d第一页| 少妇丰满av| 久久婷婷青草| 亚洲天堂av无毛| 王馨瑶露胸无遮挡在线观看| 男女无遮挡免费网站观看| 国产av精品麻豆| 国产精品一及| 久久精品久久久久久久性| 色网站视频免费| 国产高清国产精品国产三级 | 永久网站在线| 视频中文字幕在线观看| 国产日韩欧美在线精品| 日韩伦理黄色片| 少妇人妻精品综合一区二区| 国产白丝娇喘喷水9色精品| 免费av中文字幕在线| 久久精品国产鲁丝片午夜精品| 亚洲真实伦在线观看| 夜夜骑夜夜射夜夜干| 蜜桃在线观看..| 又粗又硬又长又爽又黄的视频| 免费黄网站久久成人精品| 中文字幕av成人在线电影| 亚洲精品成人av观看孕妇| 黄片无遮挡物在线观看| 亚洲不卡免费看| 最近最新中文字幕免费大全7| 日本欧美视频一区| 国产精品一区二区在线不卡| 国产欧美亚洲国产| 国产在视频线精品| 欧美xxⅹ黑人| 亚洲精品国产av成人精品| 性高湖久久久久久久久免费观看| 免费观看的影片在线观看| 美女脱内裤让男人舔精品视频| 一级毛片久久久久久久久女| 少妇高潮的动态图| 亚洲精品国产av成人精品| 永久免费av网站大全| 午夜激情福利司机影院| 亚洲熟女精品中文字幕| 国产乱人偷精品视频| 亚洲av福利一区| 人人妻人人看人人澡| 男人和女人高潮做爰伦理| 高清在线视频一区二区三区| 久久久午夜欧美精品| 国产精品嫩草影院av在线观看| 国产精品一区二区在线观看99| 黄色怎么调成土黄色| 另类亚洲欧美激情| 中文精品一卡2卡3卡4更新| 97在线人人人人妻| 国产亚洲91精品色在线| 久久av网站| 亚洲aⅴ乱码一区二区在线播放| 女人久久www免费人成看片| 免费观看无遮挡的男女| 国产欧美亚洲国产| 嫩草影院新地址| kizo精华| 免费久久久久久久精品成人欧美视频 | kizo精华| 91久久精品国产一区二区成人| 黑丝袜美女国产一区| 大香蕉97超碰在线| 亚洲精品,欧美精品| 熟妇人妻不卡中文字幕| 啦啦啦在线观看免费高清www| 日日啪夜夜爽| 日韩av免费高清视频| 蜜桃在线观看..| 高清不卡的av网站| 男女免费视频国产| 妹子高潮喷水视频| 99久久中文字幕三级久久日本| 久久精品熟女亚洲av麻豆精品| 美女xxoo啪啪120秒动态图| 黄色配什么色好看| 我要看黄色一级片免费的| 欧美三级亚洲精品| 国产视频内射| 国产成人91sexporn| av专区在线播放| 在线观看国产h片| h日本视频在线播放| 2021少妇久久久久久久久久久| 婷婷色麻豆天堂久久| 狠狠精品人妻久久久久久综合| 国产精品一及| 免费av不卡在线播放| 日韩精品有码人妻一区| 亚洲精品456在线播放app| 中国美白少妇内射xxxbb| 成人国产麻豆网| 亚洲精品456在线播放app| 国产精品成人在线| 免费在线观看成人毛片| 国产爱豆传媒在线观看| 在线 av 中文字幕| 高清黄色对白视频在线免费看 | 性色av一级| 精品一区二区免费观看| 小蜜桃在线观看免费完整版高清| 午夜福利视频精品| 在线观看av片永久免费下载| 狠狠精品人妻久久久久久综合| 在线观看三级黄色| 国产探花极品一区二区| 国产精品熟女久久久久浪| 久久99蜜桃精品久久| 高清毛片免费看| 日日撸夜夜添| 最近最新中文字幕大全电影3| 午夜福利网站1000一区二区三区| 草草在线视频免费看| 午夜精品国产一区二区电影| 少妇被粗大猛烈的视频| 三级国产精品片| 亚洲精品亚洲一区二区| 在线 av 中文字幕| 成年美女黄网站色视频大全免费 | 国产有黄有色有爽视频| 日韩欧美精品免费久久| 人体艺术视频欧美日本| 插阴视频在线观看视频| 亚洲成人av在线免费| 一本久久精品| 制服丝袜香蕉在线| 亚洲欧美中文字幕日韩二区| 黄片wwwwww| 成人一区二区视频在线观看| 亚洲aⅴ乱码一区二区在线播放| 1000部很黄的大片| 亚洲av不卡在线观看| 国产亚洲欧美精品永久| 黄色一级大片看看| 国产成人aa在线观看| 亚洲av成人精品一二三区| a级一级毛片免费在线观看| 毛片一级片免费看久久久久| 亚洲一区二区三区欧美精品| 又爽又黄a免费视频| 久久影院123| 在线天堂最新版资源| 热re99久久精品国产66热6| 各种免费的搞黄视频| 精品少妇黑人巨大在线播放| 女性被躁到高潮视频| 黄片wwwwww| 99热这里只有是精品50| 亚洲国产欧美人成| 尾随美女入室| 精品少妇久久久久久888优播| 五月开心婷婷网| 欧美成人一区二区免费高清观看| 久久久久久久久久人人人人人人| 成人无遮挡网站| 欧美区成人在线视频| 在现免费观看毛片| 男女啪啪激烈高潮av片| 国产69精品久久久久777片| 日本午夜av视频| 99久久人妻综合| 国产精品人妻久久久影院| 99久久精品一区二区三区| 搡老乐熟女国产| 欧美最新免费一区二区三区| 韩国av在线不卡| 亚洲av.av天堂| 欧美+日韩+精品| 欧美成人一区二区免费高清观看| 在线看a的网站| 免费黄色在线免费观看| 久久精品人妻少妇| 少妇熟女欧美另类| 亚洲真实伦在线观看| 国产91av在线免费观看| 国产成人精品婷婷| 久久精品国产亚洲av涩爱| 一区二区三区免费毛片| 两个人的视频大全免费| 亚洲精品456在线播放app| 久久久久久久久大av| 国产精品国产av在线观看| 久久国产亚洲av麻豆专区| 你懂的网址亚洲精品在线观看| 2021少妇久久久久久久久久久| 国产爱豆传媒在线观看| 超碰97精品在线观看| 久久久久久伊人网av| 欧美变态另类bdsm刘玥| av国产精品久久久久影院| 波野结衣二区三区在线| 亚洲国产精品成人久久小说| 亚洲美女黄色视频免费看| 国产大屁股一区二区在线视频| 男女国产视频网站| 色综合色国产| 人妻少妇偷人精品九色| 街头女战士在线观看网站| 又爽又黄a免费视频| 黑人猛操日本美女一级片| 人妻制服诱惑在线中文字幕| 中文字幕精品免费在线观看视频 | 中文精品一卡2卡3卡4更新| 熟女av电影| 精品亚洲乱码少妇综合久久| 国产精品无大码| 中文字幕亚洲精品专区| 国产欧美另类精品又又久久亚洲欧美| 亚洲人成网站在线观看播放| 在线观看国产h片| 日日摸夜夜添夜夜添av毛片| 久久6这里有精品| 国产成人精品久久久久久| 亚洲人与动物交配视频| 日韩av在线免费看完整版不卡| 天堂俺去俺来也www色官网| 日韩伦理黄色片| 亚洲国产毛片av蜜桃av| 免费大片18禁| 色网站视频免费| 久久人人爽人人片av|