在多次尝试验证我的nvidia quadro M4000M是否可以进行张量计算之后,正确安装了Cuda,正确安装了cuda工具包8.0,deviceQuery和nvidia-smi确认设备运行正常。
运行tensorflow的示例时:
import tensorflow as tf
with tf.device("/gpu:0"):
a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a', dtype=tf.float32)
b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b', dtype=tf.float32)
c = tf.matmul(a, b)
sess = tf.Session(config=tf.ConfigProto(allow_soft_placement=False,log_device_placement=True))
print(sess.run(c))
我没有获得设备映射信息,而完成会话的唯一方法是更改allow_soft_placement = True,它似乎没有使用GPU。
当tf.device(“ / gpu:0”)或/ cpu:0的allow_soft_placement = False时,错误是:
InvalidArgumentError错误回溯(最近一次通话) 〜\ AppData \ Local \ conda \ conda \ envs \ tensor \ lib \ site-packages \ tensorflow \ python \ client \ session.py 在_do_call(self,fn,* args)1291中尝试: -> 1292返回fn(* args)1293(errors.OpError为e:
〜\ AppData \ Local \ conda \ conda \ envs \ tensor \ lib \ site-packages \ tensorflow \ python \ client \ session.py 在_run_fn中(feed_dict,fetch_list,target_list,选项,run_metadata) 1274#确保对图形的任何更改都反映在 运行。 -> 1275 self._extend_graph()1276返回self._call_tf_sessionrun(
〜\ AppData \ Local \ conda \ conda \ envs \ tensor \ lib \ site-packages \ tensorflow \ python \ client \ session.py 在_extend_graph(self)1311中 self._graph._session_run_lock():#pylint:disable =受保护的访问 -> 1312 tf_session.ExtendSession(self._session)1313
InvalidArgumentError:无法为操作'MatMul'分配设备:该操作已明确分配给/ device:GPU:0,但可用 设备是[/ job:localhost / replica:0 / task:0 / device:CPU:0]。使 确保设备规格引用的是有效设备。 [[{{节点 MatMul}} = MatMul [T = DT_FLOAT,transpose_a = false,transpose_b = false, _device =“ / device:GPU:0”](a,b)]]
在处理上述异常期间,发生了另一个异常:
InvalidArgumentError错误回溯(最近一次拨打电话) 7 sess = tf.Session(config = tf.ConfigProto(allow_soft_placement = False,log_device_placement = True)) 8 ----> 9次打印(sess.run(c)) 10 11
〜\ AppData \ Local \ conda \ conda \ envs \ tensor \ lib \ site-packages \ tensorflow \ python \ client \ session.py 在运行中(自我,获取,feed_dict,选项,run_metadata) 885尝试: (886) -> 887 run_metadata_ptr) 888(如果run_metadata): 889 proto_data = tf_session.TF_GetBuffer(run_metadata_ptr)
〜\ AppData \ Local \ conda \ conda \ envs \ tensor \ lib \ site-packages \ tensorflow \ python \ client \ session.py 在_run(自身,句柄,访存,feed_dict,选项,run_metadata)中
1108如果final_fetches或final_targets或(句柄和 feed_dict_tensor):1109个结果= self._do_run(handle, final_targets,final_fetches, -> 1110 feed_dict_tensor,选项,run_metadata)1111否则:1112结果= []〜\ AppData \ Local \ conda \ conda \ envs \ tensor \ lib \ site-packages \ tensorflow \ python \ client \ session.py 在_do_run(自身,句柄,target_list,fetch_list,feed_dict,选项, run_metadata)1284如果句柄为None:1285返回 self._do_call(_run_fn,提要,提取,目标,选项, -> 1286 run_metadata)1287否则:1288返回self._do_call(_prun_fn,句柄,提要,获取)
〜\ AppData \ Local \ conda \ conda \ envs \ tensor \ lib \ site-packages \ tensorflow \ python \ client \ session.py 在_do_call(self,fn,* args)1306中
self._config.experimental.client_handles_error_formatting):1307
消息= error_interpolation.interpolate(消息,self._graph) -> 1308提高类型(e)(node_def,op,消息)1309 1310 def _extend_graph(自身):InvalidArgumentError:无法为操作'MatMul'分配设备:该操作已明确分配给/ device:GPU:0,但可用 设备是[/ job:localhost / replica:0 / task:0 / device:CPU:0]。使 确保设备规格引用的是有效设备。 [[{{节点 MatMul}} = MatMul [T = DT_FLOAT,transpose_a = false,transpose_b = false, _device =“ / device:GPU:0”](a,b)]]
由“ MatMul”操作引起,定义于:文件“ C:\ Users \ sellersp \ AppData \ Local \ conda \ conda \ envs \ tensor \ lib \ runpy.py”, _run_module_as_main中的第193行 “ 主要”,mod_spec)文件“ C:\ Users \ sellersp \ AppData \ Local \ conda \ conda \ envs \ tensor \ lib \ runpy.py”, 第85行,在_run_code中 exec(代码,run_globals)文件“ C:\ Users \ sellersp \ AppData \ Local \ conda \ conda \ envs \ tensor \ lib \ site-packages \ ipykernel_launcher.py”, 第16行 app.launch_new_instance()文件“ C:\ Users \ sellersp \ AppData \ Local \ conda \ conda \ envs \ tensor \ lib \ site-packages \ traitlets \ config \ application.py”, 658行,在launch_instance中 app.start()文件“ C:\ Users \ sellersp \ AppData \ Local \ conda \ conda \ envs \ tensor \ lib \ site-packages \ ipykernel \ kernelapp.py”, 第499行,开始时 self.io_loop.start()文件“ C:\ Users \ sellersp \ AppData \ Local \ conda \ conda \ envs \ tensor \ lib \ site-packages \ tornado \ platform \ asyncio.py”, 第132行,开始时 self.asyncio_loop.run_forever()文件“ C:\ Users \ sellersp \ AppData \ Local \ conda \ conda \ envs \ tensor \ lib \ asyncio \ base_events.py”, 422行,在run_forever中 self._run_once()文件“ C:\ Users \ sellersp \ AppData \ Local \ conda \ conda \ envs \ tensor \ lib \ asyncio \ base_events.py”, _run_once中的第1434行 handle._run()文件“ C:\ Users \ sellersp \ AppData \ Local \ conda \ conda \ envs \ tensor \ lib \ asyncio \ events.py”, _run中的第145行 self._callback(* self._args)文件“ C:\ Users \ sellersp \ AppData \ Local \ conda \ conda \ envs \ tensor \ lib \ site-packages \ tornado \ ioloop.py”, _run_callback中的第758行 ret = callback()文件“ C:\ Users \ sellersp \ AppData \ Local \ conda \ conda \ envs \ tensor \ lib \ site-packages \ tornado \ stack_context.py”, 第300行,在null_wrapper中 返回fn(* args,** kwargs)文件“ C:\ Users \ sellersp \ AppData \ Local \ conda \ conda \ envs \ tensor \ lib \ site-packages \ tornado \ gen.py”, 第1233行,在内部 self.run()文件“ C:\ Users \ sellersp \ AppData \ Local \ conda \ conda \ envs \ tensor \ lib \ site-packages \ tornado \ gen.py”, 1147行,正在运行 产生= self.gen.send(值)文件“ C:\ Users \ sellersp \ AppData \ Local \ conda \ conda \ envs \ tensor \ lib \ site-packages \ ipykernel \ kernelbase.py”, 第346行,在process_one中 产生gen.maybe_future(dispatch(* args))文件“ C:\ Users \ sellersp \ AppData \ Local \ conda \ conda \ envs \ tensor \ lib \ site-packages \ tornado \ gen.py”, 包装中的第326行 yield =下一个(结果)文件“ C:\ Users \ sellersp \ AppData \ Local \ conda \ conda \ envs \ tensor \ lib \ site-packages \ ipykernel \ kernelbase.py”, 第259行,在dispatch_shell中 产生gen.maybe_future(处理程序(流(流,标识,消息)))文件“ C:\ Users \ sellersp \ AppData \ Local \ conda \ conda \ envs \ tensor \ lib \ site-packages \ tornado \ gen.py”, 包装中的第326行 yield =下一个(结果)文件“ C:\ Users \ sellersp \ AppData \ Local \ conda \ conda \ envs \ tensor \ lib \ site-packages \ ipykernel \ kernelbase.py”, 第513行,在execute_request中 user_expressions,allow_stdin,文件“ C:\ Users \ sellersp \ AppData \ Local \ conda \ conda \ envs \ tensor \ lib \ site-packages \ tornado \ gen.py”, 包装中的第326行 yield =下一个(结果)文件“ C:\ Users \ sellersp \ AppData \ Local \ conda \ conda \ envs \ tensor \ lib \ site-packages \ ipykernel \ ipkernel.py”, 第294行,在do_execute中 res = shell.run_cell(代码,store_history = store_history,silent =静音)文件 “ C:\ Users \ sellersp \ AppData \ Local \ conda \ conda \ envs \ tensor \ lib \ site-packages \ ipykernel \ zmqshell.py”, 第536行,在run_cell中 返回super(ZMQInteractiveShell,self).run_cell(* args,** kwargs)文件 “ C:\ Users \ sellersp \ AppData \ Local \ conda \ conda \ envs \ tensor \ lib \ site-packages \ IPython \ core \ interactiveshell.py”, 第2817行,在run_cell中 raw_cell,store_history,silent,shell_futures)文件“ C:\ Users \ sellersp \ AppData \ Local \ conda \ conda \ envs \ tensor \ lib \ site-packages \ IPython \ core \ interactiveshell.py”, _run_cell中的第2843行 返回运行程序(coro)文件“ C:\ Users \ sellersp \ AppData \ Local \ conda \ conda \ envs \ tensor \ lib \ site-packages \ IPython \ core \ async_helpers.py”, _pseudo_sync_runner中的第67行 coro.send(无)文件“ C:\ Users \ sellersp \ AppData \ Local \ conda \ conda \ envs \ tensor \ lib \ site-packages \ IPython \ core \ interactiveshell.py”, 第3018行,在run_cell_async中 交互性=交互性,编译器=编译器,结果=结果)文件 “ C:\ Users \ sellersp \ AppData \ Local \ conda \ conda \ envs \ tensor \ lib \ site-packages \ IPython \ core \ interactiveshell.py”, 第3183行,在run_ast_nodes中 如果(从self.run_code(代码,结果)产生):文件“ C:\ Users \ sellersp \ AppData \ Local \ conda \ conda \ envs \ tensor \ lib \ site-packages \ IPython \ core \ interactiveshell.py”, 第3265行,在run_code中 exec(code_obj,self.user_global_ns,self.user_ns)文件“”,第5行,在 c = tf.matmul(a,b)文件“ C:\ Users \ sellersp \ AppData \ Local \ conda \ conda \ envs \ tensor \ lib \ site-packages \ tensorflow \ python \ ops \ math_ops.py”, matmul中的2053行 a,b,transpose_a = transpose_a,transpose_b = transpose_b,name = name)文件 “ C:\ Users \ sellersp \ AppData \ Local \ conda \ conda \ envs \ tensor \ lib \ site-packages \ tensorflow \ python \ ops \ gen_math_ops.py”, 行4856,在mat_mul中 name = name)文件“ C:\ Users \ sellersp \ AppData \ Local \ conda \ conda \ envs \ tensor \ lib \ site-packages \ tensorflow \ python \ framework \ op_def_library.py”, _apply_op_helper中的第787行 op_def = op_def)文件“ C:\ Users \ sellersp \ AppData \ Local \ conda \ conda \ envs \ tensor \ lib \ site-packages \ tensorflow \ python \ util \ deprecation.py”, 第488行,在new_func中 返回func(* args,** kwargs)文件“ C:\ Users \ sellersp \ AppData \ Local \ conda \ conda \ envs \ tensor \ lib \ site-packages \ tensorflow \ python \ framework \ ops.py”, 第3272行,在create_op中 op_def = op_def)文件“ C:\ Users \ sellersp \ AppData \ Local \ conda \ conda \ envs \ tensor \ lib \ site-packages \ tensorflow \ python \ framework \ ops.py”, 第1768行,在 init 中 self._traceback = tf_stack.extract_stack()
InvalidArgumentError(请参阅上面的回溯):无法为操作“ MatMul”分配设备:操作已明确分配给 / device:GPU:0,但可用设备为[ / job:localhost /副本:0 /任务:0 /设备:CPU:0]。确保设备 规范是指有效的设备。 [[{{node MatMul}} = MatMul [T = DT_FLOAT,transpose_a = false,transpose_b = false, _device =“ / device:GPU:0”](a,b)]]
在搜索了许多位置后,我似乎找不到错误所在。我已经在Jupyter Notebook中运行了它,并在解释程序中将其运行为脚本。
任何帮助将不胜感激。很抱歉出现冗长的错误。
答案 0 :(得分:0)
您已经安装了tensorflow-gpu吗? Tensorflow有两个二进制软件包(tensorflow-gpu和tensorflow)。 https://www.tensorflow.org/install/pip