Loading array.cu +1 −1 Original line number Diff line number Diff line Loading @@ -70,7 +70,7 @@ int myCreateCUDAArray(uint8_t *tf_ptr){ // check if the GPU did the same as the CPU bool workedCorrectly = true; printf("CUDA kernel incrementing test:\n"); printf("CUDA kernel simple incrementing test:\n"); for(int i=0;i<numberOfNumbers;i++) { if (numbers1[i] != numbers2[i]) Loading main.cpp +41 −37 Original line number Diff line number Diff line Loading @@ -32,27 +32,19 @@ using tensorflow::Status; using tensorflow::Tensor; Status loadGraph(unique_ptr<tensorflow::Session> *session){ Status createGraphAndSession(unique_ptr<tensorflow::Session> *session){ tensorflow::GraphDef graph_def; using namespace tensorflow; using namespace tensorflow::ops; auto scope = Scope::NewRootScope(); // TF likes power of 2 tensorflow::TensorShape shape = tensorflow::TensorShape({256}); auto a = Placeholder(scope.WithOpName("array_tensor_in"), DT_UINT8, Placeholder::Shape(shape)); //auto c0 = Const(scope,{256}); //auto c1 = Const(scope, (uint8_t)1, {}); //auto c2 = Fill(scope, c0, c1); auto b = Identity(scope.WithOpName("array_tensor_out"), a); //auto b = Identity(scope.WithOpName("array_tensor_out"), c2); //auto b = Add(scope.WithOpName("array_tensor_out"),c2,a); auto a = ops::Placeholder(scope.WithOpName("array_tensor_in"), DT_UINT8, ops::Placeholder::Shape(shape)); auto b = ops::Identity(scope.WithOpName("array_tensor_out"), a); TF_CHECK_OK(scope.ToGraphDef(&graph_def)); Loading @@ -65,7 +57,7 @@ Status loadGraph(unique_ptr<tensorflow::Session> *session){ session->reset(tensorflow::NewSession(session_options)); Status session_create_status = (*session)->Create(graph_def); if (!session_create_status.ok()){ LOG(ERROR) << "loadGraph(): ERROR" << session_create_status; LOG(ERROR) << "createGraphAndSession(): ERROR" << session_create_status; } return Status::OK(); } Loading Loading @@ -109,7 +101,7 @@ int main(int, char**) { LOG(INFO) << "Tensorflow built with CUDA, keep running" << endl; } // check and init CUDA drivers and libs // check and init CUDA drivers and libs? void *hHandleDriver = nullptr; CUresult cuda_res = cuInit(0, __CUDA_API_VERSION, hHandleDriver); if (cuda_res != CUDA_SUCCESS) Loading @@ -123,14 +115,17 @@ int main(int, char**) { } LOG(INFO) << "\033[1;32m" << "CUDA init: ok" << "\033[0m"; // construct graph and create TF session std::unique_ptr<tensorflow::Session> session; createGraphAndSession(&session); loadGraph(&session); // do the opts and allocate tensor in GPU // NOTE: must match with graph names const string inputLayer = "array_tensor_in:0"; const string outputLayer = "array_tensor_out:0"; // do the opts CallableOptions opts; Session::CallableHandle feed_gpu_fetch_cpu; Loading @@ -150,7 +145,6 @@ int main(int, char**) { // TF likes power of 2 and 256s tensorflow::TensorShape shape = tensorflow::TensorShape({256}); // allocate tensor on the GPU tensorflow::PlatformGpuId platform_gpu_id(0); tensorflow::GPUMemAllocator *sub_allocator = Loading @@ -165,23 +159,32 @@ int main(int, char**) { LOG(INFO) << "\033[1;37m" << "Is CUDA Tensor? " << (IsCUDATensor(inputTensor)?"\033[1;32myes":"\033[1;31mno") << "\033[0m"; // pointer to tensor data tensorflow::uint8 *p = inputTensor.flat<tensorflow::uint8>().data(); // run and check vector<Tensor> outputs; for(int i=0;i<2;i++){ cout << endl; if (i==0){ LOG(INFO) << "\033[1;32m" << "RunCallable()... No feeding (zeroes)" << "\033[0m"; } if (i==1){ LOG(INFO) << "\033[1;32m" << "RunCallable()... Feeding from CUDA kernel"<< "\033[0m"; // CUDA kernel call // NOTE: do not allocate memory for p inside the kernel myCreateCUDAArray(p); vector<Tensor> outputs; LOG(INFO) << "RunCallable()..."; } runStatus = session->RunCallable(feed_gpu_fetch_cpu, {inputTensor}, &outputs, nullptr); if (!runStatus.ok()) { if (!runStatus.ok()){ LOG(ERROR) << "Running model failed: " << runStatus; return -1; } LOG(INFO) << "RunCallable() output:"; LOG(INFO) << outputs[0].DebugString(); auto tmap = outputs[0].tensor<uint8_t, 1>(); Loading @@ -191,6 +194,7 @@ int main(int, char**) { if (d!=255) cout << ", "; } cout << "\033[0m" << endl; } session->ReleaseCallable(feed_gpu_fetch_cpu); Loading Loading
array.cu +1 −1 Original line number Diff line number Diff line Loading @@ -70,7 +70,7 @@ int myCreateCUDAArray(uint8_t *tf_ptr){ // check if the GPU did the same as the CPU bool workedCorrectly = true; printf("CUDA kernel incrementing test:\n"); printf("CUDA kernel simple incrementing test:\n"); for(int i=0;i<numberOfNumbers;i++) { if (numbers1[i] != numbers2[i]) Loading
main.cpp +41 −37 Original line number Diff line number Diff line Loading @@ -32,27 +32,19 @@ using tensorflow::Status; using tensorflow::Tensor; Status loadGraph(unique_ptr<tensorflow::Session> *session){ Status createGraphAndSession(unique_ptr<tensorflow::Session> *session){ tensorflow::GraphDef graph_def; using namespace tensorflow; using namespace tensorflow::ops; auto scope = Scope::NewRootScope(); // TF likes power of 2 tensorflow::TensorShape shape = tensorflow::TensorShape({256}); auto a = Placeholder(scope.WithOpName("array_tensor_in"), DT_UINT8, Placeholder::Shape(shape)); //auto c0 = Const(scope,{256}); //auto c1 = Const(scope, (uint8_t)1, {}); //auto c2 = Fill(scope, c0, c1); auto b = Identity(scope.WithOpName("array_tensor_out"), a); //auto b = Identity(scope.WithOpName("array_tensor_out"), c2); //auto b = Add(scope.WithOpName("array_tensor_out"),c2,a); auto a = ops::Placeholder(scope.WithOpName("array_tensor_in"), DT_UINT8, ops::Placeholder::Shape(shape)); auto b = ops::Identity(scope.WithOpName("array_tensor_out"), a); TF_CHECK_OK(scope.ToGraphDef(&graph_def)); Loading @@ -65,7 +57,7 @@ Status loadGraph(unique_ptr<tensorflow::Session> *session){ session->reset(tensorflow::NewSession(session_options)); Status session_create_status = (*session)->Create(graph_def); if (!session_create_status.ok()){ LOG(ERROR) << "loadGraph(): ERROR" << session_create_status; LOG(ERROR) << "createGraphAndSession(): ERROR" << session_create_status; } return Status::OK(); } Loading Loading @@ -109,7 +101,7 @@ int main(int, char**) { LOG(INFO) << "Tensorflow built with CUDA, keep running" << endl; } // check and init CUDA drivers and libs // check and init CUDA drivers and libs? void *hHandleDriver = nullptr; CUresult cuda_res = cuInit(0, __CUDA_API_VERSION, hHandleDriver); if (cuda_res != CUDA_SUCCESS) Loading @@ -123,14 +115,17 @@ int main(int, char**) { } LOG(INFO) << "\033[1;32m" << "CUDA init: ok" << "\033[0m"; // construct graph and create TF session std::unique_ptr<tensorflow::Session> session; createGraphAndSession(&session); loadGraph(&session); // do the opts and allocate tensor in GPU // NOTE: must match with graph names const string inputLayer = "array_tensor_in:0"; const string outputLayer = "array_tensor_out:0"; // do the opts CallableOptions opts; Session::CallableHandle feed_gpu_fetch_cpu; Loading @@ -150,7 +145,6 @@ int main(int, char**) { // TF likes power of 2 and 256s tensorflow::TensorShape shape = tensorflow::TensorShape({256}); // allocate tensor on the GPU tensorflow::PlatformGpuId platform_gpu_id(0); tensorflow::GPUMemAllocator *sub_allocator = Loading @@ -165,23 +159,32 @@ int main(int, char**) { LOG(INFO) << "\033[1;37m" << "Is CUDA Tensor? " << (IsCUDATensor(inputTensor)?"\033[1;32myes":"\033[1;31mno") << "\033[0m"; // pointer to tensor data tensorflow::uint8 *p = inputTensor.flat<tensorflow::uint8>().data(); // run and check vector<Tensor> outputs; for(int i=0;i<2;i++){ cout << endl; if (i==0){ LOG(INFO) << "\033[1;32m" << "RunCallable()... No feeding (zeroes)" << "\033[0m"; } if (i==1){ LOG(INFO) << "\033[1;32m" << "RunCallable()... Feeding from CUDA kernel"<< "\033[0m"; // CUDA kernel call // NOTE: do not allocate memory for p inside the kernel myCreateCUDAArray(p); vector<Tensor> outputs; LOG(INFO) << "RunCallable()..."; } runStatus = session->RunCallable(feed_gpu_fetch_cpu, {inputTensor}, &outputs, nullptr); if (!runStatus.ok()) { if (!runStatus.ok()){ LOG(ERROR) << "Running model failed: " << runStatus; return -1; } LOG(INFO) << "RunCallable() output:"; LOG(INFO) << outputs[0].DebugString(); auto tmap = outputs[0].tensor<uint8_t, 1>(); Loading @@ -191,6 +194,7 @@ int main(int, char**) { if (d!=255) cout << ", "; } cout << "\033[0m" << endl; } session->ReleaseCallable(feed_gpu_fetch_cpu); Loading