Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- [----------] 26 tests from NetTest/1, where TypeParam = caffe::CPUDevice<double>
- [ RUN ] NetTest/1.TestGetBlob
- [ OK ] NetTest/1.TestGetBlob (0 ms)
- [ RUN ] NetTest/1.TestBottomNeedBackwardForce
- [ OK ] NetTest/1.TestBottomNeedBackwardForce (1 ms)
- [ RUN ] NetTest/1.TestReshape
- Build Status = -2 ( Err = -11 )
- Log: stringInput.cl:111:49: error: use of type 'double' requires cl_khr_fp64 extension to be enabled
- stringInput.cl:20:15: note: expanded from macro 'Dtype'
- stringInput.cl:111:70: error: use of type 'double' requires cl_khr_fp64 extension to be enabled
- stringInput.cl:20:15: note: expanded from macro 'Dtype'
- stringInput.cl:176:49: error: use of type 'double' requires cl_khr_fp64 extension to be enabled
- stringInput.cl:20:15: note: expanded from macro 'Dtype'
- stringInput.cl:176:89: error: use of type 'double' requires cl_khr_fp64 extension to be enabled
- stringInput.cl:20:15: note: expanded from macro 'Dtype'
- stringInput.cl:187:16: error: use of type 'double' requires cl_khr_fp64 extension to be enabled
- stringInput.cl:20:15: note: expanded from macro 'Dtype'
- stringInput.cl:188:10: error: use of type 'double' requires cl_khr_fp64 extension to be enabled
- stringInput.cl:20:15: note: expanded from macro 'Dtype'
- stringInput.cl:190:1: error: use of type 'double' requires cl_khr_fp64 extension to be enabled
- stringInput.cl:20:15: note: expanded from macro 'Dtype'
- stringInput.cl:209:22: error: use of type 'double' requires cl_khr_fp64 extension to be enabled
- stringInput.cl:20:15: note: expanded from macro 'Dtype'
- stringInput.cl:211:48: error: use of type 'double' requires cl_khr_fp64 extension to be enabled
- stringInput.cl:20:15: note: expanded from macro 'Dtype'
- stringInput.cl:211:88: error: use of type 'double' requires cl_khr_fp64 extension to be enabled
- stringInput.cl:20:15: note: expanded from macro 'Dtype'
- stringInput.cl:222:16: error: use of type 'double' requires cl_khr_fp64 extension to be enabled
- stringInput.cl:20:15: note: expanded from macro 'Dtype'
- stringInput.cl:223:10: error: use of type 'double' requires cl_khr_fp64 extension to be enabled
- stringInput.cl:20:15: note: expanded from macro 'Dtype'
- stringInput.cl:225:1: error: use of type 'double' requires cl_khr_fp64 extension to be enabled
- stringInput.cl:20:15: note: expanded from macro 'Dtype'
- stringInput.cl:244:22: error: use of type 'double' requires cl_khr_fp64 extension to be enabled
- stringInput.cl:20:15: note: expanded from macro 'Dtype'
- stringInput.cl:306:44: error: use of type 'double' requires cl_khr_fp64 extension to be enabled
- stringInput.cl:20:15: note: expanded from macro 'Dtype'
- stringInput.cl:306:81: error: use of type 'double' requires cl_khr_fp64 extension to be enabled
- stringInput.cl:20:15: note: expanded from macro 'Dtype'
- stringInput.cl:316:10: error: use of type 'double' requires cl_khr_fp64 extension to be enabled
- stringInput.cl:20:15: note: expanded from macro 'Dtype'
- stringInput.cl:317:16: error: use of type 'double' requires cl_khr_fp64 extension to be enabled
- stringInput.cl:20:15: note: expanded from macro 'Dtype'
- stringInput.cl:333:1: error: use of type 'double' requires cl_khr_fp64 extension to be enabled
- stringInput.cl:20:15: note: expanded from macro 'Dtype'
- stringInput.cl:333:18: warning: double precision constant requires cl_khr_fp64, casting to single precision
- Sources: #if defined(cl_khr_fp64)
- #pragma OPENCL EXTENSION cl_khr_fp64 : enable
- #define DOUBLE_SUPPORT_AVAILABLE
- #elif defined(cl_amd_fp64)
- #pragma OPENCL EXTENSION cl_amd_fp64 : enable
- #define DOUBLE_SUPPORT_AVAILABLE
- #endif
- #if defined(cl_khr_int32_base_atomics)
- #pragma OPENCL EXTENSION cl_khr_int32_base_atomics : enable
- #define ATOMICS_32_AVAILABLE
- #endif
- #if defined(cl_khr_global_int32_base_atomics)
- #pragma OPENCL EXTENSION cl_khr_global_int32_base_atomics : enable
- #define ATOMICS_32_AVAILABLE
- #endif
- #if defined(cl_khr_int64_base_atomics)
- #pragma OPENCL EXTENSION cl_khr_int64_base_atomics : enable
- #define ATOMICS_64_AVAILABLE
- #endif
- #define Dtype double
- #define Dtype1 double
- #define Dtype2 double2
- #define Dtype4 double4
- #define Dtype8 double8
- #define Dtype16 double16
- #define VEC_1_0(X) X
- #define VEC_2_0(X) X.x
- #define VEC_2_1(X) X.y
- #define VEC_4_0(X) X.x
- #define VEC_4_1(X) X.y
- #define VEC_4_2(X) X.z
- #define VEC_4_3(X) X.w
- #define VEC_8_0(X) X.s0
- #define VEC_8_1(X) X.s1
- #define VEC_8_2(X) X.s2
- #define VEC_8_3(X) X.s3
- #define VEC_8_4(X) X.s4
- #define VEC_8_5(X) X.s5
- #define VEC_8_6(X) X.s6
- #define VEC_8_7(X) X.s7
- #define VEC_16_0(X) X.s0
- #define VEC_16_1(X) X.s1
- #define VEC_16_2(X) X.s2
- #define VEC_16_3(X) X.s3
- #define VEC_16_4(X) X.s4
- #define VEC_16_5(X) X.s5
- #define VEC_16_6(X) X.s6
- #define VEC_16_7(X) X.s7
- #define VEC_16_8(X) X.s8
- #define VEC_16_9(X) X.s9
- #define VEC_16_10(X) X.sA
- #define VEC_16_11(X) X.sB
- #define VEC_16_12(X) X.sC
- #define VEC_16_13(X) X.sD
- #define VEC_16_14(X) X.sE
- #define VEC_16_15(X) X.sF
- #define int_tp int
- #define uint_tp unsigned int
- #define int_tpc int
- #define uint_tpc unsigned int
- #ifdef ATOMICS_64_AVAILABLE
- inline void atomicAdd(volatile __global Dtype* source, const Dtype operand) {
- union {
- unsigned long intVal;
- Dtype floatVal;
- } next, expected, current;
- current.floatVal = *source;
- do {
- expected.floatVal = current.floatVal;
- next.floatVal = expected.floatVal + operand;
- current.intVal = atom_cmpxchg((volatile __global unsigned long *)source, expected.intVal, next.intVal);
- } while (current.intVal != expected.intVal);
- }
- inline void atomicSub(volatile __global Dtype* source, const Dtype operand) {
- union {
- unsigned long intVal;
- Dtype floatVal;
- } next, expected, current;
- current.floatVal = *source;
- do {
- expected.floatVal = current.floatVal;
- next.floatVal = expected.floatVal - operand;
- current.intVal = atom_cmpxchg((volatile __global unsigned long *)source, expected.intVal, next.intVal);
- } while (current.intVal != expected.intVal);
- }
- inline void atomicMul(volatile __global Dtype* source, const Dtype operand) {
- union {
- unsigned long intVal;
- Dtype floatVal;
- } next, expected, current;
- current.floatVal = *source;
- do {
- expected.floatVal = current.floatVal;
- next.floatVal = expected.floatVal * operand;
- current.intVal = atom_cmpxchg((volatile __global unsigned long *)source, expected.intVal, next.intVal);
- } while (current.intVal != expected.intVal);
- }
- inline void atomicDiv(volatile __global Dtype* source, const Dtype operand) {
- union {
- unsigned long intVal;
- Dtype floatVal;
- } next, expected, current;
- current.floatVal = *source;
- do {
- expected.floatVal = current.floatVal;
- next.floatVal = expected.floatVal / operand;
- current.intVal = atom_cmpxchg((volatile __global unsigned long *)source, expected.intVal, next.intVal);
- } while (current.intVal != expected.intVal);
- }
- #endif
- __kernel void fill_memory(const int_tp n, const Dtype alpha,__global Dtype* x, const int_tp offx) {
- for (int_tp index = get_global_id(0); index < n; index += get_global_size(0)) {
- x[index + offx] = alpha;
- }
- }
- #ifdef v_nax
- #undef v_nax
- #endif
- #define v_nax 2
- #ifdef v_k_0
- #undef v_k_0
- #endif
- #define v_k_0 2
- #ifdef v_k_1
- #undef v_k_1
- #endif
- #define v_k_1 2
- #ifdef v_p_0
- #undef v_p_0
- #endif
- #define v_p_0 0
- #ifdef v_p_1
- #undef v_p_1
- #endif
- #define v_p_1 0
- #ifdef v_s_0
- #undef v_s_0
- #endif
- #define v_s_0 2
- #ifdef v_s_1
- #undef v_s_1
- #endif
- #define v_s_1 2
- #ifdef v_d_0
- #undef v_d_0
- #endif
- #define v_d_0 1
- #ifdef v_d_1
- #undef v_d_1
- #endif
- #define v_d_1 1
- #ifdef v_imsi_0
- #undef v_imsi_0
- #endif
- #define v_imsi_0 49
- #ifdef v_imso_0
- #undef v_imso_0
- #endif
- #define v_imso_0 25
- #ifdef v_imsi_1
- #undef v_imsi_1
- #endif
- #define v_imsi_1 49
- #ifdef v_imso_1
- #undef v_imso_1
- #endif
- #define v_imso_1 25
- #ifdef v_imsi
- #undef v_imsi
- #endif
- #define v_imsi 2401
- #ifdef v_imso
- #undef v_imso
- #endif
- #define v_imso 625
- __kernel void pool_forward_train(__global const Dtype* __restrict bottom_data, __global Dtype* __restrict top_data, __global int_tp* __restrict mask, int_tp channels, int_tp batch_size) {
- int_tp out_idx = get_global_id(0);
- if (get_global_id(1) >= channels * batch_size) {return;}
- int_tp idx_0 = get_global_id(0);
- int_tp idx_1 = (idx_0 % v_imso_1);
- idx_1 = idx_1 * v_s_1 - v_p_1;
- idx_0 /= v_imso_1;
- if (idx_0 >= v_imso_0) {return;}
- idx_0 = idx_0 * v_s_0 - v_p_0;
- int_tp in_idx = idx_0;
- in_idx = in_idx * v_imsi_1 + idx_1;
- __global const Dtype* in_ptr = bottom_data + get_global_id(1) * v_imsi + in_idx;
- __global Dtype* out_ptr = top_data + get_global_id(1) * v_imso;
- __global int_tp* mask_ptr = mask + get_global_id(1) * v_imso;
- Dtype val = -FLT_MAX;
- int_tp maxidx = -1;
- if (in_ptr[0] > val) {
- maxidx = in_idx + 0;
- val = in_ptr[0];
- }
- if (idx_1 < v_imsi_1 - 1 && in_ptr[1] > val) {
- maxidx = in_idx + 1;
- val = in_ptr[1];
- }
- if (idx_0 < v_imsi_0 - 1 && in_ptr[49] > val) {
- maxidx = in_idx + 49;
- val = in_ptr[49];
- }
- if (idx_0 < v_imsi_0 - 1 && idx_1 < v_imsi_1 - 1 && in_ptr[50] > val) {
- maxidx = in_idx + 50;
- val = in_ptr[50];
- }
- out_ptr[out_idx] = val;
- mask_ptr[out_idx] = (Dtype)maxidx;
- }
- __kernel void pool_forward_test(__global const Dtype* __restrict bottom_data, __global Dtype* __restrict top_data, __global int_tp* __restrict mask, int_tp channels, int_tp batch_size) {
- int_tp out_idx = get_global_id(0);
- if (get_global_id(1) >= channels * batch_size) {return;}
- int_tp idx_0 = get_global_id(0);
- int_tp idx_1 = (idx_0 % v_imso_1);
- idx_1 = idx_1 * v_s_1 - v_p_1;
- idx_0 /= v_imso_1;
- if (idx_0 >= v_imso_0) {return;}
- idx_0 = idx_0 * v_s_0 - v_p_0;
- int_tp in_idx = idx_0;
- in_idx = in_idx * v_imsi_1 + idx_1;
- __global const Dtype* in_ptr = bottom_data + get_global_id(1) * v_imsi + in_idx;
- __global Dtype* out_ptr = top_data + get_global_id(1) * v_imso;
- __global int_tp* mask_ptr = mask + get_global_id(1) * v_imso;
- Dtype val = -FLT_MAX;
- int_tp maxidx = -1;
- if (in_ptr[0] > val) {
- maxidx = in_idx + 0;
- val = in_ptr[0];
- }
- if (idx_1 < v_imsi_1 - 1 && in_ptr[1] > val) {
- maxidx = in_idx + 1;
- val = in_ptr[1];
- }
- if (idx_0 < v_imsi_0 - 1 && in_ptr[49] > val) {
- maxidx = in_idx + 49;
- val = in_ptr[49];
- }
- if (idx_0 < v_imsi_0 - 1 && idx_1 < v_imsi_1 - 1 && in_ptr[50] > val) {
- maxidx = in_idx + 50;
- val = in_ptr[50];
- }
- out_ptr[out_idx] = val;
- mask_ptr[out_idx] = (Dtype)maxidx;
- }
- #ifdef v_nax
- #undef v_nax
- #endif
- #define v_nax 2
- #ifdef v_k_0
- #undef v_k_0
- #endif
- #define v_k_0 2
- #ifdef v_k_1
- #undef v_k_1
- #endif
- #define v_k_1 2
- #ifdef v_p_0
- #undef v_p_0
- #endif
- #define v_p_0 0
- #ifdef v_p_1
- #undef v_p_1
- #endif
- #define v_p_1 0
- #ifdef v_s_0
- #undef v_s_0
- #endif
- #define v_s_0 2
- #ifdef v_s_1
- #undef v_s_1
- #endif
- #define v_s_1 2
- #ifdef v_d_0
- #undef v_d_0
- #endif
- #define v_d_0 1
- #ifdef v_d_1
- #undef v_d_1
- #endif
- #define v_d_1 1
- #ifdef v_imsi_0
- #undef v_imsi_0
- #endif
- #define v_imsi_0 49
- #ifdef v_imso_0
- #undef v_imso_0
- #endif
- #define v_imso_0 25
- #ifdef v_imsi_1
- #undef v_imsi_1
- #endif
- #define v_imsi_1 49
- #ifdef v_imso_1
- #undef v_imso_1
- #endif
- #define v_imso_1 25
- #ifdef v_imsi
- #undef v_imsi
- #endif
- #define v_imsi 2401
- #ifdef v_imso
- #undef v_imso
- #endif
- #define v_imso 625
- __kernel void pool_backward(__global const Dtype* __restrict top_diff, __global Dtype* __restrict bottom_diff, __global const int_tp* __restrict mask, int_tp channels, int_tp batch_size) {
- int_tp d_start[2];
- int_tp d_end[2];
- int_tp d_iter[2];
- int_tp out_idx = get_global_id(0);
- int_tp idx_0 = get_global_id(0);
- if (get_global_id(1) >= channels * batch_size) {return;}
- int_tp idx_1 = (idx_0 % v_imsi_1);
- idx_0 /= v_imsi_1;
- if (idx_0 >= v_imsi_0) {return;}
- __global Dtype* out_ptr = bottom_diff + get_global_id(1) * v_imsi + out_idx;
- __global const Dtype* in_ptr = top_diff + get_global_id(1) * v_imso;
- __global const int_tp* mask_ptr = mask + get_global_id(1) * v_imso;
- d_start[0] = (idx_0 + v_p_0 < ((v_k_0 - 1) * v_d_0 + 1)) ? 0 : (idx_0 + v_p_0 - ((v_k_0 - 1) * v_d_0 + 1)) / v_s_0 + 1;
- d_end[0] = min(v_imso_0 - 1, (idx_0 + v_p_0) / v_s_0);
- d_iter[0] = d_start[0];
- if (d_start[0] > d_end[0]) {
- out_ptr[0] = 0;
- return;
- }
- d_start[1] = (idx_1 + v_p_1 < ((v_k_1 - 1) * v_d_1 + 1)) ? 0 : (idx_1 + v_p_1 - ((v_k_1 - 1) * v_d_1 + 1)) / v_s_1 + 1;
- d_end[1] = min(v_imso_1 - 1, (idx_1 + v_p_1) / v_s_1);
- d_iter[1] = d_start[1];
- if (d_start[1] > d_end[1]) {
- out_ptr[0] = 0;
- return;
- }
- Dtype gradient = 0.0;
- bool incremented;
- do {
- int_tp offset = 0;
- offset += d_iter[0];
- offset *= v_imso_1;
- offset += d_iter[1];
- if ((int_tp)mask_ptr[offset] == out_idx) {
- gradient += in_ptr[offset];
- }
- incremented = false;
- for (int_tp i = v_nax - 1; i >= 0; --i) {
- if (d_iter[i] >= d_end[i]) {
- d_iter[i] = d_start[i];
- } else {
- ++d_iter[i];
- incremented = true;
- break;
- }}} while (incremented);
- out_ptr[0] = gradient;
- }
- unknown file: Failure
- C++ exception with description "ViennaCL: FATAL ERROR: CL_INVALID_PROGRAM_EXECUTABLE.
- If you think that this is a bug in ViennaCL, please report it at viennacl-support@lists.sourceforge.net and supply at least the following information:
- * Operating System
- * Which OpenCL implementation (AMD, NVIDIA, etc.)
- * ViennaCL version
- Many thanks in advance!" thrown in the test body.
- [ FAILED ] NetTest/1.TestReshape, where TypeParam = caffe::CPUDevice<double> (159 ms)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement