提交 15d4872b 编写于 作者: Z zhangyang

format code

上级 97b7c913
......@@ -12,49 +12,54 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License. */
#include <memory.h>
#include "bias_scale.h"
#include <memory.h>
#include "api.h"
namespace paddle_mobile {
namespace fpga {
namespace bias_scale{
void align_element(float** data_in, int num_per_div_before_alignment, int num){
float *ptr_unaligned = *data_in;
int div_num = (num + num_per_div_before_alignment -1) / num_per_div_before_alignment;
int num_per_div_after_alignment = align_to_x(num_per_div_before_alignment, BS_NUM_ALIGNMENT);
int num_element = 2 * div_num * num_per_div_after_alignment; //including bias & scale
float *ptr_aligned = (float*) fpga_malloc(num_element * sizeof(float));
memset(ptr_aligned, 0, num_element * sizeof(float));
for(int i =0; i<div_num; i++){
memcpy(ptr_aligned + i * num_per_div_after_alignment, ptr_unaligned, num_per_div_before_alignment);
}
fpga_free(ptr_unaligned);
*data_in = ptr_aligned;
}
void interleave(float** data_in, int num_after_alignment){
//num_after_alignment: number of bias after alignment
float *ptr_uninterleaved = *data_in;
float *ptr_interleaved = (float*) fpga_malloc(2 * num_after_alignment * sizeof(float));
int num = num_after_alignment / 4;
for(int i =0; i<num; i++){
memcpy(ptr_interleaved + 8 * i, ptr_uninterleaved + 4*i, 4*sizeof(float));
memcpy(ptr_interleaved + 8 * i + 4, ptr_uninterleaved + num_after_alignment * sizeof(float) + 4*i, 4*sizeof(float));
}
fpga_free(ptr_uninterleaved);
*data_in = ptr_interleaved;
}
} // namespace bias_scale
} // namespace fpga
} // namespace paddle_mobile
\ No newline at end of file
namespace fpga {
namespace bias_scale {
void align_element(float **data_in, int num_per_div_before_alignment, int num) {
float *ptr_unaligned = *data_in;
int div_num =
(num + num_per_div_before_alignment - 1) / num_per_div_before_alignment;
int num_per_div_after_alignment =
align_to_x(num_per_div_before_alignment, BS_NUM_ALIGNMENT);
int num_element =
2 * div_num * num_per_div_after_alignment; // including bias & scale
float *ptr_aligned = (float *)fpga_malloc(num_element * sizeof(float));
memset(ptr_aligned, 0, num_element * sizeof(float));
for (int i = 0; i < div_num; i++) {
memcpy(ptr_aligned + i * num_per_div_after_alignment, ptr_unaligned,
num_per_div_before_alignment * sizeof(float));
}
fpga_free(ptr_unaligned);
*data_in = ptr_aligned;
}
void interleave(float **data_in, int num_after_alignment) {
// num_after_alignment: number of bias after alignment
float *ptr_uninterleaved = *data_in;
float *ptr_interleaved =
(float *)fpga_malloc(2 * num_after_alignment * sizeof(float));
int num = num_after_alignment / 4;
for (int i = 0; i < num; i++) {
memcpy(ptr_interleaved + 8 * i, ptr_uninterleaved + 4 * i,
4 * sizeof(float));
memcpy(ptr_interleaved + 8 * i + 4,
ptr_uninterleaved + num_after_alignment * sizeof(float) + 4 * i,
4 * sizeof(float));
}
fpga_free(ptr_uninterleaved);
*data_in = ptr_interleaved;
}
} // namespace bias_scale
} // namespace fpga
} // namespace paddle_mobile
......@@ -14,17 +14,15 @@ limitations under the License. */
#pragma once
#define BS_NUM_ALIGNMENT 8
namespace paddle_mobile {
namespace fpga {
namespace bias_scale{
void align_element(float** data_in, int num_per_div_before_alignment, int num);
void interleave(float** data_in, int num_after_alignment);
namespace bias_scale {
void align_element(float** data_in, int num_per_div_before_alignment, int num);
void interleave(float** data_in, int num_after_alignment);
} // namespace bias_scale
} // namespace fpga
} // namespace paddle_mobile
\ No newline at end of file
} // namespace paddle_mobile
......@@ -11,51 +11,30 @@ distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License. */
#include <memory.h>
#include "filter.h"
#include <memory.h>
#include "api.h"
namespace paddle_mobile {
namespace fpga {
namespace filter{
void convert_to_hwc(float** data_in, int num, int channel, int height, int width){
}
float find_max(float* data_in, int num){
return 0;
}
void quantize(float* data_in, int num){
}
void align_element(float** data_in, int num, int chw){
}
void align_num(float** data_in, int num_per_div_before_alignment, int num, int chw){
namespace fpga {
namespace filter {
}
void convert_to_hwc(float** data_in, int num, int channel, int height,
int width) {}
float find_max(float* data_in, int num) { return 0; }
void reorder(float** data_in, int num_after_alignment, int chw){
void quantize(float* data_in, int num) {}
}
void align_element(float** data_in, int num, int chw) {}
void align_num(float** data_in, int num_per_div_before_alignment, int num,
int chw) {}
void interleave(float** data_in, int num_after_alignment, int chw){
void reorder(float** data_in, int num_after_alignment, int chw) {}
}
void interleave(float** data_in, int num_after_alignment, int chw) {}
} // namespace filter
} // namespace fpga
} // namespace paddle_mobile
\ No newline at end of file
} // namespace filter
} // namespace fpga
} // namespace paddle_mobile
......@@ -14,21 +14,22 @@ limitations under the License. */
#pragma once
#define FILTER_NUM_ALIGNMENT 32 //Filter number aligned to 32
#define FILTER_ELEMENT_ALIGNMENT 16 //Filter element number aligned to 16
#define FILTER_NUM_ALIGNMENT 32 // Filter number aligned to 32
#define FILTER_ELEMENT_ALIGNMENT 16 // Filter element number aligned to 16
namespace paddle_mobile {
namespace fpga {
namespace filter{
void convert_to_hwc(float** data_in, int num, int channel, int height, int width);
float find_max(float* data_in, int num);
void quantize(float* data_in, int num);
void align_element(float** data_in, int num, int chw);
void align_num(float** data_in, int num_per_div_before_alignment, int num, int chw);
void reorder(float** data_in, int num_after_alignment, int chw);
void interleave(float** data_in, int num_after_alignment, int chw);
} // namespace filter
} // namespace fpga
} // namespace paddle_mobile
\ No newline at end of file
namespace fpga {
namespace filter {
void convert_to_hwc(float** data_in, int num, int channel, int height,
int width);
float find_max(float* data_in, int num);
void quantize(float* data_in, int num);
void align_element(float** data_in, int num, int chw);
void align_num(float** data_in, int num_per_div_before_alignment, int num,
int chw);
void reorder(float** data_in, int num_after_alignment, int chw);
void interleave(float** data_in, int num_after_alignment, int chw);
} // namespace filter
} // namespace fpga
} // namespace paddle_mobile
......@@ -10,4 +10,4 @@ Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License. */
\ No newline at end of file
limitations under the License. */
......@@ -10,4 +10,4 @@ Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License. */
\ No newline at end of file
limitations under the License. */
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册