Skip to content
Snippets Groups Projects
Commit ba543ac4 authored by kotsifa2's avatar kotsifa2
Browse files

Edited merge benchmarks.

parent 49fc5eb6
No related branches found
No related tags found
No related merge requests found
......@@ -6,7 +6,8 @@ VISC_OBJS=main.visc.ll
APP_CUDALDFLAGS=-lm -lstdc++
APP_CFLAGS+=-ffast-math -O3 -I/opt/opencv/include
APP_CXXFLAGS+=-ffast-math -O3 -I/opt/opencv/include
APP_LDFLAGS=-L/usr/local/cuda/lib64 -rdynamic /opt/opencv/lib/libopencv_videostab.so.3.0.0 /opt/opencv/lib/libopencv_videoio.so.3.0.0 /opt/opencv/lib/libopencv_video.so.3.0.0 /opt/opencv/lib/libopencv_superres.so.3.0.0 /opt/opencv/lib/libopencv_stitching.so.3.0.0 /opt/opencv/lib/libopencv_shape.so.3.0.0 /opt/opencv/lib/libopencv_photo.so.3.0.0 /opt/opencv/lib/libopencv_objdetect.so.3.0.0 /opt/opencv/lib/libopencv_ml.so.3.0.0 /opt/opencv/lib/libopencv_imgproc.so.3.0.0 /opt/opencv/lib/libopencv_imgcodecs.so.3.0.0 /opt/opencv/lib/libopencv_highgui.so.3.0.0 /opt/opencv/lib/libopencv_hal.a /opt/opencv/lib/libopencv_flann.so.3.0.0 /opt/opencv/lib/libopencv_features2d.so.3.0.0 /opt/opencv/lib/libopencv_core.so.3.0.0 /opt/opencv/lib/libopencv_calib3d.so.3.0.0 /opt/opencv/lib/libopencv_hal.a -ldl -lm -lpthread -lrt /opt/opencv/share/OpenCV/3rdparty/lib/libippicv.a -Wl,-rpath,/usr/local/cuda/lib64:/opt/opencv/lib
APP_LDFLAGS=`pkg-config ${OpenCV_DIR}/lib/pkgconfig/opencv.pc --libs`
#APP_LDFLAGS=-L/usr/local/cuda/lib64 -rdynamic /opt/opencv/lib/libopencv_videostab.so.3.0.0 /opt/opencv/lib/libopencv_videoio.so.3.0.0 /opt/opencv/lib/libopencv_video.so.3.0.0 /opt/opencv/lib/libopencv_superres.so.3.0.0 /opt/opencv/lib/libopencv_stitching.so.3.0.0 /opt/opencv/lib/libopencv_shape.so.3.0.0 /opt/opencv/lib/libopencv_photo.so.3.0.0 /opt/opencv/lib/libopencv_objdetect.so.3.0.0 /opt/opencv/lib/libopencv_ml.so.3.0.0 /opt/opencv/lib/libopencv_imgproc.so.3.0.0 /opt/opencv/lib/libopencv_imgcodecs.so.3.0.0 /opt/opencv/lib/libopencv_highgui.so.3.0.0 /opt/opencv/lib/libopencv_hal.a /opt/opencv/lib/libopencv_flann.so.3.0.0 /opt/opencv/lib/libopencv_features2d.so.3.0.0 /opt/opencv/lib/libopencv_core.so.3.0.0 /opt/opencv/lib/libopencv_calib3d.so.3.0.0 /opt/opencv/lib/libopencv_hal.a -ldl -lm -lpthread -lrt /opt/opencv/share/OpenCV/3rdparty/lib/libippicv.a -Wl,-rpath,/usr/local/cuda/lib64:/opt/opencv/lib
#OpenCV link flags all
#/usr/bin/c++ -std=c++0x CMakeFiles/EdgeDetect.dir/EdgeDetect.cpp.o -o EdgeDetect -L/usr/local/cuda/lib64 -rdynamic /opt/opencv/lib/libopencv_videostab.so.3.0.0 /opt/opencv/lib/libopencv_videoio.so.3.0.0 /opt/opencv/lib/libopencv_video.so.3.0.0 /opt/opencv/lib/libopencv_superres.so.3.0.0 /opt/opencv/lib/libopencv_stitching.so.3.0.0 /opt/opencv/lib/libopencv_shape.so.3.0.0 /opt/opencv/lib/libopencv_photo.so.3.0.0 /opt/opencv/lib/libopencv_objdetect.so.3.0.0 /opt/opencv/lib/libopencv_ml.so.3.0.0 /opt/opencv/lib/libopencv_imgproc.so.3.0.0 /opt/opencv/lib/libopencv_imgcodecs.so.3.0.0 /opt/opencv/lib/libopencv_highgui.so.3.0.0 /opt/opencv/lib/libopencv_hal.a /opt/opencv/lib/libopencv_flann.so.3.0.0 /opt/opencv/lib/libopencv_features2d.so.3.0.0 /opt/opencv/lib/libopencv_cudev.so.3.0.0 /opt/opencv/lib/libopencv_cudawarping.so.3.0.0 /opt/opencv/lib/libopencv_cudastereo.so.3.0.0 /opt/opencv/lib/libopencv_cudaoptflow.so.3.0.0 /opt/opencv/lib/libopencv_cudaobjdetect.so.3.0.0 /opt/opencv/lib/libopencv_cudalegacy.so.3.0.0 /opt/opencv/lib/libopencv_cudaimgproc.so.3.0.0 /opt/opencv/lib/libopencv_cudafilters.so.3.0.0 /opt/opencv/lib/libopencv_cudafeatures2d.so.3.0.0 /opt/opencv/lib/libopencv_cudacodec.so.3.0.0 /opt/opencv/lib/libopencv_cudabgsegm.so.3.0.0 /opt/opencv/lib/libopencv_cudaarithm.so.3.0.0 /opt/opencv/lib/libopencv_core.so.3.0.0 /opt/opencv/lib/libopencv_calib3d.so.3.0.0 /opt/opencv/lib/libopencv_hal.a -ldl -lm -lpthread -lrt /opt/opencv/share/OpenCV/3rdparty/lib/libippicv.a -lcudart -lnpp -lcufft -lcudart -lnpp -lcufft -Wl,-rpath,/usr/local/cuda/lib64:/opt/opencv/lib
# (c) 2010 The Board of Trustees of the University of Illinois.
LANGUAGE=visc
SRCDIR_OBJS=io.ll #compute_gold.o
VISC_OBJS=main.visc.ll
APP_CUDALDFLAGS=-lm -lstdc++
APP_CFLAGS+=-ffast-math -O3 -I/opt/opencv/include
APP_CXXFLAGS+=-ffast-math -O3 -I/opt/opencv/include
APP_LDFLAGS=`pkg-config ${OpenCV_DIR}/lib/pkgconfig/opencv.pc --libs`
#APP_LDFLAGS=-L/usr/local/cuda/lib64 -rdynamic /opt/opencv/lib/libopencv_videostab.so.3.0.0 /opt/opencv/lib/libopencv_videoio.so.3.0.0 /opt/opencv/lib/libopencv_video.so.3.0.0 /opt/opencv/lib/libopencv_superres.so.3.0.0 /opt/opencv/lib/libopencv_stitching.so.3.0.0 /opt/opencv/lib/libopencv_shape.so.3.0.0 /opt/opencv/lib/libopencv_photo.so.3.0.0 /opt/opencv/lib/libopencv_objdetect.so.3.0.0 /opt/opencv/lib/libopencv_ml.so.3.0.0 /opt/opencv/lib/libopencv_imgproc.so.3.0.0 /opt/opencv/lib/libopencv_imgcodecs.so.3.0.0 /opt/opencv/lib/libopencv_highgui.so.3.0.0 /opt/opencv/lib/libopencv_hal.a /opt/opencv/lib/libopencv_flann.so.3.0.0 /opt/opencv/lib/libopencv_features2d.so.3.0.0 /opt/opencv/lib/libopencv_core.so.3.0.0 /opt/opencv/lib/libopencv_calib3d.so.3.0.0 /opt/opencv/lib/libopencv_hal.a -ldl -lm -lpthread -lrt /opt/opencv/share/OpenCV/3rdparty/lib/libippicv.a -Wl,-rpath,/usr/local/cuda/lib64:/opt/opencv/lib
#OpenCV link flags all
#/usr/bin/c++ -std=c++0x CMakeFiles/EdgeDetect.dir/EdgeDetect.cpp.o -o EdgeDetect -L/usr/local/cuda/lib64 -rdynamic /opt/opencv/lib/libopencv_videostab.so.3.0.0 /opt/opencv/lib/libopencv_videoio.so.3.0.0 /opt/opencv/lib/libopencv_video.so.3.0.0 /opt/opencv/lib/libopencv_superres.so.3.0.0 /opt/opencv/lib/libopencv_stitching.so.3.0.0 /opt/opencv/lib/libopencv_shape.so.3.0.0 /opt/opencv/lib/libopencv_photo.so.3.0.0 /opt/opencv/lib/libopencv_objdetect.so.3.0.0 /opt/opencv/lib/libopencv_ml.so.3.0.0 /opt/opencv/lib/libopencv_imgproc.so.3.0.0 /opt/opencv/lib/libopencv_imgcodecs.so.3.0.0 /opt/opencv/lib/libopencv_highgui.so.3.0.0 /opt/opencv/lib/libopencv_hal.a /opt/opencv/lib/libopencv_flann.so.3.0.0 /opt/opencv/lib/libopencv_features2d.so.3.0.0 /opt/opencv/lib/libopencv_cudev.so.3.0.0 /opt/opencv/lib/libopencv_cudawarping.so.3.0.0 /opt/opencv/lib/libopencv_cudastereo.so.3.0.0 /opt/opencv/lib/libopencv_cudaoptflow.so.3.0.0 /opt/opencv/lib/libopencv_cudaobjdetect.so.3.0.0 /opt/opencv/lib/libopencv_cudalegacy.so.3.0.0 /opt/opencv/lib/libopencv_cudaimgproc.so.3.0.0 /opt/opencv/lib/libopencv_cudafilters.so.3.0.0 /opt/opencv/lib/libopencv_cudafeatures2d.so.3.0.0 /opt/opencv/lib/libopencv_cudacodec.so.3.0.0 /opt/opencv/lib/libopencv_cudabgsegm.so.3.0.0 /opt/opencv/lib/libopencv_cudaarithm.so.3.0.0 /opt/opencv/lib/libopencv_core.so.3.0.0 /opt/opencv/lib/libopencv_calib3d.so.3.0.0 /opt/opencv/lib/libopencv_hal.a -ldl -lm -lpthread -lrt /opt/opencv/share/OpenCV/3rdparty/lib/libippicv.a -lcudart -lnpp -lcufft -lcudart -lnpp -lcufft -Wl,-rpath,/usr/local/cuda/lib64:/opt/opencv/lib
/***************************************************************************
*cr
*cr (C) Copyright 2010 The Board of Trustees of the
*cr University of Illinois
*cr All Rights Reserved
*cr
***************************************************************************/
/* I/O routines for reading and writing matrices in column-major
* layout
*/
#include<fstream>
#include<iostream>
#include<vector>
char* readFile(const char* fileName)
{
std::fstream f(fileName,std::fstream::in);
if(!f.good())
{
std::cerr<<"Error Reading File!!"<<std::endl;
return NULL;
}
f.seekg(0,std::ios::end);
int length = f.tellg();
f.seekg(0,std::ios::beg);
char* buffer;
if(length>0)
{
buffer = new char[length];
f.read(buffer,length);
buffer[length-1]=0;
}
else
{
buffer = new char;
buffer[0] = 0;
}
f.close();
return buffer;
}
bool readColMajorMatrixFile(const char *fn, int &nr_row, int &nr_col, std::vector<float>&v)
{
std::cerr << "Opening file:"<< fn << std::endl;
std::fstream f(fn, std::fstream::in);
if ( !f.good() ) {
return false;
}
// Read # of rows and cols
f >> nr_row;
f >> nr_col;
float data;
std::cerr << "Matrix dimension: "<<nr_row<<"x"<<nr_col<<std::endl;
while (f.good() ) {
f >> data;
v.push_back(data);
}
v.pop_back(); // remove the duplicated last element
return true;
}
bool writeColMajorMatrixFile(const char *fn, int nr_row, int nr_col, std::vector<float>&v)
{
std::cerr << "Opening file:"<< fn << " for write." << std::endl;
std::fstream f(fn, std::fstream::out);
if ( !f.good() ) {
return false;
}
// Read # of rows and cols
f << nr_row << " "<<nr_col<<" ";
float data;
std::cerr << "Matrix dimension: "<<nr_row<<"x"<<nr_col<<std::endl;
for (int i = 0; i < v.size(); ++i) {
f << v[i] << ' ';
}
f << "\n";
return true;
}
/***************************************************************************
*cr
*cr (C) Copyright 2010 The Board of Trustees of the
*cr University of Illinois
*cr All Rights Reserved
*cr
***************************************************************************/
/*
* Main entry of dense matrix-matrix multiplication kernel
*/
#include "opencv2/opencv.hpp"
#include "opencv2/core/ocl.hpp"
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>
#include <sys/time.h>
#include <malloc.h>
#include <iostream>
#include <cassert>
#include <parboil.h>
#include <visc.h>
#define NUM_RUNS 1
#define DEPTH 3
#define HEIGHT 640
#define WIDTH 480
std::string input_window = "GPU Pipeline - Input Video";
std::string output_window = "GPU Pipeline - Edge Mapping";
#ifdef MIDDLE
#define POSX_IN 640
#define POSY_IN 0
#define POSX_OUT 640
#define POSY_OUT 540
#elif RIGHT
#define POSX_IN 1280
#define POSY_IN 0
#define POSX_OUT 1280
#define POSY_OUT 540
#else // LEFT
#define POSX_IN 0
#define POSY_IN 0
#define POSX_OUT 0
#define POSY_OUT 540
#endif
//#define NUM_FRAMES 20
// Definitions of sizes for edge detection kernels
#define MIN_BR 0.0f
#define MAX_BR 1.0f
// Code needs to be changed for this to vary
#define SZB 3
#define REDUCTION_TILE_SZ 1024
#define _MIN(X,Y) ((X) < (Y) ? (X) : (Y))
#define _MAX(X,Y) ((X) > (Y) ? (X) : (Y))
extern "C" {
struct __attribute__((__packed__)) InStruct {
float* I ;
size_t bytesI;
float* Sx;
size_t bytesSx;
float* Sy;
size_t bytesSy;
float* Gx;
size_t bytesGx;
float* Gy;
size_t bytesGy;
float* G;
size_t bytesG;
long m;
long n;
};
void packData(struct InStruct* args, float* I, size_t bytesI,
float* Sx, size_t bytesSx,
float* Sy, size_t bytesSy,
float* Gx, size_t bytesGx,
float* Gy, size_t bytesGy,
float* G, size_t bytesG,
long m, long n) {
args->I = I;
args->bytesI = bytesI;
args->Sx = Sx;
args->bytesSx = bytesSx;
args->Sy = Sy;
args->bytesSy = bytesSy;
args->Gx = Gx;
args->bytesGx = bytesGx;
args->Gy = Gy;
args->bytesGy = bytesGy;
args->G = G;
args->bytesG = bytesG;
args->m = m;
args->n = n;
}
/*
* Gradient computation using Sobel filters
* Is : input (smoothed image)
* Sx, Sy: Sobel operators
* - Sx = [-1 0 1 ; -2 0 2 ; -1 0 1 ]
* - Sy = [-1 -2 -1 ; 0 0 0 ; 1 2 1 ]
* m, n : dimensions
* G: output, gradient magnitude : sqrt(Gx^2+Gy^2)
* Need 2D grid, a thread per pixel
* No use of separable algorithm because we need to do this in one kernel
* No use of shared memory because
* - we don't handle it in the X86 pass
*/
#define SOBEL_SIZE 3
#define SOBEL_RADIUS (SOBEL_SIZE / 2)
void computeGradient(float *Is, size_t bytesIs,
float *Sx, size_t bytesSx,
float *Sy, size_t bytesSy,
float *Gxs, size_t bytesGxs,
float *Gys, size_t bytesGys,
float *G, size_t bytesG,
long m, long n) {
__visc__hint(visc::DEVICE);
__visc__attributes(3, Is, Sx, Sy, 1, G);
void* thisNode = __visc__getNode();
long gx = __visc__getNodeInstanceID_x(thisNode);
long gy = __visc__getNodeInstanceID_y(thisNode);
long gloc = gx + gy*n;
float Gx = 0;
float Gy = 0;
float gval;
long loadOffset;
if ((gx < n) && (gy < m)) {
for (long i = -SOBEL_RADIUS; i <= SOBEL_RADIUS; i++) {
for (long j = -SOBEL_RADIUS; j <= SOBEL_RADIUS; j++) {
loadOffset = gloc + i*n + j;
if ((gy + i) < 0) // top contour
loadOffset = gx + j;
else if ((gy + i) > m-1 ) // bottom contour
loadOffset = (m-1)*n + gx + j;
else
loadOffset = gloc + i*n + j; // within image vertically
// Adjust so we are within image horizonally
if ((gx + j) < 0) // left contour
loadOffset -= (gx+j);
else if ((gx + j) > n-1 ) // right contour
loadOffset = loadOffset - gx - j + n - 1;
gval = Is[loadOffset];
Gx += gval * Sx[(SOBEL_RADIUS + i)*SOBEL_SIZE + SOBEL_RADIUS + j];
Gy += gval * Sy[(SOBEL_RADIUS + i)*SOBEL_SIZE + SOBEL_RADIUS + j];
}
}
G[gloc] = __visc__sqrt(Gx*Gx + Gy*Gy);
//G[gloc] = Gx*Gx + Gy*Gy;
}
//__visc__return(n);
}
void WrapperComputeGradient(float *Is, size_t bytesIs,
float *Sx, size_t bytesSx,
float *Sy, size_t bytesSy,
float *Gxs, size_t bytesGxs,
float *Gys, size_t bytesGys,
float *G, size_t bytesG,
long m, long n) {
__visc__hint(visc::CPU_TARGET);
__visc__attributes(3, Is, Sx, Sy, 3, Gxs, Gys, G);
void* CGNode = __visc__createNode2D(computeGradient, m, n);
__visc__bindIn(CGNode, 0, 0, 0); // Bind Is
__visc__bindIn(CGNode, 1, 1, 0); // Bind bytesIs
__visc__bindIn(CGNode, 2, 2, 0); // Bind Sx
__visc__bindIn(CGNode, 3, 3, 0); // Bind bytesSx
__visc__bindIn(CGNode, 4, 4, 0); // Bind Sy
__visc__bindIn(CGNode, 5, 5, 0); // Bind bytesSy
__visc__bindIn(CGNode, 6, 6, 0); // Bind Gxs
__visc__bindIn(CGNode, 7, 7, 0); // Bind bytesGxs
__visc__bindIn(CGNode, 8, 8, 0); // Bind Gys
__visc__bindIn(CGNode, 9, 9, 0); // Bind bytesGys
__visc__bindIn(CGNode, 10, 10, 0); // Bind G
__visc__bindIn(CGNode, 11, 11, 0); // Bind bytesG
__visc__bindIn(CGNode, 12, 12, 0); // Bind m
__visc__bindIn(CGNode, 13, 13, 0); // Bind n
//__visc__bindOut(CGNode, 0, 0, 0); // bind output m
}
}
using namespace cv;
void getNextFrame(VideoCapture& VC, Mat& F) {
VC >> F;
/// Convert the image to grayscale if image colored
if(F.channels() == 3)
cvtColor( F, F, CV_BGR2GRAY );
F.convertTo(F, CV_32F, 1.0/255.0);
}
//void showInOut(Mat& Input, Mat& Output) {
//Mat in, out;
//resize(Input, in, Size(512, 768));
//resize(Output, out, Size(512, 768));
//imshow(input_window, in);
//imshow(output_window, out);
//}
int main (int argc, char *argv[]) {
struct pb_Parameters *params;
struct pb_TimerSet timers;
size_t I_sz;
std::cout << "Using OpenCV" << CV_VERSION << "\n";
/* Read command line. Expect 3 inputs: A, B and B^T
in column-major layout*/
params = pb_ReadParameters(&argc, argv);
if ((params->inpFiles[0] == NULL)
|| (params->inpFiles[1] != NULL))
{
fprintf(stderr, "Expecting input image filename\n");
exit(-1);
}
/* Read in data */
std::cout << "Reading video file: " << params->inpFiles[0] << "\n";
VideoCapture cap(params->inpFiles[0]);
if(!cap.isOpened()) {
std::cout << "Could not open video file" << "\n";
return -1;
}
int NUM_FRAMES = cap.get(CV_CAP_PROP_FRAME_COUNT);
std::cout << "Number of frames = " << NUM_FRAMES << "\n";
namedWindow(input_window, CV_WINDOW_AUTOSIZE);
namedWindow(output_window, CV_WINDOW_AUTOSIZE);
moveWindow(input_window, POSX_IN, POSY_IN);
moveWindow(output_window, POSX_OUT, POSY_OUT);
Mat src, Gx, Gy, G;
getNextFrame(cap, src);
std::cout << "Image dimension = " << src.size() << "\n";
if(!src.isContinuous()) {
std::cout << "Expecting contiguous storage of image in memory!\n";
exit(-1);
}
Gx = Mat(src.size[0], src.size[1], CV_32F);
Gy = Mat(src.size[0], src.size[1], CV_32F);
G = Mat(src.size[0], src.size[1], CV_32F);
// All these matrices need to have their data array contiguous in memory
assert(src.isContinuous() && Gx.isContinuous() && Gy.isContinuous() && G.isContinuous());
pb_InitializeTimerSet(&timers);
__visc__init();
//pb_SwitchToTimer( &timers, pb_TimerID_COMPUTE );
// copy A to device memory
I_sz = src.size[0]*src.size[1]*sizeof(float);
//Sx = [-1 0 1 ; -2 0 2 ; -1 0 1 ]
//Sy = [-1 -2 -1 ; 0 0 0 ; 1 2 1 ]
float Sx[] = { -1, 0, 1,
-2, 0, 2,
-1, 0, 1 };
size_t bytesSx = 9*sizeof(float);
float Sy[] = { -1, -2, -1,
0, 0, 0,
1, 2, 1 };
size_t bytesSy = 9*sizeof(float);
// Copy A and B^T into device memory
//pb_SwitchToTimer( &timers, pb_TimerID_COMPUTE );
//showInOut(src, E);
Mat in, out;
//resize(src, in, Size(HEIGHT, WIDTH));
//resize(G, out, Size(HEIGHT, WIDTH));
//imshow(input_window, in);
//imshow(output_window, out);
//waitKey(0);
NUM_FRAMES = 100;
//pb_SwitchToTimer( &timers, visc_TimerID_COMPUTATION );
struct InStruct* args = (struct InStruct*)malloc (sizeof(InStruct));
cap = VideoCapture(params->inpFiles[0]);
getNextFrame(cap, src);
packData(args, (float*)src.data, I_sz,
Sx, bytesSx,
Sy, bytesSy,
(float*)Gx.data, I_sz,
(float*)Gy.data, I_sz,
(float*)G.data, I_sz,
src.size[0], src.size[1]
);
// Check if the total elements is a multiple of block size
int block_x = 256;
assert(src.size[0]*src.size[1] % block_x == 0);
llvm_visc_track_mem(src.data, I_sz);
llvm_visc_track_mem(Sx, bytesSx);
llvm_visc_track_mem(Sy, bytesSy);
llvm_visc_track_mem(Gx.data, I_sz);
llvm_visc_track_mem(Gy.data, I_sz);
llvm_visc_track_mem(G.data, I_sz);
//imshow(input_window, src);
//imshow(output_window, E);
//waitKey(0);
args->I = (float*) src.data;
pb_SwitchToTimer( &timers, visc_TimerID_COMPUTATION );
for(unsigned j=0; j<NUM_FRAMES; j++) {
//std::cout << "Run: " << j << "\n";
void* DFG = __visc__launch(0, WrapperComputeGradient, (void*)args);
__visc__wait(DFG);
}
pb_SwitchToTimer(&timers, pb_TimerID_NONE);
llvm_visc_request_mem(G.data, I_sz);
//resize(src, in, Size(HEIGHT, WIDTH));
//resize(G, out, Size(HEIGHT, WIDTH));
//imshow(output_window, out);
//imshow(input_window, in);
//waitKey(0);
llvm_visc_untrack_mem(src.data);
llvm_visc_untrack_mem(Sx);
llvm_visc_untrack_mem(Sy);
llvm_visc_untrack_mem(Gx.data);
llvm_visc_untrack_mem(Gy.data);
llvm_visc_untrack_mem(G.data);
pb_PrintTimerSet(&timers);
__visc__cleanup();
pb_FreeParameters(params);
return 0;
}
......@@ -6,7 +6,8 @@ VISC_OBJS=main.visc.ll
APP_CUDALDFLAGS=-lm -lstdc++
APP_CFLAGS+=-ffast-math -O3 -I/opt/opencv/include
APP_CXXFLAGS+=-ffast-math -O3 -I/opt/opencv/include
APP_LDFLAGS=-L/usr/local/cuda/lib64 -rdynamic /opt/opencv/lib/libopencv_videostab.so.3.0.0 /opt/opencv/lib/libopencv_videoio.so.3.0.0 /opt/opencv/lib/libopencv_video.so.3.0.0 /opt/opencv/lib/libopencv_superres.so.3.0.0 /opt/opencv/lib/libopencv_stitching.so.3.0.0 /opt/opencv/lib/libopencv_shape.so.3.0.0 /opt/opencv/lib/libopencv_photo.so.3.0.0 /opt/opencv/lib/libopencv_objdetect.so.3.0.0 /opt/opencv/lib/libopencv_ml.so.3.0.0 /opt/opencv/lib/libopencv_imgproc.so.3.0.0 /opt/opencv/lib/libopencv_imgcodecs.so.3.0.0 /opt/opencv/lib/libopencv_highgui.so.3.0.0 /opt/opencv/lib/libopencv_hal.a /opt/opencv/lib/libopencv_flann.so.3.0.0 /opt/opencv/lib/libopencv_features2d.so.3.0.0 /opt/opencv/lib/libopencv_core.so.3.0.0 /opt/opencv/lib/libopencv_calib3d.so.3.0.0 /opt/opencv/lib/libopencv_hal.a -ldl -lm -lpthread -lrt /opt/opencv/share/OpenCV/3rdparty/lib/libippicv.a -Wl,-rpath,/usr/local/cuda/lib64:/opt/opencv/lib
APP_LDFLAGS=`pkg-config ${OpenCV_DIR}/lib/pkgconfig/opencv.pc --libs`
#APP_LDFLAGS=-L/usr/local/cuda/lib64 -rdynamic /opt/opencv/lib/libopencv_videostab.so.3.0.0 /opt/opencv/lib/libopencv_videoio.so.3.0.0 /opt/opencv/lib/libopencv_video.so.3.0.0 /opt/opencv/lib/libopencv_superres.so.3.0.0 /opt/opencv/lib/libopencv_stitching.so.3.0.0 /opt/opencv/lib/libopencv_shape.so.3.0.0 /opt/opencv/lib/libopencv_photo.so.3.0.0 /opt/opencv/lib/libopencv_objdetect.so.3.0.0 /opt/opencv/lib/libopencv_ml.so.3.0.0 /opt/opencv/lib/libopencv_imgproc.so.3.0.0 /opt/opencv/lib/libopencv_imgcodecs.so.3.0.0 /opt/opencv/lib/libopencv_highgui.so.3.0.0 /opt/opencv/lib/libopencv_hal.a /opt/opencv/lib/libopencv_flann.so.3.0.0 /opt/opencv/lib/libopencv_features2d.so.3.0.0 /opt/opencv/lib/libopencv_core.so.3.0.0 /opt/opencv/lib/libopencv_calib3d.so.3.0.0 /opt/opencv/lib/libopencv_hal.a -ldl -lm -lpthread -lrt /opt/opencv/share/OpenCV/3rdparty/lib/libippicv.a -Wl,-rpath,/usr/local/cuda/lib64:/opt/opencv/lib
#OpenCV link flags all
#/usr/bin/c++ -std=c++0x CMakeFiles/EdgeDetect.dir/EdgeDetect.cpp.o -o EdgeDetect -L/usr/local/cuda/lib64 -rdynamic /opt/opencv/lib/libopencv_videostab.so.3.0.0 /opt/opencv/lib/libopencv_videoio.so.3.0.0 /opt/opencv/lib/libopencv_video.so.3.0.0 /opt/opencv/lib/libopencv_superres.so.3.0.0 /opt/opencv/lib/libopencv_stitching.so.3.0.0 /opt/opencv/lib/libopencv_shape.so.3.0.0 /opt/opencv/lib/libopencv_photo.so.3.0.0 /opt/opencv/lib/libopencv_objdetect.so.3.0.0 /opt/opencv/lib/libopencv_ml.so.3.0.0 /opt/opencv/lib/libopencv_imgproc.so.3.0.0 /opt/opencv/lib/libopencv_imgcodecs.so.3.0.0 /opt/opencv/lib/libopencv_highgui.so.3.0.0 /opt/opencv/lib/libopencv_hal.a /opt/opencv/lib/libopencv_flann.so.3.0.0 /opt/opencv/lib/libopencv_features2d.so.3.0.0 /opt/opencv/lib/libopencv_cudev.so.3.0.0 /opt/opencv/lib/libopencv_cudawarping.so.3.0.0 /opt/opencv/lib/libopencv_cudastereo.so.3.0.0 /opt/opencv/lib/libopencv_cudaoptflow.so.3.0.0 /opt/opencv/lib/libopencv_cudaobjdetect.so.3.0.0 /opt/opencv/lib/libopencv_cudalegacy.so.3.0.0 /opt/opencv/lib/libopencv_cudaimgproc.so.3.0.0 /opt/opencv/lib/libopencv_cudafilters.so.3.0.0 /opt/opencv/lib/libopencv_cudafeatures2d.so.3.0.0 /opt/opencv/lib/libopencv_cudacodec.so.3.0.0 /opt/opencv/lib/libopencv_cudabgsegm.so.3.0.0 /opt/opencv/lib/libopencv_cudaarithm.so.3.0.0 /opt/opencv/lib/libopencv_core.so.3.0.0 /opt/opencv/lib/libopencv_calib3d.so.3.0.0 /opt/opencv/lib/libopencv_hal.a -ldl -lm -lpthread -lrt /opt/opencv/share/OpenCV/3rdparty/lib/libippicv.a -lcudart -lnpp -lcufft -lcudart -lnpp -lcufft -Wl,-rpath,/usr/local/cuda/lib64:/opt/opencv/lib
......@@ -127,7 +127,7 @@ void dilate(float* Is, size_t bytesIs,
//if(gx == 0 && gy == 0)
//std::cout << "Entered laplacian\n";
long i, j;
int i, j;
if ((gx < n) && (gy < m)) {
// Data copy for dilation filter
......@@ -205,7 +205,7 @@ void erode( float* Is, size_t bytesIs,
//if(gx == 0 && gy == 0)
//std::cout << "Entered laplacian\n";
long i, j;
int i, j;
if ((gx < n) && (gy < m)) {
// Data copy for dilation filter
......@@ -501,7 +501,6 @@ void getNextFrame(VideoCapture& VC, Mat& F) {
int main (int argc, char *argv[]) {
struct pb_Parameters *params;
struct pb_TimerSet timers;
......
......@@ -6,7 +6,8 @@ VISC_OBJS=main.visc.ll
APP_CUDALDFLAGS=-lm -lstdc++
APP_CFLAGS+=-ffast-math -O3 -I/opt/opencv/include
APP_CXXFLAGS+=-ffast-math -O3 -I/opt/opencv/include
APP_LDFLAGS=-L/usr/local/cuda/lib64 -rdynamic /opt/opencv/lib/libopencv_videostab.so.3.0.0 /opt/opencv/lib/libopencv_videoio.so.3.0.0 /opt/opencv/lib/libopencv_video.so.3.0.0 /opt/opencv/lib/libopencv_superres.so.3.0.0 /opt/opencv/lib/libopencv_stitching.so.3.0.0 /opt/opencv/lib/libopencv_shape.so.3.0.0 /opt/opencv/lib/libopencv_photo.so.3.0.0 /opt/opencv/lib/libopencv_objdetect.so.3.0.0 /opt/opencv/lib/libopencv_ml.so.3.0.0 /opt/opencv/lib/libopencv_imgproc.so.3.0.0 /opt/opencv/lib/libopencv_imgcodecs.so.3.0.0 /opt/opencv/lib/libopencv_highgui.so.3.0.0 /opt/opencv/lib/libopencv_hal.a /opt/opencv/lib/libopencv_flann.so.3.0.0 /opt/opencv/lib/libopencv_features2d.so.3.0.0 /opt/opencv/lib/libopencv_core.so.3.0.0 /opt/opencv/lib/libopencv_calib3d.so.3.0.0 /opt/opencv/lib/libopencv_hal.a -ldl -lm -lpthread -lrt /opt/opencv/share/OpenCV/3rdparty/lib/libippicv.a -Wl,-rpath,/usr/local/cuda/lib64:/opt/opencv/lib
APP_LDFLAGS=`pkg-config ${OpenCV_DIR}/lib/pkgconfig/opencv.pc --libs`
#APP_LDFLAGS=-L/usr/local/cuda/lib64 -rdynamic /opt/opencv/lib/libopencv_videostab.so.3.0.0 /opt/opencv/lib/libopencv_videoio.so.3.0.0 /opt/opencv/lib/libopencv_video.so.3.0.0 /opt/opencv/lib/libopencv_superres.so.3.0.0 /opt/opencv/lib/libopencv_stitching.so.3.0.0 /opt/opencv/lib/libopencv_shape.so.3.0.0 /opt/opencv/lib/libopencv_photo.so.3.0.0 /opt/opencv/lib/libopencv_objdetect.so.3.0.0 /opt/opencv/lib/libopencv_ml.so.3.0.0 /opt/opencv/lib/libopencv_imgproc.so.3.0.0 /opt/opencv/lib/libopencv_imgcodecs.so.3.0.0 /opt/opencv/lib/libopencv_highgui.so.3.0.0 /opt/opencv/lib/libopencv_hal.a /opt/opencv/lib/libopencv_flann.so.3.0.0 /opt/opencv/lib/libopencv_features2d.so.3.0.0 /opt/opencv/lib/libopencv_core.so.3.0.0 /opt/opencv/lib/libopencv_calib3d.so.3.0.0 /opt/opencv/lib/libopencv_hal.a -ldl -lm -lpthread -lrt /opt/opencv/share/OpenCV/3rdparty/lib/libippicv.a -Wl,-rpath,/usr/local/cuda/lib64:/opt/opencv/lib
#OpenCV link flags all
#/usr/bin/c++ -std=c++0x CMakeFiles/EdgeDetect.dir/EdgeDetect.cpp.o -o EdgeDetect -L/usr/local/cuda/lib64 -rdynamic /opt/opencv/lib/libopencv_videostab.so.3.0.0 /opt/opencv/lib/libopencv_videoio.so.3.0.0 /opt/opencv/lib/libopencv_video.so.3.0.0 /opt/opencv/lib/libopencv_superres.so.3.0.0 /opt/opencv/lib/libopencv_stitching.so.3.0.0 /opt/opencv/lib/libopencv_shape.so.3.0.0 /opt/opencv/lib/libopencv_photo.so.3.0.0 /opt/opencv/lib/libopencv_objdetect.so.3.0.0 /opt/opencv/lib/libopencv_ml.so.3.0.0 /opt/opencv/lib/libopencv_imgproc.so.3.0.0 /opt/opencv/lib/libopencv_imgcodecs.so.3.0.0 /opt/opencv/lib/libopencv_highgui.so.3.0.0 /opt/opencv/lib/libopencv_hal.a /opt/opencv/lib/libopencv_flann.so.3.0.0 /opt/opencv/lib/libopencv_features2d.so.3.0.0 /opt/opencv/lib/libopencv_cudev.so.3.0.0 /opt/opencv/lib/libopencv_cudawarping.so.3.0.0 /opt/opencv/lib/libopencv_cudastereo.so.3.0.0 /opt/opencv/lib/libopencv_cudaoptflow.so.3.0.0 /opt/opencv/lib/libopencv_cudaobjdetect.so.3.0.0 /opt/opencv/lib/libopencv_cudalegacy.so.3.0.0 /opt/opencv/lib/libopencv_cudaimgproc.so.3.0.0 /opt/opencv/lib/libopencv_cudafilters.so.3.0.0 /opt/opencv/lib/libopencv_cudafeatures2d.so.3.0.0 /opt/opencv/lib/libopencv_cudacodec.so.3.0.0 /opt/opencv/lib/libopencv_cudabgsegm.so.3.0.0 /opt/opencv/lib/libopencv_cudaarithm.so.3.0.0 /opt/opencv/lib/libopencv_core.so.3.0.0 /opt/opencv/lib/libopencv_calib3d.so.3.0.0 /opt/opencv/lib/libopencv_hal.a -ldl -lm -lpthread -lrt /opt/opencv/share/OpenCV/3rdparty/lib/libippicv.a -lcudart -lnpp -lcufft -lcudart -lnpp -lcufft -Wl,-rpath,/usr/local/cuda/lib64:/opt/opencv/lib
......@@ -137,7 +137,7 @@ void laplacianEstimate(float *Is, size_t bytesIs,
//if(gx == 0 && gy == 0)
//std::cout << "Entered laplacian\n";
long i, j;
int i, j;
if ((gx < n) && (gy < m)) {
// Data copy for dilation filter
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment