{"id":647,"date":"2015-10-19T14:50:28","date_gmt":"2015-10-19T14:50:28","guid":{"rendered":"http:\/\/coolt.ch\/notizen\/?p=647"},"modified":"2015-10-19T14:50:28","modified_gmt":"2015-10-19T14:50:28","slug":"cuda-speicher-verwaltung","status":"publish","type":"post","link":"https:\/\/coolt.ch\/notizen\/cuda-speicher-verwaltung\/","title":{"rendered":"CUDA Speicher-Verwaltung"},"content":{"rendered":"<p>\u00dcber Pointers kann von einem <a href=\"http:\/\/coolt.ch\/notizen\/gpu-introduction\/\">Speicher (CPU), auf den anderen (GPU)<\/a> zugewiesen werden.<\/p>\n<ul>\n<li>Device-Pointer zeigen auf Speicher im GPU<br \/>\n&#8211; Kann im host-code gebraucht, aber nicht dereferenziert werden<\/li>\n<li>Host-Pointer zeigen auf den Speicher der CPU. Kann vom GPU Code gebraucht, aber nicht dereferenziert werden.\n<p><strong>Funktionen<\/strong><br \/>\ncudaMalloc( Wert, Gr\u00f6sse);<br \/>\ncudaFree();<br \/>\ncudaMemcpy();<\/li>\n<\/ul>\n<p>Bsp. aus der Einf\u00fchrung<\/p>\n<div class=\"textLayer\">\n<pre class=\"lang:sh decode:true\">int main( void ) {\r\nint a, b, c;                  \/\/ host: a, b, c\r\nint*dev_a, *dev_b, *dev_c;    \/\/ device copies of a, b, c\r\nintsize =sizeof(int);         \r\n\r\n\/\/ allocate device copies of a, b, c\r\ncudaMalloc( (void**)&amp;dev_a, size );\r\ncudaMalloc( (void**)&amp;dev_b, size );\r\ncudaMalloc( (void**)&amp;dev_c, size );\r\n\r\na = 2;\r\nb = 7;\r\n\r\n\/\/ copy inputs to device\r\ncudaMemcpy(dev_a, &amp;a, size,cudaMemcpyHostToDevice);\r\ncudaMemcpy(dev_b, &amp;b, size,cudaMemcpyHostToDevice);\r\n\r\n\/\/ launch add() kernel on GPU, passing parameters\r\nadd&lt;&lt;&lt; 1, 1 &gt;&gt;&gt;(dev_a,dev_b,dev_c);\r\n\r\n\/\/ copy device result back to host copy of c\r\ncudaMemcpy( &amp;c,dev_c, size,cudaMemcpyDeviceToHost);\r\n\r\ncudaFree(dev_a);\r\ncudaFree(dev_b);\r\ncudaFree(dev_c);\r\nreturn 0;\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u00dcber Pointers kann von einem Speicher (CPU), auf den anderen (GPU) zugewiesen werden. Device-Pointer zeigen auf Speicher im GPU &#8211; Kann im host-code gebraucht, aber nicht dereferenziert werden Host-Pointer zeigen auf den Speicher der CPU. Kann vom GPU Code gebraucht, aber nicht dereferenziert werden. Funktionen cudaMalloc( Wert, Gr\u00f6sse); cudaFree(); cudaMemcpy(); Bsp. aus der Einf\u00fchrung int &hellip; <a href=\"https:\/\/coolt.ch\/notizen\/cuda-speicher-verwaltung\/\" class=\"more-link\"><span class=\"screen-reader-text\">CUDA Speicher-Verwaltung<\/span> weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[62],"tags":[43],"_links":{"self":[{"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/posts\/647"}],"collection":[{"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/comments?post=647"}],"version-history":[{"count":7,"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/posts\/647\/revisions"}],"predecessor-version":[{"id":655,"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/posts\/647\/revisions\/655"}],"wp:attachment":[{"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/media?parent=647"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/categories?post=647"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/tags?post=647"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}