This is the mail archive of the
mailing list for the GCC project.
Partition and subpartition Analysis that helps in further vectorization and parallelization
- From: Ajit Kumar Agarwal <ajit dot kumar dot agarwal at xilinx dot com>
- To: Jeff Law <law at redhat dot com>, Jan Hubicka <hubicka at ucw dot cz>, Richard Biener <richard dot guenther at gmail dot com>, "gcc at gcc dot gnu dot org" <gcc at gcc dot gnu dot org>
- Cc: Vinod Kathail <vinodk at xilinx dot com>, Shail Aditya Gupta <shailadi at xilinx dot com>, Vidhumouli Hunsigida <vidhum at xilinx dot com>, "Nagaraju Mekala" <nmekala at xilinx dot com>
- Date: Tue, 14 Jul 2015 11:33:30 +0000
- Subject: Partition and subpartition Analysis that helps in further vectorization and parallelization
- Authentication-results: sourceware.org; auth=none
- Authentication-results: spf=pass (sender IP is 18.104.22.168) smtp.mailfrom=xilinx.com; gmail.com; dkim=none (message not signed) header.d=none;
- Bn1bffo11hub046: X-MS-Exchange-Organization-RulesExecuted
I am trying the place the following Analysis in the vectorizer of GCC that helps in improving the vectorizer to a great extent
For the unit stride, zero stride and non stride accesses of memory that helps in vectorizer.
For the Data Dependency graph, the topological sort is performed. The topological sorted Data Dependence graph the time
Stamp for each node of the DDG is assigned based on the following Algorithm.
For each node in Topological sorted order in DDG
Timestamp = 0;
Timestamp(node) = Max(Timestamp, Timestamp of all predecessors) + 1;
Based on the above calculation of timestamp, the partition of DDG is formed. Each partition of DDG is having the nodes with the same
Stamp. So nodes in each partition can be vectorized as they are independent nodes in the DDG. To enable the vectorization, the accesses
based on contiguous access and non-Contagious access the sub partition is formed. The memory address of all the operands of each node
in the partition formed above is sorted in increasing/decreasing order. Based on the sorted increasing/decreasing order of the memory
address of each operands of each node in the partition the sub partition is performed based on the unit stride access, zero stride access
and the accesses that require shuffling of operands through the vectorized instruction.
The above analysis will help in performing Data Layout on the partitioned nodes of the DDG and based on Sub partition formed above and
more vectorization opportunities is enabled for performing data Layout on non contiguous accesses and the sub partition With the contiguous
access helps in vectorization.
Thanks & Regards